Skip to content
Snippets Groups Projects
Commit 7defff4d authored by Rye Mutt's avatar Rye Mutt :bread:
Browse files

Fix nan in lighting breaking tonemapping and color grading

parent 81c5d0b9
No related branches found
No related tags found
No related merge requests found
...@@ -131,6 +131,7 @@ void main() ...@@ -131,6 +131,7 @@ void main()
vec3 pos = getPosition(frag.xy).xyz; vec3 pos = getPosition(frag.xy).xyz;
vec3 lv = center.xyz-pos.xyz; vec3 lv = center.xyz-pos.xyz;
float dist = length(lv); float dist = length(lv);
dist /= size; dist /= size;
if (dist > 1.0) if (dist > 1.0)
{ {
...@@ -191,7 +192,8 @@ void main() ...@@ -191,7 +192,8 @@ void main()
lit = da * dist_atten * noise; lit = da * dist_atten * noise;
col = dlit*lit*diff_tex; col = dlit*lit*diff_tex;
amb_da += (da*0.5)*proj_ambiance;
amb_da += (da*0.5+0.5)*proj_ambiance;
} }
//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
...@@ -201,6 +203,9 @@ void main() ...@@ -201,6 +203,9 @@ void main()
amb_da *= dist_atten * noise; amb_da *= dist_atten * noise;
amb_da = min(amb_da, 1.0-lit); amb_da = min(amb_da, 1.0-lit);
amb_da = max(amb_da, 0.0); // Prevent nan in lighting
col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
} }
......
...@@ -191,7 +191,7 @@ void main() ...@@ -191,7 +191,7 @@ void main()
lit = da * dist_atten * noise; lit = da * dist_atten * noise;
col = dlit*lit*diff_tex; col = dlit*lit*diff_tex;
amb_da += (da*0.5)*proj_ambiance; amb_da += (da*0.5+0.5)*proj_ambiance;
} }
//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
...@@ -201,6 +201,9 @@ void main() ...@@ -201,6 +201,9 @@ void main()
amb_da *= dist_atten * noise; amb_da *= dist_atten * noise;
amb_da = min(amb_da, 1.0-lit); amb_da = min(amb_da, 1.0-lit);
amb_da = max(amb_da, 0.0); // Prevent nan in lighting
col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
} }
......
...@@ -215,6 +215,8 @@ void main() ...@@ -215,6 +215,8 @@ void main()
amb_da *= dist_atten * noise; amb_da *= dist_atten * noise;
amb_da = min(amb_da, 1.0-lit); amb_da = min(amb_da, 1.0-lit);
amb_da = max(amb_da, 0.0); // Prevent nan in lighting
col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
} }
...@@ -275,10 +277,7 @@ void main() ...@@ -275,10 +277,7 @@ void main()
} }
#endif #endif
//not sure why, but this line prevents MATBUG-194 //output linear, sum of lights will be gamma corrected later
col = max(col, vec3(0.0));
//output linear
frag_color.rgb = col; frag_color.rgb = col;
frag_color.a = 0.0; frag_color.a = 0.0;
} }
...@@ -213,6 +213,7 @@ void main() ...@@ -213,6 +213,7 @@ void main()
amb_da += (da*da*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance; amb_da += (da*da*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance;
amb_da *= dist_atten * noise; amb_da *= dist_atten * noise;
amb_da = min(amb_da, 1.0-lit); amb_da = min(amb_da, 1.0-lit);
amb_da = max(amb_da, 0.0); // Prevent nan in lighting
col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
} }
...@@ -273,10 +274,6 @@ void main() ...@@ -273,10 +274,6 @@ void main()
} }
} }
#endif #endif
//not sure why, but this line prevents MATBUG-194
col = max(col, vec3(0.0));
//output linear colors as gamma correction happens down stream //output linear colors as gamma correction happens down stream
frag_color.rgb = col; frag_color.rgb = col;
frag_color.a = 0.0; frag_color.a = 0.0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment