Minimal test scenes contains compute shaders, compute buffers etc Playing with the transport between CPU <-> GPU
Unity version : 2022.1+, contains both BuiltinRP
and Universal RP (URP)
scenes
See branches for older Unity versions
Tested with : Win DX11
Scene | Image | Description |
---|---|---|
ComputeUAVTexture |
The most basic one, edit texture with compute shader | |
AsyncGPUReadbackTex |
Similar to ComputeUAVTexture , but use AsyncGPUReadback to get texture data back to CPU |
|
ComputeUAVTexFlow |
Example of using compute to animate texture pixels | |
ComputePaintTexture |
Paint the texture by sending object positions to compute shader | |
ComputePaintTexture_DFT |
Similar to above but drawing with Epicycles using Discrete Fourier Transform. Ref to The Coding Train's youtube video | |
StructuredBufferWithCompute |
Another basic one, use compute to calculate some data and send back to CPU | |
AsyncGPUReadback |
Similar to StructuredBufferWithCompute , but use AsyncGPUReadback to get array data back to CPU |
|
StructuredBufferNoCompute |
ComputeBuffer doesn't always need to stick with ComputeShader | |
IndirectCompute |
Simple indirect compute (indirect dispatch) and CopyCount | |
IndirectReflectedStar |
Draw stars on the screen only if the pixels are bright enough | |
ComputeSketch |
Draw quads on the screen with color filled by compute shader | |
ComputeParticlesDirect |
GPU Particle, drawing fixed no. of particles | |
ComputeParticlesIndirect |
GPU Particle, drawing dynamic no. of particles, no need to read back to CPU! | |
ComputeVertex |
Replace vertex buffer with StructuredBuffer and drive vertex displacement by compute | |
SkinnedMeshBuffer |
Blend the vertex data from 2 SkinnedMeshRenderer vertex buffer and render it with MeshRenderer | |
SkinnedMeshBuffer_DiffMesh |
Similar to above but blending 2 different SkinnedMeshes. The blended triangles are drawn with DrawMeshInstancedIndirect() | |
ComputeVertexLit |
A usecase of ComputeVertex so that different shader passes share same vertex data | |
UAVInShader |
Read some data back to CPU from fragment shader | |
AsyncGPUReadbackMesh |
It is much faster to update mesh vertices with compute + AsyncGPUReadback to get the vertex data back to CPU for physics |
Disclaimer: The stuff here might not be the best practice / optimized :'(. But at least they works. Play them for fun.