【发布时间】:2021-08-14 22:19:28
【问题描述】:
Phong shading technique 在顶点处插入法线以实现平滑的着色效果。它通常与Phong illumination model 结合使用,并且可以在现代OpenGL 中实现。但是,固定功能管道 OpenGL (legacy OpenGL) 包括对它的支持吗?
【问题讨论】:
Phong shading technique 在顶点处插入法线以实现平滑的着色效果。它通常与Phong illumination model 结合使用,并且可以在现代OpenGL 中实现。但是,固定功能管道 OpenGL (legacy OpenGL) 包括对它的支持吗?
【问题讨论】:
不,它不能。现代 OpenGL 使程序员能够以多种方式自定义渲染管道,这使他们能够实现这种技术。然而,legacy OpenGL 不支持顶点法线的插值。你能得到的最接近的效果是Gouraud shading,它在顶点处插入颜色。
如OpenGL wiki中所述:
对照明的硬件支持仅扩展到 Blinn-Phong 照明模型,按顶点计算并作为最终光强度进行插值。
【讨论】:
env_dot 和env_crossbar。有了这些,您可以创建一种将法线传递到着色器的方法,并使用它们进行点积以进行一些基本的每片段照明。但是,您可以将其视为一种原始着色语言,并且几乎任何可以执行此操作的硬件都可以(并且可能确实)也可以实现 ARB_shader_object/etc。
glReadPixels 而不是渲染到纹理需要在 CPU 和 GPU 之间进行传输......而且很可能一些通道将基于 CPU 来实现这一点。但仍然不需要着色器。