Search Unity

Bakery - GPU Lightmapper (v1.96) + RTPreview [RELEASED]

Discussion in 'Assets and Asset Store' started by guycalledfrank, Jun 14, 2018.

  1. XRA

    XRA

    Joined:
    Aug 26, 2010
    Posts:
    265
    having a weird issue where on some scenes, 1.50 freezes Unity 2018.3.2f1, lightmap Progress is 100% finished rendering (window never closes), when this occurs if I try to view .uvgblog.txt -clicking on the file freezes and hangs Windows Explorer (.uvgblog.txt is 70kb)
    .ftracelog.txt and .denoiseshlog.txt both open without issue and no errors reported in either.

    Also trying to directly open .uvgblog.txt in sublime text freezes/hangs
     
  2. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    I think it's better to just use reflection probes in this case.

    Good one!

    Is it before actual scene rendering (on scene export)? Sounds like the same problem frankadimcosta had.

    Can you guys both try the github patch?
     
  3. xinuxano

    xinuxano

    Joined:
    Feb 28, 2018
    Posts:
    33
    I am new here. I tried to do my first render with Bakery, using Unity 2018.3.3f and Bakery 1.5 with the latest github patches.
    During the process no errors appear and everything ends in 22 minutes. The light maps are all black and I think he has not done the bake at the end.
    What am I doing wrong? Thank you

    log image: https://ibb.co/pR170Jn

    lightmaps files: https://ibb.co/WsByy91
     
  4. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Did you use any Bakery light components at all? Does the Quick Start tutorial work for you? Do example scenes bake?
     
    xinuxano likes this.
  5. BenWoodford

    BenWoodford

    Joined:
    Sep 29, 2013
    Posts:
    116
    Just updated to the latest NVIDIA drivers, still throwing an error though. Will make sure Bakery is also up to date and try again.
     
  6. xinuxano

    xinuxano

    Joined:
    Feb 28, 2018
    Posts:
    33
    Thank you so much. I followed the instructions and added the scripts to all my lights.

    Excuse me for my next question, maybe silly.
    In RenderMode = Indirect, I want a light to be completely bake. Do I have to put ON on Bake to Indirect?
     
  7. r_chevallier

    r_chevallier

    Joined:
    Apr 20, 2014
    Posts:
    31
    Error on Bakery 1.5-

    NullReferenceException: Object reference not set to an instance of an object
    ftBuildGraphics+<ExportScene>d__140.MoveNext() Assets/Editor/x64/Bakery/scripts/ftBuildGraphics.cs:4207
     
  8. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Weird. What GPU is that?

    Yup :)

    Yeah, it's a bug I overlooked. Please send me your github username (it's quick to register there if you don't have one) and get the up-to-date repository access with patches.

    Currently there're 3 small fixes over stock v1.5. I'll probably accumulate them for a week or so and then release it as v1.51 on the store.
     
  9. r_chevallier

    r_chevallier

    Joined:
    Apr 20, 2014
    Posts:
    31
    Hello,
    My github username is:
    raychevallier or "r_chevallier". I have two names listed under my user profile, so not sure which one will bring me up.
    I only used github twice.
     
  10. elamhut

    elamhut

    Joined:
    Sep 13, 2013
    Posts:
    45
    Hey guy,

    Thanks for all the help, the renders are great. Also just updated to 1.5 and it's very good!

    I'm having problems syncing the lightmaps throughout our projects. During the night we usually leave 2 or 3 PCs doing some lightmap work but when I commit (GIT+LFS) the other PC screws over the lightmap I just didl. I mean, the lightmap is there, it's just... wrong. I tried deleting the library and re-importing everything but the lightmap is still wrong,

    This is the PC that took the Lightmap:



    This is the other PC after pulling the commit:




    Also: The first time we used bakery I did commit the Bakery Folder and I did commit the Assets/Bakery/ftLocalStorage.asset and Assets/Bakery/ftGlobalStorage.asset a bunch of times. (Before realizing I shouldn't have done that).

    But after I took this lightmap today, there was no ftLocal or ftGlobal to commit on my machine, they didn't show up and being changed. I think our GIT is all screwed up and I have no Idea how to fix. We now have 2 PCs that needs to commit lightmaps and they are out of sync.

    I also discovered that our .assets are going to LFS and can't be merged. If that's useful info.
     
    Last edited: Jan 31, 2019
  11. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Here you go: https://github.com/guycalledfrank/bakery-csharp/invitations

    Try deleting these from repo and not committing them anymore. They are not required (unless you're on Unity 5.6) and might indeed mess things up.
     
  12. elamhut

    elamhut

    Joined:
    Sep 13, 2013
    Posts:
    45
    Ok, done. Is there a way to still fix these lightmap inconsistencies or I need to rebake all the scenes now that the files are ignored?
     
    Last edited: Jan 31, 2019
  13. r_chevallier

    r_chevallier

    Joined:
    Apr 20, 2014
    Posts:
    31
    Github Update fixed 1.5 errors, Thanks.

    Another Question-
    I get edge pin line highlights on some game objects even though they are from same prefab. Below is just one example. Below image is from same bake but shows up only on some instances.

    Bakery Highlight.jpg

    I read in the Bakery 1.5 release notes: "Added option to remove bright edges around shadows sometimes caused by the denoising neural net."

    Does that apply to the issue I am having. If so I can't find the option to remove bright edges.

    Or is this related to either UV padding or Texel size? I don't want to increase Texels to fix this if I don't have too.

    -Thanks-
     
    Last edited: Jan 31, 2019
  14. keeponshading

    keeponshading

    Joined:
    Sep 6, 2018
    Posts:
    937
    There were many posts about issues with LOD.s
    So here is a solution that works great but in very rare cases there are problems when baked with Bakery.
    Only one of higher LOD s fades to complete black representation.

    Book of the Dead and Fontainebleau are using this method on nearly all of the photogrammetry objects.

    Attach the script to all LOD's bigger than LOD0.
    and disable LightMap static.
    LOD0 is lightmap static.

    Bakery generates only a LightMap for LOD0.
    All other LOD s use then these lightmap.

    Works only when lower LOD s have same UV layout.

    Could you please make a fast test and fast think about if bakery is technically (Shadowmask and Directional Map) fully compatible with it.

    Do you have an idea where the fade to black glitch could come from?

    tested on
    Bakery 1.4 and 1.5
    Unity 2018.3.x
    BuiltIn and HDRP


    Code (CSharp):
    1.  
    2. using System.Collections;
    3. using System.Collections.Generic;
    4. using UnityEngine;
    5. [ExecuteInEditMode]
    6. public class LightmappedLOD : MonoBehaviour {
    7.     private MeshRenderer currentRenderer;
    8.     private void Awake()
    9.     {
    10.         currentRenderer = gameObject.GetComponent<MeshRenderer>();
    11.         RendererInfoTransfer();
    12.     }
    13. #if UNITY_EDITOR
    14.     void OnBecameVisible()
    15.     {
    16.         if(!Application.isPlaying)
    17.             RendererInfoTransfer();
    18.     }
    19. #endif
    20.     void RendererInfoTransfer()
    21.     {
    22.         if (GetComponentInParent<LODGroup>() == null)
    23.             return;
    24.         var lods = GetComponentInParent<LODGroup>().GetLODs();
    25.         int currentRendererLodIndex = -1;
    26.         if(currentRenderer == null)
    27.         {
    28.             return;
    29.         }
    30.         for (int i = 0; i < lods.Length; i++)
    31.         {
    32.             for (int j = 0; j < lods[i].renderers.Length; j++)
    33.             {
    34.                 if (currentRenderer == lods[i].renderers[j])
    35.                     currentRendererLodIndex = i;
    36.             }
    37.         }
    38.         if (currentRendererLodIndex == -1)
    39.         {
    40.             Debug.Log("Lightmapped LOD : lod index not found on " + gameObject.name);
    41.             return;
    42.         }
    43.         var renderers = lods[currentRendererLodIndex].renderers;
    44.         for (int i = 0; i < renderers.Length; i++)
    45.         {
    46.             if (renderers[i] != null)
    47.             {
    48.                 try
    49.                 {
    50.                     renderers[i].lightProbeUsage = lods[0].renderers[i].lightProbeUsage;
    51.                     renderers[i].lightmapIndex = lods[0].renderers[i].lightmapIndex;
    52.                     renderers[i].lightmapScaleOffset = lods[0].renderers[i].lightmapScaleOffset;
    53.                 }
    54.                 catch
    55.                 {
    56.                     if(Debug.isDebugBuild)
    57.                         Debug.Log("Lightmapped LOD : Error setting lightmap settings on " + gameObject.name);
    58.                 }
    59.             }
    60.         }
    61.     }
    62. }
    63.  
    64.  
    https://github.com/Unity-Technologi...sets/Demo/Scripts/utilities/LightmappedLOD.cs
     
    Last edited: Jan 31, 2019
    DEEnvironment and guycalledfrank like this.
  15. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    If it looks good on at least one machine, try following:
    - Remove ftGlobalStorage.asset and ftLocalStorage.asset from other machines
    - Copy *.meta files for broken models from the working machine to others
    - On other machines: right-click broken models -> reimport

    Maybe but not necessarily. The option is visible if you switch to Experimental settings.
    Is the model using custom or auto-generated (by Unity) UVs? Is the mesh generated using probuilder/archimatrix/whatever-that-is-not-a-generic-FBX?
     
  16. BenWoodford

    BenWoodford

    Joined:
    Sep 29, 2013
    Posts:
    116
    1080. I updated Bakery and all seems to be fine now, how weird!
     
    guycalledfrank likes this.
  17. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    The only plausible explanation I can see is that your previous installation was somehow corrupted (missing files) and now you imported them all again
     
  18. jxxxxst

    jxxxxst

    Joined:
    Nov 3, 2012
    Posts:
    50
    Is there away to force reapply lightmapped data for a lightmapped prefab?
    I am baking a chunk of my level data in a baking scene as a prefab, that prefab is also active in my master scene.
    For a while lightmapped data would automatically be applied to the prefab in the master scene.
    Now, only if I drag the prefab from the project window into the master scene again, I get the lightmapped data.
     
  19. r_chevallier

    r_chevallier

    Joined:
    Apr 20, 2014
    Posts:
    31
    The Mesh is imported from Maya LT. I packed the UVs in Maya as well. It has no Probuilder association at all.

    I will try the experimental setting.
     
  20. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Not sure if I understood the problem. Do you have a baked prefab that you render in a separate scene and then use in the main one, and somehow the lighting is not updated anymore? How does it look in the main scene then? Does it have some other lightimap, or no lightmaps at all?...

    Ah, so then it's likely because of the UVs. When using auto-generated UVs, Bakery messes with Unity unwrapper to force it use the best possible padding value for each mesh.
    But if you use custom UVs, it can't change them. There might be not enough empty space around that particular edge using given lightmap resolution, so you can either:
    - Make sure there is more padding in UV layout
    - Or increase lightmap resolution
     
  21. elamhut

    elamhut

    Joined:
    Sep 13, 2013
    Posts:
    45
    Found two issues on 1.5

    1) I added the Bakery Light Mesh to a prefab's area light, so it looks like this:


    Then after I bake, the prefabs always change to something like this:


    And whenever the prefabs looks like the 2nd image Bakery has issues baking (it gives me a nullref and doesn't bake) and it shows on my Version Control as a prefab change (I don't really want to commit that).

    2) If you mark "UV Validation" and get an error of overlapping UVs, press stop so you can fix it (by re-generating the UV2s) then try to rebake the scene, you get the following error:
     
  22. r_chevallier

    r_chevallier

    Joined:
    Apr 20, 2014
    Posts:
    31
    Just tried to bake with "Denoise: Fix bright Edges". It did nothing to correct it. I even baked another time with "Denoise" turned off completely and I did not fix the problem.

    I went by your formula of 3/512 but apparently that still is not enough padding. I will go up on the padding and see what happens.
     
  23. Johnny-Ge

    Johnny-Ge

    Joined:
    Apr 26, 2014
    Posts:
    11
    It's great job!!!
    But I have an issue about ship to Android, I cannot find any button which is "Encoding" to mobile. So I couldn't compile the APK successfully. (Bakery version :1.5. Unity version: 5.6.6 )

    Would u please tell me where is it? Thanksssssssssss!
     
    Last edited: Feb 1, 2019
  24. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    1 - yeah, this one is only relevant to 2018.3 and was fixed, get a github patch ;)
    2 - thanks, will check

    Hi! What exactly are you trying to accomplish? What's the problem with your APK build?
     
  25. atomicjoe

    atomicjoe

    Joined:
    Apr 10, 2013
    Posts:
    1,869
    That's Unity who should do this automatically.
    Try to right-click on the lightmaps folder and press REIMPORT

    Sometimes Unity doesn't recompress textures for android when you switch project build targets from PC to Android.
     
    colin299 and guycalledfrank like this.
  26. UlringOfDeath

    UlringOfDeath

    Joined:
    Nov 3, 2017
    Posts:
    5
    Great work by the way. Love Bakery. So much better than Unity's bake rendering system. I recently updated to the latest release. I am getting the error message below now. I think its similar to the problem r_chevallier had. Is there a fix for it?

    NullReferenceException: Object reference not set to an instance of an object
    ftBuildGraphics+<ExportScene>c__Iterator0.MoveNext () (at Assets/Editor/x64/Bakery/scripts/ftBuildGraphics.cs:4207)
    ftRenderLightmap+<RenderLightmapFunc>c__Iterator3.MoveNext () (at Assets/Editor/x64/Bakery/scripts/ftRenderLightmap.cs:3164)
    ftRenderLightmap.RenderLightmapUpdate () (at Assets/Editor/x64/Bakery/scripts/ftRenderLightmap.cs:2827)
    UnityEditor.EditorApplication.Internal_CallUpdateFunctions () (at C:/buildslave/unity/build/Editor/Mono/EditorApplication.cs:191)
     
    guycalledfrank likes this.
  27. devyndamonster

    devyndamonster

    Joined:
    Oct 11, 2017
    Posts:
    3
    Dang, I am also getting the "NullReferenceException: Object reference not set to an instance of an object". I was able to get it working on a small scene though, and it really is amazing how powerful bakery is. Any chance there could be a fix pushed sooner than later?
     
  28. Johnny-Ge

    Johnny-Ge

    Joined:
    Apr 26, 2014
    Posts:
    11
    Thanks! It's worked!
     
    atomicjoe and guycalledfrank like this.
  29. elamhut

    elamhut

    Joined:
    Sep 13, 2013
    Posts:
    45
    Hey guy,

    Sorry for pestering you so much! Just trying to get Bakery up and running perfectly before my team comes down on me :p

    I didn't get what you mean, there's a github for bakery that I can get smaller patches?

    Also, I just did a 7 hour bake and everything was fine except for...





    My smaller rocks have become incandescent and I have NO IDEA why (this didn't happen when I baked basically the same scene before!) hahahaha It's extremely sad since it was 7 hours in the trash, although the rest of the lightmap came out perfect. Check out the material on the right, those rocks don't even have emissive!
     
  30. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Yuuup. Register on github, send me your invoice number + github username, get all the quick updates.

    In the meantime I'm uploading v1.51 with these hotfixes, so should be also on the store soon.

    Neither do I unfortunately. Never seen this before. How comes it took 7 hours? The longest bakes I did were about an hour, so maybe reducing some sample values is a good idea.
     
  31. elamhut

    elamhut

    Joined:
    Sep 13, 2013
    Posts:
    45
    Basically a huge interior cave made with a ton of individual rocks for walls and ceiling, with a bunch of point and area lights, AO and high texel count because I want high res for VR. I did with 40 samples. Video card is a 1060. Also it takes 4h to bake on my PC, took 7 hours because I was baking on the alienware, which has a 1070.
     
  32. r_chevallier

    r_chevallier

    Joined:
    Apr 20, 2014
    Posts:
    31
    Using Bakery 1.5-

    I am using LM Group Selector on certain sections of my level. I am running into a resolution and texel size problem.

    This particular section is a small cave. I don't need a huge lightmap for it. Yet if I only have a lightmap resolution size of 512 my texels get huge vs. having a lightmap resolution of 2024. I have noticed the UV packed layout doesn't get rearranged either when you change lightmap resolution in the LM_group settings. There is quite a bit of wasted space no matter what size the lightmap resolution is.

    I suppose a solution would be to go into each game object and increase the "Scale in Lightmap" setting while keeping the lightmap resolution lower. I tested this and it works but is a bit of work to do for each game object though.

    Is there a way to change the LM Group Selector resolution while keeping the game objects original texel size (as long as the Object's size in lightmap does not go over the max atlas size)?

    Thanks
     
  33. frankadimcosta

    frankadimcosta

    Joined:
    Jan 14, 2015
    Posts:
    203
    Upgraded to 2018.3.4f1 and no I have this error:

    Assets/Bakery/BakeryLightmappedPrefab.cs(29,43): warning CS0618: `UnityEditor.PrefabUtility.FindPrefabRoot(UnityEngine.GameObject)' is obsolete: `Use GetOutermostPrefabInstanceRoot if source is a Prefab instance or source.transform.root.gameObject if source is a Prefab Asset object.'
     
  34. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671


    Just submitted v1.51 to the store
    .
    Wait for it to be published, it should fix common errors you could have on v1.5 (NullReferenceException included).

    Might be too much (if you mean GI samples). In general, 16 samples are enough in almost every scene.

    Ehh. Seems like a bug. Layouts should get normalized at least. Will investigate - thanks.

    It's not an error, you can ignore it.
     
    frankadimcosta and Mark_01 like this.
  35. r_chevallier

    r_chevallier

    Joined:
    Apr 20, 2014
    Posts:
    31
    If you need anymore info regarding the possible "LM Group Selector" bug, let me know. I can send you screenshots as well comparing the texel sizes and lightmap layouts for both 512 and 2048 resolution if it helps give you a better understanding.
     
    guycalledfrank likes this.
  36. r_chevallier

    r_chevallier

    Joined:
    Apr 20, 2014
    Posts:
    31
    Here are some images for the LM Group Selector Issue. I would assume that the lower the resolution would mean less wasted space but as you can see that is not the case. They lightmap atlas gets arranged exactly the same.

    LM Group 512 res.jpg

    LM Group 2024 res.jpg
     
    guycalledfrank likes this.
  37. Sanyol

    Sanyol

    Joined:
    Jan 28, 2013
    Posts:
    24
    Hello,
    have you tested Bakery Linear lightmaps on OculusGO with Linear Space? The lightmaps are darker comparing them to the editor - maybe you have an idea how to fix that.

    Thanks!
     
  38. atomicjoe

    atomicjoe

    Joined:
    Apr 10, 2013
    Posts:
    1,869
    I read there is some bugs on Unity 2018 with linear space and VR platforms.
    It is somewhat fixed on 2019.1b as it seems by the latest release notes of the beta:

    XR: Linear color space now works on Oculus Go and Quest. For Gear VR, driver issues may prevent linear from working with S7 Adreno phones on Android 7.0.
     
    guycalledfrank and Sanyol like this.
  39. Sanyol

    Sanyol

    Joined:
    Jan 28, 2013
    Posts:
    24
    Thanks for the tip!
     
    atomicjoe likes this.
  40. elamhut

    elamhut

    Joined:
    Sep 13, 2013
    Posts:
    45
    Hey Guy,

    Here's an issues we've just figured out. I have 4 HDDs in my PC, so I decided to put my Temp folder on F:/BakeryTemp, my co-workers do not have an F: Drive, so when they tried to bake they got a permanent 55% and a Nullref. This is because Bakery doesn't have safeguard against bad File Paths. If when pressing Bake you did a quick check and warned the user "Did not found Temp Folder, please point to a new one" this wouldn't be an issue. This has happened multiple times and it's a real pain to stop everything and teach people how to fix this issue :)

    Cheers!
     
  41. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Whoops. Fixed! You can grab it from github.
     
  42. Eutechnyx

    Eutechnyx

    Joined:
    Apr 20, 2017
    Posts:
    1
    Hi

    A question regarding bakery..

    I am generating my own UVW on meshes in 3dsmax and using bakery LMGS groups to set resolution and use oirginal UV in unity.

    There does not seem to be any option in bakery to set the bake padding size, it seems to be automatic?

    For example if I know I have left 10 pixel gap between UV islands when I packed the UV's, then I would set the bake padding size to something appropriate like 5 pixels so one island did not overlap the other after the bake.

    Could you tell me how much space I need to leave in pixels between uv islands in order for there to be no overlapping with the baked padding between islands, for example if i was baking to 4096x4096 ?
     
  43. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Bakery will dilate pixels around UV charts to fill the padding. The dilation is pretty wide, so you shouldn't worry.

    Yeah, it's described in Best Practices in the manual. In general, 3/4096 = 0.000732421875 should work well.
     
  44. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Aaand v1.51 is on the Store right now. It's just a hotfix, but here's a changelog:

    - Fixed scene export error due to null materials in the scene*
    - Fixed the combination of Area Light, Light Mesh and a prefab in 2018.3**.
    - Fixed EditorOnly dynamic objects affecting light probes.


    (*yes, the NullRef was caused by some renderers not having all materials set)
    (**yes, this is when you got an empty renderer/filter added on the prefab)
     
    Mark_01, tntfoz and Lars-Steenhoff like this.
  45. Flow-Fire-Games

    Flow-Fire-Games

    Joined:
    Jun 11, 2015
    Posts:
    305
    Hey, does Bakery work on the HDRP? There is no info anywhere
    It does bake and cause no errors it seems but there is no result on either my terrain nor mesh

    (Bought it for SD Pipeline but we won't use that, so im trying it first time on HDRP now - Placed a directional light and tried bake as group and one just normal Render)

    Edit: Looks like I am getting lightmaps out of it, Just need to find out how to 'apply' them, if you have a pointer that would be great
     
    Last edited: Feb 4, 2019
  46. Tudor

    Tudor

    Joined:
    Sep 27, 2012
    Posts:
    150
    I had this issue where I was baking and no static objects were casting any shadows. The warning message now makes sense after you explained your rationale and pointed to the shadowmask docs, but you should consider appending the following to that warning message: "If more than 4 lights overlap on the same object, none of them will be baked to shadowmask"
     
    guycalledfrank likes this.
  47. Tudor

    Tudor

    Joined:
    Sep 27, 2012
    Posts:
    150
    Wait, I'm still having the "Light Point light (6) can't generate shadow mask (out of channels)." warning. O_O
    The point lights settings are:
    Unity Light:
    - Baked
    Bakery Point Light script:
    - Bitmask 0
    - Bake to indirect - unchecked
    - Shadowmask - checked
    Distance Shadowmask - unchecked.
    Bakery mode is set to Shadowmask, Dominant Direction

    I get that warning and no shadows are baked on any of my static geometry. Not even my directional light has baked shadows. If I set render mode Full Lighting (to bake everything) and turn off the unity lights components, then the shadows are baked.
     
  48. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Yes it does.

    Hmm I should update the store description....

    Was it Bakery Direct Light or regular Unity light?

    How many overlapping lights do you have at the moment?
     
  49. Tudor

    Tudor

    Joined:
    Sep 27, 2012
    Posts:
    150
    Up to 12 I suppose. It's a room with pointlights with IES profiles. And also the unity light components are set to baked but they behave like realtime lights: static meshes get both lit and shadowed dynamically. If I toggle the light game objects on and off I see there is an indirect lightmap, but no shadows or highlights.
     
  50. guycalledfrank

    guycalledfrank

    Joined:
    May 13, 2013
    Posts:
    1,671
    Are all of them shadowmasked? You need to get them down to 4, right?