Godot: フェードイン効果のカスタムシェーダーコードでのGLES2エラー

作成日 2018年11月30日  ·  1コメント  ·  ソース: godotengine/godot

Godotバージョン:
v3.1.alpha.calinou.5b8dde4

バージョンを含むOS /デバイス:
テストされたWindows10およびAndroidデバイス

問題の説明:
基本的に、特定のclip_heightでオブジェクトをフェードアウトさせるカスタムシェーダーコードを作成しました。 オブジェクトの下部50%などをレンダリングするために使用できます。 GLES3では機能しますが、GLES2では機能しません。

問題を明確にするために、サンプルプロジェクトを作成しました。
これがGLES3でどのように見えるかです
gles3

そしてこれがGLES2でどのように見えるかです
gles2

再現する手順:
問題を基本的に次の2行のシェーダーコードに分解することができました。

    vec4 world_vertex = camera_matrix * vec4(VERTEX, 1.0);

    ALPHA = smoothstep(1, 0,  (world_vertex.y - clip_height)/fade_offset);

カメラのマトリックスは、頂点シェーダーから渡されます。 残念ながら、エラーの原因を正確に調査する方法がわかりません。

最小限の複製プロジェクト:
AlphaIssue.zip

bug rendering

最も参考になるコメント

いいキャッチ! バグを見つけました。 これは、gles2シェーダーコンパイラの問題です。 ユーザー定義コードのINV_CAMERA_MATRIXCAMERA_MATRIXを交換します。 数分でこれを修正するためのPRを提出します。 それまでの間、 CAMERA_MATRIXを使用する場合は、フラグメント関数でINV_CAMERA_MATRIXを使用してください。

>すべてのコメント

いいキャッチ! バグを見つけました。 これは、gles2シェーダーコンパイラの問題です。 ユーザー定義コードのINV_CAMERA_MATRIXCAMERA_MATRIXを交換します。 数分でこれを修正するためのPRを提出します。 それまでの間、 CAMERA_MATRIXを使用する場合は、フラグメント関数でINV_CAMERA_MATRIXを使用してください。

このページは役に立ちましたか?
0 / 5 - 0 評価