Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
本日のシェーダー芸
Search
Yuichi Sato
April 28, 2020
Programming
820
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
本日のシェーダー芸
N 高等学校通学コースプログラミングクラス 2020年4月28日(火) のプレ LT 大会での発表資料です。
Yuichi Sato
April 28, 2020
More Decks by Yuichi Sato
See All by Yuichi Sato
深層学習学習中
satoyuichi
0
55
深層学習はじめました
satoyuichi
0
64
瞑想アプリ
satoyuichi
0
53
SDF を作りたかった
satoyuichi
0
560
初めての iPhone ネイティブアプリ
satoyuichi
0
70
キャンフェスにゲームを出そう -StruckOut 編-
satoyuichi
0
33
ミクちゃんが歌ったら 家に帰ろう
satoyuichi
0
25
体温記録送信アプリ
satoyuichi
0
32
コロナ横目にバージョンアップ
satoyuichi
0
87
Other Decks in Programming
See All in Programming
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
590
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.1k
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
6k
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
200
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
4
4.8k
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.4k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
540
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1k
パーソナライズPodcastを作った話
repunit11
0
140
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Navigating Team Friction
lara
192
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
4 Signs Your Business is Dying
shpigford
187
23k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
本日の Shader 芸 佐藤 雄一
自己紹介 名前:佐藤 雄一(ゆーいち) 好物:エレキギター、(初期)仏教、Smalltalk 好きなエディタ:Emacs 好きなキーボード:HHKB Twitter:@satoyuichi80
Shader とは 頂点、ピクセルごとに GPU 上で実行されるプログラムのこと。頂点ごとに実効されるも のは頂点シェーダー(Vertex Shader)、ピクセルごとのはピクセルシェーダー(Pixel Shader)またはフラグメントシェーダー(Fragment Shader)と呼ばれる。比較的に頂点 シェーダーは影が薄いような気がする。
おそらく一般的には広義に質感を決めるためのパラメーター、テクスチャ、シェーダー プログラムを含めてシェーダーと呼ばれているようす。 https://docs.unity3d.com/jp/460/Manual/Materials.html
Shader 芸とは 本来シェーダーはオブジェクトを引き立てるためのものだが、シェーダー自体が出しゃ ばっているというか、そもそもオブジェクトは板ポリ一枚とかシェーダーをくっつけるため だけに存在するような状態に成り下がっているくらい主張が強いシェーダーを作成する 行為。 純粋にピクセルシェーダのみでの表現が多いが、テクスチャや音声データを使う場合 もある。数学と感性の世界なのでハードルが高いと思われがちだが、そんなでもない。 https://qiita.com/kaneta1992/items/21149c78159bd27e0860
今回の作品「ヒトダマ」 モチーフは炎 https://www.youtube.com/watch?v=gxhFeUBl7_w
CineShader 入力した Shader の実行結果が額縁の中に表示されるおしゃれなヤツ。ここに嵌めて 栄えるような作品を考えました。(佇むおねーさんがポイント)
工夫したところ 参考になるようにシンプルでありながら、見栄えがするように作成。四角形 + 円 + ノイ ズ(Simplex Noise)の組み合わせ。 + +
=
苦労したところ • 方向性が決まるまで難儀した • モチーフが変わった(最初は稲妻にしようと思っていた) • 納得いく結果にするための微調整に時間がかかった • ノート PC
がうなりを上げるのでグラフィクスの強い PC が欲しくなった
数学の活用として楽しいのでオススメ 以下、技術的な解説
基本の基本 -1 <= x <= 1, -1 <= y <=
1 の範囲の数値を作る。数値を (x, y, 0) => (R, G, B) として 可視化すると右のようになる。(負の範囲は黒くなっている) 色と演算結果の対応が感覚的に理解できるようになると楽。
円を作る (0, 0) からの距離を取る。(1.0 以上は白くなっている)
閾値を取る ある値(ここでは 0.5)を境に 0 と 1 に分ける。 実際は step 関数ではなく
smoothstep 関数を用いることで、境界をぼかして使ってい る。
反転する 1 から引いて反転することで完成。 三角関数を使って位置を揺らすことで炎の動きっぽくしている。大きさや動きの違う円 を複数組み合わせて、ノイズを適用して炎の質感としている。
四角形を作る x 座標のある値(ここでは 0.5)を境に 0 と 1 に分ける。
片側の枠を作る y 座標も同じくある値(ここでは 0.5)を境に 0 と 1 に分け、先ほどの結果と合成する。1 以上の値にしたくないため max
関数を使用して合成している。
各軸で折り畳む(Folding) 絶対値を取ることで、各軸に対して折り畳む。直感的な理解がし難いが、シェーダー芸 では良く使われるので、ぜひ身につけたいテクニック。
反転する 1 から引いて反転することで完成。 続けて敷き詰めのテクニックを組み合わせる。
タイリング(Tiling) 座標をスケールして fract 関数で小数部のみを取り出して、 0 から 1 の範囲を複数作 る。(最初に座標を 0
から 1 の範囲にしていることに注意)
各範囲で四角形を作る さらに原点中心で回転させ、色とノイズで質感をつけている。
リンク集 • The Book of Shaders…非常に丁寧な解説で優良サイトへのリンクも豊富。即変更 が確認できるサンプルコードがとても便利。 • シェーダー芸人になりたかった6か月前の自分に教えてあげたいリンク集…日本 トップレベルのシェーダー芸人のかねたさんの記事。文字通り、初心者が知りたくな
るような内容が書かれている。 • Shadertoy…シェーダー投稿サイト。参考にするのはもちろん、実行環境としても便 利。 • CineShader...シェーダービジュアライザー。シンプルなシェーダーもオシャレに見 せてくれる。その代わり、けっこう重たい。