Shader Control · Troubleshooting & FAQ
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.
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.
No. Shader Control is an editor-only tool. It modifies shader files and build settings at compile time. It has zero runtime overhead.
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.
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.
Please visit the Kronnect Support and post your question. Our team will get back to you shortly.
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.
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.
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.
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.
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.
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.
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.
Help us improve this documentation page.