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:
[[image_format]] to capture the format of a storage texture
[[sample_type]] sample type of a texture
[[access]] specify write only access to a texture
[[binding_type]] binding type of a sampler
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.
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.