use awsm_materials::MaterialShaderId;
use crate::{
dynamic_materials::{BucketEntry, ShadingBase},
render_passes::{
material_opaque::shader::cache_key::DynamicShaderInfo,
shader_cache_key::ShaderCacheKeyRenderPass,
},
shaders::ShaderCacheKey,
};
#[derive(Hash, Debug, Clone, PartialEq, Eq)]
pub struct ShaderCacheKeyMaterialEdgeResolve {
pub texture_pool_arrays_len: u32,
pub texture_pool_samplers_len: u32,
pub mipmaps: bool,
pub shader_id: MaterialShaderId,
pub base: ShadingBase,
pub dispatch_hash: u64,
pub dynamic_shader: Option<DynamicShaderInfo>,
pub bucket_entries: Vec<BucketEntry>,
pub bucket_index: u32,
}
impl From<ShaderCacheKeyMaterialEdgeResolve> for ShaderCacheKey {
fn from(key: ShaderCacheKeyMaterialEdgeResolve) -> Self {
ShaderCacheKey::RenderPass(ShaderCacheKeyRenderPass::MaterialEdgeResolve(key))
}
}
#[derive(Hash, Debug, Clone, PartialEq, Eq)]
pub struct ShaderCacheKeyMaterialSkyboxEdgeResolve {
pub bucket_entries: Vec<BucketEntry>,
}
impl From<ShaderCacheKeyMaterialSkyboxEdgeResolve> for ShaderCacheKey {
fn from(key: ShaderCacheKeyMaterialSkyboxEdgeResolve) -> Self {
ShaderCacheKey::RenderPass(ShaderCacheKeyRenderPass::MaterialSkyboxEdgeResolve(key))
}
}
#[derive(Hash, Debug, Clone, PartialEq, Eq)]
pub struct ShaderCacheKeyMaterialFinalBlend {
pub bucket_entries: Vec<BucketEntry>,
pub color_format: String,
}
impl From<ShaderCacheKeyMaterialFinalBlend> for ShaderCacheKey {
fn from(key: ShaderCacheKeyMaterialFinalBlend) -> Self {
ShaderCacheKey::RenderPass(ShaderCacheKeyRenderPass::MaterialFinalBlend(key))
}
}