Skip to content

Instantly share code, notes, and snippets.

@hanachiru
Last active Nov 26, 2020
Embed
What would you like to do?
創造工学でやるシェーダーコード
/// <summary>
/// 1. はじめてのフラグメントシェーダー
/// </summary>
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// (R, G, B, A) = (1, 0, 0, 1)を各ピクセルに対して代入する
// 例えば描画領域が 1280x720 個ある場合、1フレームで1280 x 720回この処理が呼ばれる
fragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
/// <summary>
/// 2. 画面の正規化をする
/// </summary>
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// iResolutionは画面の幅を表す2次元ベクトル
vec2 uv = fragCoord/iResolution.xy;
fragColor = vec4(uv, 0.0, 1.0);
}
/// <summary>
/// 3. 時間経過を取得する
/// </summary>
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord/iResolution.xy;
// abs(sin(iTime)) => |sin(t)|
fragColor = vec4(uv.x, uv.y , abs(sin(iTime)), 1.0);
}
/// <summary>
/// 4. 経過時間を使った作品の練習
/// </summary>
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// 左下(0,0) ~ 右上(1,1) になるように正規化
vec2 uv = fragCoord/iResolution.xy;
fragColor = vec4(??????????, 0 , 0, 1.0);
}
/// <summary>
/// 5. 経過時間を使った作品の練習 その2
/// </summary>
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord/iResolution.xy;
float col = ??????????????;
fragColor = vec4(col, col, col, 1);
}
/// <summary>
/// 6. Step関数を使った作品
/// </summary>
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord/iResolution.xy;
float col = ???????????????;
fragColor = vec4(col, col, col, 1);
}
/// <summary>
/// 7. 距離関数を使った作品
/// </summary>
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// 左下(0,0) ~ 右上(1,1) になるように正規化
vec2 uv = fragCoord/iResolution.xy;
// 画面中央からの距離を求める
float d = distance(vec2(0.5, 0.5), uv);
// 距離を色として出力
fragColor = vec4(d, d, d, 1);
}
/// <summary>
/// 8. 今までの知識と距離関数を使った作品
/// </summary>
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// 左下(0,0) ~ 右上(1,1) になるように正規化
vec2 uv = fragCoord/iResolution.xy;
float color = ???????????;
// 距離を色として出力
fragColor = vec4(color, color, color, 1);
}
/// <summary>
/// 9.ボロノイ図
/// </summary>
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord/iResolution.xy;
// 適当にランダムな母点を用意
vec2[5] points = vec2[](
vec2(0.14, 0.17),
vec2(0.83, abs(cos(iTime))),
vec2(abs(sin(iTime)), 0.23),
vec2(0.5 * cos(-iTime) + 0.5, 0.5 * sin(-iTime) + 0.5),
vec2(0.5 * cos(iTime) + 0.5, 0.5 * sin(iTime) + 0.5)
);
???????
???????
・・・・・・
???????
???????
fragColor = vec4(???, ???, ???, ???);
}
@hanachiru
Copy link
Author

hanachiru commented Nov 20, 2020

ShaderToyで使うコード達です

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment