From cc40380feede71e4f8c431b79dd5682359c144f6 Mon Sep 17 00:00:00 2001 From: RDW Date: Thu, 14 Mar 2024 19:25:39 +0100 Subject: [PATCH] Revert "Revert "tbd"" This reverts commit db86499e72035755ed2b12b0c1b351a337c43f9f. --- Core/NativeClient/WebGPU/GPU.lua | 2 +- .../WebGPU/Materials/WaterSurfaceMaterial.lua | 9 ++++----- Core/NativeClient/WebGPU/UniformBuffer.lua | 3 +-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Core/NativeClient/WebGPU/GPU.lua b/Core/NativeClient/WebGPU/GPU.lua index 112449bf..0a206715 100644 --- a/Core/NativeClient/WebGPU/GPU.lua +++ b/Core/NativeClient/WebGPU/GPU.lua @@ -78,7 +78,7 @@ function GPU:RequestLogicalDevice(adapter, options) maxBindGroups = 3, -- Camera, material, transforms maxUniformBuffersPerShaderStage = 1, -- Camera properties (increase for material, soon?) maxSampledTexturesPerShaderStage = GPU.MAX_TEXTURE_ARRAY_SIZE, - maxSamplersPerShaderStage = GPU.MAX_TEXTURE_ARRAY_SIZE, + maxSamplersPerShaderStage = 4, -- GPU.MAX_TEXTURE_ARRAY_SIZE, maxUniformBufferBindingSize = GPU.MAX_UNIFORM_BUFFER_BINDING_SIZE, maxBindingsPerBindGroup = 2, -- Max. allowed binding index maxDynamicUniformBuffersPerPipelineLayout = 1, diff --git a/Core/NativeClient/WebGPU/Materials/WaterSurfaceMaterial.lua b/Core/NativeClient/WebGPU/Materials/WaterSurfaceMaterial.lua index c401e188..5d1ad1be 100644 --- a/Core/NativeClient/WebGPU/Materials/WaterSurfaceMaterial.lua +++ b/Core/NativeClient/WebGPU/Materials/WaterSurfaceMaterial.lua @@ -65,13 +65,12 @@ function WaterSurfaceMaterial:CreateMaterialPropertiesBindGroup(textureArray) sType = ffi.C.WGPUSType_BindGroupEntryExtras, }, }) - local textureSamplers = ffi.new("WGPUSampler[?]", GPU.MAX_TEXTURE_ARRAY_SIZE) + local textureSamplers = ffi.new("WGPUSampler[?]", 1) -- There's no reason to use different samplers here, nor to allocate more than one (wasteful) - for index = 1, GPU.MAX_TEXTURE_ARRAY_SIZE, 1 do - textureSamplers[index - 1] = Texture.sharedTrilinearSampler - end + textureSamplers[0] = Texture.sharedTrilinearSampler + local textureSamplerExtras = new("WGPUBindGroupEntryExtras", { - samplerCount = GPU.MAX_TEXTURE_ARRAY_SIZE, + samplerCount = 1, samplers = textureSamplers, chain = { sType = ffi.C.WGPUSType_BindGroupEntryExtras, diff --git a/Core/NativeClient/WebGPU/UniformBuffer.lua b/Core/NativeClient/WebGPU/UniformBuffer.lua index 65906282..b7aba76b 100644 --- a/Core/NativeClient/WebGPU/UniformBuffer.lua +++ b/Core/NativeClient/WebGPU/UniformBuffer.lua @@ -157,9 +157,8 @@ function UniformBuffer:CreateMaterialBindGroupLayouts(wgpuDevice) }), }) - -- Texture arrays (wgpu extension) for water surface textures should be added here local extras = new("WGPUBindGroupLayoutEntryExtras", { - count = GPU.MAX_TEXTURE_ARRAY_SIZE, + count = 1, chain = { sType = ffi.C.WGPUSType_BindGroupLayoutEntryExtras, },