我如何使用 GLSL 生成一个纹理,其中包含帧中每个片段的所有眼空间法线,采用 RGB 数据(法线映射)?

发布于 2024-12-18 14:53:50 字数 241 浏览 3 评论 0原文

我需要以某种方式渲染纹理,就像场景的屏幕截图一样,除了存储法线而不是每个片段后面的点的颜色数据。它会生成一个看起来有点像法线贴图的纹理(例如这个) 。我做了很多研究(收效甚微),但我的直觉告诉我,最简单的方法是使用 GLSL 着色器。

那么有没有可能的方法来实现这个,GLSL 还是其他方式?

I need to somehow render a texture, like a screenshot of the scene, except instead of the colour data of the point behind each fragment, the normal is stored. It would generate a texture that looks somewhat like a normal map (such as this). I've done quite a bit of research (to little avail) but my instincts tell me that the easiest method for this would be a GLSL shader.

So would there be any possible way to implement this, GLSL or otherwise?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

罗罗贝儿 2024-12-25 14:53:50

将法线向量渲染到单独的渲染目标是延迟光照的常用技术。您可以在此处找到一个很好的介绍(它使用 DirectX 和 HLSL,但概念是非常清晰,可以轻松移植到 OpenGL/GLSL)。

Rendering the normal vectors to a separate render target is common technique for deferred lighting. You can found a good introduction here (it's using DirectX and HLSL, but the concepts are quite clear and can be easily ported to OpenGL/GLSL).

晚风撩人 2024-12-25 14:53:50

写出法线信息的实际 GLSL 着色器非常简单(比处理光照信息简单得多)

我使用 KickJS Shader Editor 在 GLSL 中创建了一个“法线着色器”:

http://www.kickjs.org/example/shader_editor/shader_editor.html#ahFzfmtpY2tzdGFydGVuZ2luZXJjCxIWb3JnLmtpY2t qcy5zaGFyZWQuVXNlciIbbW9ydGVuQG5vYmVsLWpvZXJnZW5zZW4uY29tDAsSGG9yZy5raWNranMuc2hhcmVkLlNoYWRlciIORGVmYXVsdCBzaGFkZXIM

移植到您想要使用的任何版本的 GLSL 应该很简单。

The actual GLSL shader that write out normal information is very simple (much simpler than dealing with light information)

I have created a 'normal shader' in GLSL using KickJS Shader Editor:

http://www.kickjs.org/example/shader_editor/shader_editor.html#ahFzfmtpY2tzdGFydGVuZ2luZXJjCxIWb3JnLmtpY2tqcy5zaGFyZWQuVXNlciIbbW9ydGVuQG5vYmVsLWpvZXJnZW5zZW4uY29tDAsSGG9yZy5raWNranMuc2hhcmVkLlNoYWRlciIORGVmYXVsdCBzaGFkZXIM

It should be simple to port to whatever version of GLSL you want to use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文