Class WgpuRenderDevice
java.lang.Object
dev.engine.graphics.webgpu.WgpuRenderDevice
- All Implemented Interfaces:
RenderDevice, AutoCloseable
WebGPU render device backed by
WgpuBindings.
Takes a WindowHandle (from GLFW toolkit) and creates an offscreen
rendering context. All rendering goes to an offscreen render target, which
supports readback via readFramebuffer(int, int).
Architecture
- Setup: Instance -> Adapter -> Device -> Queue (no surface)
- Per-frame: CommandEncoder -> RenderPassEncoder -> CommandBuffer -> Queue.submit()
- Bind groups created on-demand per draw call with currently bound resources
- Pipeline layout created explicitly from WGSL binding reflection
-
Constructor Summary
ConstructorsConstructorDescriptionWgpuRenderDevice(WindowHandle window, WgpuBindings gpu) WgpuRenderDevice(WindowHandle window, WgpuBindings gpu, boolean presentToSurface) WgpuRenderDevice(WindowHandle window, WgpuBindings gpu, boolean presentToSurface, GraphicsConfig config) -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidclose()createBuffer(BufferDescriptor descriptor) createPipeline(PipelineDescriptor descriptor) createRenderTarget(RenderTargetDescriptor descriptor) createSampler(SamplerDescriptor descriptor) createStreamingBuffer(long frameSize, int frameCount, BufferUsage usage) createTexture(TextureDescriptor descriptor) createVertexInput(VertexFormat format) voiddestroyBuffer(Handle<BufferResource> buffer) voiddestroyPipeline(Handle<PipelineResource> pipeline) voiddestroyRenderTarget(Handle<RenderTargetResource> renderTarget) voiddestroySampler(Handle<SamplerResource> sampler) voiddestroyTexture(Handle<TextureResource> texture) voiddestroyVertexInput(Handle<VertexInputResource> vertexInput) voidendFrame()longgetBindlessTextureHandle(Handle<TextureResource> texture) getRenderTargetColorTexture(Handle<RenderTargetResource> renderTarget, int index) booleanisValidBuffer(Handle<BufferResource> buffer) booleanisValidPipeline(Handle<PipelineResource> pipeline) booleanisValidTexture(Handle<TextureResource> texture) <T> TqueryCapability(DeviceCapability<T> capability) byte[]readFramebuffer(int width, int height) Reads back the current framebuffer as RGBA8 byte array.voidsetCanvasTextureView(long textureView) Sets a canvas texture view to use as the color attachment for the default render target.voidsubmit(CommandList commands) voiduploadTexture(Handle<TextureResource> texture, ByteBuffer pixels) writeBuffer(Handle<BufferResource> buffer) writeBuffer(Handle<BufferResource> buffer, long offset, long length) Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface RenderDevice
createComputePipeline, getTextureIndex, supports
-
Constructor Details
-
WgpuRenderDevice
-
WgpuRenderDevice
-
WgpuRenderDevice
public WgpuRenderDevice(WindowHandle window, WgpuBindings gpu, boolean presentToSurface, GraphicsConfig config)
-
-
Method Details
-
createBuffer
- Specified by:
createBufferin interfaceRenderDevice
-
destroyBuffer
- Specified by:
destroyBufferin interfaceRenderDevice
-
isValidBuffer
- Specified by:
isValidBufferin interfaceRenderDevice
-
writeBuffer
- Specified by:
writeBufferin interfaceRenderDevice
-
writeBuffer
- Specified by:
writeBufferin interfaceRenderDevice
-
createTexture
- Specified by:
createTexturein interfaceRenderDevice
-
uploadTexture
- Specified by:
uploadTexturein interfaceRenderDevice
-
destroyTexture
- Specified by:
destroyTexturein interfaceRenderDevice
-
isValidTexture
- Specified by:
isValidTexturein interfaceRenderDevice
-
getBindlessTextureHandle
- Specified by:
getBindlessTextureHandlein interfaceRenderDevice
-
createRenderTarget
- Specified by:
createRenderTargetin interfaceRenderDevice
-
getRenderTargetColorTexture
public Handle<TextureResource> getRenderTargetColorTexture(Handle<RenderTargetResource> renderTarget, int index) - Specified by:
getRenderTargetColorTexturein interfaceRenderDevice
-
destroyRenderTarget
- Specified by:
destroyRenderTargetin interfaceRenderDevice
-
createVertexInput
- Specified by:
createVertexInputin interfaceRenderDevice
-
destroyVertexInput
- Specified by:
destroyVertexInputin interfaceRenderDevice
-
createSampler
- Specified by:
createSamplerin interfaceRenderDevice
-
destroySampler
- Specified by:
destroySamplerin interfaceRenderDevice
-
createPipeline
- Specified by:
createPipelinein interfaceRenderDevice
-
destroyPipeline
- Specified by:
destroyPipelinein interfaceRenderDevice
-
isValidPipeline
- Specified by:
isValidPipelinein interfaceRenderDevice
-
createStreamingBuffer
- Specified by:
createStreamingBufferin interfaceRenderDevice
-
createFence
- Specified by:
createFencein interfaceRenderDevice
-
beginFrame
public void beginFrame()- Specified by:
beginFramein interfaceRenderDevice
-
endFrame
public void endFrame()- Specified by:
endFramein interfaceRenderDevice
-
submit
- Specified by:
submitin interfaceRenderDevice
-
readFramebuffer
public byte[] readFramebuffer(int width, int height) Description copied from interface:RenderDeviceReads back the current framebuffer as RGBA8 byte array. Must be called after endFrame(). May wait for GPU idle. Returns null if readback is not supported.- Specified by:
readFramebufferin interfaceRenderDevice
-
queryCapability
- Specified by:
queryCapabilityin interfaceRenderDevice
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceRenderDevice
-
setCanvasTextureView
public void setCanvasTextureView(long textureView) Sets a canvas texture view to use as the color attachment for the default render target. Call before renderFrame() each frame. Set to 0 to use the internal offscreen RT.
-