#bindless extended material stopped working

2 messages · Page 1 of 1 (latest)

main merlin
#

I had this working before upgrading to 0.18. Not sure what I changed, but I can't figure it out. I tried following the example

⁨```

#[derive(Default, Clone, ShaderType)]
pub struct CharacterMaterialExtensionUniform {
pub some_int: u32,
}

#[derive(Asset, Clone, Reflect, AsBindGroup)]
#[data(50, CharacterMaterialExtensionUniform, binding_array(101))]
#[bindless(index_table(range(50..51), binding(100)))]
pub struct CharacterMaterialExtension {
pub some_int: u32,
}

impl MaterialExtension for CharacterMaterialExtension {
fn fragment_shader() -> ShaderRef {
SHADER_ASSET_PATH.into()
}
}

impl<'a> From<&'a CharacterMaterialExtension> for CharacterMaterialExtensionUniform {
fn from(value: &'a CharacterMaterialExtension) -> Self {
CharacterMaterialExtensionUniform {
some_int: value.some_int,
}
}
}


⁨```
wgpu-27.0.1\src\backend\wgpu_core.rs:1588:26:
wgpu error: Validation Error

Caused by:
  In Device::create_texture
    Dimension Z is zero

```⁩
No idea what this means.  im not even using any texture.
main merlin
#

i tried adding a texture like the example, to no avail

⁨```

#[derive(Default, Clone, ShaderType)]
pub struct CharacterMaterialExtensionUniform {
pub some_int: u32,
}

#[derive(Asset, Clone, Reflect, AsBindGroup)]
#[data(50, CharacterMaterialExtensionUniform, binding_array(101))]
#[bindless(index_table(range(50..53), binding(100)))]
pub struct CharacterMaterialExtension {
pub some_int: u32,
#[texture(51)]
#[sampler(52)]
pub dummy_texture: Handle<Image>,
}

impl MaterialExtension for CharacterMaterialExtension {
fn fragment_shader() -> ShaderRef {
SHADER_ASSET_PATH.into()
}
}

impl<'a> From<&'a CharacterMaterialExtension> for CharacterMaterialExtensionUniform {
fn from(value: &'a CharacterMaterialExtension) -> Self {
CharacterMaterialExtensionUniform {
some_int: value.some_int,
}
}
}


here's my shader
⁨```
#import bevy_pbr::{
    forward_io::{FragmentOutput, VertexOutput},
    mesh_bindings::mesh,
    pbr_fragment::pbr_input_from_standard_material,
    pbr_functions::{apply_pbr_lighting, main_pass_post_lighting_processing},
}
#import bevy_render::bindless::{bindless_samplers_filtering, bindless_textures_2d}
#import bevy_pbr::pbr_bindings::{material_array, material_indices}

struct CharacterMaterial {
    some_int: u32,
}

struct BindlessMaterialIndices {
    material: u32,
    dummy_texture: u32,
    dummy_texture_sampler: u32,
}


@group(#{MATERIAL_BIND_GROUP}) @binding(100) var<storage> extended_material_indices:
    array<BindlessMaterialIndices>;
@group(#{MATERIAL_BIND_GROUP}) @binding(101) var<storage> example_extended_material:
    array<CharacterMaterial>;


@fragment
fn fragment(
    in: VertexOutput,
    @builtin(front_facing) is_front: bool,
) -> FragmentOutput {
    return vec4(1.);
}
```⁩

even if i don't instance the material i still get the error. just registering the plugin seems to cause a panic