我正在尝试使用复杂的 if-else 决策树来实现 GLSL 片段着色器。不幸的是,着色器编译器很早就因“语法错误 - 内存耗尽”错误而失败。GLSL 中的代码大小或决策树深度是否有任何限制?任何建议如何克服这个问题?
bool block1(float p[16], float cb, float c_b) {
if(p[6] > cb)
if(p[7] > cb)
if(p[8] > cb)
return true;
else
if(p[15] > cb)
return true;
else
return false;
else if(p[7] < c_b)
if(p[14] > cb)
if(p[15] > cb)
return true;
else
return false;
else if(p[14] < c_b)
if(p[8] < c_b)
if(p[9] < c_b)
if(p[10] < c_b)
if(p[11] < c_b)
if(p[12] < c_b)
if(p[13] < c_b)
if(p[15] < c_b)
return true;
else
return false; // ';' : syntax error memory exhausted
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
if(p[14] > cb)
if(p[15] > cb)
return true;
else
return false;
else
return false;
else if(p[6] < c_b)
if(p[15] > cb)
if(p[13] > cb)
if(p[14] > cb)
return true;
else
return false;
else if(p[13] < c_b)
if(p[7] < c_b)
if(p[8] < c_b)
if(p[9] < c_b)
if(p[10] < c_b)
if(p[11] < c_b)
if(p[12] < c_b)
if(p[14] < c_b)
return true;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
if(p[7] < c_b)
if(p[8] < c_b)
if(p[9] < c_b)
if(p[10] < c_b)
if(p[11] < c_b)
if(p[12] < c_b)
if(p[13] < c_b)
if(p[14] < c_b)
return true;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
if(p[13] > cb)
if(p[14] > cb)
if(p[15] > cb)
return true;
else
return false;
else
return false;
else if(p[13] < c_b)
if(p[7] < c_b)
if(p[8] < c_b)
if(p[9] < c_b)
if(p[10] < c_b)
if(p[11] < c_b)
if(p[12] < c_b)
if(p[14] < c_b)
if(p[15] < c_b)
return true;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
else
return false;
}