问题标签 [raymarching]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 着色器之外的访问函数
我正在尝试使用 OpenGL 开发一款游戏,该游戏通过片段着色器中的 raymarching 算法渲染场景。我打算使用与渲染场景相同的有符号距离场函数来实现碰撞。
我想弄清楚的是,是否有一种方法可以为碰撞测试和着色器使用相同的 SDF 函数,而无需编写两次。
有什么方法可以访问 frag 着色器中的 c++ 函数或获取计算着色器的输出以用于碰撞测试?
设置一个完整的单独渲染管道只是为了从计算着色器调用一个函数听起来很不方便。有没有更简单的方法来实现这一点?
unity3d - 如何在 Unity3D 自定义着色器中渲染 3D 渲染纹理
嗨,是否可以像 3dtexture 一样在自定义着色器raymarching 上渲染3d 渲染纹理?
我使用 3D 渲染纹理,因为我在计算着色器中计算和设置 3D 体积的颜色。我将 rendertexture 3D 设置为如下所示:
我在计算着色器中填充 3D RenderTexture 数据,GetData帮助我确认 3D 渲染纹理具有所有正确的颜色数据。
如果我将自定义着色器的 sampler3D 中的 3D renderTex 替换为我用 Tex2D 切片创建的 3DTexture,我可以成功渲染。
相对
2016 年的这篇文章似乎表明可以在自定义着色器中渲染 3d 渲染纹理,但它现在可能已经过时,它对我不起作用,也没有错误显示。
在我看来,如果在 GPU 中创建 Textures2D 切片,继续在 CPU 上创建 Texture3D 并将此 Tex3D 重新发送到 GPU 以供自定义着色器使用,则可能会对性能造成重大影响。毕竟除了 RenderTexture 设置为 Tex3D 之外,GPU 中已经存在所有 3D 体积。谢谢!
着色器: