I made a jam game with compatibility renderer to make it playable on web, but now that the jam has ended I want to develop game further with forward+ to gain access to volumetric fog etc. I knew that changing it was going to mess up the colors, but I don't know how to fix it.


The first one is the old version from compatibility (notice that the material colors are exactly those selected in the gradient).
https://forum.godotengine.org/t/how-to-minimize-the-visual-difference-between-rendering-backends/57945
I've read this thread and the solution there is to change light energy, but it doesn't work for me, the colors are still very pale. Setting the shader render mode to unshaded doesn't change anything.

  • xyz replied to this.
  • cymus What happens if you do:

    uniform sampler2D gradient: source_color;

    xyz

    shader_type spatial;
    render_mode specular_disabled, diffuse_toon;
    
    uniform sampler3D noise;
    uniform sampler2D gradient;
    
    varying vec3 world_position;
    
    void vertex()
    {
        world_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz;
    }
    
    void fragment() {
    	METALLIC = 0.0;
    	ROUGHNESS = 0.5;
    	float amplitude = texture(noise, (normalize(world_position) + vec3(1,1,1)) * 0.5).x;
    	vec3 color = texture(gradient, vec2(amplitude, 0)).xyz;
    	ALBEDO = color;
    }
    • xyz replied to this.

      cymus What happens if you do:

      uniform sampler2D gradient: source_color;

        xyz It magically fixed everything! Thank you