ブラウザに 3D ボールがあり、その後ろを見るために穴を掘りたいと思っています。
どうすれば可能になりますか?
たとえば、立方体の白い三角形の部分を透明にしたい (つまり、立方体の後ろの背景を見ることができる)。
フラグメント シェーダーでアルファを変更しようとしました (コード内の領域は三角形ではなく正方形です。問題ありません):
<script id="shader-fs-alpha" type="x-shader/x-fragment">
precision mediump float;
varying vec4 vColor;
uniform float uAlpha;
void main(void) {
if( gl_FragCoord.x < 350.0 && gl_FragCoord.x > 300.0
&& gl_FragCoord.y < 300.0 && gl_FragCoord.y > 230.0
) {
gl_FragColor = vec4(0, 0 ,0, 0.0);
} else {
gl_FragColor = vec4(vColor.rgb, 1.0);
}
}
</script>
これは実際には機能しますが、領域が白くなる(透明ではない)ので、ブレンドを有効にしようとしましたが、キューブ全体が透明になります。
それでbleanding
、フラグメントシェーダーで有効にする方法があれば、else
ブロックで無効にできると思いました。
これが私のプロジェクト全体ですhttps://gist.github.com/royguo/5873503:
- index.html : シェーダー スクリプトはこちら。
- buffers.js : すべてのオブジェクトがここにあります。
- shaders.js : シェーダーを初期化します。