use awsm_renderer_materials::MaterialShaderId;
use crate::{
dynamic_materials::{BucketEntry, ShadingBase},
render_passes::shader_cache_key::ShaderCacheKeyRenderPass,
shaders::ShaderCacheKey,
};
#[derive(Hash, Debug, Clone, PartialEq, Eq)]
pub struct ShaderCacheKeyMaterialOpaque {
pub texture_pool_arrays_len: u32,
pub texture_pool_samplers_len: u32,
pub msaa_sample_count: Option<u32>,
pub mipmaps: bool,
pub max_shadow_casters: u32,
pub shader_id: MaterialShaderId,
pub base: ShadingBase,
pub owns_skybox: bool,
pub pbr_features: u32,
pub dispatch_hash: u64,
pub dynamic_shader: Option<DynamicShaderInfo>,
pub bucket_entries: Vec<BucketEntry>,
}
#[derive(Hash, Debug, Clone, PartialEq, Eq)]
pub struct DynamicShaderInfo {
pub shader_includes: awsm_renderer_materials::ShaderIncludes,
pub struct_decl: String,
pub loader_decl: String,
pub wgsl_fragment: String,
}
impl From<ShaderCacheKeyMaterialOpaque> for ShaderCacheKey {
fn from(key: ShaderCacheKeyMaterialOpaque) -> Self {
ShaderCacheKey::RenderPass(ShaderCacheKeyRenderPass::MaterialOpaque(key))
}
}