Skip to content

hiroakioishi/UnitySimpleComputeShaderExamples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

SimpleComputeShaderExamples

社内勉強会 ComputeShader入門 サンプルコード

SimpleComputeShader

DispatchThreadID.xyの値をRenderTextureに書き込むサンプルコード

SimpleParticleSystem

シンプルなパーティクルシステム

ParticleSystemAppendConsumeBuffer

Particleのデータを格納するバッファにAppendStructuredBufferを使用
パーティクルのレンダリングは Graphics.DrawProceduralIndirect()で行う
書き込み(Append)用と、読み込み(Consume)用に、2つのComputeBufferType.Appendのバッファを用意し、パーティクルの更新時に、ConsumeStructuredBufferから現存するパーティクルのデータを読み取り、寿命を迎えていないものだけAppendStructuredBufferにAppendすることによって、パーティクルを増減させている。
(パーティクルの更新と、レンダリングの前にそれぞれ現存するパーティクルの個数、Indirect引数取得のためにCopyCountしてるけどあまり良くないかも…)
https://www.youtube.com/watch?v=hP5KA9HtRYA

ParticleSystemAppendConsumeBufferForDeadList

Particleのデータは通常のComputeBufferに持ち、死んでいるパーティクルのIDを格納するバッファ(DeadList)にAppend/ConsumeStructuredBufferを使った実装。 パーティクルエミット時には、エミット可能なパーティクルのIDをDeadListからConsumeしてくることによって現存するパーティクルにそのIDを加える。パーティクル更新時には、生存しているパーティクルのみを計算し、寿命を迎えた場合、DeadListにAppendする。
パーティクルのレンダリングは、Graphics.DrawProcedural()で行っている。死んでいるパーティクルはスケール0でレンダリングすることによって、見えないようにしている。
https://www.youtube.com/watch?v=vYnIczMLPuQ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published