Intel グラフィックス チップと nvidia チップでは、フラグメント シェーダの実行方法が大きく異なるという問題があります。(どちらのドライバーも最新です)
問題は、次のコードの mod-call にあるようです:
float opRep( vec3 p, vec3 c ){
// gl_FragColor = vec4(max(0.0, sign(p.x)), max(sign(p.y), 0.0), max(sign(p.z), 0.0), 1);
vec3 q = mod(p,c)-0.5*c;
gl_FragColor = vec4(max(0.0, sign(q.x)), max(sign(q.y), 0.0), max(sign(q.z), 0.0), 1);
return twistedColumn( q );
}
float distanceFromPoint(vec3 point) {
return opRep(point, vec3(90.5, 0, 98));
}
gl_FragColor は私の「デバッグ」ステートメントです。mod関数はdiffrenetドライバーで異なる符号を返すと思うので、デバッグステートメントはポイントの符号を出力します。
最初のデバッグ出力のコメントを外すと、同じ視覚的な結果が得られます。しかし、改造後、視覚的な結果はインテル グラフィックス ドライバーと nvidia バージョンの間で異なり、非常に紛らわしいです。
誰かが私に異なる結果が得られる理由を教えてもらえますか...?