問題タブ [webgl2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
webgl2 - 頂点シェーダーのみで WebGL プログラムを作成することはできますか?
頂点シェーダーのみがアタッチされている WebGL2 シェーダー プログラムをリンクしようとすると、「シェーダーがありません」というエラーが表示されます。トランスフォーム フィードバックを使用しようとしていますが、頂点シェーダーの出力が書き出されるので、フラグメント シェーダーは必要ないはずだと考えました。
このブログ投稿:リンクから、これを行うことができるはずです。私が見逃している WebGL について何か特別なことはありますか?
glsl - pack float into two bytes in WebGL2
I have deferred MRT render written in WebGL2. In one of standard (non float) destination textures I have two available byte components, say x and y. I want to pack and lately unpack a floating value with a range [0..100].
How to implement conversion forth and back between between float and two bytes components preserving as much precision as possible?
webgl - Depth をテクスチャにレンダリング & samplerCubeShadow WebGL 2.0
samplerCubeShadow を使用して OpenGL シャドウ マッピング コードを WebGL に適合させようとしていますが、有効なデータ形式とストレージが最初と 2 番目で明らかに同じではないため、必死に体系的に袋小路に陥ります。
他のサンプラーを使用してsampler*Shadow
、他の方法でテクスチャにレンダリングすることでシャドウ マッピングを実現できることはわかっていますが、可能であれば、OpenGL で行ったのと同じ方法で実現したいと考えています。
私の問題は、フォーマット、内部フォーマット、および samplerCubeShadow サンプラーに期待される WebGL/GLSL の適切な組み合わせを見つけることです (存在する場合)。
1. 質問: デスティネーション デプス テクスチャ フォーマット。
OpenGL では、深度テクスチャとして次の形式を使用します。
GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_FLOAT
しかし、WebGLで受け入れられている唯一の組み合わせDEPTH_ATTACHEMENT
は
gl.DEPTH_COMPONENT16, gl.DEPTH_COMPONENT, gl.UNSIGNED_SHORT
試しgl.FLOAT
てみましgl.HALF_FLOAT
たが、 とはtexImage2D
別のタイプを拒否しgl.UNSIGNED_SHORT
ます。
WebGL の深度テクスチャに適した形式ですか? はいの場合、WebGL は深さデータを float ではなく 16 ビット整数で格納します。これは奇妙に聞こえますが、16 ビットは 16 ビットであるため、実際の問題ではありません。WebGL の深度テクスチャの唯一の受け入れ可能な形式は本当にそれですか?
2. 問題: テクスチャがレンダリングできない
エラーなしでこのテクスチャを描画できますが、テクスチャを にバインドする瞬間になるとsamplerCubeShadow
、WebGL は人生で見たことのないエラーをスローします。
texture bound to texture unit # is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
この時点から
「レンダリング可能な」フォーマットを見つけたが、これを として使用できないか、 「レンダリング可能」ではないDEPTH_ATTACHEMENT
に適したフォーマットを見つけましたDEPTH_ATTACHEMENT
...では、解決策は何ですか?
擬似コード:
編集: OpenGL コードでは、宛先深度テクスチャに追加のパラメーターがあります。
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE);
ただし、DEPTH_TEXTURE_MODE
WebGLには存在しません...これがWebGLで機能するために欠けているのはこれでしょうか?