C# だけで WPF ピクセル シェーダを書く

Published 17 October 08 06:12 PM | hiroyuk 

つまり、HLSLを使わずに、C# だけで、ピクセル シェーダを書くというものです。Sean McDirmid が彼のブログで説明し、CodePlexにコードを公開しています。

C# + LINQによる GPGPU プロジェクトの Brahma がヒントになって、NyaRuRu さんの実行時HLSLコンパイラを使って実現したそうです。

コードはこんな感じだそうです。

public static ColorShader Emboss(
    ShaderCompiler<NoArgLiftedShader> txt, 
    PointShader uv) {
  var input
= txt.ImplicitInput;
  var color
= input[uv];
  var cA
= txt.Cache(input[uv - 0.001] * 2).Lft();
  var cB
= txt.Cache(input[uv + 0.001] * 2).Lft();
  var cC
= 
   txt.Cache(ColorShader.New(
0.5f, 1) - cA + cB).Lft();
 
return ColorShader.New(
    txt.Cache((cC.R
+ cC.G + cC.B) / 3f).Lft(),
    color.A);
 }

私的には、HLSLで素直に書いたほうが、分かり易いような気がしますが...

Comments

No Comments
Anonymous comments are disabled

About hiroyuk

マイクロソフト㈱エバンジェリスト。北海道大学理学部物理学科卒。リアルタイム3Dグラフィックスを専門とし、グラフィックスやシェーダに関する技術文章を執筆・講演。 DirectX SDK日本語ドキュメントの開発に携わるとともに、Windows Presentation Foundation プログラミング(オーム社)、Game Programming Gemsシリーズ、リアルタイム レンダリング第2版(ボーンデジタル)、Texturing & Modeling, A Procedural Approach などを翻訳・監修、XAMLプログラミング(ソフトバンク クリエイティブ)を執筆。趣味は薪割り。

Search

This Blog

DirectX 情報

Silverlight 情報

Windows 情報

WPF 情報

並列コンピューティング情報

著書

Syndication

Page view tracker