Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Shader Control - manages shader keywords and variants - helps reducing compilation time and build si

Discussion in 'Assets and Asset Store' started by Kronnect, Nov 22, 2016.

  1. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Hello everyone,

    Happy to announce a new handy tool called Shader Control.



    What it does is help you take control over keywords usage at project level from a convenient unified view in the Editor.

    - Has your project exceeded Unity shader keyword limit?
    - Does your project take ages generating the build?
    - Do you want to reduce the build size removing unnecessary shader variants?


    Those are the kind of situations where Shader Control can be very helpful.

    How does it work?

    Shader Control quickly scans your project and shows all shaders that use keywords and generate what Unity calls a shader variant. From this list, you can see what keywords can be disabled (or re-enabled) per shader and let Shader Control do the change for you. As you disable or enable keywords, Shader Control will tell you the global number of shader variants that will be generated by the compiler.

    It will also clean any material that uses disabled keywords so they do not count towards the imposed limit of 64 or 128 max keywords per project.

    Note that Shader Control operates at shader level, it can edit the shader itself, not only disable keywords on materials so it effectively prevent any unwanted shader variant from your build.



    Get it now on the Asset Store and take a look at your project now!
    https://www.assetstore.unity3d.com/#!/content/74817
     
    Last edited: Nov 22, 2016
    tigerleapgorge likes this.
  2. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    V1.2 now available with support for shader features. They will show up in the keywords list so can be disabled as well.
     
  3. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Hi there!

    V2 has been released. This update is a great improvement in many ways:

    - It will list any shader potentially included in a build, either those shaders found in Resources folder or referenced by materials. You can now check which materials are using what shaders from the list.
    - It can prune keywords in two ways: if the shader code is available, it can modify the shader automatically so Unity won't waste time compiling variants that won't be used. Yes, the keywords listed along the shaders (multi_compile or shader features) can be disabled or enabled again with a click.
    - Also any material using keywords not available in shaders will be cleaned. If the shader source is not available, you can choose which keywords will be pruned from your project with a single click.

    Thanks for using Shader Control!
     
  4. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Hey, yet another fantastic tool from Kronnect! Thanks for making this!

    I'm grappling with this error on Mac OpenGL:

    -------- GLSL link error: WARNING: Output of vertex shader 'vs_TEXCOORD5' not read by fragment shader
    WARNING: Output of vertex shader 'vs_TEXCOORD0' not read by fragment shader
    ERROR: Implementation limit of 16 active fragment shader samplers (e.g., maximum number of supported image units) exceeded, fragment shader uses 17 samplers

    I've used Shader Control to reduce the number of keywords to 212, but this still appears -- and I'm not sure what that "16" is referring to. Can Shader Control help me with this?

    thanks
    Dave
     
    Kronnect likes this.
  5. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Hi Dave,

    Thanks for the comments.

    On Mac OS X and OpenGL texture samplers in fragment shaders are limited to 16 - removing extra samplers can’t be done with Shader Control as it will probably break the shader or definitely change its behaviour/output.

    If this shader is created with some authoring tool, try removing some features or material layers from the tool itself. Or send me a copy of the offending shader by email and I’ll take a look into it for further recommendations.

    Regards.
     
  6. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Thanks for the prompt reply...but I don't even know which shaders are using up all the texture samplers. (I assume some in the project already were, and then I added some new shaders which pushed me over...but I'd probably prefer to delete some of the older ones than the new ones.)
     
  7. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    If you click the console error, doesn’t it describe which shader is or point to the shader file?
     
  8. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    This is the entire error in the console, so I guess it doesn't?

    -------- GLSL link error: WARNING: Output of vertex shader 'vs_TEXCOORD5' not read by fragment shader
    WARNING: Output of vertex shader 'vs_TEXCOORD0' not read by fragment shader
    ERROR: Implementation limit of 16 active fragment shader samplers (e.g., maximum number of supported image units) exceeded, fragment shader uses 17 samplers
     
  9. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    No, it doesn't, sorry. Perhaps the error is dumped to Editor.log while compiling the shader in a build of a scene that uses it.... try it. Otherwise you will need to manually remove temporarily group of shaders from the project and identify which group / shader is producing that error. Start with the shaders that use more keywords according to Shader Control, chances are some of them are the culprit. Make a backup copy of the project in any case before moving files out and inside the project as you can quickly mess things.
     
  10. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Okay thanks. I'll try that.

    And sorry for derailing your thread -- you can delete my posts here if you want.
     
  11. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    No problem. This is an issue that perhaps could be better identified in next releases of Shader Control. If you find the bad shader send it to me so I can add some new detection features to this asset.
     
  12. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    @gecko, windows and mac shaders should both aim to be <=16 samplers (bare in mind Unity standard shader uses a lot of 'hidden' ones ie for lighting etc), this is a general API limitation. It sounds either like you're still over the max keywords (which can prevent shaders compiling and cause weird errors like this) or you're using a shader that is badly made. Does it go away if you right click the shader folders and reimport?

    @Thrawn75 interesting asset. Bizarre Unity doesn't have it built in but that's your profit I guess :)
     
    Kronnect likes this.
  13. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Thanks @hippocoder .

    Shader Control can fill some gaps here identifying and sorting shaders by complexity and allowing you to quickly disable some keywords but even with this tool there are, as we all know, limitations to how shader variants are defined.

    For instance, you can define multiple permutations (multi_compile) of keywords but it would be great if some keywords combinations could be excluded from the mix. This is not possible right now in Unity unless you manually generate the desired combinations. Would this be an useful feature for Shader Control?

    Shader_feature pragma is incredibly slow as well during import. I guess the Editor has to examine existing materials looking for enabled keywords to generate the corresponding code.

    Also multi-instancing should be an opt-in feature in surface shaders. In Unity 5.6 *all* surface shaders get automatically the instancing variants including those that don’t need them. Yes, you could add the noinstancing pragma but again, you usually never touch shaders from others.This is another feature that could be added in a future update as well, sounds good?

    Cheers.
     
  14. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Shader Control 2.1 is now available - minor update but useful new sort and keyword count filters:

     
  15. ranaUK

    ranaUK

    Joined:
    Mar 1, 2017
    Posts:
    166
    Did I break it somehow - Actual Variants is showing wrong value. Using Unity 2017.1
     

    Attached Files:

  16. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    That's an estimation using the explicit keyword count which for some reason casts an overflow when printed on the console. Is it possible to have a copy of your project to check this? Thanks.
     
  17. ranaUK

    ranaUK

    Joined:
    Mar 1, 2017
    Posts:
    166
    Hi, I think it was related to "Wireframe Shader DirectX 11", and when I restored it, the problem went away. There are also some other payware shaders in the project right now for me to post it.
     
    Kronnect likes this.
  18. Emericanized

    Emericanized

    Joined:
    Apr 30, 2010
    Posts:
    23
    Hello!
    Does this tool treat any surface shader similarly to the Standard Shader? It showed a couple of keywords on one of my surface shaders(originally duplicated from Unity's "Mobile/Diffuse" shader.), which I wasn't expecting. After disabling them, the included variant count in the inspector increased from 12 to 51.

    In the original shader, I was making use of some #pragmas to try to strip out the fluff. I could not sort out why that many variants(12) were being used, so I decided to try out this tool!

    The documentation mentions pruning for the standard shader, but I don't see that option on surface shaders.

    Running Unity 2017.2.
     
  19. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    @Emericanized yes, Shader Control works with surface and vertex/fragment shaders. The variant count should never increase after disabling a shader keyword. Feel free to send me your shader by pm or email so I can advice.

    Shader Control works with the shader source code. But when the source code of the shader used by a material is not found, the "Prune" option still can clear the keywords of the material itself. This option is useful for shader features which are keywords that are only enabled when a material uses them in the scene.
     
  20. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Thanks for the guidance on the Volumetric Fog forum about pruning keywords. Now I've got it down to 245 keywords, according to the Shader Control inspector panel....but I am still getting the "Maximum number (256) of shader keywords exceeded," warning in the console. That error appears only twice now, indicating two shaders that won't be used, but it keeps appearing even as I pruned from 256 down to 245 now. Any idea what's going on?

    Shader Control says:
    Total shaders: 418 With Keywords 62
    Used Keywords: 245 of 303 (80%) Actual variants 1172 of 1857826 (0%)

    thanks!
    Dave
     
  21. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Make sure you also press "Clean All Materials" button. That will remove any reference to disabled keywords from material assets.

    If the count still exceeds the 256 limit, that could be some hidden or custom surface shader feature that's injecting additional keywords when shader loads/compiles. Shader Control can only handle keywords described in the shader themselves. Try reducing the keyword count a bit more.
     
  22. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    i'm down to 196 according to Shader Control, but still getting the 'exceeded' error -- very frustrating!
     
  23. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Hi gecko, I'm sending you an update that includes a new option to do a deep scan. It will also include shaders that could not be included in your build but that still can count towards the keyword limit.
     
  24. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Thanks -- but actually, after restarting Unity, those warnings are gone. But I'll grab that update and try it, since it sounds very information. Much appreciate the great support, as always!
     
    Kronnect likes this.
  25. cecarlsen

    cecarlsen

    Joined:
    Jun 30, 2006
    Posts:
    858
    Hi, I just bought your fantastic asset.

    I understand that Unity limits shader keyword count to 256. But I need a bit of help to understand how the keywords are counted by Unity. Are they counted per shader or per keyword naming? Could I reduce the global count by reusing the keyword naming between different shaders?
     
  26. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Thanks.

    Shader keywords are counted globally as words regardless which shaders use them.

    Code (CSharp):
    1. // Shader 1
    2. #pragma multi_compile COOL_KEYWORD
    3.  
    4. // Shader 2
    5. #pragma multi_compile COOL_KEYWORD
    That counts as 1 keyword.
     
    cecarlsen likes this.
  27. Kriszo91

    Kriszo91

    Joined:
    Mar 26, 2015
    Posts:
    181
    Hello!

    I would like to use this asset, but what if i make a misstake with the Prune Keywords on a materials, how can i re enable this keyword? as i think standard shaders and maybe speedtree built in shader are count in if a material use of them?
     
  28. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Yes, keywords used by builtin shaders are also counted.

    The "Prune Keyword" command removes a keyword on any existing material but only if that keyword has been disabled in the shader by Shader Control. That option helps cleaning the materials that can be referencing those keywords. Note that Shader Control does a backup copy of the shader and can restore the edited shader but not the pruned materials.

    A keyword on the material can be restored manually using scripting:

    Code (CSharp):
    1. Material mat;
    2. mat.EnableKeyword(keywordName);
    Always make a backup copy if unsure.
     
  29. Kriszo91

    Kriszo91

    Joined:
    Mar 26, 2015
    Posts:
    181
    Thank you, but how can you make a buckup from the built-ins? I have a very big project which i need to clean but, just a one wrong click and maybe i need a bigger work.
     
  30. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Clicking "Prune Keyword" will remove the keywords from all materials in your project that use that shader and keyword. There's no automatic backup here... if you're unsure of what the keyword does, make a backup first of the materials (not the shaders as this option only modifies materials), contact the author and/or ask over the forums..

    Just for the records: when the shader source code is not available (like in builtins), Shader Control shows the keywords found on the materials themselves. This allows to optimize keywords of type "feature" in the shader:

    So the whole point of showing material keywords is to allow you to effectively deactivate keywords defined with #pragma shader feature.

    For example, create one material that uses the Standard Shader with Normal map texture assigned shows as follows (notice the legend "2 keywords used by materials"):



    Click "List Materials":



    This is telling you that the material mat1 is using the Standard Shader and has two keywords enabled on the material itself (_EMISSION and _NORMALMAP).

    Those two keywords represent shader variants which Unity will only include in your build if some material is using them. If you're not using normal maps on standard shader, then click "Prune Keyword" next to _NORMALMAP. Same for _EMISSION.
     
  31. Kriszo91

    Kriszo91

    Joined:
    Mar 26, 2015
    Posts:
    181
    Thank you, i think i understand how things are going, i will prepare my project.
     
  32. cecarlsen

    cecarlsen

    Joined:
    Jun 30, 2006
    Posts:
    858
    In that case, the wording in Unity's error message is misguiding, not mentioning the third option of reusing keywords.

    "Maximum number (256) of shader keywords exceeded, keyword STEREO_NONE will be ignored.
    You will have to delete some shaders or make them use less keywords."

    I noticed in the Shader Control window that I have a total of 60 shared keyword, but that the Lit shader in the top of my list has 62 keywords. How is that possible? Also, Unity gives me the > 256 error at this point.

    It's HDRP Book of The Dead assets plus custom shaders.

    Thank you in advance
    Carl Emil

    ShaderKeywords.PNG
     
  33. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    No. Shader Control window says you have 60 shaders that use keywords and in total there're 670 keywords detected in the project.
     
    cecarlsen likes this.
  34. cecarlsen

    cecarlsen

    Joined:
    Jun 30, 2006
    Posts:
    858
    @Thrawn75 heads up. ShaderControl picks up comments.

    EDIT: It also picks up keywords that are inside passes that have been commented out with multi-line /* code */

    ShaderControlPicksUpComments.PNG ShaderControlPicksUpComments2.PNG
     
    Last edited: Oct 3, 2018
  35. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    @cecarlsen thanks, will be improved in next update.
     
    cecarlsen likes this.
  36. cecarlsen

    cecarlsen

    Joined:
    Jun 30, 2006
    Posts:
    858
    I'm in the process of reducing 603 keywords to 256. It would be lovely to see an overview of all keywords and how many shaders each of them is connected to. That way I could pick out the easy wins where a keyword is only used by one shader.

    @Thrawn75 is this something you have already considered?

    EDIT: I noticed that the 256 error went away once I dropped below "Total Keywords": 329 (without "Force Scan All Shaders" enabled). Do ShaderControl and Unity count shader keywords differently? Also, please describe in the docs what "Force Scan All Shaders" does.
     
    Last edited: Oct 3, 2018
  37. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Keywords are global - if one keyword is used by 3 shaders and you disable it, you will only save 1 slot from the 256.

    EDIT: a per keyword view can be interesting though. I'll try to add this in a future update.
     
  38. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    This tool is a lifesaver, thanks so much for making it!

    Question about the keywords under Standard Shader: There are 67 listed in my project, which seems like more than it was a week or two ago. And some of them seem like they're related to other shaders -- the Standard shader shouldn't have keywords like: Wetness, Snow, Topnoise, GlowEffect.... right? I have other shaders with those effects, and they have their own keywords, so why would these be listed under Standard as well. Any idea what's going on...or if it's safe to prune those?

    thanks!
    Dave
     
  39. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Yes.
     
  40. DrInternet

    DrInternet

    Joined:
    Apr 6, 2014
    Posts:
    106
    Hello,

    here's some feedback after few hours of testing SC.
    1. Inaccurate keyword count.
    SC only searches for keywords in files. It wouldn't take into consideration "hardcoded" keywords like INSTANCING_ON, SHADOWS_SOFT or even _SUNDISK_SIMPLE (because it's used by default resource). But Unity does. In my project Unity is reporting over 20 more keywords than SC. It's good to know before one start wondering "what the heck". If someone if interested here's a report from my project. #N/A in column H means that keyword from column E is found by Unity, but not by SC
    https://docs.google.com/spreadsheets/d/1j9vuX5Ld7xmN0OvuKIvhum6ySCNGOPCxe6mH1NuXA1Y/edit?usp=sharing

    2. Wrong shader classification
    All compiled (without source) shaders are classified as "Standard (specular setup)" no matter if they are really standard specular or regular standard or speedtree or anything else. That wouldn't be much problem but...

    3. Slow scrolling
    SC UI window works fine but only if there are few entries. When I try to browse through some compiled shader materials, the window is full of wrongly classified materials (about few hundreds of them) and scrolling lags terribly.

    4. To few filtering criteria
    I would also like to see some more filtering criteria in the future. I.e. searching through shader that has at most 2 keywords (as it's easy to determine if you can't maybe get rid of them).


    Also a question:
    are keywords case sensitive? I found some weird code while browsing. Like
    Code (csharp):
    1.  
    2.            #ifdef SoftParticles_ON
    3.                #if defined (SOFTPARTICLES_ON) || defined (_MOBILEDEPTH_ON)
    4.  
     
    Last edited: Nov 28, 2018
  41. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Hi,
    Thanks for all the feedback.

    1) Regarding inaccurate keyword count, Shader Control will take into account shaders located within a Resources folder OR any shader used by materials in your project. Internal Unity keywords like INSTANCING_ON won't be detected unless one of the materials in your project use it. Otherwise it cannot be ensured that the shader will be used in your build hence those keywords won't be added. Unfortunately there's no API to fetch the list of "Always Include Shaders" in Graphics Settings.

    2) I'll send you an update with a fix for point 2 which I've reproduced with compiled shaders.

    3) Probably the fix for point 2 will speed up the scrolling.

    4) There's already a Keyword Min slider when Sorting by Variants Count, Enabled Keyword count or Shader name.

    5) Yes, keywords are case sensitive.

    Regards.
     
  42. DrInternet

    DrInternet

    Joined:
    Apr 6, 2014
    Posts:
    106
    It's fine, it's not like I want to disable instancing or shadows anyway. I wrote it for future generation, which may just as me wonder why Unity still prints error while SC claims it's fine.

    Seems to be working. I appreciate the quick fix.

    Well... it did. Maybe even two times. But it's still very slow. Would it be much trouble to add the collapse triangle near to keyword that would hide materials?

    There is Min slider, but there is no Max slider. Not like it's an important feature, just something that came to my mind while using SC.

    Nevertheless it's good asset. And what's weird, it's one of a kind. Yes, there are some other opensource keyword tools, but not as convenient as SC. SC helped me to tidy up a bit this Augean stables which goes back to the Unity3 times. It's a bit pricey but I can recommend it.
     
    Kronnect likes this.
  43. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    I may have pruned a keyword from the Standard Shader that I shouldn't have -- so now how do I restore it?
     
  44. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Keywords can only be “pruned” from materials, not shaders - so you need to restore the affected material from the original asset. Materials are not backed up since they usually can be restored that way or keywords are set by their asset scripts.
     
  45. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Ah I see. Thanks for the quick reply!
     
  46. Jbs_GameZone

    Jbs_GameZone

    Joined:
    Dec 14, 2018
    Posts:
    118
    Hello,

    I need some advice or best practice recommendations regarding stripping shaders and reducing shaderlab runtime size, this may be the best place to ask.

    At first shaderlab took around 190MB at runtime. Using ShaderControl I've managed to strip down shaders (&variants) to the ones that I actually use in my game (6 shaders, exactly the nr of custom shader files I have in my project) a big thumbs up for ShaderControl with regards to this, helped a lot.

    However, there still is a big discrepancy in what Project Settings > Graphics > Shader Preloading > Currently Tracked displays. It shows 55 shaders (don't know from where it gets so many of them).
    If I save them and preload all of them (an recommendation to avoid potential hiccups from loading shaders during gameplay) then shaderlab takes 90Mb of space and the profiler indicates ~ 70 shaders loaded.
    If I don't preload anything than shaderlab takes 45Mb and the profiler shows 44 shaders loaded.

    My questions are :

    1) Why does unity track and load so many shaders while ShaderControl shows only a small portion of them (even with force scan all shaders ticked).
    2) How would you continue from here to strip them down further. Obviously I don't think I need 70 or 45 shaders to keep them in memory during runtime.

    Thanks,
    Jbs
     
  47. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Hi, thanks for using Shader Control and happy to know it has helped you stripping down some keywords.
    Now, regarding your questions:

    1) Shader Control, by default, only considers shader files that are within a Resources folder. If "Force Scan All Shaders" option is enabled, Shader Control will analyze any shader file in your project folder.
    However internal Unity shaders are not included in this analysis because their source code is not available (ie. the default procedural skybox shader) and cannot be modified so Shader Control would not be able to strip out keywords used by those shaders.

    2) Empty those shaders that you know you don't need in your app from the "Built-in Shader Settings" (set it to No Support) and from "Always Include Shaders" section.
    Also, under "Currently tracked: xxx shaders yyy total variants" there's a button "Save to asset...". Use it. It will create a ShaderVariantCollection asset including some of the internal shaders that Unity will include with your app.
    In addition to that, Unity always include a set of shaders and keywords by default which are required by the runtime to work (ie. the depth+normals texture generator) and others that are required by certain features (like the procedural skybox shader).

    Next version of Shader Control will include an informative new tab in the interface which will include a list of the total shaders included in your app during the last build. It will also allow you to force strip some additional shaders or keywords during the build stage which will give even more control.
     
  48. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Major BETA available. Shader Control 4 now shows every shader compiled by Unity in your project, including hidden/internal shaders providing a complete understanding of the keyword usage and allowing unprecedented optimization in build time.



    With Shader Control 4 you can:
    • List all shaders in your project (now including hidden shaders and hidden keywords used by Unity).
    • Disable any shader from the build process dramatically reducing the time you spend in build iterations.
    • Disable keywords from internal Unity shaders.
    Please note that internal/hidden shaders cannot be modified since their source code is not available hence excluded keywords for these shaders won't lower your keyword usage count but it will accelerate the build compilation process!

    In addition to these new features, Shader Control 4 allows you:
    • List all shaders with their source code in your project sorted and filtered by name, keyword or variant count.
    • Locate / open / remove / disable shader keywords directly from the source of the shader (Shader Control edits the shader file for you!).
    • Locate / select materials used by shaders. Prune / clean materials from unused keywords.
    Shader Control 4 will be a free update for existing customers.
     
    Last edited: Aug 29, 2019
  49. Kronnect

    Kronnect

    Joined:
    Nov 16, 2014
    Posts:
    2,893
    Hi everyone,

    Happy to announce general availability of Shader Control 4.



    This update includes an all new "Build View" which gives you control of every compiled shader or keywords, including hidden shaders.

    Ever wondered why your app took so much time to build? Are you using Post-Processing-Stack or any other uber-shader that uses lot of shader variants? Now you can easily know which one are consuming most of the build time and decide to exclude them completely or only certain features (ie. effects not desired).

    Check out Shader Control 4 on the Asset Store.
     
  50. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    4 does not show up , only the old one. Is this connected to it? I looked under your name and was unable to find, that one shows the old one. So is it just upgraded to it? if so, I would change the Logo to 4. :)