シーンの半分が表示され、シーンの半分が透明になる単純なシェーダーを作成しようとしています。透明度が機能しない理由がわかりません。
uniform sampler2D tDiffuse;
varying vec2 vUv;
void main(){
vec2 p = vUv;
vec4 color;
if(p.x < 0.5){
color = (1.0, 0.0, 0.0, 0.0);
}else{
color = texture2D(tDiffuse, p);
}
gl_FragColor = color;
}
シェーダーは間違いなくエラーなしで実行されています。画面の右半分は私の threejs シーンで、画面の左半分は赤です (実際には透明である必要があります)。おそらく glBlendFunc(GL_SRC_ALPHA); を呼び出す必要があることを読みました。-しかし、これを試してみるとエラーが発生します。これを行うために、 renderer.context.blendFuncSeparate(GL_SRC_ALPHA); を実行しました。メインのjsファイル(シェーダーではありません)。これを機能させるには、これを別の場所に配置する必要がありますか?
どんな助けでも大歓迎です。参考までに、ほとんどの threejs シェーダーの例が使用する標準の EffectsComposer、shaderPass などでシェーダーを適用しています。
よろしくお願いします!!!