use awsm_renderer_materials::MaterialShaderId;
use crate::{
dynamic_materials::ShadingBase,
render_passes::{
geometry::shader::cache_key::DynamicVertexShaderInfo,
material_opaque::shader::cache_key::DynamicShaderInfo,
shader_cache_key::ShaderCacheKeyRenderPass,
shared::material::cache_key::ShaderMaterialVertexAttributes,
},
shaders::ShaderCacheKey,
};
#[derive(Hash, Debug, Clone, PartialEq, Eq)]
pub struct ShaderCacheKeyMaterialTransparent {
pub instancing_transforms: bool,
pub attributes: ShaderMaterialVertexAttributes,
pub texture_pool_arrays_len: u32,
pub texture_pool_samplers_len: u32,
pub msaa_sample_count: Option<u32>,
pub mipmaps: bool,
pub base: ShadingBase,
pub pbr_features: u32,
pub dispatch_hash: u64,
pub dynamic_shader_id: Option<MaterialShaderId>,
pub dynamic_shader: Option<DynamicShaderInfo>,
pub dynamic_vertex_shader: Option<DynamicVertexShaderInfo>,
pub froxel_slice_count: u32,
}
impl From<ShaderCacheKeyMaterialTransparent> for ShaderCacheKey {
fn from(key: ShaderCacheKeyMaterialTransparent) -> Self {
ShaderCacheKey::RenderPass(ShaderCacheKeyRenderPass::MaterialTransparent(key))
}
}