o3de / o3de-azslc

Amazon Shader Language (AZSL) Compiler
Other
23 stars 14 forks source link

Add webgpu support #92

Open akioCL opened 2 weeks ago

akioCL commented 2 weeks ago

Add webgpu Platform Emitter using the namespace "wg". It's based on Vulkan, since the shader is translated from hlsl -> spirv -> wgsl. Add [[unrolled]] attribute for detecting unrolled resource arrays. WGSL doesn't support array of textures, buffers or samplers yet. So the shader is unrolled into multiple resources. In order to keep the runtime the same, we treat these unrolled arrays as a normal array of resources when outputting the SRG information. Add multiple attributes to capture metadata that is needed by the runtime for WebGPU:

Add padding using multiple "uint" variables instead of a "uintX". This is because alignment rules are different on WGSL when using a "uintX". By using multiple "uint" the alignment rules are the same in all shader languages.