|
|
@ -13,6 +13,7 @@ |
|
|
|
|
|
|
|
// CHANGELOG
|
|
|
|
// (minor and older changes stripped away, please see git history for details)
|
|
|
|
// 2023-01-25: Revert automatic pipeline layout generation (see https://github.com/gpuweb/gpuweb/issues/2470)
|
|
|
|
// 2022-11-24: Fixed validation error with default depth buffer settings.
|
|
|
|
// 2022-11-10: Fixed rendering when a depth buffer is enabled. Added 'WGPUTextureFormat depth_format' parameter to ImGui_ImplWGPU_Init().
|
|
|
|
// 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11.
|
|
|
@ -554,7 +555,38 @@ bool ImGui_ImplWGPU_CreateDeviceObjects() |
|
|
|
graphics_pipeline_desc.multisample.count = 1; |
|
|
|
graphics_pipeline_desc.multisample.mask = UINT_MAX; |
|
|
|
graphics_pipeline_desc.multisample.alphaToCoverageEnabled = false; |
|
|
|
graphics_pipeline_desc.layout = nullptr; // Use automatic layout generation
|
|
|
|
|
|
|
|
// Bind group layouts
|
|
|
|
WGPUBindGroupLayoutEntry common_bg_layout_entries[2] = {}; |
|
|
|
common_bg_layout_entries[0].binding = 0; |
|
|
|
common_bg_layout_entries[0].visibility = WGPUShaderStage_Vertex; |
|
|
|
common_bg_layout_entries[0].buffer.type = WGPUBufferBindingType_Uniform; |
|
|
|
common_bg_layout_entries[1].binding = 1; |
|
|
|
common_bg_layout_entries[1].visibility = WGPUShaderStage_Fragment; |
|
|
|
common_bg_layout_entries[1].sampler.type = WGPUSamplerBindingType_Filtering; |
|
|
|
|
|
|
|
WGPUBindGroupLayoutEntry image_bg_layout_entries[1] = {}; |
|
|
|
image_bg_layout_entries[0].binding = 0; |
|
|
|
image_bg_layout_entries[0].visibility = WGPUShaderStage_Fragment; |
|
|
|
image_bg_layout_entries[0].texture.sampleType = WGPUTextureSampleType_Float; |
|
|
|
image_bg_layout_entries[0].texture.viewDimension = WGPUTextureViewDimension_2D; |
|
|
|
|
|
|
|
WGPUBindGroupLayoutDescriptor common_bg_layout_desc = {}; |
|
|
|
common_bg_layout_desc.entryCount = 2; |
|
|
|
common_bg_layout_desc.entries = common_bg_layout_entries; |
|
|
|
|
|
|
|
WGPUBindGroupLayoutDescriptor image_bg_layout_desc = {}; |
|
|
|
image_bg_layout_desc.entryCount = 1; |
|
|
|
image_bg_layout_desc.entries = image_bg_layout_entries; |
|
|
|
|
|
|
|
WGPUBindGroupLayout bg_layouts[2]; |
|
|
|
bg_layouts[0] = wgpuDeviceCreateBindGroupLayout(g_wgpuDevice, &common_bg_layout_desc); |
|
|
|
bg_layouts[1] = wgpuDeviceCreateBindGroupLayout(g_wgpuDevice, &image_bg_layout_desc); |
|
|
|
|
|
|
|
WGPUPipelineLayoutDescriptor layout_desc = {}; |
|
|
|
layout_desc.bindGroupLayoutCount = 2; |
|
|
|
layout_desc.bindGroupLayouts = bg_layouts; |
|
|
|
graphics_pipeline_desc.layout = wgpuDeviceCreatePipelineLayout(g_wgpuDevice, &layout_desc); |
|
|
|
|
|
|
|
// Create the vertex shader
|
|
|
|
WGPUProgrammableStageDescriptor vertex_shader_desc = ImGui_ImplWGPU_CreateShaderModule(__glsl_shader_vert_spv, sizeof(__glsl_shader_vert_spv) / sizeof(uint32_t)); |
|
|
@ -620,10 +652,6 @@ bool ImGui_ImplWGPU_CreateDeviceObjects() |
|
|
|
ImGui_ImplWGPU_CreateUniformBuffer(); |
|
|
|
|
|
|
|
// Create resource bind group
|
|
|
|
WGPUBindGroupLayout bg_layouts[2]; |
|
|
|
bg_layouts[0] = wgpuRenderPipelineGetBindGroupLayout(g_pipelineState, 0); |
|
|
|
bg_layouts[1] = wgpuRenderPipelineGetBindGroupLayout(g_pipelineState, 1); |
|
|
|
|
|
|
|
WGPUBindGroupEntry common_bg_entries[] = |
|
|
|
{ |
|
|
|
{ nullptr, 0, g_resources.Uniforms, 0, sizeof(Uniforms), 0, 0 }, |
|
|
|