0
我正在写一个ios顶点着色器,如果检测到z方向发生变化,x方向会“变平”一个MC世界,反之亦然(xz平面是perp到高度)。我有几个着色器让世界变得很好,但是编写这个伪运动检测并没有奏效。我知道条件是昂贵的。我的位置与一个号码,它的工作:MCPE GLSL条件
if (worldPos.x != 4.) {
worldPos.z = 0.;
}
但对比位置到位置的静态调用没有。到目前为止,我已经尝试将常量浮点分配给x和z分量,统一浮点数和POS4制服,但没有成功。我有一种感觉,条件因数据类型问题而失败?如果PE版本像PC一样显示协调一致,则更容易调试。感谢任何/所有的帮助!当前代码:
uniform POS4 CHUNK_ORIGIN_AND_SCALE;
attribute POS4 POSITION;
void main()
{
POS4 worldPos;
worldPos.xyz = (POSITION.xyz * CHUNK_ORIGIN_AND_SCALE.w) + CHUNK_ORIGIN_AND_SCALE.xyz;
worldPos.w = 1.;
const float staticPosx = worldPos.x;
const float staticPosz = worldPos.z;
if (worldPos.x != staticPosx) {
worldPos.z = 0.;
staticPosx = worldPos.x;
}
if (worldPos.z != staticPosz) {
worldPos.x = 0.;
staticPosz = worldPos.z;
}
etc.
什么是'POS4'?这不是GLSL的一部分。另外,什么是“MC世界”? –
@NicolBolas'POS4'是x,y,z和尺寸因子w。它可能只能用于OpenGL。 MCPE是我的世界袖珍版。 – Andrew