Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
僕は雪が見たい(雪シェーダーの作成)
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
a-pxl
October 25, 2019
Technology
0
660
僕は雪が見たい(雪シェーダーの作成)
雪シェーダーを作成する
・反射計算
・頂点座標の変更
・歩いた跡をつける
・テッセレーションシェーダー
a-pxl
October 25, 2019
Tweet
Share
More Decks by a-pxl
See All by a-pxl
俺、女の子になります
aizupxl
0
72
Blender 簡単ピストンリグ
aizupxl
0
660
Other Decks in Technology
See All in Technology
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
150
22nd ACRi Webinar - 1Finity Tamura-san's slide
nao_sumikawa
0
110
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.4k
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
0
1.4k
配列に見る bash と zsh の違い
kazzpapa3
3
170
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
260
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
410
20260204_Midosuji_Tech
takuyay0ne
1
160
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
520
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
680
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
310
KATA
mclloyd
PRO
34
15k
HDC tutorial
michielstock
1
400
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
87
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
280
Designing Experiences People Love
moore
144
24k
Transcript
僕は雪が見たい 照屋 尚志
自己紹介 ・照屋 尚志(てるや ひさし) ・修士1年 ・筋トレサボってた ・それとうどん過剰摂取 ・そして少し太った
皆さんは雪はお好きですか
よく言われること 沖縄には海があるじゃん めんどくさいよ 自転車使えなくなるよ
こちとら雪に夢を抱いてんだよ
私にとっての雪
皆が夢見るように
目標 雪原を作る
始めに ・Planeの作成
雪原の完成!!
嘘です
シェーダーを作成します ・雪の反射を作る ・凹凸を作る ・歩いたところを凹むようにする
シェーダーでやったこと ・ランバート反射、スペキュラ反射 ・ホワイトノイズ、パーリンノイズ作成 ・テッセレーションシェーダー ・頂点座標の変更・法線を求める ・depthカメラを使用した軌跡描画
1.雪の反射について
雪はチカチカ反射する
反射の実装 ・ランバート反射、スペキュラ反射の実装 ・ホワイトノイズテクスチャの作成 ・テクスチャを使用してチカチカ反射させる
ランバート反射について
説明する前に ・法線ベクトル - 面に対して垂直なベクトル(wikipediaより)
ランバート反射 θ 法線ベクトル:N 光源方向ベクトル:L 反射 = max(0, (N ・L)) ベクトルNとベクトルLの内積
0以下であれば値を0にする
スペキュラ反射について
スペキュラ反射について ・スペキュラ反射には主に2種類あります - フォンの反射モデル : 計算が大変 - ブリン・フォン反射モデル : 計算が楽 ・ここでは後者について解説します
ブリン・フォン反射モデル 法線ベクトル:N 光源方向ベクトル:L 視点方向ベクトル:V ハーフベクトル:H θ θ ハーフベクトル : H
= (V + L) / 2 反射量 = max(0, (N ・H)) ベクトルNとベクトルHの内積 0以下であれば値を0にする
実装する
チカチカ反射させる ・先程のスペキュラ反射にホワイトノイズを加える
ホワイトノイズ ・1マスごとにランダムな値を書き込む ・ここでは白~黒の色をランダムに書き込む ・反射で白の部分を反射させ、黒は反射させない
ノイズを追加
表面を凸凹したい
頂点について
凹凸を作る ・ノイズを使って頂点の高さを変える ・パーリンノイズを使う 今はネットから見つけたものを使用
実際にやってみた
問題に気づく ・凹凸がカクカクしている ・頂点数が少ない ・反射がちゃんと出来ていない ・法線が垂直のまま
頂点数を増やしたい..... テッセレーションシェーダー!
テッセレーションシェーダー
テッセレーションシェーダー
テッセレーションシェーダーの実装 ・わけわからんことをずらずら書く ・調べたら出てくるのでそこを 参照してください ※こちらは開発途中のものです
テッセレーションシェーダーの実装
結果
まだ足りない
法線を求める ・反射は法線を元に計算される ・凹凸に合わせた法線を求める必要がある
法線を求める ・隣の頂点同士の高さの差を求める ・隣の頂点の高さはノイズテクスチャから求められる
隣の高さをみる (i, j) (i + 1, j) (i - 1,
j) (i, j - 1) (i, j + 1)
隣の高さをみる (i, j) (i + 1, j) (i - 1,
j) (i, j - 1) (i, j + 1) 黒:低い 白:高い 低 高 低 高
外積を計算 ・隣の高さを使用して外積を計算
外積を計算 法線 =
結果
歩いた後を付ける
カメラの深度 ・カメラでは深度を取ることが出来ます ・深度を使って距離を計ることが出来ます
カメラの深度
カメラの深度
RenderTexture ・カメラが取ったものをRenderTextureに 書 きこむことが出来ます ・RenderTextureを使用して 赤い部分を 凹ませます 実際に書き込んだもの →
カメラの準備 ・Planeの下にカメラを仕込む
結果
凹凸と足跡を合わせる
凹凸と足跡を合わせる ・頂点を上げる計算と下げる計算で法線の求め方が変わる ・凹凸を作成する場合と凹ませる場合の両方とも頂点を 下げ るよう変更 ・2つのテクスチャデータを計算して求める ・どこにも参考記事がない.......
頑張った結果
考察 ・頂点の計算の仕方によって法線の計算が変わる ・丁度よい計算が未だ決まっていない ・改良の余地あり
最後に
ユニティちゃんを歩かせてみた
ユニティちゃんを歩かせてみた
参考にしたゲーム 風ノ旅ビト
参考資料(反射関係)
参考資料(テッセレーション) ・Esさんのサイトから UnityTexturePaintでリアルタイムにオブジェクトを変形する ハイトマップから法線情報の生成 テッセレーション基礎
参考資料(足跡) [Unity] CustomRenderTextureに移動跡を書き込む 【Unity】雪をかき分けるような処理の実装を見ることができる「Snow Trail」紹介