我想将glslSandBox中的代码转换为常规的glsl。假设我在3D场景中有一个四边形网格3D位移。我想创建这个“shadertoy like”纹理并将其应用于它。我知道它所需要的转换: Screen - NDC - CLIPSPACE - WORLDSPACE,但我仍然在挣扎。http://glslsandbox.com/e#61091.0这是一个非常简单的着色器,你能演示一下将它应用于3D场景中的3D网格时需要使用的普通vs和fs着色器吗?
发布于 2020-02-06 22:06:38
链接的着色器是在平面屏幕平面上绘制的片段着色器。
通常,对应的顶点设置是覆盖整个屏幕的两个三角形(可能是一个条形,意味着总共4个顶点)。事实上,你真的不必担心任何转换,特别是考虑到文件系统使用gl_FragCoord,并且分辨率是以统一的方式传递的。
VS:
#version 450
in vec4 position;
void main() {
gl_Position = position
}顶点(例如,与GL_TRIANGLE_STRIP一起使用):
-1, -1
-1, 1
1, -1
1, 1覆盖整个屏幕后,现在可以将此设置切换为渲染到纹理;创建一个帧缓冲区,将纹理附加到它,并以相同的方式渲染。然后你就可以在你的3D模型上使用这个纹理了。如果生成的图像很少更改,这将很好地工作。
如果您真的想在一遍中绘制,那么您需要将纹理坐标作为可变变量传递,并使用它而不是gl_FragCoord;应该不需要其他更改。
https://stackoverflow.com/questions/60096216
复制相似问题