Godot Shaderノート:あなたの最初の2 D Shader(3)

1865 ワード

原文アドレス:Docs»Shading»Your first shader»Your first CanvasItem shader
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は現在見ているこれらの仕事をして、VERTEXCOLORを計算します.より複雑な数学戦略を設計して、それらの変数に値を割り当てることができます.
インスピレーションを得るには、Shaderに関する高度なチュートリアルを見たり、他のサイトShadertoyやThe Book of Shadersを書いたりしてください.