pub struct ForwardPlusGpuResources {Show 17 fields
pub light_buffer: Option<BufferId>,
pub light_index_buffer: Option<BufferId>,
pub light_grid_buffer: Option<BufferId>,
pub tile_info_buffer: Option<BufferId>,
pub culling_uniforms_buffer: Option<BufferId>,
pub camera_layout: Option<BindGroupLayoutId>,
pub model_layout: Option<BindGroupLayoutId>,
pub material_layout: Option<BindGroupLayoutId>,
pub forward_layout: Option<BindGroupLayoutId>,
pub culling_layout: Option<BindGroupLayoutId>,
pub camera_ring: Option<UniformRingBuffer>,
pub model_ring: Option<DynamicUniformRingBuffer>,
pub material_ring: Option<DynamicUniformRingBuffer>,
pub culling_bind_group: Option<BindGroupId>,
pub forward_bind_group: Option<BindGroupId>,
pub culling_pipeline: Option<ComputePipelineId>,
pub render_pipeline: Option<RenderPipelineId>,
}Expand description
GPU resource handles for the Forward+ compute pass.
These are created during lane initialization and used each frame for light culling and rendering.
Fields§
§light_buffer: Option<BufferId>Buffer containing all GpuLight instances.
light_index_buffer: Option<BufferId>Buffer containing per-tile light index lists.
light_grid_buffer: Option<BufferId>Buffer containing (offset, count) pairs per tile.
tile_info_buffer: Option<BufferId>Buffer containing tile info for the fragment shader.
culling_uniforms_buffer: Option<BufferId>Uniform buffer for culling parameters.
camera_layout: Option<BindGroupLayoutId>Bind group layout for Group 0 (Camera).
model_layout: Option<BindGroupLayoutId>Bind group layout for Group 1 (Model).
material_layout: Option<BindGroupLayoutId>Bind group layout for Group 2 (Material).
forward_layout: Option<BindGroupLayoutId>Bind group layout for Group 3 (Forward Light Data).
culling_layout: Option<BindGroupLayoutId>Bind group layout for Culling compute pass.
camera_ring: Option<UniformRingBuffer>Ring buffer for camera uniforms.
model_ring: Option<DynamicUniformRingBuffer>Ring buffer for model uniforms.
material_ring: Option<DynamicUniformRingBuffer>Ring buffer for material uniforms.
culling_bind_group: Option<BindGroupId>Bind group for the culling compute shader.
forward_bind_group: Option<BindGroupId>Bind group for the forward pass (light data).
culling_pipeline: Option<ComputePipelineId>Compute pipeline for light culling.
render_pipeline: Option<RenderPipelineId>Render pipeline for the Forward+ pass.
Implementations§
Source§impl ForwardPlusGpuResources
impl ForwardPlusGpuResources
Sourcepub fn is_initialized(&self) -> bool
pub fn is_initialized(&self) -> bool
Returns true if all required resources are initialized.
Trait Implementations§
Source§impl Debug for ForwardPlusGpuResources
impl Debug for ForwardPlusGpuResources
Source§impl Default for ForwardPlusGpuResources
impl Default for ForwardPlusGpuResources
Source§fn default() -> ForwardPlusGpuResources
fn default() -> ForwardPlusGpuResources
Auto Trait Implementations§
impl Freeze for ForwardPlusGpuResources
impl RefUnwindSafe for ForwardPlusGpuResources
impl Send for ForwardPlusGpuResources
impl Sync for ForwardPlusGpuResources
impl Unpin for ForwardPlusGpuResources
impl UnwindSafe for ForwardPlusGpuResources
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().