#乱数生成器 #乱数 #Noise
乱数生成器
https://www.pcg-random.org/
Permutationと線形合同法のコンビネーション
// *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
// http://www.jcgt.org/published/0009/03/02/
uvec3 pcg3d(uvec3 v) {
v = v * 1664525u + 1013904223u;
v.x += v.y * v.z;
v.y += v.z * v.x;
v.z += v.x * v.y;
v ^= v >> 16u;
v.x += v.y * v.z;
v.y += v.z * v.x;
v.z += v.x * v.y;
return v;
}
#乱数生成器 #乱数 #Noise
乱数生成器
https://www.pcg-random.org/
Permutationと線形合同法のコンビネーション
// *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
#乱数生成器 #疑似乱数 #乱数 #Noise
擬似乱数の生成手法
LCGとも
xn+1=(Axn+B)modM
https://ja.wikipedia.org/wiki/線形合同法
#線形合同法 #Entity_Number
線形合同法のパラメータとしてよく使われる数値
こちらは足し算される方で、掛け算される方は1664525
書籍『Numerical Recipes』内で、Donald Knuth先生がオススメしている数値らしい
#線形合同法 #Entity_Number
線形合同法のパラメータとしてよく使われる数値
こちらは掛け算される方で、足し算される方は1013904223
書籍『Numerical Recipes』内で、Donald Knuth先生がオススメしている数値らしい
ノイズ
Substance Designerで作るのがループ素材作れて一番良い
https://opengameart.org/content/noise-texture-pack
#Shader_Music #オシレータ #シンセ
ハイハットやシンバル等の音が出るオシレータ
不協和音ショットガン
完全プロシージャル
TR-808のハイハット・Oidosから着想を得た
#乱数生成器 #乱数
乱数生成器
排他的論理和とビットシフトで乱数を作ります
https://ja.wikipedia.org/wiki/Xorshift
fn xorshift32(seed: &mut u32) -> &u32 {
#2k #4k #sizecoding #圧縮 #exegfx #Crinkler #Shader_Minifier #Blossom #GLSL
Bauhaus Quadtree by 0b5vrおよびArchitectural Shapeshifter by Renard & 0b5vrを作っていたときのメモ
Stack
Blossom (exegfx)
Shader Minifier・Crinkler
#ハッシュ #乱数 #シェーダー
シェーダー利用できる乱数生成器(ハッシュ関数)の比較記事
Andanteによる
最後には、ibukiHashという新手法を提案している
https://andantesoft.hatenablog.com/entry/2024/12/19/193517
#線形合同法 #乱数生成器 #乱数 #Entity_Number
線形合同法で用いられるパラメータAとしてよく使われる数字
出所不明だが、glibc等で使われている
あまり質が良い訳では無いらしい
詳細は線形合同法の記事を参照
#ファイアーエムブレム #乱数
TODO
https://dic.nicovideo.jp/a/実効命中率(ファイアーエムブレム)
#乱数 #Math
ボックス=ミュラー法
一様分布から正規分布を作っちゃおう
Ref: https://ja.wikipedia.org/wiki/ボックス%EF%BC%9Dミュラー法
ウィキペディアのSVG図がインタラクティブですごいので必見です(2022-11)
→ 乱数
→ Sobrem × Silentroom - Random
#乱数
整数の乱数
離散一様分布を持つ
Python・numpy等においては randint
と呼ばれる
いちばん簡単な手法
#乱数
たぶん少ないサンプル数でも低周波成分が強くならないランダムみたいなのがみんなほしいんだと思う
Raytracingで使う
"blue noise' samples" と呼ばれることもあるらしい
blue noise
#乱数
乱数列の検証プログラム
https://www.fourmilab.ch/random/
こんな感じでわかりやすい結果が出てくる
Entropy = 7.980627 bits per character.
#乱数
NeuGとかいう乱数を生成するきもいハードウェアのサイトでよく紹介されているので、それを参考にした
http://no-passwd.net/fst-01-neug-handbook/randomness-tests.html
簡単なテスト
ENT
#クォータニオン #乱数 #Math
一様ランダムなクォータニオンを生成する
3つの一様分布から生成できる
q=⎝⎜⎜⎜⎛1−u sin(2πv)1−u cos(2πv)u sin(2πw)u cos(2πw)⎠⎟⎟⎟⎞
#Entity_Paper #乱数
Daniel Lemireによる
https://arxiv.org/abs/1805.10941
#確率 #乱数 #ゲーム
ゲームなどにおいて、あるイベントAが乱数に依存して他のイベントBを発生させるとき、Bが発生すること・またその確率を指す
procと略して呼ぶ事が多い
ランダムに発生するイベントBが発生することを「proccing」などと言うことがある
例えば、「攻撃するたびに20%の確率で攻撃対象に毒を付与する」アイテムがあるとき、毒を付与するprocは0.2
#ゲーム #単位
1秒間に与えられるダメージの総量を表す単位
Hack and Slash系のゲームでは特に重要視される値
基本的な計算式としては、一度の攻撃で与えられるダメージ×攻撃速度となる
ダメージが乱数変動する場合は、その乱数の期待値を利用して計算することが多そう
#Noise
つよくなったPerlin Noise
おなじくKen Perlinによる
Simplex Grid、Schläfli Orthoschemeとかいうものを使っているらしい 幾何学わかんね~
立方体のグリッドで頑張っていたやつを正四面体にしてやる感じ
#CV #CG #Raytracing #Noise
TODO
シリコンスタジオの川口さんのCEDEC2021の資料がとても勉強になります
https://www.siliconstudio.co.jp/rd/presentations/files/CEDEC2021/cedec2021.pdf
#Noise
TODO
Procedural Noise using Sparse Gabor Convolutionという論文で提案された
#Noise
TODO
課題
3次元のNoiseを、zを時間で変化させながら残りの2次元xyでサンプリングするとき、以下のような問題が発生する:
一定時間ごとに結果をループさせたい
#Noise
loren schmidtが思いついた新しいノイズ
Octaviaというのは飼ってる猫の名前らしい
他のFBMと同様、複数のオクターブのノイズを再帰的に足し合わせ、有機的な特性を生み出している
Worley Noiseに近い手法らしい
#Noise #Fractal
Noiseを重ねて作るFractal
通常、Value NoiseやPerlin Noiseといったノイズを足し算していくことで作られる
パラメータ
See: https://catlikecoding.com/unity/tutorials/pseudorandom-noise/noise-variants/
#Entity_Individual #Noise
Perlin Noiseのひと
https://cs.nyu.edu/~perlin/
#NVIDIA_GeForce #GPU
NVIDIAによるコンシューマ向けGPUであるNVIDIA GeForceのシリーズ
2025年1月に発表された
メモリ
VRAMについて、RTX 5090が32GBを搭載しており、いままで民生用で使えた24GBから増加している
#アセンブリ #GPU #Programming #Math
掛け算して足し算する演算を表す
a←a+b×c
DSPやCGで頻出する演算で、積和演算を1クロックで実行できるプロセッサも多い
命令は、multiply-add (MAD), multiply-accumulate (MAC) と呼ばれることが多い
#圧縮 #Texture
bpp
あるTextureがピクセルあたり何ビットで表現されるかを表す数値
GPUのVRAM上にテクスチャが乗るとき、どのくらいVRAMを消費するかに関わる数値
通常のRGBA8テクスチャは32bpp (8 bits × 4 channels)
#GLSL #Validator
GLSLのValidatorのCLI
glslangの一部
マシンのGPUに対応したコンパイラによっては、本来不正とされる記述が利用できる場合がある
環境間における互換性を保つために、一度glslangValidatorに通そう
#Math
Power of Two
任意のn∈Nに対して、2n
pow(2.0, n)
https://oeis.org/A000079
#Texture
CGにおいて、Textureのマッピングの際にテクセルをどう参照するかの方針
最近傍補間やバイリニア補間よる高速なサンプリングのほか、Mipmapを利用したトリリニア補間・異方性フィルタリングといった高度で品質の高いテクスチャマッピングがある
GPUがハードウェアレベルでそれぞれのテクスチャフィルタリングに対応している必要がある
現代においては異方性フィルタリングはどのGPUでも当たり前にサポートしているだろう
#GPU
謎のAI半導体メーカー
#クロスシミュレーション #GPU #Entity_Talk
GPUでクロスシミュレーションやるマン最古参
当時NVIDIAのCyril Zellerによる
2005年のSIGGRAPH
http://http.download.nvidia.com/developer/presentations/2005/SIGGRAPH/ClothSimulationOnTheGPU.pdf
#CG
stall
動詞としては、「先延ばしにする」「停止する」「延期する」「失速する」という意味
名詞としても、「エンスト」「失速」のような使い方ができる
https://ejje.weblio.jp/content/stall
#GPU #パフォーマンス
GPUのアーキテクチャ・グラフィクスAPI・解析ツールなどのリンク集
https://gist.github.com/silvesthu/505cf0cbf284bb4b971f6834b8fec93d
#ベンチマーク #CPU #GPU
MaxonによるCPUとGPUのベンチマークソフト
Windows・macOSに対応
Cinema 4Dと同じレンダリングエンジンを用いたCGのレンダリングを行う
https://www.maxon.net/ja/cinebench
#アルゴリズム #Programming #OS
タイムスライス
マルチタスクOSが、一定時間ごとにCPUなどのプロセッサが利用するタスクを切り替え、長い処理を伴うタスクを並列で実行する処理
転じて広義には、ゲームやGUIなど、インタラクションを要求するアプリケーションにおいて、高い負荷のかかる計算を複数のフレームにまたいで行うこと
Multithreadingができない環境やGPUを用いた計算など、ひとつの計算リソースを使ってやりくりしなきゃいけない場合に有効
#4k #64k #Demoscene
4k is the new 64k
Demosceneにおいて、PC 4kカテゴリの発展を称賛する、あるいは、PC 64kカテゴリの衰退を憐れむフレーズ
TODO: WIP
4kに何があったの?
#Three.js:_ShaderChunks #Three.js #GLSL #シェーダー
Three.jsにおいて、GLSLのコンパイル前に処理を差し込む
shader.vertexShader
および shader.fragmentShader
を書き換えることによってシェーダをいじることも可能
文字列置換などで無理やり差し込む
https://threejs.org/docs/#api/en/materials/Material.onBeforeCompile
#ジェネラティブアート
1月の毎日、お題に応じたジェネラティブアートを作る企画
毎年1月1日~31日まで開催される
https://genuary.art/
ビジュアル面でのお題に限らず、物理エンジン・シェーダー・Generative Music等を要求するお題もあり、かなり多彩なスキルセットを要求される
#キック #Shader_Music #GLSL #シェーダー #シンセ
サイン波を高いところから50Hzに叩きつけろ
基本形
エンベロープは自然減衰
ピッチエンベロープの 5.0
と 40.0
はパラメタなので気持ちい値を見つけるんだよ
#シェーダー #Lighting #Texture
シェーディング済みの球体が描かれたTextureを読み込み、それを利用して擬似的なシェーディングを行う手法
実装
View Vectorと法線を用いてテクスチャマッピングを行う
vec2 matcapUV(vec3 V, vec3 N) {
#VRM #仕様 #シェーダー #トゥーンマテリアル
VRMと併用されるトゥーンマテリアル
さんたーがオリジナルのシェーダーを書いた
VRMコンソーシアムによって仕様化された
VRM0.0とVRM1.0で仕様が違う
#Shadow #Signed_Distance_Field #トゥーンレンダリング #NPR #シェーダー #CG
Signed Distance Fieldを用いてトゥーンレンダリングのキャラクターに対して顔影を付与する技術
崩壊3rdや原神などのmiHoYoゲーが発祥の技術だとされている
https://unrealengine.hatenablog.com/entry/2024/02/28/222220