@@ -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 };
@@ -3749,12 +3752,18 @@ pl_renderer_update_scene_materials(plScene* ptScene, uint32_t uMaterialCount, co
37493752 plTextureHandle tEmissiveTex = ptGPUMaterial -> iEmissiveTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_EMISSIVE_MAP ].tResource );
37503753 plTextureHandle tMetallicRoughnessTex = ptGPUMaterial -> iMetallicRoughnessTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_METAL_ROUGHNESS_MAP ].tResource );
37513754 plTextureHandle tOcclusionTex = ptGPUMaterial -> iOcclusionTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_OCCLUSION_MAP ].tResource );
3752-
3753- ptGPUMaterial -> iBaseColorTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tBaseColorTex );
3754- ptGPUMaterial -> iNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tNormalTex );
3755- ptGPUMaterial -> iEmissiveTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tEmissiveTex );
3756- ptGPUMaterial -> iMetallicRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tMetallicRoughnessTex );
3757- ptGPUMaterial -> iOcclusionTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tOcclusionTex );
3755+ plTextureHandle tClearcoatTex = ptGPUMaterial -> iClearcoatTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_MAP ].tResource );
3756+ plTextureHandle tClearcoatRoughnessTex = ptGPUMaterial -> iClearcoatRoughnessTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_ROUGHNESS_MAP ].tResource );
3757+ plTextureHandle tClearcoatNormalTex = ptGPUMaterial -> iClearcoatNormalTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_NORMAL_MAP ].tResource );
3758+
3759+ ptGPUMaterial -> iBaseColorTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tBaseColorTex );
3760+ ptGPUMaterial -> iNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tNormalTex );
3761+ ptGPUMaterial -> iEmissiveTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tEmissiveTex );
3762+ ptGPUMaterial -> iMetallicRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tMetallicRoughnessTex );
3763+ ptGPUMaterial -> iOcclusionTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tOcclusionTex );
3764+ ptGPUMaterial -> iClearcoatTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatTex );
3765+ ptGPUMaterial -> iClearcoatRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatRoughnessTex );
3766+ ptGPUMaterial -> iClearcoatNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatNormalTex );
37583767 }
37593768 }
37603769 ptScene -> uGPUMaterialDirty = gptGfx -> get_frames_in_flight ();
@@ -3845,12 +3854,19 @@ pl_renderer_add_materials_to_scene(plScene* ptScene, uint32_t uMaterialCount, co
38453854 plTextureHandle tEmissiveTex = ptGPUMaterial -> iEmissiveTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_EMISSIVE_MAP ].tResource );
38463855 plTextureHandle tMetallicRoughnessTex = ptGPUMaterial -> iMetallicRoughnessTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_METAL_ROUGHNESS_MAP ].tResource );
38473856 plTextureHandle tOcclusionTex = ptGPUMaterial -> iOcclusionTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_OCCLUSION_MAP ].tResource );
3848-
3849- ptGPUMaterial -> iBaseColorTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tBaseColorTex );
3850- ptGPUMaterial -> iNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tNormalTex );
3851- ptGPUMaterial -> iEmissiveTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tEmissiveTex );
3852- ptGPUMaterial -> iMetallicRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tMetallicRoughnessTex );
3853- ptGPUMaterial -> iOcclusionTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tOcclusionTex );
3857+ plTextureHandle tClearcoatTex = ptGPUMaterial -> iClearcoatTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_MAP ].tResource );
3858+ plTextureHandle tClearcoatRoughnessTex = ptGPUMaterial -> iClearcoatRoughnessTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_ROUGHNESS_MAP ].tResource );
3859+ plTextureHandle tClearcoatNormalTex = ptGPUMaterial -> iClearcoatNormalTexIdx == -1 ? gptData -> tDummyTexture : gptResource -> get_texture (ptMaterial -> atTextureMaps [PL_TEXTURE_SLOT_CLEARCOAT_NORMAL_MAP ].tResource );
3860+
3861+ ptGPUMaterial -> iBaseColorTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tBaseColorTex );
3862+ ptGPUMaterial -> iNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tNormalTex );
3863+ ptGPUMaterial -> iEmissiveTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tEmissiveTex );
3864+ ptGPUMaterial -> iMetallicRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tMetallicRoughnessTex );
3865+ ptGPUMaterial -> iOcclusionTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tOcclusionTex );
3866+ ptGPUMaterial -> iClearcoatTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatTex );
3867+ ptGPUMaterial -> iClearcoatRoughnessTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatRoughnessTex );
3868+ ptGPUMaterial -> iClearcoatNormalTexIdx = (int )pl__renderer_get_bindless_texture_index (ptScene , tClearcoatNormalTex );
3869+
38543870 pl_hm_insert (& ptScene -> tMaterialHashmap , tMaterialComp .uData , ulValue );
38553871 }
38563872 }
0 commit comments