MCPE GLSL 条件
MCPE GLSL Conditionals
我正在编写一个 ios 顶点着色器,如果检测到 z 方向发生变化,"flattens" 一个 MC 世界在 x 方向,反之亦然(xz 平面是 perp高度)。我有几个可以很好地扭曲世界的着色器,但是编写这个伪运动检测并没有奏效。我知道条件是昂贵的。我正在将位置与数字进行比较,结果有效:
if (worldPos.x != 4.) {
worldPos.z = 0.;
}
但是将位置与位置的静态调用进行比较则不然。到目前为止,我已经尝试将常量浮点数分配给 x 和 z 分量、统一浮点数和 POS4 统一数,但没有成功。我感觉条件判断失败是因为数据类型问题?如果PE版本像PC一样显示坐标,调试起来会更容易。感谢 any/all 的帮助!当前代码:
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.
我没有在 glsl 中尝试过,但在 C 中你不能
int a=5;
const int b=a;
我正在编写一个 ios 顶点着色器,如果检测到 z 方向发生变化,"flattens" 一个 MC 世界在 x 方向,反之亦然(xz 平面是 perp高度)。我有几个可以很好地扭曲世界的着色器,但是编写这个伪运动检测并没有奏效。我知道条件是昂贵的。我正在将位置与数字进行比较,结果有效:
if (worldPos.x != 4.) {
worldPos.z = 0.;
}
但是将位置与位置的静态调用进行比较则不然。到目前为止,我已经尝试将常量浮点数分配给 x 和 z 分量、统一浮点数和 POS4 统一数,但没有成功。我感觉条件判断失败是因为数据类型问题?如果PE版本像PC一样显示坐标,调试起来会更容易。感谢 any/all 的帮助!当前代码:
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.
我没有在 glsl 中尝试过,但在 C 中你不能
int a=5;
const int b=a;