# PBR effect with metallic texture support # This effect extends the default PBR pipeline to support metallic textures # Provides both multiplicative and direct control modes fragment: defines: | #define USE_METALLIC_TEXTURE 1 #define METALLIC_CONTROL_MODE 0 // 0=multiply, 1=direct, 2=additive inout: | uniform sampler2D p3d_Texture5; // Metallic texture material: | // Add metallic texture support to the default material processing // Note: Don't override the default material processing, just extend it #if USE_METALLIC_TEXTURE // Sample metallic texture float sampled_metallic = texture(p3d_Texture5, texcoord).x; // Apply metallic texture based on control mode #if METALLIC_CONTROL_MODE == 0 // Multiplicative mode (original behavior) m.metallic = mInput.metallic * sampled_metallic; #elif METALLIC_CONTROL_MODE == 1 // Direct control mode m.metallic = sampled_metallic; #elif METALLIC_CONTROL_MODE == 2 // Additive mode m.metallic = clamp(mInput.metallic + sampled_metallic, 0.0, 1.0); #else // Fallback to multiplicative m.metallic = mInput.metallic * sampled_metallic; #endif // Ensure valid range m.metallic = clamp(m.metallic, 0.0, 1.0); #endif // Note: Other material properties (basecolor, roughness, etc.) are handled by the default template // We don't override them here to avoid conflicts