最好的资料基本上是这些 GPU 厂商给的 demo,为了演示其芯片的能力,给的示例既全面又工整。
翻译完了。总体说来,目前 GPU 还停留在 PBR(基于物理的渲染)的时代,实时光线追踪 还处于萌芽状态。 也只有实现了 实时光线追踪,才可以达到分不清现实和游戏的程度。其计算量差不多是现有 GPU 一万倍。这也是在常规游戏中很难见到大规模透明反光物体的原因。
细推物理须行乐,何用浮名绊此身。
绘制一个基本的三角形。
基本的 PVRShell 使用。
用 PVRShell 库和操作系统窗口打交道的库。
用一个简单的顶点着色器和片段着色器 渲染一个 .POD
场景。基于 PVRUtils 库实现。
PVRUtils UIRenderer 库可用来在屏幕上显示简单的字符串。
高级文字绘制。用 PVRUtils 函数库,UIRenderer。
可以创建 “Sprites” (2D elements),还包括:2D 变换(屏幕坐标或者 NDC 坐标),3D 变换。也支持图片。
用 PVRCamera 库从硬件摄像头获取数据,并进行相应的 shader 颜色反转。 Android N 或以上,需要摄像头权限。
演示怎么存储和加载二进制形式的 OpenGLES shaders。
用 glGetProgramBinary
and glProgramBinary
实现。
用 PowerVR Framework,实现法线贴图的凹凸贴图。
基于 Pixel Local Storage (PLS) 实现延迟渲染。
延迟渲染。先渲染几何体,然后再把只能看到的部分重新渲染并计算光照。
基于 PowerVR,开发者可以用 fast on-chip memory 替代。
需要扩展:GL_EXT_shader_pixel_local_storage
for PLS.
基于 GPGPU (GPU Compute) 实现 John Conway’s Game of Life。
基于 compute shaders 实现 高斯模糊 算法。
实现 19x19 高斯模糊,算法优化过,适于大规模卷积运算。
扩展 GL_IMG_framebuffer_downsample
。实现自动纹理下采样。
glFramebufferTexture2DDownsampleIMG
。适用于 post processing 技术。
缩小图像(或称为下采样(subsampled)或降采样(downsampled))。
放大图像(或称为上采样(upsampling)或图像插值(interpolating))。
PostProcessing,通常在普通的场景渲染结束后对结果进行处理,将一张或数张 Texture 处理得到一张新的 Texture。
扩展 GL_IMG_texture_filter_cubic
实现 cubic texture filtering。
左边是传统的 bilinear texture filtering,右边是 cubic texture filtering。
基于 Image Based Lighting (IBL) 实现 Physically Based Rendering (PBR)。
两个场景,采用 Metallic-Roughness PBR workflow。 一个场景 GLTF 模型渲染 基于 albedo 反照率, metallic roughness 金属粗糙度 and emissive map 发射光图, 一个场景 球体集合 展示不同的 金属 和 非金属 非纹理(non-texture)值。 离线预先计算的环境漫反射 map(使用 lambert 漫反射 BRDF)和两个镜面反射贴图(也脱机计算的): 这些 Pre-Filtered 的环境 map 对应不同的 金属粗糙度,以及其余部分的环境 BRDF。 这些示例使用从环境贴图脱机预计算的漫反射贴图:不同粗糙度值的预过滤环境贴图,以及其余部分的环境 BRDF。 完整文档
This example has two scenes using Metallic-Roughness PBR workflow. It features two scenes, a GLTF model rederered with albedo, metallic roughness and emissive map, and a collection of spheres showcasing different metallic and non metallic non-texture values. The examples uses a Diffuse map pre-computed offline from the environment map, using the lambert diffuse BRDF, and two specular maps (also calculated offline): A Pre-Filtered Environment map for different roughness values, and an Environment BRDF including the rest of the equation.
采用 PowerVR Framework,把一个数据流的资源异步传到应用程序中。
渲染一个立体的 VR 硬件场景。基于扩展:GL_OVR_multiview
。
需要从两个眼睛的坐标分别渲染。 采用两个 FBO。一个低分辨率,一个高分辨率。VR 设备一般中心需要高分辨率,边缘会被拉伸,将被 VR 镜头扭曲,采用低分辨率。
基于原始的 Open Street Map (OSM) 数据,实现 2D 导航地图。
基于 raw OSM data 实现 3D 地图导航。
演示 小图片 卷积 OpenCL 核。
OpenCL / OpenGL 交互 (or if necessary, CPU fallback),在 GPU 上,用 OpenCL 处理图片。
几个 3x3 卷积:
PVRScope 使用演示,和 绘图代码。
采用 PBR-style shader 基于 GPU 实时统计数据。从 GPU 实时获取数据。
演示 PVRScope 的远程通信能力。
PVRTune 必须连接上一个目标设备 PVRPerfServer 实例。 基于 PVRTune GUI,实现 Albedo(反照率), Metallicity(金属度) and Glossiness(光泽度) 的实时编辑和预览。
基于 GPGPU 实现一个 粒子系统。
This is a simple integration-based simulation which is advanced and then rendered every frame strictly on the GPU, without any CPU access of that data. It also highlights the interaction between the compute and the rendering part of a simulation.
heavily-optimised bloom post-processing 实现。
实现了各种高斯模糊效果。 实现了各种 bloom 效果。
蒙皮的凹凸贴图角色,非蒙皮的凹凸贴图对象的组合。
蒙皮是在给定一组(调色板)矩阵和指定给这些矩阵的一组已知混合权重的情况下,随时间为顶点设置动画的行为。 蒙皮示例显示了结合凹凸贴图的蒙皮角色。对于每个帧,矩阵调色板将基于时间重新计算。
PVRAssets 和 POD 文件支持使用完全变换矩阵进行蒙皮,或者使用缩放和平移向量进行四元数旋转。提供的 POD 文件包含矩阵动画。着色器存储缓冲区对象用于支持动态数量的骨骼。