Release Notes#
History for extensions:
5.2.1#
Fixes#
Fix issues with dynamic waves if its resolution was overriden
Fix “Write to Depth Texture” not working with deferred URP
Fix “Write to Depth Texture” causing black screen and errors with deferred and Render Graph URP
5.2.0#
Breaking#
Parameter names for the query API have changed. This will cause a script compilation error if you have passed to these parameters by name
Changes#
Add query collision layers which can exclude Dynamic Waves from queries on a per-object basis
Add extra pass to Animated Waves at the end to add visual displacement
Add Displacement mode to Watertight Hull which removes water inside a hull while also affecting underwater and queries
Copy water depth into depth texture for post-processing effects. It can be disabled with Write to Depth Texture on the Water Renderer URP
Use terrain height in addition to water height to determine water scale to improve cases where detail would disappear with varied water level. Can be disabled with Sample Terrain Height For Scale
Add Allow Render Queue Sorting to Water Renderer to allow overriding the render queue for the water shader
Add scripting API for Query Events
Remove delay in scale changes when not needed (no water level). Scale smoothing can be forced on with Force Scale Change Smoothing on the Water Renderer
Update several previews to visualize negative values
Warn about exceeding texture resolution threshold which could freeze display
Geometry mode now starts with a default mesh
Extend clip surface draw distance
Update Dynamic Waves gravity multiplier tooltip to note that it can be a source of instability
Unify wave gravity
Add gravity override to the Water Renderer
Add “repair shaders” button to project settings
Validate None collision source For CollisionAreaVisualizer and QueryEvents
Validate if there is no camera set or camera tagged as MainCamera
Validate that the URP renderer is not the 2D renderer URP
Remove several internal methods from public query interfaces
Add Full Precision Displacement On Half Precision Platforms to Crest project settings to force full precision for displacement on platforms that support half precision
Add HDR rendering overrides to Water Renderer to force HDR rendering on or off (not related to HDR monitor output) BIRP
Revive Examples scene including adding/removing several new examples
Fixes#
Fix a Depth Probe tooltip
Fix warnings about inherited members (Awake) being hidden
Fix potential issues with sample scene lighting
Fix compilation errors when built-in packages are disabled
Fix seams at edge of LOD - especially affected the water level
Fix scale not being affected by the viewpoint when it is set
Fix None collision source being returning incorrect height
Fix “sample called multiple times” spamming the console when viewing the game view in edit mode
Fix validation only executing on first enter play mode
Fix FloatingObject not working with None collision source
Fix validation click and fix button size differences
Fix several cases where changes were not applied after using a validation fix button
Fix validation using wrong labels when referring to simulations
Fix Depth Probe potentially injecting depth when disabled
Fix potential NaNs when sampling water depth
Fix per-frame allocations for inputs
Fix potential flickering from sun when using third-party weather assets HDRP
Fix Water Level data being incorrect if resolution is different from Animated Waves
Fix underwater rendering issues with STPP when Dynamic Resolution is disabled on the camera (likely Unity bug) URP
Fix infinite loop with generating sample scene lighting
Fix Depth Probe format issues with Android by using more compatible texture format
Fix baked Depth Probe format issues on Android platform
Fix underwater rendering issues with MSAA URP
Fix exception in builds if no wave spectrum is set
Fix rendering issues (black) and exceptions when Physics.gravity is zero
Fix caustics not rendering if Cascaded Shadows was disabled for the current Graphics Settings tier BIRP
Fix Depth Probe precision issues for mobile platforms
Fix inputs (like waves) not working on mobile platforms
Fix several cases of water rendering artifacts on mobile platforms BIRP
Fix missing surface sparkles when underwater BIRP
Fix changing input mode not applying if component is inactive
Fix water not working if destroying and then instantiating in the same frame
Fix flow and depth query providers missing when respective simulations were disabled
Fix non-uniform foveated rendering (experimental) URP
Fix potential “Computing lightmaps is not available in play mode” warnings in sample scenes
Fix potential “Computing lightmaps from script is not available in iterative mode” warnings in sample scenes
Fix _Time uniform not being populated for inputs BIRP
Performance#
Cache expensive CPU calculations for input and chunk culling
Potentially reduce GPU memory usage
Documentation#
Redesign scripting documentation to more closely rememble Unity’s
Fix anything missing from scripting documentation due to inheritance
Improve scripting documentation summary and remarks
Hide several useless classes for end users
Fix incorrect Unity Asset Store link
Remove roadmap
Improve menu selection styling
5.1.3#
Fixes#
Fix potential NullReferenceException crash in builds
Fix foam and dynamic waves simulation thrashing after changing a texture setting
Fix hidden objects erroneously being destroyed when adding a Crest component in the editor
5.1.2#
Fixes#
Fix potential NullReferenceException crash in builds
Fix command buffer command leak BIRP
5.1.1#
Fixes#
Fix memory leak when changing Shape FFT properties
Fix hidden objects leaking when duplicating/pasting Crest objects
Fix exceptions when duplicating/pasting Crest objects
Fix flow shader compilation errors when enabling feathering
Fix exceptions when disabling a simulation
Fix shadow simulation validation showing even when it is disabled
5.1.0#
Changes#
Update minimum Unity version to 2022.3.39f1
Add scripting API
Move initialization to Start for scripting
Add motion vector support. Requires Unity 6 URP
Add Motion Vectors toggle to Water Renderer
Add additional light support to scattering for Forward+ URP
Add shadow mask support to scattering URP
Replace Maximum Height with Capture Range on Depth Probe which includes both the near and far clip planes
Add Fill Holes feature to Depth Probe to fill holes left by geometry clipped by the near plane
Represent near and far planes of Depth Probe as grid gizmos to improve visibility
Add water edge queries to get distance to water’s edge
Add Sample Depth Helper class to query distance to water’s edge
Add Signed option to Query Events for Distance to Water Surface
No longer apply Query Events curve to real units
Rename Query Events Normalize to Use Curve
Add Distance From Edge to Query Events to get the distance to the water’s edge
Enable Underwater Environmental Lighting in edit mode
Set default reflection mode to Above
Validate Floating Object and Controller have required components
Add option to Reflections to disable oblique matrix for effect compatibility
Add Planar Reflection Roughness to water matieral. This will alleviate spatially unstable reflections when at high altitudes
Add Time Slice Bounds Update Frame Count to configure time slicing of chunk bounds update
Add Geometry input mode
Hide Follow Horizontal Motion for Flow Input as it is not compatible
Hide Follow Horizontal Motion for Level Input as it is not compatible
Add Weight for inputs using Renderer mode
Add Blend options to Water Level Inputs using the Spline mode
Merge Shape FFT/Gerstner Alpha Source options into Blend
Rename Blend None to Off to be in line with Unity’s naming
Add Apply Transform Rotation XZ to “Flow/Fixed Direction” shader
Execute Watertight Hull in edit mode
Rename and invert Spectrum Fixed at Run-Time to Evaluate Spectrum at Run-Time Every Frame
Revive Sample Helper classes
Revive RayCastHelper class (formerly RayTraceHelper)
Remove Init method for sampling helpers and RayCastHelper
Skip per-frame validation in FixedUpdate for sampling helpers removing the need for allowMultipleCallsPerFrame
Validate multiple calls per frame for RayCastHelper similar to sampling helpers
Rename SampleHeightHelper to SampleCollisionHelper
Reduce the need to rebuild the entire system on Water Renderer property changes
Fixes#
Fix Depth Probe “outdated” validation not being raised for many cases
Fix changes to Depth Probe properties breaking cached data
Fix potential black screen in builds BIRP
Fix potential exceptions when rendering gizmos
Fix potential project settings corruption when using planar reflections or Depth Probe and an exception occurs
Fix Underwater Environmental Lighting overwriting lighting changes
Fix toggling Underwater Environmental Lighting not applying
Fix Watertight Hull Queue changes not being applied
Fix Watertight Hull missing gizmos when selected, and disable gizmos when not selected
Fix Water Body Clipped option not working after Default Clipping State change
Fix Water Body not changing size when gizmos are disabled
Fix some enum fields not showing tooltips
Fix reflections HDR and Stencil toggles not applying
Fix Water Level From Geometry material not working
Fix shader errors when generating an HLSL shader from the Shader Graph in a DXR project
Remove one frame latency when enabling components in edit mode
Fix potential culling issues in certain cases
Fix spatially unstable and blocky reflections at high elevations
Fix potential spike in simulation caused by Sphere Water Interaction when being enabled
Fix potential popping when using flow inputs
Fix potential unwanted movement of water level inputs
Fix exceptions when using the Debug GUI
Fix Shader Graph preview errors when adding a custom node to the water Shader Graph
Fix exceptions when Depth Probe is populated without an active Water Renderer
Optimizations#
Check if there are any listeners before sending querying for Query Events
Minor optimizations
Documentation#
Maintain sidebar scrollbar position on page reload/change
Add Integrations page
Fix broken PDF links to online history
5.0.4#
Fixes#
Fix exceptions when generating an HLSL shader from the water Shader Graph and changing the shader name, like when doing an advanced integration
Remove version helpbox from Water Renderer. The version can be found in the package manager
Update package dependency versions to match minimum Unity version
Documentation#
Update requirements
5.0.3#
Fixes#
Fix TIR not working
Fix PSSL shader compilation errors
Fix “missing internal data” and “invalid or unset setting” validation errors when changing ShapeFFT/Gerstner’s mode
Fix water surface being over culled by underwater culling if absorption had one or more components at maximum
Fix per-frame allocations when using planar reflections
Fix allocations when enabling/disabling components
5.0.2#
Changes#
Make DepthProbe.Populate public so On Demand is a valid choice
Improve some tooltips using information from documentation
Fixes#
Fix Depth Input Height Offset being overriden by Depth Probes in the scene
Fix Shape FFT/Gerstner popping if using Renderer or Spline mode with Blend set to Alpha
Documentation#
Quality pass to fix outdated or incorrect information
Document some missing use cases
Various other improvements
5.0.1#
Fixes#
Fix exceptions and missing UI when using Unity 6
5.0.0#
Important
This entire release is a major breaking change. Please see Migrating from Crest 4.
Changes#
Supports all render pipelines in one asset
Re-architecture as UPM packages. Files now live under the Packages directory
Add Crest to Project Settings. Currently only has variant stripping
Water Surface Shader#
Rewritten water shader with a unified shader model for all render pipelines
Use Shader Graph as a wrapper for water shader to improve platform and render pipeline compatibility
New light transport model
Model out-scattering in water volume
Subsurface scattering is now based on “pinch”
Add Absorption Color to water material which gets converted to Depth Fog Density to reduce authoring friction. This will be much easier to get desired results
Foam can now cast shadows HDRP URP
Add Anisotropy to water material to change directionality of scattering
Add Direct Term to water material to scale direct light contribution
Add Ambient Term to water material scale ambient light contribution
Jitter specular shadows slightly to give a softer edge and fill gaps HDRP URP
Add normal map toggle to water material HDRP
Make normal maps enabled by default and tweak properties so they provide far details
Change water material scale ranges so they are more consistent between them
Add Occlusion (U) for underwater to water material
Improve overall water normals HDRP
Reduce foam scroll speed
Limit Index of Refraction to underwater surface
Add Caustics Distortion Texture to water material BIRP URP
Add Occlusion to water material BIRP URP
Add Minimum Reflection Direction Y to water material BIRP URP
Improve normal texture quality slightly
Reduce distortions caused by flow by halving the flow period
Flow advects caustics
Inform users about Refraction Model considerations when not set to None HDRP
Reflections#
Add roughness to planar reflections
Improve planar reflections distortion
Add TIR support
Add HDRP support to Reflections HDRP
Rearrange Reflections UI and simplify properties
Add Maximum LOD Level, LOD Bias and Terrain Pixel Error quality settings override to planar reflections to improve performance
Underwater#
Underwater is now driven by the Water Renderer. By default it only executes for the scene and main camera but can execute for all cameras by disabling Underwater > Exclude Other Cameras
Environmental Lighting is now driven by the Water Renderer. It now supports multiple cameras
Add separate layer to Underwater to help with rendering into probes
Add optional dithering to underwater SSS which helps with banding artifacts
Underwater water chunk culling now works for multiple cameras including edit mode
Expose the underwater material and move most underwater properties to it
Add water surface “backface” material. This does not affect the backface but is the material the underwater copies properties from. It exposes more properties that can be changed independently from the water surface
LOD System#
Move all simulation settings to the WaterRenderer instead of separate files, except for Foam and Dyamic Waves. Appropriate settings from the latter like Simulation Frequency have been moved
Texture format for each simulation is now configurable
Add user friendly dropdown for choosing the simulation texture format based on precision or performance
Allow texture format precision to be linked between Animated Waves, Dynamic Waves and Water Level as they shared the same final texture
Scale extents with LOD count to ensure the water always reaches the horizon
Add Signed-Distance Shorelines simulation to Water Depth simulation
Unclamp foam simulation so foam can persist longer. This can be adjusted with the Maximum setting on the Foam Lod Setting
Add Shoreline Foam Priming for more dynamic shoreline foam generation
Input System#
Add Mode (eg Texture, Renderer etc) dropdown to inputs instead of relying on automatic detection
Only show fields that are relevant to the input’s mode
Add Texture input mode which uses compute shaders for better performance and simpler workflow
Add common Blend property to inputs
Add common Weight field to inputs
Add common Queue field for sorting to inputs
Add optional high quality texture filtering to Level Input to reduce staircase aliasing
Add Utility input shader
Add Override input shader
Remap texture in Flow/Add Flow Map from 0..1 to –1..1 instead of –0.5..0.5
Add HDRP Shader Graph support to inputs HDRP
Add option to override the shader pass for Renderer inputs
Add displacement correction to Albedo/Color shader
Add water chunk culling height reporting mechanism to Level Input. When both are disabled it will render to all LODs and before Dynamic Waves. Useful for scaling waves without affecting ripples and wakes
Add SDF option to Depth Probe. Currently unused but will be utilized in the near future
Add Maximum LOD Level and LOD Bias quality settings override to Depth Probe to improve depth fidelity. New behaviour can be overriden with LOD Bias property
Rearrange Depth Probe UI
Remove Sphere Water Interaction 1023 hard instances limit
Add the Watertight Hull component. It replaces the Convex Hull shader which is functionally equivalent with less setup friction
Add Quad primitive option to Clip Input
Waves#
Add feathering to Shape Waves/Add From Geometry shader
Add Wind Alignment to further align FFT waves to wind. This can be useful for shorelines and it can also be blended with Wind Direction to create new wave conditions
Add time looped waves to Shape FFT without requiring baked collisions
Made a slight change to Shape Gerstner waves output
Improve Shape FFT/Gerstner UI by reducing headings and better grouping properties
Add hints on ShapeFFT/Gerstner components if waves are limited by global wind speed
No longer validate whether there are any Shape FFT/Gerstner components in the scene
Expose fields for wave spectrum sliders
Watercraft#
Add Floating Object which unifies water physics models from Simple Floating Object, Boat Align Normal and Boat Probes
Make Floating Object easier to use by simplifying properties and improving tooltips
Add unified Controller script for controlling watercraft from boats to submarines
Add an extensible and modular system (Control) for controlling floating objects
User Interface#
Add tooltips to all shaders/materials
Redesigned UI for several components using custom foldouts
Some sliders can now be set outside of the minimum and maximum slider values by using the field
Some sliders are now stepped where they need to be set at specific intervals
Show default asset for embedded inspectors (eg show default spectrum on Shape FFT/Gerster)
Only allow editing of editable assets (eg built-in materials)
Improve feedback when an invalid dropdown selection is selected
Add New/Clone buttons to asset fields
Show material inspector for Water Body material field
Add minimum/maximum slider for certain fields
Show LOD data in preview panes on Water Renderer
Add data preview panes to Depth Probe
Add data preview panes to Shape FFT/Gerstner
Move components from Scripts/Crest to just Crest in the “Add Component” menu
Reorganize “Add Component”
Group draw calls in Frame Debugger
Miscellaneous#
Set default global wind speed to 10kph
Add Source property to Query Events to allow it to reuse queries already made by the Water Renderer
Add profile markers for main loop and mesh bounds updating
Prefix all textures with _Crest to find easier in the memory profiler
Scene view will now always be the viewpoint in edit mode and the game view will always be the viewpoint in play mode. Before it would be the last focused of the two which lead to confusion
Improve shader variant stripping
Namespace shader uniforms, structs and methods to reduce the possibility of conflicts
Only attach Debug GUI in play mode
Add time controls to Debug GUI
Increase Edit Mode Frame Rate maximum and allow for values above maximum range
Improve sample scene visuals
Rename Ocean Renderer to Water Renderer
Rename Ocean Depth Cache to Depth Probe
Rename Sample Height Events to Query Events
Rename Water Tile Prefab to Chunk Template on Water Renderer and add Chunk prefab
Rename Scale By Factor shader to just Scale
Rename Set Base Water Height Using Geometry shader to Water Level From Geometry
Rename Register x Input to x Input
Replace Ocean.mat and Ocean-Underwater.mat with Water.mat
Replace Min Scale and Max Scale with Scale Range on Water Renderer
Fixes#
Fix underwater culling being incorrect with Water Body material override
Floating Object Probes model respects whether it is in the water or not
Guard against divide by zero when using Floating Object Probes model
Fix caustics occlusion when using multiple cameras BIRP
Fix orphaned components when undoing adding a Depth Probe and “became dangling during an undo operation” warning
Fix Renderer mode draw delay on first frame
Fix one frame delay on startup and initialization problems with Depth Probe by handling depth injection into the LODs itself instead of creating a Depth Input
Fix several shader stripping issues
Fix foam appearing black when underwater HDRP
Fix LOD resolution affecting normal map scale
Fix LOD resolution affecting foam texture scale
Fix refraction edge fade not applying when view from underwater
Fix mismatch with underwater water chunk culling and Water Body material override
Fix volume fog depth not being correct in water shader when using Volume or Volume Fly-Through mode
Reduce execution order issues by driving components with the Water Renderer events
Add missing primary light color temperature to lighting calculations HDRP
Fix Underwater overwriting alpha channel further which prevented XR pass-through from working
Fix “Show Hidden Objects” not applying after being changed for Reflections
Fix potential exception with Query Events
Fix “spherical culling” errors when using planar reflections in Unity 6 URP
Fix no ambient lighting in sample scenes for Unity 6
Fix incorrect sun color/intensity when using HDRP physically based sky HDRP
Fix several input shaders being inconsistent across simulation frequencies
Fix default wave spectrum not activating on change
Alert users when using a shader which is incompatible with persistent simulations
Fix bright spots at horizon when MSAA enabled
Fix shadows not clearing when no caster is around URP
Fix incorrect ambient lighting response when using APVs HDRP
Fix incorrect lighting depending on linear lighting and color temperature settings
Fix incorrect wave attenuation when sea level is not zero
Fix depth probe capture issues when there is no geometry to capture
Silence several warnings
Removals#
Make most APIs internal for now. APIs will be made public in future releases
No longer define CREST_OCEAN global scripting symbol. Use Version Defines instead
Merge Underwater Renderer into Water Renderer
Merge Planar Reflections into Water Renderer
Remove Shape Gerstner Batched which has been superceded by the Shape FFT and Shape Gerstner
Remove Object Water Interaction which has been superceded by the Sphere Water Interaction
Remove Underwater Curtain and Underwater Meniscus which have been superceded by the Underwater Renderer. They may return as a separate asset focussed on mobile BIRP URP
Remove Underwater Post-Process which has been superceded by the Underwater Renderer HDRP
Remove Ocean Surface Alpha in favour of Albedo Lod or Unity Decal Projector
Remove Render Wire Frame BIRP
Remove Delta Time Dynamics property from Time Provider interface as it was unused by the system and unnecessary
Remove wave variance from Shape Gerstner which added more foam at a distance. This removal was necessary but variance may return in a different form
Remove Convex Hull shader which has been replaced by the Watertight Hull component
Remove Ripple Generator sample script which may return
Remove Dynamic Waves/Add Bump shader. It was only used by the Ripple Generator
Remove Simple Floating Object, Boat Align Normal, and Boat Probes scripts. Replace with Floating Object and Controller
Remove Shadow Override and Foam Override shader. Superceded by the Override shader
Remove Clip Surface Remove Area Texture shader. Superceded by Texture input mode
Remove input materials which have exposed properties as it is not advised to use and edit materials we provide
Remove Underwater Renderer > Shader API feature and associated shader/shadergraph files. This feature was complicated and intrusive and an improved version may return in the future
Remove old foam texture
Remove Rendering Layer Mask field. Set this using the Chunk Template instead HDRP
Remove Clip Input > Animated Waves Displacement Sampling Iterations as it did not have a significant impact but incurred a performance cost
Remove Search For Primary Light On Startup as it will always do this if Primary Light is not set
Remove support for CREST_VERIFYRANDOMWRITESUPPORT symbol
Remove obsolete ping-pong combine option
Water Surface Shader#
Remove Scatter Colour Grazing from water material. Scatter color is one color now BIRP URP
Remove Scatter Color Shadow from water material. This was overkill and is now handled internally
Remove Shallow Scattering from water material
Remove Fresnel Power from water material BIRP URP
Remove Refractive Index of Air from water material BIRP URP
Remove Planar Reflection Distortion Distance from water material BIRP URP
Remove Reflection Cubemap Override from water material BIRP
Remove Procedural Skybox from water material BIRP URP
Remove Add Directional Light from water material. Now handled by smoothness BIRP
Remove Foam Tint from water material BIRP URP
Remove Shoreline Foam Min Depth from water material BIRP URP
Remove Foam 3D Lighting from water material. Now handled by Foam Smoothness and Foam Normal Strength BIRP URP
Remove Foam Bubbles from water material
Remove Clip Below Terrain from water material BIRP URP
Remove Projection Support from water material. Shader now always uses the default value of “both” BIRP URP
Remove Debug Options from water material BIRP
Packages#
Move splines (Spline, Spline Point Data etc) and sample scene Lakes into a separate package
Move CPU queries (FFT Baker etc) into a separate package
Move portal feature into a separate package
Move Shifting Origin into a separate package
Move Whirlpool and sample scene into a separate package (TBA)
Move Shader Graph nodes into separate package (TBA)
Samples#
Remove Examples sample scene. It may return in a different form
Remove Pirate Cove sample scene URP
Remove Submarine sample scene HDRP
Remove Ferry sample prop
Remove unused sample scripts and shader
Optimizations#
Vary resolution per simulation (ie Foam, Shadows). This removes a memory bottleneck and makes higher resolutions achievable
Add input culling. Culling is done per LOD which will help greatly with input performance
Water Renderer now drives Crest components instead of using Unity’s events which are slower
Reduce Shape FFT texture memory usage by using temporary textures
Pack water level into Animated Waves alpha channel. Water level is often needed with displacement which benefits from packing as it reduces a sample in several locations including queries
Strip editor only parent class from builds. Reduces the inheritance hierarchy for components
Removed MSAA outline mitigations. URP no longer needed these mitigations and handles it correctly without the performance hit. Saves several texture samples in multiple places
Use sealed classes where possible
Global mode for Shape FFT/Gerstner now uses compute shaders which greatly reduces draw calls
Clip Input primitive mode now uses a compute shader reducing draw calls
Water Body clip option now uses compute shaders reducing draw calls
Depth Probe now uses compute shaders to inject depth into the LODs saving on draw calls
Depth Probe now handles depth injection into the LODs itself instead of creating a Depth Input
Move more editor-only codepaths into editor-only assembly
Replace obsolete SetInt calls with SetInteger which does not cast to float
Replace legacy Int material properties with Integer
Replace Compute Buffer usage with more optimal methods for the use case
Greatly reduce Crest specific variants. Total variants may increase for the water shader since switching to Shader Graph for BIRP and URP
Reduce amount of per-frame calls that set data on shaders
Optimize Watertight Hull shader (previously Clip/Convex Hull) performance
Minor optimizations across the rewrite of the system
Optimize motion vectors by reverting workaround to Unity bug now that it is fixed HDRP
Rewrite underwater to use RTHandles which are more efficient URP
Convert Sphere Water Interaction to compute shader. This will be a scalability decrease as previously it was using instancing
Default to using compute shader combine pass for Animated Waves which performs better
Eliminate ShapeFFT/Gerstner extra blend pass
Revert “revert FindObject(s)” (ie use those APIs again)
Eliminate Resources folder usage
Documentation#
Improve documentation
Add generated API documentation
Group sidebar headings
Remove superfluous information
Tip
You can view the Crest Ocean 4.20.1 history page to see earlier changes as this package continues on from that version.