0

我有一种情况,我需要做光影。我没有顶点着色器,因此无法将法线插入片段着色器。我也无法通过法线贴图。我可以在片段着色器中完全基于片段坐标生成法线吗?在我的例子中,几何图形总是平面的。

并扩展我正在尝试做的事情:

我正在使用NV_path_rendering允许在 GPU 上渲染纯矢量图形的扩展。问题是只能通过着色器访问片段阶段,这基本上意味着 - 我不能将顶点着色器与 NV_Path 对象一起使用。

4

2 回答 2

1

这是一种“将法线设置为面法线”的方法,而对顶点法线一无所知(据我所知)。

https://stackoverflow.com/a/17532576/738675

我有一个three.js 演示在这里工作:

http://meetar.github.io/three.js-normal-map-0/index6.html

我的实现是从顶点着色器获取顶点位置数据,但听起来你可以通过其他方式获得。

于 2013-07-10T15:48:13.353 回答
1

由于您的形状是扁平的并且 NV_PATH 需要兼容配置文件,因此您可以正常通过内置变量 gl_Color 或 gl_SecondaryColor

扩展描述说有某种插值:

每个顶点数据的插值(第 3.6.1 节)。路径图元既没有传统的顶点,也没有每个顶点的数据。相反,片段生成插值的每片段颜色、纹理坐标集和雾坐标作为对象空间或眼睛空间路径坐标的线性函数,或者直接使用当前颜色、纹理坐标集或雾坐标状态。

http://developer.download.nvidia.com/assets/gamedev/files/GL_NV_path_rendering.txt

于 2013-07-04T13:35:57.363 回答