FAQ
beginner faqShader Control · Troubleshooting & FAQ
Is this asset compatible with Unity 6?
Yes. All Kronnect assets are fully compatible with Unity 6. The minimum supported version is Unity 2022.3 LTS, and this includes Unity 6 and any newer releases.
Is it safe to disable shader keywords?
Generally yes, but disabling a keyword that is actively used by a material can cause visual artifacts. Always use List Materials to check which materials depend on a keyword before disabling it. Shader Control automatically creates backups so you can use Restore at any time.
Does Shader Control work at runtime?
No. Shader Control is an editor-only tool. It modifies shader files and build settings at compile time. It has zero runtime overhead.
Can I modify Unity's built-in Standard shader?
You cannot modify its source code (it is hidden), but you can use the Build View to skip certain keywords from the build, or use Prune Keyword on materials that reference unused keywords from that shader.
What happens after a Unity or asset update?
Updating an asset may overwrite shader files, restoring disabled keywords. After updating, re-scan your project in Shader Control and re-apply any keyword changes. Build View exclusions are stored separately and persist across updates.
When using quick build with addressables, do you need to press the quick build button before both the addressables build and the regular build, or just once?
Press quick build just before any compilation occurs to speed it up. Quick build will gather data from addressables builds, but quick build itself doesn't affect addressables—it only affects the player build. You can perform a regular build after toggling exclusions.
What improvements were made to handle addressables builds in the latest version?
Quick build no longer clears the database; data generated by addressables builds is now added to it. A manual 'Clear' button was added to clear the shader control database when needed. Quick build no longer strips addressables builds but gathers info from them. Addressables shaders are refreshed when build view configuration changes to ensure recompilation. Users are notified if a shader from the Build View is included in the Always Include Shader list.
Why does the variant count displayed in the build view change after doing a player build compared to the addressables build?
The variant count display changes because shader-control merges keywords discovered during the player build with those from the addressables build. The final keywords list combines both sets (e.g., if addressables found [LIGHTMAP_ON, SHADOWS_SOFT] and player build found [LIGHTMAP_ON, SHADOWS_SOFT, FOG_EXP], the final list is all three). The display updates to reflect the complete merged keyword set, but this is the correct behavior and doesn't mean keywords are being overwritten—it's just showing the accurate total variant count.
How does Shader Control handle build-time keyword stripping, and can it be driven programmatically?
Shader Control hooks into the build pipeline via IPreprocessShaders (the ShaderDebugBuildProcessor class implements this interface). Use the Build View to mark keywords/shaders as excluded, and they get stripped at build time without modifying source files. For programmatic control, use ShaderConfiguration.SetKeywordExcluded(shaderName, keyword, true) and IsKeywordExcluded to manage the exclusion list from editor scripts, then let Shader Control's preprocessor implementation handle the actual stripping.
What is the correct workflow for Quick Build, and why does it take a long time?
Quick Build is a prep step only - it collects shader/keyword data without compiling variants (shaders appear pink, which is normal). The flow is: (1) Click Quick Build, (2) Do a normal build via File → Build Settings → Build. That first build is still full but skips shader compilation, so it's fast. After it completes, the Build View populates with all shaders. Then uncheck keywords you don't need and do a second normal build - that one should be significantly faster since excluded variants are skipped.
How do I disable a specific keyword from the project when using the Build View?
After running Quick Build, go to the Build View and find the keyword in the list. Click on the keyword row (or the arrow/foldout next to it) to expand it and see individual shaders that use it. Uncheck the checkboxes next to each shader to exclude that keyword from the build. Then do a normal build (not Quick Build) and Shader Control will apply the exclusions automatically without modifying any files.
How do I handle keyword removal for shaders in packages or read-only locations?
For package-based shaders in read-only locations (the Packages/ folder), you cannot edit the shader source directly. Use the Build View instead - run a Quick Build, then use Build View to exclude keywords or entire shaders from compilation without touching any files. This works regardless of where the shader source lives and strips excluded keywords at build time.
I have a question not covered here
Please visit the Support Center and use our AI Support Assistant to get answers. If the issue persists, submit a reproduction project so we can investigate further and help you.
Suggest an improvement
Help us improve this documentation page.