我遇到需要做浅阴影的情况。我没有顶点着色器,因此无法将法线插入到片段着色器中。此外,我无法传入普通地图。我可以在片段着色器中完全生成法线,例如在片段坐标上吗?在我的情况下,几何体总是平面的。
延伸我想要做的事情:
我正在使用允许NV_path_rendering
的rendering pure vector graphics on GPU扩展程序。问题是只有片段阶段可以通过着色器访问,这基本上意味着 - 我不能使用带有NV_Path对象的顶点着色器。
答案 0 :(得分:1)
由于你的形状是扁平的,NV_PATH需要compat配置文件,你可以通过内置的变化gl_Color或gl_SecondaryColor
扩展说明说有某种插值:
每顶点数据的插值(第3.6.1节)。路径基元既没有传统顶点也没有每顶点数据。相反,片段生成内插的每片段颜色,纹理坐标集和雾坐标,作为对象空间或眼睛空间路径坐标的线性函数,或直接使用当前颜色,纹理坐标集或雾坐标状态。
http://developer.download.nvidia.com/assets/gamedev/files/GL_NV_path_rendering.txt
答案 1 :(得分:1)
这是一种“将法线设置为面法线”的方法,而不知道顶点法线的任何信息(据我理解)。
https://stackoverflow.com/a/17532576/738675
我在这里有一个three.js演示:
http://meetar.github.io/three.js-normal-map-0/index6.html
我的实现是从顶点着色器获取顶点位置数据,但听起来你可以通过其他方式获得它。