Skip to content

Commit 5ab5ccb

Browse files
committed
api: Add material emissive intensity.
1 parent 7c6b85d commit 5ab5ccb

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

Runtime/MaterialConverter.cs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ public class MaterialConverter : IMaterialConverter
5353
private static readonly int DiffusionProfileAsset = Shader.PropertyToID("_DiffusionProfileAsset");
5454
private static readonly int DiffusionProfileHash = Shader.PropertyToID("_DiffusionProfileHash");
5555
private static readonly int MaterialID = Shader.PropertyToID("_MaterialID");
56-
private static readonly int EmissiveColor = Shader.PropertyToID("_EmissiveColor");
56+
private static readonly int EmissiveColorHDR = Shader.PropertyToID("_EmissiveColor");
57+
private static readonly int EmissiveColorLDR = Shader.PropertyToID("_EmissionColor");
58+
private static readonly int EmissiveIntensity = Shader.PropertyToID("_EmissiveIntensity");
5759

5860
#endregion
5961

@@ -214,12 +216,31 @@ public void SetMaterialType(Material material, MaterialType materialType)
214216

215217
public void SetEmissiveColor(MaterialPropertyBlock propBlock, Color color)
216218
{
217-
propBlock.SetColor(EmissiveColor, color);
219+
propBlock.SetColor(EmissiveColorHDR, color);
218220
}
219221

220222
public Color? GetEmissiveColor(Material material)
221223
{
222-
return material.GetColor(EmissiveColor);
224+
return material.GetColor(EmissiveColorHDR);
225+
}
226+
227+
public void SetEmissiveIntensity(Material material, MaterialPropertyBlock propBlock, float intensity)
228+
{
229+
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}");
235+
}
236+
237+
public float GetEmissiveIntensity(Material material)
238+
{
239+
var hdr = material.GetColor(EmissiveColorHDR);
240+
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})");
243+
return intensity;
223244
}
224245

225246
private static Vector4 ConvertGUIDToVector4(string guid)

0 commit comments

Comments
 (0)