简单的Shadertoy到常规的glsl [关闭]

问题描述 投票:1回答:1
我希望将glslSandBox中的代码转换为常规的glsl。假设我在一个3D场景中放置了一个四边形网格3D。我想创建这种“类似于shadertoy的”纹理并将其应用于它。我知道它需要进行的转换:屏幕-NDC-CLIPSPACE-WORLDSPACE,但我仍在努力。 http://glslsandbox.com/e#61091.0这是一个非常简单的着色器,能否请您演示将普通的vs和fs着色器应用于3D场景中的3D网格?
opengl shader fragment-shader vertex-shader
1个回答
0
投票
您链接的着色器是在平面屏幕上绘制的片段着色器。

通常,相应的顶点设置将是两个三角形(可能是一条带,表示总共4个顶点),覆盖整个屏幕。实际上,您实际上不必进行任何转换,尤其是考虑到fs使用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;无需其他更改。

© www.soinside.com 2019 - 2024. All rights reserved.