Skip to content

Commit 9f4efe6

Browse files
committed
fix: Color space when updating emission color.
1 parent 5ab5ccb commit 9f4efe6

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

Runtime/MaterialConverter.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -227,19 +227,22 @@ public void SetEmissiveColor(MaterialPropertyBlock propBlock, Color color)
227227
public void SetEmissiveIntensity(Material material, MaterialPropertyBlock propBlock, float intensity)
228228
{
229229
var ldr = material.GetColor(EmissiveColorLDR);
230-
var hdr = new Color(Mathf.GammaToLinearSpace(ldr.r) * intensity, Mathf.GammaToLinearSpace(ldr.g) * intensity, Mathf.GammaToLinearSpace(ldr.b) * intensity);
231-
// var hdr = ldr * intensity;
232-
propBlock.SetColor(EmissiveColorHDR, hdr);
233-
234-
Debug.Log($"SET intensity ({material.name}) = {intensity} -> {ldr} / {hdr}");
230+
var hdr = ldr * intensity;
231+
// https://issuetracker.unity3d.com/issues/hdrp-setting-emission-property-emissivecolor-via-material-and-via-material-property-block-leads-to-different-results
232+
propBlock.SetColor(EmissiveColorHDR, hdr.gamma);
235233
}
236234

237235
public float GetEmissiveIntensity(Material material)
238236
{
239237
var hdr = material.GetColor(EmissiveColorHDR);
240238
var ldr = material.GetColor(EmissiveColorLDR);
241-
var intensity = hdr.r / ldr.r; // just look at red for now
242-
Debug.Log($"GET intensity = {intensity} ({hdr} / {ldr})");
239+
var intensity = hdr.r > 0 // look at the first non-0 value
240+
? hdr.r / ldr.r
241+
: hdr.g > 0
242+
? hdr.g / ldr.g
243+
: hdr.b > 0
244+
? hdr.b / ldr.b
245+
: 0;
243246
return intensity;
244247
}
245248

0 commit comments

Comments
 (0)