KotFind Asked:2020-05-27 23:13:15 +0000 UTC2020-05-27 23:13:15 +0000 UTC 2020-05-27 23:13:15 +0000 UTC 光线行进中的图像失真 772 我试图编写一个进行光线行进的程序,但在某些时候我注意到奇怪的图像失真开始出现在某些地方。您可以在此处查看代码及其执行结果:https ://www.shadertoy.com/view/wdBBzt (模型可以用鼠标旋转)。它应该绘制一个立方体,并从中切出 7 个较小的立方体(中心 1 个,每个面各 1 个),但是切割处的图像看起来很奇怪。什么可能导致失真? графика 1 个回答 Voted Best Answer Stranger in the Q 2020-05-28T00:50:03Z2020-05-28T00:50:03Z 在函数内部,map()您已经乘以要查找 sdf 函数值的位置,因此您扭曲了该位置的空间,即 找到另一个点的值 float d3 = sdcross(p * 3.0); d = max(d, -d3); 我建议不要扭曲空间,而是更改减去音量的函数: float sdbox2d(in vec2 p) { vec2 d = abs(p) - .33; // вот тут я поменял 1 на 0.33 return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0); } https://www.shadertoy.com/view/wdBBRd
在函数内部,
map()
您已经乘以要查找 sdf 函数值的位置,因此您扭曲了该位置的空间,即 找到另一个点的值我建议不要扭曲空间,而是更改减去音量的函数:
https://www.shadertoy.com/view/wdBBRd