シェーダを使った描画処理の開始を宣言し、描画処理を行ったら終了を宣言、レンダーターゲットを元へ戻します。

このエントリーをはてなブックマークに追加

描画するタイミングは用途に応じて Draw もしくは DrawGUI イベントを利用。

shader_set 関数

shader_set 関数の第一引数へ、リソースツリーに登録されたシェーダの識別子を使った代入を行なってください。

    shader_set(ShaderName);

以下サンプルは自動変数を使ってリソースを指定するコード

var a = Pass_Through;//文字列では無い点に注意
shader_set(a);

参考:shader_set

シェーダを使ったレンダーへ切り替えた後、draw 系命令を使って描画処理を記述します。

以下サンプルコード

var a,b;
a = Pass_Through;
b = "Shader Draw TEST";
shader_set(a);//Begin
draw_text(0,0,b);//文字列を描画
draw_self();//インスタンスの外観(sprite)を描画
shader_reset();//End

shader_reset 関数

shader_reset 関数はシェーダを使った描画を終了する宣言です。引数は不要。一つのシェーダに対して「開始と終了宣言が対と成るよう」利用してください。

※ 複数のシェーダ効果を適用したい場合に、shader_set 関数を二重化するような記述は不正

以下は不正なコード例

var a,b;
a = SH_Gaussian_Hori;
b = SH_Gaussian_Vert;
shader_set(a);
draw_self();
shader_set(b);
draw_self();
shader_reset();
shader_reset();

正しい記述例

var a,b;
a = SH_Gaussian_Hori;
b = SH_Gaussian_Vert;
/* SH_Gaussian_Hori */
shader_set(a);
draw_self();
shader_reset();
/* SH_Gaussian_Vert */
shader_set(b);
draw_self();
shader_reset();
/* ガウスぼかしはループ処理回数を減らすため一般的にシェーダを縦と横、二つに分けて適用します */

次のページへ


Leave a Reply

Your email address will not be published. Required fields are marked *