ShadertoyをローカルのThree.jsプロジェクトに変換しており、レンダリングできません。ここでfull snippetを試すことができます。ShadertoyのiResolution変数をThree.jsスクリプトで変換して使用する
私はiResolution
変数をどのように変換するのかという問題があると思います。私が理解しているように、組み込みのShadertoyグローバル変数iResolution
には、ウィンドウのピクセルサイズが含まれています。ここでoriginal Shadertoyに使用される方法iResolution
ある:
vec2 uv = fragCoord.xy/iResolution.y;
vec2 ak = abs(fragCoord.xy/iResolution.xy-0.5);
iResolution
変換への2つのアプローチを試みたIローカルThree.jsベースのスクリプトにこのShadertoy変換で:ウィンドウをロード
1)ベクトル2として寸法および均一vec2 uResolution
としてシェーダにそれらを送信する:
vec2 uv = gl_FragCoord.xy/uResolution.y;
vec2 ak = abs(gl_FragCoord.xy/uResolution.xy-0.5);
このソリューションは、最も近いデにこだわっoriginal Shadertoyを無視しても何も表示されません。
2)第二のアプローチは、このSO Answerから来ているとxy
絶対座標にuv
座標を変換します。この一
vec2 uvCustom = -1.0 + 2.0 *vUv;
vec2 ak = abs(gl_FragCoord.xy/uvCustom.xy-0.5);
、私は完全にそれがどのように動作するか理解していない認める、と私2行目のuvCustom
の使用が正しくない可能性があります。
最後に、使用しているThree.js CameraHelperを除いて、画面上に何も表示されません。それ以外の場合、画面は黒色で、コンソールにはJavascriptまたはWebGLのエラーは表示されません。見ていただきありがとうございます!
あなたは変更することができますjsのフィドルを作ることができますか? – pailhead
シェーダを 'void main(){gl_FragColor = vec4(1,0,0,1);}に変更してください。 } '。あなたは赤が見えますか?そうでなければ、問題はフラグメントシェーダとは関係ありません。 – gman