SlideShare a Scribd company logo
DirectX 11 (DirectX HLSL)
シェーダー伝道師
第一回
~シェーダーの基本とフィルタ処理~
※注意書き
• 確実に技術が身に付く確証はありません
• 2D中心にシェーダーの解説します
• 魅力を精一杯伝えたいだけ!
• あと変なノリが含まれます
• あと、公開しているファイル等の責任は取れません
※表記上、シェーダとシェーダーが混ざる可能性がありますが特に区別はありません
それでもいいなら進めていってください。
当講座について
• C++
• DirectX 11
• DirectX HLSL
• Visual Studio 2015 (2013)
前略、DirectX 11 シェーダー講座、始めます。
当講座について
• C++
• DirectX 11
• DirectX HLSL
• Visual Studio 2015 (2013)
主な目的は、
シェーダーの魅力を伝えたい!
つまるところシェーダーの伝道師です。
当講座について
• C++
• DirectX 11
• DirectX HLSL
• Visual Studio 2015 (2013)
開発環境はここに示しているものです。
私は2015ですが…
プロジェクト自体は2013です。
当講座についての注意
•3DCGは扱わない
簡単に理解してもらいたい!
ということで、3DCGは扱いません。
当講座についての注意
•3DCGは扱わない
• 複雑な座標計算は扱わない
• 結果がわかりやすい
理由としましてシェーダーの魅力を簡単に…
今回は、画像処理中心となります。
当講座についての注意
•3DCGは扱わない
• 複雑な座標計算は扱わない
• 結果がわかりやすい
複雑な座標計算は理解の妨げになります。
当講座についての注意
•3DCGは扱わない
• 複雑な座標計算は扱わない
• 結果がわかりやすい
そして、何より結果が二次元です。
書いたものが絵に現れる…
非常に直感的です。
当講座についての注意
•3DCGは扱わない
• 複雑な座標計算は扱わない
• 結果がわかりやすい
その為、3DCGは見送らせて頂きます。
(機会があれば解説するかも…です)
本日の献立 (第一回)
• シェーダーの基本
• シェーダーを用いた画像処理フィルタ では、よろしいでしょうか?
第一回の献立はこちらとなります。
本日の献立 (第一回)
• シェーダーの基本
• シェーダーを用いた画像処理フィルタ まず、シェーダーの基本。
あまり詳しく説明はしませんが…
本日の献立 (第一回)
• シェーダーの基本
• シェーダーを用いた画像処理フィルタ 後は、実際に動かしてみよう…
というわけでフィルター処理です。
ぼかしとかラプラシアンとか…
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
では、まずシェーダーの基本というわけで、
シェーダーとは、何でしょうか。
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
広義ではグラフィックスを扱うプログラム…
とでも置きましょうか。
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
例えば、テクスチャを貼り付けるもの、
影をつけるもの、鏡面、水面…
なんでもシェーダーですね。
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
それらのプログラムは、内部で分割され…
DirectX HLSLでメインとなって記述するのが…
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
• シェーダーステージ
頂点シェーダー
ピクセルシェーダー
頂点シェーダーとピクセルシェーダーです。
基本的にはこの2つあれば描画できます。
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
• シェーダーステージ
頂点シェーダー
ピクセルシェーダー
逆に言えば、最低でもこの2つを記述しなけ
れば全く描画ができないと言ってもいいです。
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
• シェーダーステージ
頂点シェーダー
ピクセルシェーダー
例えば3DCGの描画では、箱を描画する時、
空間にカメラを配置し、箱との位置関係で、
画面のどこに描画するか決定します。
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
• シェーダーステージ
頂点シェーダー
ピクセルシェーダー
その座標変換を中心となって行うのが
頂点シェーダー(Vertex Shader)です。
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
• シェーダーステージ
頂点シェーダー
ピクセルシェーダー
頂点シェーダーによって変換された座標で、
実際に画面に対応する色を決定するのが
ピクセルシェーダー(Pixel Shader)となります。
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
• シェーダーステージ
頂点シェーダー
ピクセルシェーダー
箱の面に対応するテクスチャの色を取って
来る事で、箱を塗ることができます。
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
• シェーダーステージ
頂点シェーダー
ピクセルシェーダー
あるいは箱の頂点に色情報を付加しておく
ことで、色の付いた箱…などですね。
後は光源から反射や陰影など…
シェーダーの基本
• シェーダーとは?
グラフィックスを扱うプログラム
• 主なシェーダー?
テクスチャの貼り付け 影 鏡面 水面
• シェーダーステージ
頂点シェーダー
ピクセルシェーダー
今回は、このピクセルシェーダー中心に
講座を進めていきたいと思います。
プロジェクトファイルのダウンロード
• GitHubのURLを私のサイトに記載します
私のサイトで見ている方はページ下の方を
ご確認頂ければ見つけられると思います
SlideShareでは説明文に私のサイトURLを
(露骨なカウント稼ぎ失礼致します)
URL怖い方はSlideShareと同じIDですので検索を
というわけで早速フィルタ処理を
実装してみましょう。
プロジェクトファイルのダウンロード
• GitHubのURLを私のサイトに記載します
私のサイトで見ている方はページ下の方を
ご確認頂ければ見つけられると思います
SlideShareでは説明文に私のサイトURLを
(露骨なカウント稼ぎ失礼致します)
URL怖い方はSlideShareと同じIDですので検索を
シェーダーのコンパイルから描画まで
実装したプロジェクトです。
プロジェクトファイルのダウンロード
• GitHubのURLを私のサイトに記載します
私のサイトで見ている方はページ下の方を
ご確認頂ければ見つけられると思います
SlideShareでは説明文に私のサイトURLを
(露骨なカウント稼ぎ失礼致します)
URL怖い方はSlideShareと同じIDですので検索を
稀に動かない環境もありますのでご注意を。
グラボはあった方がいいかもです。
プロジェクトファイルを開く
• プロジェクトは2013
アップグレードはしない
• x86で
x64 ✕
x86 ○
プロジェクトは2013のものです。
x86でbuildして下さい。
実行すると
• レナ姉さん!
実行するとウィンドウにレナ姉さんが出ます。
実行すると
Qキーを押す度にシェーダーが変わります。
実行すると
実行直後はそのまま描画で…
実行すると
平滑化フィルタ(ぼかし)
実行すると
ガンマ値の変更
実行すると
最後は先鋭化で再び標準に遷移します。
実行すると
なお、下2つにつきましては、
PageUp・PageDownや
カーソルキー上下で変数が変化します。
実行すると
明るくなったり、暗くなったり…
先鋭化に関しても見た目が変わります。
実行すると
あとはRキーで変数のリセット、
SキーでOutputフォルダに書き出しです。
実行すると
実装、についてですが…
これらの画像処理フィルタの原理に
関しては各自で調べてください。
画像処理フィルタ
• 例:平滑化フィルタ
調べてもらうと…もしくは経験上、
このような図を見ませんでしたか?
これが画像処理のフィルタです。1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
画像処理フィルタ
• 例:平滑化フィルタ
画像はピクセルで構成されていますが、
そのピクセルの色を決定する計算を…
3×3では中央が色を決めるピクセルです。1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
画像処理フィルタ
• 例:平滑化フィルタ
例えばこちらは色を決めたいピクセルの
左上のピクセルを示しています。1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
画像処理フィルタ
• 例:平滑化フィルタ
つまり周囲のピクセルを計算に使用します。
そして数値はその重み付けです。1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
画像処理フィルタ
• 例:平滑化フィルタ
平滑化は見ていただくと分かるように、
9分の1…つまり平均ですね。
これで、ぼかしを表現するわけです。1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
画像処理フィルタ
• 例:平滑化フィルタ
では早速、画像処理のフィルタを
書き換えてみましょう。1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
書き換えるということで、まず確認。
プロジェクト内にhlslファイルがあります。
その中にこのような記述があります。
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
ピクセルシェーダー…ですね。
これは、実行直後の標準のシェーダーです。
つまりそのままの描画です。
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
記述、に関してですが…
普通の関数という認識で構いません。
float4(rbga)を返すmainPSという関数です。
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
rgbaを1つしか返さない関数…
ということで、このピクセルシェーダーは、
描画する各ピクセルで実行される関数です。
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
今回の書き換えは、このピクセルシェーダー
に限定したものとなります。
次回以降、テクスチャの生成やシェーダー
追加などに触れていきますのであしからず。
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
では、この関数について簡単に解説します。
まず入力したテクスチャの解像度を取得。
(g_Tex0が入力テクスチャ)
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
解像度と描画する座標(input.tex)より、
テクスチャの画素を読み取る座標を
計算します。
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
変数に値を読み取ります。
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
今回の場合はそのまま描画ですね。
(α値だけ1に固定)
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
最後にreturnですね。
では、平滑化フィルタに参りましょう。
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.rgb;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
先程の1つ下にぼかしフィルタがあります。
こちらについても解説していきます。
//===================================
// ピクセルシェーダ ぼかし
//===================================
float4 blurPS(PSINPUT input) : SV_TARGET
{
~~~~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~
float dw = 1.0f / width;
float dh = 1.0f / height;
float2 ei[9] = { float2(-dw, -dh), float2(0, -dh), float2(dw, -dh), float2(-dw, 0), float2(0, 0), float2(dw, 0), float2(-dw, dh), float2(0, dh), float2(dw, dh) };
float2 center = input.tex ;
float3 s = float3(0, 0, 0);
for (i = 0; i < 9; i++)
s += g_Tex0.Sample(g_Sampler, center + ei[i]).rgb;
Out = float4(s / 9.0f, 1);
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
略、に関しては解像度の取得です。
//===================================
// ピクセルシェーダ ぼかし
//===================================
float4 blurPS(PSINPUT input) : SV_TARGET
{
~~~~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~
float dw = 1.0f / width;
float dh = 1.0f / height;
float2 ei[9] = { float2(-dw, -dh), float2(0, -dh), float2(dw, -dh), float2(-dw, 0), float2(0, 0), float2(dw, 0), float2(-dw, dh), float2(0, dh), float2(dw, dh) };
float2 center = input.tex ;
float3 s = float3(0, 0, 0);
for (i = 0; i < 9; i++)
s += g_Tex0.Sample(g_Sampler, center + ei[i]).rgb;
Out = float4(s / 9.0f, 1);
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
こちらは解像度から、
1ピクセル分のテクスチャ座標を求めます。
つまり、1つ隣の移動量を算出します。
//===================================
// ピクセルシェーダ ぼかし
//===================================
float4 blurPS(PSINPUT input) : SV_TARGET
{
~~~~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~
float dw = 1.0f / width;
float dh = 1.0f / height;
float2 ei[9] = { float2(-dw, -dh), float2(0, -dh), float2(dw, -dh), float2(-dw, 0), float2(0, 0), float2(dw, 0), float2(-dw, dh), float2(0, dh), float2(dw, dh) };
float2 center = input.tex ;
float3 s = float3(0, 0, 0);
for (i = 0; i < 9; i++)
s += g_Tex0.Sample(g_Sampler, center + ei[i]).rgb;
Out = float4(s / 9.0f, 1);
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
そして、9方向分の移動を配列に格納します。
ちょうど[4]がfloat2(0,0)で中心です。
//===================================
// ピクセルシェーダ ぼかし
//===================================
float4 blurPS(PSINPUT input) : SV_TARGET
{
~~~~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~
float dw = 1.0f / width;
float dh = 1.0f / height;
float2 ei[9] = { float2(-dw, -dh), float2(0, -dh), float2(dw, -dh), float2(-dw, 0), float2(0, 0), float2(dw, 0), float2(-dw, dh), float2(0, dh), float2(dw, dh) };
float2 center = input.tex ;
float3 s = float3(0, 0, 0);
for (i = 0; i < 9; i++)
s += g_Tex0.Sample(g_Sampler, center + ei[i]).rgb;
Out = float4(s / 9.0f, 1);
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
テクスチャ座標(center)と配列の値より
周囲のピクセルの値をサンプリングします。
//===================================
// ピクセルシェーダ ぼかし
//===================================
float4 blurPS(PSINPUT input) : SV_TARGET
{
~~~~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~
float dw = 1.0f / width;
float dh = 1.0f / height;
float2 ei[9] = { float2(-dw, -dh), float2(0, -dh), float2(dw, -dh), float2(-dw, 0), float2(0, 0), float2(dw, 0), float2(-dw, dh), float2(0, dh), float2(dw, dh) };
float2 center = input.tex ;
float3 s = float3(0, 0, 0);
for (i = 0; i < 9; i++)
s += g_Tex0.Sample(g_Sampler, center + ei[i]).rgb;
Out = float4(s / 9.0f, 1);
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
「あれ?さっきはLoadじゃなかった?」
という点については後ほど解説致します。
//===================================
// ピクセルシェーダ ぼかし
//===================================
float4 blurPS(PSINPUT input) : SV_TARGET
{
~~~~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~
float dw = 1.0f / width;
float dh = 1.0f / height;
float2 ei[9] = { float2(-dw, -dh), float2(0, -dh), float2(dw, -dh), float2(-dw, 0), float2(0, 0), float2(dw, 0), float2(-dw, dh), float2(0, dh), float2(dw, dh) };
float2 center = input.tex ;
float3 s = float3(0, 0, 0);
for (i = 0; i < 9; i++)
s += g_Tex0.Sample(g_Sampler, center + ei[i]).rgb;
Out = float4(s / 9.0f, 1);
return Out;
}
画像処理フィルタ (DirectX HLSL)
• ShaderFiles/2DShaders.hlsl
あとは9分の1にして描画ですね。
//===================================
// ピクセルシェーダ ぼかし
//===================================
float4 blurPS(PSINPUT input) : SV_TARGET
{
~~~~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~
float dw = 1.0f / width;
float dh = 1.0f / height;
float2 ei[9] = { float2(-dw, -dh), float2(0, -dh), float2(dw, -dh), float2(-dw, 0), float2(0, 0), float2(dw, 0), float2(-dw, dh), float2(0, dh), float2(dw, dh) };
float2 center = input.tex ;
float3 s = float3(0, 0, 0);
for (i = 0; i < 9; i++)
s += g_Tex0.Sample(g_Sampler, center + ei[i]).rgb;
Out = float4(s / 9.0f, 1);
return Out;
}
画像処理フィルタ (DirectX HLSL)
• 例題1
標準シェーダーを変更
rgb=argに
• 例題2
ぼかしシェーダーを変更
周囲の平均r値より自身のr値が高ければ白
そうでなければ黒に
ということで実際のコードに触れてみましょう。
触れるには書き換えが一番です。
これらの例題の解説をします。
画像処理フィルタ (DirectX HLSL)
• 例題1
まず例題1ですが、ここを書き換えてください。
HLSLの面白い記述方法の一つです。
Aはαチャンネルですね。
//===================================
// ピクセルシェーダ
//===================================
float4 mainPS(PSINPUT input) : SV_TARGET
{
float4 Out;
float4 Samp;
int width, height;
g_Tex0.GetDimensions(width, height);
int2 size = int2(width, height);
int3 sp = int3(input.tex * size, 0);
Samp = g_Tex0.Load(sp);
Out.rgb = Samp.arg;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• 例題1
実行すると左の様に黄色一色です。
argであれば、右の様な配色となるはずです。
右の様な配色になる理由は…
画像処理フィルタ (DirectX HLSL)
• 例題1
rgb<-argより、出力のrは1固定、
gb成分にrg成分が書き込まれるので、
(元が赤が強くrg成分が目立ち)橙です。
画像処理フィルタ (DirectX HLSL)
• 例題1
黄色一色ということは、r=g成分です。
もっと言えば、b成分しか変化していません。
その理由こそが…
画像処理フィルタ (DirectX HLSL)
• 例題1
実は2回実行されているのです。
1回目でrは1が書き込まれます。
2回目では更にrとgも1になり黄色になります。
画像処理フィルタ (DirectX HLSL)
• 例題1
画面に描画する際にも同じシェーダーを
用いていることが原因です。
証拠に、黄色い画面でSキーで保存すると、
右のような配色で出力されると思います。
画像処理フィルタ (DirectX HLSL)
• 例題2
次に例題2ですが、このような感じでしょうか。
//===================================
// ピクセルシェーダ ぼかし
//===================================
float4 blurPS(PSINPUT input) : SV_TARGET
{
~~~~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~
float dw = 1.0f / width;
float dh = 1.0f / height;
float2 ei[9] = { float2(-dw, -dh), float2(0, -dh), float2(dw, -dh), float2(-dw, 0), float2(0, 0), float2(dw, 0), float2(-dw, dh), float2(0, dh), float2(dw, dh) };
float2 center = input.tex;
float3 s = float3(0, 0, 0);
for (i = 0; i < 9; i++)
s += g_Tex0.Sample(g_Sampler, center + ei[i]).rgb;
Out = s.r / 9.0f < g_Tex0.Sample(g_Sampler, center).r;
Out.a = 1;
return Out;
}
画像処理フィルタ (DirectX HLSL)
• 例題2
出力結果はこんな感じ。
画像処理フィルタ (DirectX HLSL)
• 例題2
先鋭化フィルタやラプラシアンフィルタなど、
周囲の値を用いるものはすぐ書けますね。
画像処理フィルタ (DirectX HLSL)
• 例題2
あ、例題で変更した箇所は戻してくださいね。
画像処理フィルタ (DirectX HLSL)
• 実践1 (グレースケール変換)
変換式を調べる
ヒント : rgb = r * _ + g * _ + b * _;
• 実践2 (3成分ラプラシアンフィルタ)
ラプラシアンフィルタを調べる
ヒント : 先鋭化フィルタ
実践ということで、このような感じでしょうか。
余裕があればやってみてください。
DirectX HLSL
• 4成分変数の扱い方
o.rgb = i.bgr; // 順番
o.rgb = i.rrr; // 好きな成分
o.rgb = 0; // 一気に代入
o.a = 1; // 当然1つも
o.xyzw = i.xyzw; // xyzwでも
o.rgb *= 2.0f; // 3成分に同時
o = float4(i.rgb, 1); // 初期化が多彩
o = float4(i1.xy, i2.xy);// 初期化が多彩
さて、いかがでしたか?
簡単ですが書き換えは楽しかったですか?
hlslの書き方は特徴的?
DirectX HLSL
• 多彩な組み込み関数
sin cos tan … // 数学関数
sature clamp … // クランプ関係
distance length … // 座標関係
clip // 計算破棄
hlslには多彩な組み込み関数もあります。
まとめ
• ピクセルシェーダーを触ってみた
• 画像処理フィルタを触ってみた
• hlslは面白い
次回予定
シェーダーによるライフゲーム
・テクスチャの生成や更新
・シェーダーの追加 など
少し早いですが本日はここまで。
次回予定はライフゲームです。
それでは失礼致します。
P.S. LoadとSampleについて
• Load (ピクセル単位で取り出す)
よって整数型で指定する
• Sample (テクスチャ座標でサンプリング)
よって浮動小数点型で指定する
• なぜ周囲を見る時Sampleか
出力画像の解像度でフィルタ処理を行いたい
入力画像の解像度に依存しないSample
追伸、LoadとSampleの件。
Loadは配列の値を読み取るように、
整数の値によってピクセルを指定して
その色を取り出します。
P.S. LoadとSampleについて
• Load (ピクセル単位で取り出す)
よって整数型で指定する
• Sample (テクスチャ座標でサンプリング)
よって浮動小数点型で指定する
• なぜ周囲を見る時Sampleか
出力画像の解像度でフィルタ処理を行いたい
入力画像の解像度に依存しないSample
逆にSampleは適当な座標でも適切な値を算
出します。この時、サンプリングの設定で線
形補間などを選択できます。
P.S. LoadとSampleについて
• Load (ピクセル単位で取り出す)
よって整数型で指定する
• Sample (テクスチャ座標でサンプリング)
よって浮動小数点型で指定する
• なぜ周囲を見る時Sampleか
出力画像の解像度でフィルタ処理を行いたい
入力画像の解像度に依存しないSample
なぜSampleかと言うと、出力画像の解像度
でフィルタ処理を行いたいためです。
P.S. LoadとSampleについて
• Load (ピクセル単位で取り出す)
よって整数型で指定する
• Sample (テクスチャ座標でサンプリング)
よって浮動小数点型で指定する
• なぜ周囲を見る時Sampleか
出力画像の解像度でフィルタ処理を行いたい
入力画像の解像度に依存しないSample
入力画像の解像度によって、
フィルタが変わるのはナンセンスです。
ということでよろしいでしょうか。
立ち絵素材
• 臼井の会様 http://usui.moo.jp/frame2.html
ご視聴ありがとうございました。

More Related Content

What's hot

ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
torisoup
 
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTERNPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
エピック・ゲームズ・ジャパン Epic Games Japan
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~
ProjectAsura
 
GLSLtech2018 レイマーチングで半歩差のつく小技集
GLSLtech2018 レイマーチングで半歩差のつく小技集GLSLtech2018 レイマーチングで半歩差のつく小技集
GLSLtech2018 レイマーチングで半歩差のつく小技集
Kei Mesuda
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
 
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
UnityTechnologiesJapan002
 
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
Haruki Yano
 
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
エピック・ゲームズ・ジャパン Epic Games Japan
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう
Unity Technologies Japan K.K.
 
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
エピック・ゲームズ・ジャパン Epic Games Japan
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
エピック・ゲームズ・ジャパン Epic Games Japan
 
Mask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組みMask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組み
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4の色について v1.1
 UE4の色について v1.1 UE4の色について v1.1
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
Takehito Gondo
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
Unite2017Tokyo
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
 
UE4でPerforceと連携するための手順
UE4でPerforceと連携するための手順UE4でPerforceと連携するための手順
UE4でPerforceと連携するための手順
エピック・ゲームズ・ジャパン Epic Games Japan
 

What's hot (20)

ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
 
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTERNPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~
 
GLSLtech2018 レイマーチングで半歩差のつく小技集
GLSLtech2018 レイマーチングで半歩差のつく小技集GLSLtech2018 レイマーチングで半歩差のつく小技集
GLSLtech2018 レイマーチングで半歩差のつく小技集
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
 
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
 
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう
 
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 
Mask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組みMask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組み
 
UE4の色について v1.1
 UE4の色について v1.1 UE4の色について v1.1
UE4の色について v1.1
 
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
UE4でPerforceと連携するための手順
UE4でPerforceと連携するための手順UE4でPerforceと連携するための手順
UE4でPerforceと連携するための手順
 

Viewers also liked

シェーダー伝道師 第二回
シェーダー伝道師 第二回シェーダー伝道師 第二回
シェーダー伝道師 第二回
hixi365
 
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
hixi365
 
upload test slide
upload test slideupload test slide
upload test slide
hixi365
 
アルゴリズムのお勉強 マージソート 試験対策
アルゴリズムのお勉強 マージソート 試験対策アルゴリズムのお勉強 マージソート 試験対策
アルゴリズムのお勉強 マージソート 試験対策
hixi365
 
アルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラアルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラ
hixi365
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
Hiro H.
 
二分探索をはじめからていねいに
二分探索をはじめからていねいに二分探索をはじめからていねいに
二分探索をはじめからていねいに
HCPC: 北海道大学競技プログラミングサークル
 
Parę spostrzeżeń dot. sklepów w Nowej Zelandii
Parę spostrzeżeń dot. sklepów w Nowej ZelandiiParę spostrzeżeń dot. sklepów w Nowej Zelandii
Parę spostrzeżeń dot. sklepów w Nowej Zelandii
Grzegorz Osóbka
 
Press Release1
Press Release1Press Release1
Press Release1
Heather Dennis
 
BFS-2016-06-journal
BFS-2016-06-journalBFS-2016-06-journal
BFS-2016-06-journal
James Wilson
 
30-Minute Social Media Marketing by Susan Gunelius
30-Minute Social Media Marketing by Susan Gunelius30-Minute Social Media Marketing by Susan Gunelius
30-Minute Social Media Marketing by Susan Gunelius
KeySplash Creative, Inc.
 
HOLYTHURSDAYSALVMbcsnet
HOLYTHURSDAYSALVMbcsnetHOLYTHURSDAYSALVMbcsnet
HOLYTHURSDAYSALVMbcsnet
Nkor Ioka
 
The power of “we got it wrong”
The power of “we got it wrong”The power of “we got it wrong”
The power of “we got it wrong”
WorkInConfidence
 
Aptech maliviya nagar is the best IT training institute in Delhi
Aptech maliviya nagar is the best IT training institute in DelhiAptech maliviya nagar is the best IT training institute in Delhi
Aptech maliviya nagar is the best IT training institute in Delhi
MCM Infotech
 
Portadas nacionales 23 marzo-17
Portadas nacionales 23 marzo-17Portadas nacionales 23 marzo-17
Portadas nacionales 23 marzo-17
Portadas Nacionales Think Mercadotecnia
 
No seatbealts = 8x chances of getting killed
No seatbealts = 8x chances of getting killedNo seatbealts = 8x chances of getting killed
No seatbealts = 8x chances of getting killed
PODIS Ltd
 

Viewers also liked (16)

シェーダー伝道師 第二回
シェーダー伝道師 第二回シェーダー伝道師 第二回
シェーダー伝道師 第二回
 
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
 
upload test slide
upload test slideupload test slide
upload test slide
 
アルゴリズムのお勉強 マージソート 試験対策
アルゴリズムのお勉強 マージソート 試験対策アルゴリズムのお勉強 マージソート 試験対策
アルゴリズムのお勉強 マージソート 試験対策
 
アルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラアルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラ
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
 
二分探索をはじめからていねいに
二分探索をはじめからていねいに二分探索をはじめからていねいに
二分探索をはじめからていねいに
 
Parę spostrzeżeń dot. sklepów w Nowej Zelandii
Parę spostrzeżeń dot. sklepów w Nowej ZelandiiParę spostrzeżeń dot. sklepów w Nowej Zelandii
Parę spostrzeżeń dot. sklepów w Nowej Zelandii
 
Press Release1
Press Release1Press Release1
Press Release1
 
BFS-2016-06-journal
BFS-2016-06-journalBFS-2016-06-journal
BFS-2016-06-journal
 
30-Minute Social Media Marketing by Susan Gunelius
30-Minute Social Media Marketing by Susan Gunelius30-Minute Social Media Marketing by Susan Gunelius
30-Minute Social Media Marketing by Susan Gunelius
 
HOLYTHURSDAYSALVMbcsnet
HOLYTHURSDAYSALVMbcsnetHOLYTHURSDAYSALVMbcsnet
HOLYTHURSDAYSALVMbcsnet
 
The power of “we got it wrong”
The power of “we got it wrong”The power of “we got it wrong”
The power of “we got it wrong”
 
Aptech maliviya nagar is the best IT training institute in Delhi
Aptech maliviya nagar is the best IT training institute in DelhiAptech maliviya nagar is the best IT training institute in Delhi
Aptech maliviya nagar is the best IT training institute in Delhi
 
Portadas nacionales 23 marzo-17
Portadas nacionales 23 marzo-17Portadas nacionales 23 marzo-17
Portadas nacionales 23 marzo-17
 
No seatbealts = 8x chances of getting killed
No seatbealts = 8x chances of getting killedNo seatbealts = 8x chances of getting killed
No seatbealts = 8x chances of getting killed
 

Similar to シェーダー伝道師 第一回

Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめ
Yoichi Hirata
 
Android OpenGL HandsOn
Android OpenGL HandsOnAndroid OpenGL HandsOn
Android OpenGL HandsOn
Ikuo Tansho
 
Material
MaterialMaterial
Material
_TUNE_
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
Fixstars Corporation
 
Slide
SlideSlide
Cocos2d x-sprite3d
Cocos2d x-sprite3dCocos2d x-sprite3d
Cocos2d x-sprite3daktsk
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Hiroshi Yoshida
 
p5.js 授業テキスト
p5.js 授業テキストp5.js 授業テキスト
p5.js 授業テキスト
Suzuki Junko
 
php5-gd で画像を弄る話
php5-gd で画像を弄る話php5-gd で画像を弄る話
php5-gd で画像を弄る話
Yo Ya
 
EmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよEmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよ
Kiwamu Okabe
 
coma Creators session vol.2
coma Creators session vol.2coma Creators session vol.2
coma Creators session vol.2Atsushi Tadokoro
 
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
Ogushi Masaya
 
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
nyagasuki
 
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
直久 住川
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Ra Zon
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesTakeshi Komiya
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
勝成 鈴江
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
Katsushi Suzuki
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Katsutoshi Makino
 

Similar to シェーダー伝道師 第一回 (20)

Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめ
 
Android OpenGL HandsOn
Android OpenGL HandsOnAndroid OpenGL HandsOn
Android OpenGL HandsOn
 
Material
MaterialMaterial
Material
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
Slide
SlideSlide
Slide
 
Cocos2d x-sprite3d
Cocos2d x-sprite3dCocos2d x-sprite3d
Cocos2d x-sprite3d
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
p5.js 授業テキスト
p5.js 授業テキストp5.js 授業テキスト
p5.js 授業テキスト
 
php5-gd で画像を弄る話
php5-gd で画像を弄る話php5-gd で画像を弄る話
php5-gd で画像を弄る話
 
EmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよEmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよ
 
coma Creators session vol.2
coma Creators session vol.2coma Creators session vol.2
coma Creators session vol.2
 
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
自然言語処理に適した ニューラルネットのフレームワーク - - - DyNet - - -
 
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
 
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfes
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化
 

Recently uploaded

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 

Recently uploaded (8)

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 

シェーダー伝道師 第一回