メインコンテンツまでスキップ

GLSL の詳細

PlayCanvas エンジンで使用される GLSL シェーダーは、特定の要件を満たす必要があります。これらの要件により、エンジンはシェーダーを正しく統合し、attributes、uniforms、varyings などの必要なリソースを確実に受け取れるようにします。これらの規則に従うことで、WebGPU で使用するために WGSL にトランスパイルする際に、わずかに異なる要件に対応できるようシェーダーを自動的に処理することもできます。

以下のセクションでは、PlayCanvas 用の GLSL シェーダーを作成する上での主要な側面を概説します。

注記

#version はシェーダーソースに含めるべきではありません。PlayCanvas は、WebGL2 または WebGPU がターゲットになっているかどうかに基づいて、適切なバージョンディレクティブを自動的に追加します。

アトリビュート

アトリビュートは、頂点ごとの入力データを定義します。それらは以下の構文を使用して宣言する必要があります。

attribute vec2 aUv0;

アトリビュート名は、ShaderMaterial を作成する際に attributes プロパティで指定された名前と一致する必要があります。

注記

in キーワード (GLSL 3.3+ で導入) はサポートされていません。

ユニフォーム

ユニフォームは、エンジンからシェーダーにリソースを渡すために使用されます。それらは、数値およびテクスチャユニフォームに対して標準的な方法で宣言されます。

uniform vec3 view_position;

エンジンは、レンダリング時に適切なユニフォーム値を自動的に設定します。

ベアリアブル

ベアリアブルは、頂点シェーダーからフラグメントシェーダーに値を渡すために使用されます。それらは標準的な GLSL 構文を使用して宣言する必要があります。

varying vec2 uv0;
注記

in/out 構文 (GLSL 3.3+ で導入) はサポートされていません。