-
https://forum.unity3d.com/threads/shadervariantcollection-best-practises.455447/
I just learned that some framerate spikes were being caused by shader variants being copied to the GPU only when they are used for the first time. The solution is to use Shader Variant Collections. The Unity docs are here: https://docs.unity3d.com/Manual/OptimizingShaderLoadTime.html I think this thread is part of the history.
In my case it was when calling SetActive() on a bunch of objects at the same time, I was getting a very long frame. Drilling down into the profiler, I saw that all the time in that long frame was spent in Shader.EditorLoadVariant. So after learning about Shader Variant Collections, I can do this to create a collection and preload it at boot, preventing the glitch runtime:
- Run the game to the point where all the required shaders are being used.
- Edit->Project Settings->Graphics
- Scroll to the Shader preloading section at the bottom
- Hit Clear <- I learned through trial and error you need to do this. I think Unity adds to the Currently Tracked count everytime it sees a shader. So when I was doing a test with a new blank project, imported Effects package, it was saying it was tracking 37 variants, even with nothing in the scene.
- Save to asset
- Add that asset to the Preloaded shaders array
That all works fine. My questions are:
- How is this managed in a production environment?
- Does anyone automate the creation of the Shader Variant Collections? Or do you have to manually go into each scene or level, clear the tracked, then create a new asset? I can see that getting very tedious and be error prone as new shaders and materials are added to a scene.
- What about subtle variations from one level to another? Rather than having a separate collection for each level/scene, they could be combined to create a collection that covers all cases.
- Do shader variants ever get unloaded from GPU? So that when used again, do they get recompiled? It appears not from my testing.
Please share if you have experience with this issue.
EyecyArt likes this. -
Nice find I hit a major performance problem that seems to be caused by this!
- A Detailed Look at Oculus Utilities for Unity
- about
- argos.vu
- contact us
- DevNotes – Archive – 3-15-17 Back
- Electric Tours Dinosaur Colorado
- Free Form Deformation
- Funding Research
- Gallery_One
- harmonic resonance
- Jim’esque Simulation Details
- PitchDeck
- Plasma Dynamics
- points of interest
- Raw Materials
- Rudolph Steiner
- TetraWaveForm
- Volo Meeting 12-11-2018
- VRARA
- WEBFLOW TEMPLATES
- development videos
- development notes
- argosSphere nav table
- devNotes 3-16-16 hex map seam
- devNotes 3-21-16 cursor & hex addressing
- devNotes 3-22-16 cursor & hex addressing
- devNotes 3-23-16 cursor design
- devNotes 3-24-16 cursor design
- devNotes 3-25-16 paint_track – paintList_track – movement recording
- devNotes 3-26-16 unoShader unlit – unity online conference
- devNotes 3-27-16 path recording – spline continuity and net spawning
- devNotes 3-28-16 networking – NetworkTransform – Player Objects – NetworkBehaviour
- devNotes 3-29-16 networking – Setting up a Multiplayer Project
- devNotes 3-30-16 networking – Parenting netCamera – netCamMove code
- devNotes 3-31-16 networking remote client
- devNotes 4-01-16 networking remote testing
- devNotes 4-02-16 networking netMove states – Cmd from client
- devNotes 4-03-16 networking – front end UI – prepare for testing
- devNotes 4-04-16 minApp – targeting & timed performance – as list
- devNotes 4-05-16 pcg utilities – quad spawning – tween – elastic
- devNotes 4-06-16 elastic slerp – quaternion tweens overshoot
- devNotes 4-07-16 slerpspergsburg unclamped
- devNotes 4-08-16 adb – code for ui netManager – 3rd geometry layer
- devNotes 4-09-16 circle lattice packing
- devNotes 4-10-16 goldberg polyhedra construction and addressing
- devNotes 4-11-2016 ico-sphere projection mapping – audio sample
- devNotes 4-12-16 Spherical Mapping – Audio Xurious
- devNotes 4-13-16 quaternion mesh tile matching
- devNotes 4-14-16 tile matching and scaling – multum in parvo
- devNotes 4-15-16 triangle grading – Voronoi cells and Delaunay triangulation
- devNotes 4-16-16 instancing tethered masses with radial repelling forces
- devNotes 4-17-16 triangle center quality – point in given cell
- devNotes 4-18-16 triangle center quality – projections to/from the uv plane
- devNotes 4-19-16 tcq – unit testing – 2D rotator
- devNotes 4-20-16 tcq – unit testing continued
- devNotes 4-21-16 tcq implementation – hex mapping and indexing
- devNotes 4-22-16 hex generation using subdivision
- devNotes 4-23-16 hex alignment and placement
- devNotes 4-24-16 build hexagons from veronoi positions
- devNotes 4-25-16 voronoi position list and data structure
- devNotes 4-26-16 fibonacci voronoi position list nb direction ordering
- devNotes 4-27-16 fibonacci nodes – triangulation and meshing
- devNotes 4-28-16 ArgosFibonacci.cs – quad cells – indexing and tweening
- devNotes 4-29-16 ArgosFibonacci.cs – iTween Callbacks
- devNotes 4-30-16 ArgosFibonacci.cs – iTween driven quaternion lerp
- devNotes 5-01-16 fibo Begin the Beguine
- devNotes 5-02-16 foriero – sequencer
- devNotes 5-03-16 midi specs, delegates and events
- devNotes 5-04-16 midi events – animations – procrustean
- devNotes 5-05-16 video project 1
- devNotes 5-07-16 icosahedral projection
- devNotes 5-07-16 phasor on icoplane
- devNotes 5-08-16 dotProduct gatherings
- devNotes 5-09-16 events, vizEls and spinerettes
- devNotes 5-10-16 patterns, particle system internals, crossfades
- devNotes 5-11-16 path follow, koreographer & theme
- devNotes 5-12-16 scrubber, event editing and composition
- devNotes 5-13-16 timing, events and tweening
- devNotes 5-14-16 navigation, particles and time tweens
- devNotes 5-15-16 particles, instantiation, fibRider and tweening
- devNotes 5-16-16 timed tweens, visual flow and particle dynamics
- devNotes 5-17-16 particle system positioning, world space and ps threading
- devNotes 5-18-16 detail, precision, focus, rigor in the vigor
- devNotes 5-19-16 three tier workflow – particle system foundry
- devNotes 5-20-16 lines, fills and fibonacci
- devNotes 5-21-16 code review, app design and sound painting
- devNotes 5-22-16 topologies, voronoi baking
- devNotes 5-23-16 sound visualization, particle system instances, pivot rotations
- devNotes 5-24-16 Argos Brush, List performance, subFrame tweens
- devNotes 5-25-2016 GPU instancing, audio echo, list processing
- devNotes 5-26-16 quad pool, object reuse, memory management
- devNotes 5-27-16 sound processing, alignment and generation
- devNotes 5-28-16 sound generation, audio processing, harmonizer
- devNotes 5-29-16 Mic input, processing and recording
- devNotes 5-30-16 onFilterRead, windowing and FFTs
- devNotes 5-31-16 fundamental lock, voice tracking, harmonizing
- devNotes 6-01-16 Vuforia 5.5 base, gearVR and performance evaluation
- devNotes 6-02-16 AR sample, ARM performance and debug
- devNotes 6-03-16 native vuforia app structure, dev UI, look and feel
- devNotes 6-04-16 orientation, navigation, gyro, compass raw vector
- devNotes 6-05-16 android UI, handheld AR, Argos VU
- devNotes 6-06-16 GearVR pipeline, micInput, audio compression
- devNotes 6-07-16 audio latency, GearVR ui and mobile testing
- devNotes 6-08-16 texture writing, echo buffer performance, multi tracking
- devNotes 6-09-16 GearVR UI, Argos Sphere Indexing, AR UI Interactions
- devNotes 6-10-16 CLJ AR/VR composition, refinement, integrity
- devNotes 6-11-16 GearVR interface, parameter adjustment settings file, movement
- devNotes 6-12-16 VR lab, sound and partSys interfaces
- devNotes 6-13-16 echo interface, argos meshDraft levels, vertical processing
- devNotes 6-14-16 echo editor ui, argos mesh draft, phi
- devNotes 6-15-16 Sound Plot, Circular buffer, Echo Processing
- devNotes 6-16-16 pipeline back to vr, movement, sphere cursor
- devNotes 6-17-16 GearVR UI work, user movement and navigation
- devNotes 6-18-16 UI GearVR, devPipeline, radial menus
- devNotes 6-19-16 navigation into sphere, HUD, user experience
- devNotes 6-20-16 modal menu cycling, scroll plate, tap tap tap
- devNotes 6-21-16 json, scriptable objects, trackable movement, timing and placement
- devNotes 6-22-16 cursor swap, tool selection, editor functions
- devNotes 6-23-16 AR-VR transitions, singleton manager, ui modal dialog
- devNotes 6-24-16 OVR cursor canvas interaction – transitions – triggers
- devNotes 6-25-16 ioc – amvcc or application-model-view-controller-component
- devNotes 6-26-16 fsm mvc ui Trygve Reenskaug
- devNotes 6-27-16 mvc structure ui interaction
- devNotes 6-28-16 cursor ui interaction – sphere gaze intersection – cursor state
- devNotes 6-29-16 navigation UI state cursor follow
- devNotes 6/30/16 GearVR testing navigation sphere cursor states
- devNotes 7-01-16 sphere interaction cursor states voronoi
- devNotes 7-02-16 navigation OVR Camera rig movement
- devNotes 7-03-16 ui interaction navigation message processing
- devNotes 7-04-16 accordion 3d button selector – movement – sound follow
- devNotes 7-05-16 utility ui, survey, tools, json
- devNotes 7-06-16 MVC hierarchy, persistent storage, reload preferences
- devNotes 7-07-16 galaxy 7 usb debug – performance – initial tests
- devNotes 7-08-16 adb debug workflow
- dj ar initial
- cursor work
- The EU
- phi five alpha omega
- art forms in nature
- packings
- rendering pipeline and shaders
- manuals
- music
- news
- tango devNotes