如何在质心计算光线的情况下实现平面着色? [英] How to achieve flat shading with light calculated at centroids?
本文介绍了如何在质心计算光线的情况下实现平面着色?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想编写一个GLSL着色器程序,用于逐面着色。我的第一次尝试使用flat
插值限定符和触发顶点。我对法线和位置顶点属性都使用平面插值,这为我提供了所需的实心绘制曲面的老式效果。
虽然渲染看起来正确,但着色器程序实际上没有正确执行工作:
- 灯光计算仍以每个碎片为基础(在碎片着色器中),
- 位置矢量取自挑衅顶点,而不是三角形的质心(对吗?)。
是否可以对三角形的质心应用一次照明公式,然后对整个基元使用计算出的颜色值?如何做到这一点?
推荐答案
使用输入为三角形、输出为三角形的几何着色器。将法线和位置从顶点着色器传递到片段着色器,自己计算质心(通过平均位置),并进行照明,将输出颜色作为输出变量传递给片段着色器,片段着色器只是将其读入并写出。
这篇关于如何在质心计算光线的情况下实现平面着色?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文