|
|
@@ -121,7 +121,11 @@ void main() {
|
|
|
const float NEG_FLT_MAX_OVER_2 = uintBitsToFloat(0xFEFFFFFF);
|
|
|
|
|
|
L = coopmat<ACC_TYPE, gl_ScopeWorkgroup, Br, Bc, gl_MatrixUseAccumulator>(0);
|
|
|
+#if defined(ACC_TYPE_MAX)
|
|
|
+ M = coopmat<ACC_TYPE, gl_ScopeWorkgroup, Br, Bc, gl_MatrixUseAccumulator>(-ACC_TYPE_MAX / ACC_TYPE(2));
|
|
|
+#else
|
|
|
M = coopmat<ACC_TYPE, gl_ScopeWorkgroup, Br, Bc, gl_MatrixUseAccumulator>(NEG_FLT_MAX_OVER_2);
|
|
|
+#endif
|
|
|
|
|
|
coopmat<ACC_TYPE, gl_ScopeWorkgroup, Br, Bc, gl_MatrixUseAccumulator> slopeMat = coopmat<ACC_TYPE, gl_ScopeWorkgroup, Br, Bc, gl_MatrixUseAccumulator>(1.0);
|
|
|
|
|
|
@@ -294,7 +298,7 @@ void main() {
|
|
|
|
|
|
[[unroll]]
|
|
|
for (int k = 0; k < Ldiag.length(); ++k) {
|
|
|
- Ldiag[k] = ACC_TYPE(1.0) / Ldiag[k];
|
|
|
+ Ldiag[k] = (Ldiag[k] == 0.0) ? ACC_TYPE(0.0) : (ACC_TYPE(1.0) / Ldiag[k]);
|
|
|
}
|
|
|
|
|
|
O = Ldiag*O;
|