Release Notes#

History for extensions:

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.