class Shader
Description
シェーダ言語であるHLSLを使ってプログラムを記述し、画像の描画時にGPU上で実行することで高速なエフェクトを実現するクラスです。
利便性向上のため、Shader::CoreクラスとShaderクラスに分かれており、Shader::CoreはHLSLを渡して実行バイナリを生成・保持するクラス、ShaderはHLSLに渡すパラメータを保持し描画時に指定するクラスですが、これらのクラスはDXRuby史上最大の拡張と言っても過言ではない、非常に強力なエフェクト機能を提供します。
エフェクト処理はDirectX用にMicrosoftが開発したHLSLという言語での記述であり、HLSLを知らない方には大変高いハードルとなることは疑う余地がありません。
どのようなことができるかは、Shader系サンプルを動かして見て頂くのが最も手っ取り早いでしょう(インストール時の絵が波打っているのもShaderを利用して作られています)。
DXRuby1.2まではピクセル単位の処理はRubyで記述するしかなく、とてもリアルタイムで処理できるような速度にはなりませんでした。
ShaderクラスはDirectX9のプログラマブルシェーダ機能をRuby側に解放することで、ピクセル単位の処理をGPU上で実行することができます。
これにより今まで不可能だった自由なリアルタイムエフェクトを作成することができます。
Shader単体でできることは限られますが、RenderTargetに対してShaderで描画し、それを画面に描画することで更にさまざまなことができるようになります。
このあたりもShader系サンプルのコードを見て頂くとなんとなくわかるかと思います。
HLSLは扱えない人にはまったく扱えないと思いますので、何かしらエフェクトを作成した場合はソースとサンプルを公開していただければ一層DXRubyの世界が広がるかと思います。
具体的な使い方はチュートリアルを参照してください。
Class Methods
- new
- Shaderオブジェクトを生成して返します。
Instance Methods
- technique
- technique名を返します。
- technique=
- technique名を変更します。
- setter/getter
- Shader::Coreクラスに定義したパラメータ名のSetter/Getterが特異メソッドとして自動で追加されます。