レイトレーシングを行うために使用しているWebGLフラグメントシェーダーがあります。テクスチャを使用して球と三角形のデータを渡します。これまでのところ、2つの球と3つの三角形が機能しています。4番目の三角形との交差をチェックする呼び出しを追加すると、シェーダーはリンクせず、呼び出しgetProgramInfoLog()
はnullを返します。
フラグメントシェーダーが大きくなりすぎている可能性がありますか?または、別の原因を探す必要がありますか?問題がどこにあるかをどのように判断しますか?
これがコードスニペットです。いずれかの呼び出しをコメントアウトするcheckTriangleIntersection
と、シェーダーが正常にリンクされます。
checkTriangleIntersection(0.0, rayOrigin, rayDir, piOfNearest, normalOfNearest, colourOfNearest, distOfNearest);
checkTriangleIntersection(1.0, rayOrigin, rayDir, piOfNearest, normalOfNearest, colourOfNearest, distOfNearest);
checkTriangleIntersection(2.0, rayOrigin, rayDir, piOfNearest, normalOfNearest, colourOfNearest, distOfNearest);
//checkTriangleIntersection(3.0, rayOrigin, rayDir, piOfNearest, normalOfNearest, colourOfNearest, distOfNearest);
インデックス以外はすべて同じなので、コード自体に問題はないと思いましたが、なんらかの制限がありますか?
追加の関数呼び出しを追加する前に30FPSを超えています。追加の呼び出しを追加しても、頂点シェーダーとfragemntシェーダーの両方が正常にコンパイルされます。