トップ 一覧 検索 ヘルプ RSS ログイン

PixelBenderToolkit_Flexの変更点

-!シェーダーの役割とイメージ
+!evaluatePixel関数
+ピクセル色の計算は「evaluatePixel」関数にて記載します。
+「output float4 dst;」と記載した場合は、このdstに対してrgba情報を返してあげます。
+  void evaluatePixel()
+  {
+      float fVal1, fVal2;
+         
+      // 入力色
+      // outCoord()にてピクセル位置を表す
+      float4 inputColor = sampleNearest(src, outCoord());
+         
+      fVal1 = inVal;
+      fVal2 = 1.0 - inVal;
+         
+      dst.rgb = fVal2 * inputColor.rgb + fVal1;
+      dst.a   = 1.0;
+  }
+使用するローカルな変数はfloat/float2/float3/float4/intなどが使えます。
+
+「outCoord()」が処理しているピクセル位置を表します。「outCoord().x, outCoord().y」がXY位置です。
+
+「sampleNearest(src, outCoord());」にて第一引数にて指定した入力画像から、第二引数で指定した位置のピクセル色を取得しています。
+戻り値としてはfloat4型で、それぞれrgbaにてアクセスできます。
+
+「sampleNearest」は線形補間を行わない画像からの色取得関数、「sampleLinear」とすると、線形補間を行った色取得を行います。
+ dst.rgb = fVal2 * inputColor.rgb + fVal1;
+ dst.a   = 1.0;
+にてピクセル色を計算して返しています。値は0.0〜1.0を返すようにしてください。
+また、「inputColor.rgb」のようにすると、これはfloat4からfloat3の要素をまとめて取り出すことになります。
+
+上記を展開すると、以下と同義になります。
+ dst.r = fVal2 * inputColor.r + fVal1;
+ dst.g = fVal2 * inputColor.g + fVal1;
+ dst.b = fVal2 * inputColor.b + fVal1;
+ dst.a   = 1.0;
+それぞれr/g/b/aが、Red値/Green値/Blue値/Alpha値を表しています。
+
+上の例の場合は、inValの値が1.0に近づくことで白になっていく、という単純なシェーダーを実現しているのがわかるかと思います。
+
+!!シェーダーの役割とイメージ
-