2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								// dear imgui: Renderer for WebGPU
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// This needs to be used along with a Platform Binding (e.g. GLFW)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// (Please note that WebGPU is currently experimental, will not run on non-beta browsers, and may break.)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-08-11 15:06:16 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Important note to dawn and/or wgpu users: when targeting native platforms (i.e. NOT emscripten),
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// one of IMGUI_IMPL_WEBGPU_BACKEND_DAWN or IMGUI_IMPL_WEBGPU_BACKEND_WGPU must be provided.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Add #define to your imconfig.h file, or as a compilation flag in your build system.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// This requirement will be removed once WebGPU stabilizes and backends converge on a unified interface.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//#define IMGUI_IMPL_WEBGPU_BACKEND_DAWN
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//#define IMGUI_IMPL_WEBGPU_BACKEND_WGPU
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								// Implemented features:
 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-11 21:40:50 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//  [X] Renderer: User texture binding. Use 'WGPUTextureView' as ImTextureID. Read the FAQ about ImTextureID/ImTextureRef!
 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-11 16:50:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//  [X] Renderer: Large meshes support (64k+ vertices) even with 16-bit indices (ImGuiBackendFlags_RendererHasVtxOffset).
 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-11 15:52:57 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//  [X] Renderer: Expose selected render state for draw callbacks to use. Access in '(ImGui_ImplXXXX_RenderState*)GetPlatformIO().Renderer_RenderState'.
 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-11 21:40:50 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//  [X] Renderer: Texture updates support for dynamic font system (ImGuiBackendFlags_RendererHasTextures).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Missing features or Issues:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//  [ ] Renderer: Multi-viewport support (multiple windows), useful for desktop.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 01:29:16 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-09 22:26:36 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Learn about Dear ImGui:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// - FAQ                  https://dearimgui.com/faq
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// - Getting Started      https://dearimgui.com/getting-started
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// - Documentation        https://dearimgui.com/docs (same as your local docs/ folder).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// - Introduction, links and more at the top of imgui.cpp
 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# pragma once 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "imgui.h"          // IMGUI_IMPL_API 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-30 01:42:51 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef IMGUI_DISABLE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# include  <webgpu/webgpu.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-08-10 04:37:21 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Initialization data, for ImGui_ImplWGPU_Init()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								struct  ImGui_ImplWGPU_InitInfo 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    WGPUDevice               Device ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int                      NumFramesInFlight  =  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    WGPUTextureFormat        RenderTargetFormat  =  WGPUTextureFormat_Undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    WGPUTextureFormat        DepthStencilFormat  =  WGPUTextureFormat_Undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    WGPUMultisampleState     PipelineMultisampleState  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ImGui_ImplWGPU_InitInfo ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        PipelineMultisampleState . count  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-10 05:01:31 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        PipelineMultisampleState . mask  =  UINT32_MAX ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-10 04:37:21 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        PipelineMultisampleState . alphaToCoverageEnabled  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-08-10 06:07:58 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Follow "Getting Started" link and check examples/ folder to learn about using backends!
 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-10 04:37:21 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								IMGUI_IMPL_API  bool  ImGui_ImplWGPU_Init ( ImGui_ImplWGPU_InitInfo *  init_info ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								IMGUI_IMPL_API  void  ImGui_ImplWGPU_Shutdown ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								IMGUI_IMPL_API  void  ImGui_ImplWGPU_NewFrame ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								IMGUI_IMPL_API  void  ImGui_ImplWGPU_RenderDrawData ( ImDrawData *  draw_data ,  WGPURenderPassEncoder  pass_encoder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Use if you want to reset your rendering device without losing Dear ImGui state.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								IMGUI_IMPL_API  bool  ImGui_ImplWGPU_CreateDeviceObjects ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2025-08-11 16:09:28 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								IMGUI_IMPL_API  void  ImGui_ImplWGPU_InvalidateDeviceObjects ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-30 01:42:51 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-08-11 21:40:50 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// (Advanced) Use e.g. if you need to precisely control the timing of texture updates (e.g. for staged rendering), by setting ImDrawData::Textures = NULL to handle this manually.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								IMGUI_IMPL_API  void  ImGui_ImplWGPU_UpdateTexture ( ImTextureData *  tex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-08-11 15:52:57 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// [BETA] Selected render state data shared with callbacks.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// This is temporarily stored in GetPlatformIO().Renderer_RenderState during the ImGui_ImplWGPU_RenderDrawData() call.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// (Please open an issue if you feel you need access to more data)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								struct  ImGui_ImplWGPU_RenderState 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    WGPUDevice                   Device ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    WGPURenderPassEncoder        RenderPassEncoder ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-30 01:42:51 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif  // #ifndef IMGUI_DISABLE