シェーダー

二次元ベクトルに垂直なベクトル

必要だったのでメモ 二次元ベクトルであれば、90度回転させると垂直なベクトルになります(当たり前) 90度の回転であれば、行列計算の結果がコンポーネントと符号の入れ替えになるため、わざわざ回転行列を用意する必要はなく vertical = vec2(-vec.y, vec.x)…

なんとあのShadertoyのShader Of the Weekに作品が掲載された!!

憧れのサイトのトップページを飾れて嬉しさしかないです!! 学生時代は「Shadertoy = 神が集まるサイト」で平民の自分は全く理解できなかったので、神シェーダーを眺めているだけでした まさか自分が作品を投稿するようになって、ましてやトップページの一…

Tokyo Demo Fest 2018のGLSL Graphics Compoで優勝した!作品の解説等

2018年の12/1と12/2の2日間に渡って、Tokyo Demo Fest 2018という日本唯一のデモパーティが開催され、そこに初参加してきました。 僕はそのイベントの、GLSL Graphics CompoとCombined Graphics Compoに作品をエントリーして1位と4位に選んで頂きました!あ…

webgl-waterのコースティクスをshadertoyで実装した

ちょっと前にtwitterでバズっていたwebgl-waterのコースティクス部分をフラグメントシェーダーで実装した https://www.shadertoy.com/view/MldfDn せっかくなのでqiitaで解説記事を書いた qiita.com 6年ぐらい前から存在は知っていたんですけど、当時は全然…

モザイクフィルタを作ってみたところ不可解な境界線が現れてしまいました

画像をモザイクにしようと思ってこんなシェーダーを作成していました uniform sampler2D tex; void main() { vec2 uv = floor(texCoord * 30.0) / 30.0; gl_FragColor = texture2D(tex, uv); } 実際に使ってみると↓のような見た目になり、なにやらモザイクの…

シェーダーで条件分岐は遅いらしいのでベクトル演算に置き換える(追記あり)

一般的にシェーダーでの条件分岐は遅いという話がある 今回作ったシェーダーではブレンドモードや使用するマスクのチャンネルをアプリから送信してシェーダー内で利用するということをした これを条件分岐を使って素直に実装するとこんな感じになる(空で書…