Godot Shaderノート:あなたの最初の2 D Shader(3)
1865 ワード
原文アドレス:Docs»Shading»Your first shader»Your first CanvasItem shader
Uniform変数の使用
Shaderの上部に
詳細については、Shading Language docを参照してください.
これで、エディタでSpriteの
コードとシェーダーのインタラクション
注意:
あなたの最初の頂点関数(vertex function)
今、私たちはすでに1つの片元関数を持っています.頂点関数を書きましょう.
頂点関数を使用して、各頂点が画面のどの領域に描画されるべきかを計算します.
内蔵属性
まとめ
本質的には、Shaderは現在見ているこれらの仕事をして、
インスピレーションを得るには、Shaderに関する高度なチュートリアルを見たり、他のサイトShadertoyやThe Book of Shadersを書いたりしてください.
Uniform変数の使用
uniform
変数は、このShaderでデータを転送するために使用されます.(注:実際にはシーケンス化されたメンバー変数に似ています)Shaderの上部に
uniform
変数を次のように宣言できます.uniform float size;
詳細については、Shading Language docを参照してください.
uniform
変数を追加して、便Spriteのblue
値を与えます.uniform float blue = 1.0; // uniform
void fragment(){
COLOR = texture(TEXTURE, UV); //
COLOR.b = blue;
}
これで、エディタでSpriteの
blue
の値を変更できます.チェックパネルで作成したこのShaderの下には、Shader Param
があります.この折りたたみ部分を展開すると、uniform
変数が宣言されたばかりです.この値を変更すると、彼はあなたが提供したデフォルト値を上書きします.コードとシェーダーのインタラクション
material
変数の値を変更するために、ノードのset_shader_param()
リソースを介してuniform
を呼び出すことができます.Spriteノードを例にとると、次のコードはblue
の値を変更できます.var blue_value = 1.0
material.set_shader_param("blue", blue_value)
注意:
uniform
の名前は文字列です.この文字列は、大文字と小文字を含むShaderのuniform
変数名と完全に同じでなければなりません.あなたの最初の頂点関数(vertex function)
今、私たちはすでに1つの片元関数を持っています.頂点関数を書きましょう.
頂点関数を使用して、各頂点が画面のどの領域に描画されるべきかを計算します.
VERTEX
は、頂点関数で最も重要な組み込み属性です.最初は、モデル内の頂点の座標を指定しますが、最終的に頂点を描画する場所を決定するために書き換えることもできます.VERTEX
は、最初にローカル座標(カメラ、ビューポート、親ノードに依存しない)で表されるvec2
型変数です.VERTEX
に直接オフセット量を増やして頂点をオフセットすることができます.void vertex() {
VERTEX += vec2(10.0, 0.0);
}
内蔵属性
TIME
を組み合わせると、簡単なアニメーションも実現できます.void vertex() {
// Sprite
VERTEX += vec2(cos(TIME)*100.0, sin(TIME)*100.0);
}
まとめ
本質的には、Shaderは現在見ているこれらの仕事をして、
VERTEX
とCOLOR
を計算します.より複雑な数学戦略を設計して、それらの変数に値を割り当てることができます.インスピレーションを得るには、Shaderに関する高度なチュートリアルを見たり、他のサイトShadertoyやThe Book of Shadersを書いたりしてください.