Rendering and quality
Motion vectors
Choose camera-only or procedural motion for temporal effects.
Kiwi Grass provides a URP MotionVectors pass for temporal anti-aliasing, motion blur, and other effects that request the camera motion-vector texture. Standard quality uses MotionVectorGenerationMode.Camera and disables the grass material's explicit motion pass, allowing URP to reconstruct camera motion from depth without evaluating procedural grass twice. Enable Procedural Motion Vectors when wind and terrain deformation must contribute explicit object velocity; the Cinematic preset enables it through LOD2. Motion Vector Max LOD Tier selects the last tier that evaluates the procedural pass. Higher tiers and every shadow-only submission use camera motion, and their runtime materials disable the MotionVectors pass entirely. The procedural pass uses URP's CalcNdcMotionVectorFromCsPositions velocity contract across the validated URP 17.0.3 through 17.7.0 editor matrix.
deformation history
The current vertex uses the same deformation path as Forward, ShadowCaster, DepthOnly, and DepthNormalsOnly. Rejected density and geometry-transition vertices skip both deformation evaluations. Current and previous wind evaluations use paired renderer time snapshots, while the previous vertex also uses the preceding terrain world offset. Spatial wind phase and stable randomness use terrain-local blade positions, so translating a terrain does not scramble its wind pattern. This captures procedural simple wind, layered wind, gusts, and consecutive-frame terrain translation.
History advances once per Time.frameCount in Play mode and once per Time.renderedFrameCount in Edit mode, so multiple cameras in one frame do not overwrite the previous values. The first rendered frame, any non-consecutive rendered frame, and the first frame after a full, loaded, or dirty blade-data commit use current values for both samples to avoid an invalid velocity spike.
Current positions use URP's _NonJitteredViewProjMatrix, previous positions use _PrevViewProjMatrix, and URP's motion-vector helper applies the engine force-no-motion policy. When Procedural Motion Vectors is enabled, the renderer requests object motion through RenderParams; the active URP camera must still request motion vectors before the pipeline creates and renders the motion-vector target.
interaction history
Kiwi Grass retains the previous-frame stomp texture whenever interaction is active. Motion-vector evaluation samples current stomp state for current geometry and the retained texture for previous geometry at the same terrain-local blade position. New stamps, recovery, bend, and flatten changes therefore contribute correct temporal deformation without introducing a false offset when the terrain moves. The retained texture is reset with interaction resources and is used only when both camera/deformation history and stomp history are valid.
Still stuck?
Bring the renderer status with you.
Include the Kiwi Grass version, Unity and URP versions, operating system, graphics API, renderer status, Player log, and a minimal reproduction.