Skip to content

Commit 02e3359

Browse files
committed
fix avatar lighting, remove some legacy code
1 parent 076d4b7 commit 02e3359

File tree

8 files changed

+96
-171
lines changed

8 files changed

+96
-171
lines changed

Editor/LTCGI_Controller.cs

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,7 @@ public void UpdateMaterials(bool fast, LTCGI_Screen screen = null)
584584
adapter.UpdateProxy();
585585
#pragma warning restore 618
586586
adapter._Renderers = cachedMeshRenderers.Where(cm => !IsEditorOnly(cm.gameObject)).ToArray();
587+
adapter._LTCGI_DefaultLightmap = DefaultLightmap;
587588
adapter._LTCGI_Lightmaps = cachedMeshRenderers
588589
.Select(r => {
589590
if (_LTCGI_Lightmaps == null) return DefaultLightmap;
@@ -607,7 +608,8 @@ public void UpdateMaterials(bool fast, LTCGI_Screen screen = null)
607608
Enumerable.Range(0, adapter._Renderers.Length)
608609
.SelectMany(i => mask2d[i])
609610
.ToArray();
610-
var avatarMask = screens.Select(x => x.AffectAvatars ? 1.0f : 0.0f);
611+
// mask is reversed! 1 = not visible, 0 = visible
612+
var avatarMask = screens.Select(x => x.AffectAvatars ? 0.0f : 1.0f);
611613
adapter._LTCGI_MaskAvatars = avatarMask.ToArray();
612614
adapter._Screens = screens.Select(x => x?.gameObject).ToArray();
613615
adapter._LTCGI_LODs = new Texture[4];
@@ -640,50 +642,14 @@ public void UpdateMaterials(bool fast, LTCGI_Screen screen = null)
640642
adapter._LTCGI_static_uniforms = staticUniformTex;
641643
adapter._LTCGI_ScreenCount = screens.Length;
642644
adapter._LTCGI_ScreenCountDynamic = screenCountDynamic;
645+
// masked counts must include all masked screens up to the last non-masked one!
643646
adapter._LTCGI_ScreenCountMasked =
644647
mask2d.Select(mask =>
645648
Math.Max(adapter._LTCGI_ScreenCountDynamic,
646649
Array.FindLastIndex(mask, m => m == 0.0f) + 1)).ToArray();
647-
adapter._LTCGI_ScreenCountMaskedAvatars = screens.Count(x => x.AffectAvatars);
650+
adapter._LTCGI_ScreenCountMaskedAvatars = Array.FindLastIndex(screens, x => x.AffectAvatars) + 1;
648651
adapter.BlurCRTInput = LOD1s;
649652

650-
// calculate which renderers can use the shared material update method
651-
var dynr = DynamicRenderers.ToList();
652-
var mats = new Dictionary<Material, (int, float[], Renderer)>();
653-
for (int i = 0; i < cachedMeshRenderers.Length; i++)
654-
{
655-
var r = cachedMeshRenderers[i];
656-
if (IsEditorOnly(r.gameObject)) continue;
657-
foreach (var m in r.sharedMaterials)
658-
{
659-
if (m == null) continue;
660-
var data = (adapter._LTCGI_ScreenCountMasked[i], mask2d[i], r);
661-
if (mats.ContainsKey(m))
662-
{
663-
var prev = mats[m];
664-
if (prev.Item1 != data.Item1 || !prev.Item2.SequenceEqual(data.Item2))
665-
{
666-
// two renderers share material, but have different masks,
667-
// so at least one of them needs to use a MPB
668-
// Debug.Log($"Cannot use shared material update for {m.name} on {r.name} and {prev.Item3.name} because " +
669-
// $"this({data.Item1} # {data.Item2.Aggregate("", (p, x) => p + (p == "" ? "" : ", ") + x.ToString())}) != " +
670-
// $"prev({prev.Item1} # {prev.Item2.Aggregate("", (p, x) => p + (p == "" ? "" : ", ") + x.ToString())})");
671-
dynr.Add(r);
672-
if (!dynr.Contains(prev.Item3))
673-
{
674-
dynr.Add(prev.Item3);
675-
}
676-
break;
677-
}
678-
}
679-
else
680-
{
681-
mats.Add(m, data);
682-
}
683-
}
684-
}
685-
adapter._DynamicRenderers = dynr.ToArray();
686-
687653
#pragma warning disable 618
688654
adapter.ApplyProxyModifications();
689655
#pragma warning restore 618

Editor/LTCGI_ControllerHelpers.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public static LTCGIRuntimeMode RuntimeMode
6464

6565
private float[] GetMaskForRenderer(LTCGI_Screen[] screens, Renderer r)
6666
{
67+
// mask is reversed! 1 = not visible, 0 = visible
6768
Func<bool, float> b = cond => cond ? 1.0f : 0.0f;
6869
return Enumerable.Range(0, screens.Length)
6970
.Select(si => {

Editor/LTCGI_Screen.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class LTCGI_Screen : MonoBehaviour
5151
public float CylinderAngle;
5252

5353
[Tooltip("If this renderer should affect avatars that use a supported LTCGI shader.")]
54-
public bool AffectAvatars = false;
54+
public bool AffectAvatars = true;
5555

5656
private Vector3 prevPos, prevScale, prevRot;
5757

0 commit comments

Comments
 (0)