# PBR effect with direct roughness texture control # This effect allows roughness textures to directly control roughness values # instead of multiplying with material roughness value fragment: defines: | #define USE_DIRECT_ROUGHNESS_TEXTURE 1 inout: | uniform sampler2D p3d_Texture3; // Roughness texture (direct control) material: | // Direct roughness texture control #if USE_DIRECT_ROUGHNESS_TEXTURE // Sample roughness value directly from texture float sampled_roughness = texture(p3d_Texture3, texcoord).x; // Use texture value directly instead of multiplying // This allows the texture to have full control over roughness values m.roughness = sampled_roughness; // Ensure minimum roughness to avoid rendering issues m.roughness = max(m.roughness, 0.01); // Debug: Ensure we're using the texture value // White areas = 1.0 (fully rough) // Gray areas = 0.5 (semi-rough) // Black areas = 0.01 (smooth, but not zero to avoid issues) #else // Fallback to material roughness value m.roughness = mInput.roughness; #endif // Keep all other properties unchanged for stability m.basecolor = mInput.color; m.metallic = mInput.metallic; m.specular_ior = mInput.specular_ior; m.shading_model_param0 = mInput.arbitrary0;