oes_texture_float 拡張機能を使用しないように、このフラグメント シェーダを変更することはできますか? webglアニメーションを実行するはずのマシンでエラーが発生するためです。
three.js webglrenderer とシェーダーマテリアルが適用された立方体を使用してシーンをセットアップしました。私の macbook pro ではすべて正常に動作しますが、一部の Windows マシンでは「float textures not supported」というエラーが表示されます (検索したところ、これはおそらく oes_texture_float 拡張に関係していることがわかりました)。
フラグメントシェーダーを変更する必要があると思いますか?それとも私はポイントを完全に逃していますか?
<script type="x-shader/x-vertex" id="vertexshader">
// switch on high precision floats
#ifdef GL_ES
precision highp float;
#endif
void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
</script>
<script type="x-shader/x-fragment" id="fragmentshader">
#ifdef GL_ES
precision mediump float;
#endif
#define PI 3.14159265
uniform float time;
uniform vec2 resolution;
float f(float x) {
return (sin(x * 1.50 * PI ) + 19.0);
}
float q(vec2 p) {
float s = (f(p.x + 0.85)) / 2.0;
float c = smoothstep(0.9, 1.20, 1.0 - abs(p.y - s));
return c;
}
vec3 aurora(vec2 p, float time) {
vec3 c1 = q( vec2(p.x, p.y / 0.051) + vec2(time / 3.0, -0.3)) * vec3(2.90, 0.50, 0.10);
vec3 c2 = q( vec2(p.x, p.y / 0.051) + vec2(time, -0.2)) * vec3(1.3, .6, 0.3);
vec3 c3 = q( vec2(p.x, p.y / 0.051) + vec2(time / 5.0, -0.5)) * vec3(1.7, 0.4, 0.20);
return c1+c2+c3;
}
void main( void ) {
vec2 p = ( gl_FragCoord.xy / resolution.xy );
vec3 c = aurora(p, time);
gl_FragColor = vec4(1.0-c, c);
}
</script>
編集: これは浮動小数点テクスチャとは関係ありませんが、フラグメント シェーダーの何かとは関係ありません。Three.js でエラーが表示されます:「シェーダーを初期化できません、VALIDATE_STATUS」