Skip to content

Latest commit

History

133 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Minimal Compute Shader Examples

Minimal test scenes contains compute shaders, compute buffers etc Playing with the transport between CPU <-> GPU

Unity version : 6000.3 (Unity 6.3), contains both BuiltinRP and Universal Render Pipeline (URP) scenes
See branches for older Unity versions
Tested with : Win DX11

SceneImageDescription
🔷 01_Compute_Texture 🔷
01_1_BasicThe most basic one, edit texture with compute shader, shader takes the texture for rendering
01_2_FallingSandExample of using compute to animate texture pixels
01_3_Fluid_2DGPU Fluid. Ref to Scrawk/GPU-GEMS-2D-Fluid-Simulation
01_4_Fluid_3DA 3D version based on above GPU Fluid
🔷 02_StructuredBuffer 🔷
02_1_StructuredBufferNoComputeComputeBuffer can also be used in Shader, not just ComputeShader. The folder contains implementation of unlit vert-frag, surface shader and unlit URP shader
02_2_ComputePaintTexturePaint the texture by sending object positions to compute shader with StructuredBuffer
02_3_RotatingCirclesSimilar to above, just another playground scene
02_4_ComputePaintTexture_DFTSimilar to above but drawing with Epicycles using Discrete Fourier Transform. Ref to The Coding Train's youtube video
02_5_ComputeParticlesDirectGPU Particle, drawing fixed no. of particles
02_6_ComputeSketchDraw quads on the screen with color filled by compute shader
02_7_ShimmerSpherePass spheres position and radius to quad material for a fake shimmer effect
🔷 03_GPU_to_CPU 🔷
03_1_StructuredBufferWithComputeAnother basic one, use compute to calculate some data and send back to CPU
03_2_AsyncGPUReadbackSimilar to StructuredBufferWithCompute, but use AsyncGPUReadback to get array data back to CPU
03_3_AsyncGPUReadbackTexResult is same as ComputeUAVTexture, but this scene uses AsyncGPUReadback to get texture data back to CPU, and CPU send the texture data to Shader for rendering
03_4_AsyncGPUReadbackMeshUpdate mesh vertices with compute + AsyncGPUReadback to get the vertex data back to CPU for physics
03_5_AsyncGPUReadbackMesh_NewMeshAPISame as above but using the new Mesh API
03_6_PixelPercentageCount the filled pixel percentage
03_7_ColorPaletteFind the top colors and replace them
🔷 04_Indirect 🔷
04_1_IndirectComputeSimple indirect compute (indirect dispatch) and CopyCount
04_2_ComputeParticlesIndirectGPU Particle, drawing dynamic no. of particles, no need to read back to CPU!
04_3_ComputeParticlesIndirect_VFXImplementation of above scene with VFX graph
04_4_IndirectReflectedStarDraw stars on the screen only if the pixels are bright enough
🔷 05_Shader_to_CPU 🔷
05_1_UAVInShaderRead some data back to CPU from fragment shader
05_2_ShaderBakeToTextureBake shader pixel result to texture
🔷 06_Compute_Mesh 🔷
06_1_ComputeVertexReplace vertex buffer with StructuredBuffer and drive vertex displacement by compute
06_2_ComputeVertexLitA usecase of above, with different shader passes share the same vertex data
06_3_SkinnedMeshBuffer_SameMeshBlend the vertex data from 2 SkinnedMeshRenderer vertex buffer and render it with MeshRenderer
06_4_SkinnedMeshBuffer_DiffMeshSimilar to above but blending 2 different SkinnedMeshes. The blended triangles are drawn with DrawMeshInstancedIndirect()
06_5_VFXGraphMeshDeformUsing VFX Graph to deforming mesh (particle as vertex)

Disclaimer: The stuff here might not be the best practice / optimized :'(. But at least they works. Play them for fun.

About

No description or website provided.

Topics

Resources

Stars

1.5k stars

Watchers

27 watching

Forks

Used by

Contributors

Languages