光栅化形状上的光线行进
Posted
技术标签:
【中文标题】光栅化形状上的光线行进【英文标题】:Raymarching on rasterized shape 【发布时间】:2020-05-20 21:23:23 【问题描述】:我一直想知道如何将两种渲染方法结合起来,使光栅化的屏幕形状用作片段着色器中基于光线行进的渲染的画布。
以这些美丽的例子为例:https://www.shadertoy.com/view/XsjXRm 或 https://www.shadertoy.com/view/MtXSzS 它们的可见部分可以粗略地表示为球体。现在我想做的是把two spheres 放到世界上的某个地方并运行常规的光栅化过程。光栅化将产生模型占用哪些像素,对于那些像素,我想实际运行 shadertoy 光线行进算法以获得所需的外观(我的两个球体看起来像上面示例中的 shadertoy“球体”)。
这是可行的吗?
附:我非常了解光栅化和矩阵/空间转换,但我对光线行进的工作原理有非常模糊的理解。原谅我的无知。
【问题讨论】:
在对球体进行光栅化时,您只需在片段着色器中运行该光线行进代码。只需确保正确计算光线方向(基于gl_FragCoord
和 MVP 矩阵)。它回答了你的问题,还是我误解了你的问题?
@ybungalobill 谢谢,但我很欣赏一些简单的例子,它会在光栅化像素上运行几个 raymarching 步骤,ray origin
/ray direction
在光栅化碎片着色器中定义。我想我正在努力解决如何将光线行进通道中通常使用的数学与我所拥有的光栅化结果对齐。长话短说 - 我会欣赏微不足道但可以概括的例子。
【参考方案1】:
这绝对是可能的。
这个想法是使用相同的相机进行光线追踪和光栅化。 您可以从片段着色器中的相机矩阵中获取相机的位置,您可以通过从相机位置中减去片段位置并对其进行归一化来获得相机的方向。
这样光线只会从相机投射到可见片段。
【讨论】:
以上是关于光栅化形状上的光线行进的主要内容,如果未能解决你的问题,请参考以下文章