3
我玩GLSL
并得到this effect。我试图将其转换为金属,但我得到了一些时髦的结果为y-axis
,当其小于0:GLSL和金属之间的数学差异
有这些有趣的弯曲剪切掉大部分在地平线以上的立方体(< 0 )。这是我的Metal
代码:
static float mod(float x, float y)
{
return x - y * floor(x/y);
}
static float vmax(float3 v) {
return max(max(v.x, v.y), v.z);
}
float fBoxCheap(float3 p, float3 b) { //cheap box
return vmax(abs(p) - b);
}
static float map(float3 p)
{
p.x = mod(p.x + 5,10)-5;
p.y = mod(p.y + 5 ,10)-5;
p.z = mod(p.z + 5 ,10)-5;
float box = fBoxCheap(p-float3(0.0,3.0,0.0),float3(4.0,3.0,1.0));
return box;
}
这几乎是在GLSL
同一代码:
float vmax(vec3 v) {
return max(max(v.x, v.y), v.z);
}
float box(vec3 p, vec3 b) { //cheap box
return vmax(abs(p) - b);
}
float map(vec3 p)
{
p.x=mod(p.x+3.0,6.0)-3.0;
p.y=mod(p.y+3.0,6.0)-3.0;
p.z=mod(p.z+3.0,6.0)-3.0;
return box(p, vec3(1.,1.,1.));
}
我怎样才能解决这个问题? 我对GLSL
和Metal
都很新,但是我发现Metal
由于这些数学问题更加棘手。
如果使用p-vec3(0.0,3.0,0.0),我会注意到GLSL中的相同效果。尝试与p,而不减去任何东西。 – Marius
我试过了。它变得更加有趣。 – sooon
你对mod的定义是什么? – warrenm