@@ -1898,17 +1898,20 @@ pl_renderer_outline_entities(plScene* ptScene, uint32_t uCount, plEntity* atEnti
18981898 int aiForwardFragmentConstantData0 [] = {
18991899 (int )ptMesh -> ulVertexStreamMask ,
19001900 iTextureMappingFlags ,
1901- PL_INFO_MATERIAL_METALLICROUGHNESS ,
1901+ PL_MATERIAL_SHADER_FLAG_METALLIC_ROUGHNESS ,
19021902 iObjectRenderingFlags ,
19031903 pl_sb_capacity (ptScene -> sbtLightData ),
19041904 pl_sb_capacity (ptScene -> sbtProbeData ),
19051905 gptData -> tRuntimeOptions .tShaderDebugMode
19061906 };
19071907
1908+ if (ptMaterial -> tShaderType == PL_SHADER_TYPE_PBR_CLEARCOAT )
1909+ aiForwardFragmentConstantData0 [2 ] |= PL_MATERIAL_SHADER_FLAG_CLEARCOAT ;
1910+
19081911 int aiGBufferFragmentConstantData0 [] = {
19091912 (int )ptMesh -> ulVertexStreamMask ,
19101913 iTextureMappingFlags ,
1911- PL_INFO_MATERIAL_METALLICROUGHNESS ,
1914+ PL_MATERIAL_SHADER_FLAG_METALLIC_ROUGHNESS ,
19121915 gptData -> tRuntimeOptions .tShaderDebugMode ,
19131916 iObjectRenderingFlags
19141917 };
@@ -3750,12 +3753,18 @@ pl_renderer_update_scene_materials(plScene* ptScene, uint32_t uMaterialCount, co
37503753 plTextureHandle tEmissiveTex = ptGPUMaterial -> iEmissiveTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_EMISSIVE_MAP ].tResource );
37513754 plTextureHandle tMetallicRoughnessTex = ptGPUMaterial -> iMetallicRoughnessTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_METAL_ROUGHNESS_MAP ].tResource );
37523755 plTextureHandle tOcclusionTex = ptGPUMaterial -> iOcclusionTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_OCCLUSION_MAP ].tResource );
3753-
3754- ptGPUMaterial -> iBaseColorTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tBaseColorTex );
3755- ptGPUMaterial -> iNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tNormalTex );
3756- ptGPUMaterial -> iEmissiveTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tEmissiveTex );
3757- ptGPUMaterial -> iMetallicRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tMetallicRoughnessTex );
3758- ptGPUMaterial -> iOcclusionTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tOcclusionTex );
3756+ plTextureHandle tClearcoatTex = ptGPUMaterial -> iClearcoatTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_MAP ].tResource );
3757+ plTextureHandle tClearcoatRoughnessTex = ptGPUMaterial -> iClearcoatRoughnessTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_ROUGHNESS_MAP ].tResource );
3758+ plTextureHandle tClearcoatNormalTex = ptGPUMaterial -> iClearcoatNormalTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_NORMAL_MAP ].tResource );
3759+
3760+ ptGPUMaterial -> iBaseColorTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tBaseColorTex );
3761+ ptGPUMaterial -> iNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tNormalTex );
3762+ ptGPUMaterial -> iEmissiveTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tEmissiveTex );
3763+ ptGPUMaterial -> iMetallicRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tMetallicRoughnessTex );
3764+ ptGPUMaterial -> iOcclusionTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tOcclusionTex );
3765+ ptGPUMaterial -> iClearcoatTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatTex );
3766+ ptGPUMaterial -> iClearcoatRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatRoughnessTex );
3767+ ptGPUMaterial -> iClearcoatNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatNormalTex );
37593768 }
37603769 }
37613770 ptScene -> uGPUMaterialDirty = gptGfx -> get_frames_in_flight ();
@@ -3846,12 +3855,19 @@ pl_renderer_add_materials_to_scene(plScene* ptScene, uint32_t uMaterialCount, co
38463855 plTextureHandle tEmissiveTex = ptGPUMaterial -> iEmissiveTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_EMISSIVE_MAP ].tResource );
38473856 plTextureHandle tMetallicRoughnessTex = ptGPUMaterial -> iMetallicRoughnessTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_METAL_ROUGHNESS_MAP ].tResource );
38483857 plTextureHandle tOcclusionTex = ptGPUMaterial -> iOcclusionTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_OCCLUSION_MAP ].tResource );
3849-
3850- ptGPUMaterial -> iBaseColorTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tBaseColorTex );
3851- ptGPUMaterial -> iNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tNormalTex );
3852- ptGPUMaterial -> iEmissiveTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tEmissiveTex );
3853- ptGPUMaterial -> iMetallicRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tMetallicRoughnessTex );
3854- ptGPUMaterial -> iOcclusionTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tOcclusionTex );
3858+ plTextureHandle tClearcoatTex = ptGPUMaterial -> iClearcoatTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_MAP ].tResource );
3859+ plTextureHandle tClearcoatRoughnessTex = ptGPUMaterial -> iClearcoatRoughnessTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_ROUGHNESS_MAP ].tResource );
3860+ plTextureHandle tClearcoatNormalTex = ptGPUMaterial -> iClearcoatNormalTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_NORMAL_MAP ].tResource );
3861+
3862+ ptGPUMaterial -> iBaseColorTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tBaseColorTex );
3863+ ptGPUMaterial -> iNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tNormalTex );
3864+ ptGPUMaterial -> iEmissiveTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tEmissiveTex );
3865+ ptGPUMaterial -> iMetallicRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tMetallicRoughnessTex );
3866+ ptGPUMaterial -> iOcclusionTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tOcclusionTex );
3867+ ptGPUMaterial -> iClearcoatTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatTex );
3868+ ptGPUMaterial -> iClearcoatRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatRoughnessTex );
3869+ ptGPUMaterial -> iClearcoatNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatNormalTex );
3870+
38553871 pl_hm_insert (& ptScene -> tMaterialHashmap , tMaterialComp .uData , ulValue );
38563872 }
38573873 }
0 commit comments