我使用 GLSL 开发了一个 3D 引擎,我想添加毛发着色效果。
我做了一些研究以找到一个正确解释“毛皮着色”技术的教程,我发现的最好的网站是以下网站:
http://www.xbdev.net/directx3dx/specialX/Fur/
但是它使用 DirectX API 和 HSLS。但简而言之,它非常接近 OpenGL 和 GLSL。我知道我必须使用相同的着色器在多个通道中渲染场景。为了给人一种尖峰的印象,我只是降低了每一层的 alpha 值。所以最后一个几乎是透明的。
例如,如果我想在平面上渲染一个有 5 层的毛发,我必须渲染我的场景 5 次。使用 DirectX,OpenGL 似乎更容易,因为 HLSL 集成了一个关键字“pass”,可以通过多通道渲染场景。但我认为我必须使用渲染缓冲区或纹理将帧缓冲区对象 (FBO) 与 OpenGL API 一起使用。我想我必须多次渲染场景,并且每次我每次都在不同的纹理中注册颜色缓冲区(全部附加在 FBO 或多个 FBO 上的纹理)。最后,我将拥有一个独特的颜色缓冲区,这是原始纹理叠加的结果。我的想法正确吗?