首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从简单阴影玩具到常规glsl

从简单阴影玩具到常规glsl
EN

Stack Overflow用户
提问于 2020-02-06 21:34:04
回答 1查看 91关注 0票数 1

我想将glslSandBox中的代码转换为常规的glsl。假设我在3D场景中有一个四边形网格3D位移。我想创建这个“shadertoy like”纹理并将其应用于它。我知道它所需要的转换: Screen - NDC - CLIPSPACE - WORLDSPACE,但我仍然在挣扎。http://glslsandbox.com/e#61091.0这是一个非常简单的着色器,你能演示一下将它应用于3D场景中的3D网格时需要使用的普通vs和fs着色器吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-06 22:06:38

链接的着色器是在平面屏幕平面上绘制的片段着色器。

通常,对应的顶点设置是覆盖整个屏幕的两个三角形(可能是一个条形,意味着总共4个顶点)。事实上,你真的不必担心任何转换,特别是考虑到文件系统使用gl_FragCoord,并且分辨率是以统一的方式传递的。

VS:

代码语言:javascript
复制
#version 450
in vec4 position;

void main() {
    gl_Position = position
}

顶点(例如,与GL_TRIANGLE_STRIP一起使用):

代码语言:javascript
复制
-1, -1
-1,  1
 1, -1
 1,  1

覆盖整个屏幕后,现在可以将此设置切换为渲染到纹理;创建一个帧缓冲区,将纹理附加到它,并以相同的方式渲染。然后你就可以在你的3D模型上使用这个纹理了。如果生成的图像很少更改,这将很好地工作。

如果您真的想在一遍中绘制,那么您需要将纹理坐标作为可变变量传递,并使用它而不是gl_FragCoord;应该不需要其他更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60096216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档