# Changelog All notable changes to this package will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [3.4.0-preview] ### Added - When you have enabled Gizmos, they now appear correctly in the Game view. - Added requiresDepthPrepass field to RenderingData struct to tell if the runtime platform requires a depth prepass to generate a camera depth texture. - The `RenderingData` struct now holds a reference to `CullResults`. - When __HDR__ is enabled in the Camera but disabled in the Asset, an information box in the Camera Inspector informs you about it. - When __MSAA__ is enabled in the Camera but disabled in the Asset, an information box in the Camera Inspector informs you about it. - Enabled instancing on the terrain shader. - Sorting of opaque objects now respects camera opaqueSortMode setting. - Sorting of opaque objects disables front-to-back sorting flag when camera settings allow that and the GPU has hidden surface removal. ### Changed - The `RenderingData` struct is now read-only. - `ScriptableRenderer`always perform a Clear before calling `IRendererSetup::Setup.` - `ScriptableRenderPass::Execute` no longer takes `CullResults` as input. Instead, use `RenderingData`as input, since that references `CullResults`. - `IRendererSetup_Setup` no longer takes `ScriptableRenderContext` and `CullResults` as input. ### Fixed - The Unlit shader now samples Global Illumination correctly. - The Inspector window for the Unlit shader now displays correctly. - Reduced GC pressure by removing several per-frame memory allocations. - The tooltip for the the camera __MSAA__ property now appears correctly. ## [3.3.0-preview] ### Added - Added callbacks to LWRP that can be attached to a camera (IBeforeCameraRender, IAfterDepthPrePass, IAfterOpaquePass, IAfterOpaquePostProcess, IAfterSkyboxPass, IAfterTransparentPass, IAfterRender) ###Changed - Clean up LWRP creation of render textures. If we are not going straight to screen ensure that we create both depth and color targets. - UNITY_DECLARE_FRAMEBUFFER_INPUT and UNITY_READ_FRAMEBUFFER_INPUT macros were added. They are necessary for reading transient attachments. - UNITY_MATRIX_I_VP is now defined. - Renamed LightweightForwardRenderer to ScriptableRenderer. - Moved all light constants to _LightBuffer CBUFFER. Now _PerCamera CBUFFER contains all other per camera constants. ### Fixed - Lightweight Unlit shader UI doesn't throw an error about missing receive shadow property anymore. ### Changed - Change real-time attenuation to inverse square. - Change attenuation for baked GI to inverse square, to match real-time attenuation. - Small optimization in light attenuation shader code. ## [3.2.0-preview] ### Changed - Receive Shadows property is now exposed in the material instead of in the renderer. - The UI for Lightweight asset has been updated with new categories. A more clean structure and foldouts has been added to keep things organized. ### Fixed - Shadow casters are now properly culled per cascade. (case 1059142) - Rendering no longer breaks when Android platform is selected in Build Settings. (case 1058812) - Scriptable passes no longer have missing material references. Now they access cached materials in the renderer.(case 1061353) - When you change a Shadow Cascade option in the Pipeline Asset, this no longer warns you that you've exceeded the array size for the _WorldToShadow property. - Terrain shader optimizations. ## [3.1.0-preview] ### Fixed - Fixed assert errors caused by multi spot lights - Fixed LWRP-DirectionalShadowConstantBuffer params setting ## [3.0.0-preview] ### Added - Added camera additional data component to control shadows, depth and color texture. - pipeline now uses XRSEttings.eyeTextureResolutionScale as renderScale when in XR. - New pass architecture. Allows for custom passes to be written and then used on a per camera basis in LWRP ### Changed - Shadow rendering has been optimized for the Mali Utgard architecture by removing indexing and avoiding divisions for orthographic projections. This reduces the frame time by 25% on the Overdraw benchmark. - Removed 7x7 tent filtering when using cascades. - Screenspace shadow resolve is now only done when rendering shadow cascades. - Updated the UI for the Lighweight pipeline asset. - Update assembly definitions to output assemblies that match Unity naming convention (Unity.*). ### Fixed - Post-processing now works with VR on PC. - PS4 compiler error - Fixed VR multiview rendering by forcing MSAA to be off. There's a current issue in engine that breaks MSAA and Texture2DArray. - Fixed UnityPerDraw CB layout - GLCore compute buffer compiler error - Occlusion strength not being applied on LW standard shaders - CopyDepth pass is being called even when a depth from prepass is available - GLES2 shader compiler error in IntegrationTests - Can't set RenderScale and ShadowDistance by script - VR Single Pass Instancing shadows - Fixed compilation errors on Nintendo Switch (limited XRSetting support). ## [2.0.0-preview] ### Added - Explicit render target load/store actions were added to improve tile utilization - Camera opaque color can be requested on the pipeline asset. It can be accessed in the shader by defining a _CameraOpaqueTexture. This can be used as an alternative to GrabPass. - Dynamic Batching can be enabled in the pipeline asset - Pipeline now strips unused or invalid variants and passes based on selected pipeline capabilities in the asset. This reduces build and memory consuption on target. - Shader stripping settings were added to pipeline asset ### Changed #### Pipeline - Pipeline code is now more modular and extensible. A ForwardRenderer class is initialized by the pipeline with RenderingData and it's responsible for enqueueing and executing passes. In the future pluggable renderers will be supported. - On mobile 1 directional light + up to 4 local lights (point or spot) are computed - On other platforms 1 directional light + up to 8 local lights are computed - Multiple shadow casting lights are supported. Currently only 1 directional + 4 spots light shadows. #### Shading Framework - Directional Lights are always considered a main light in shader. They have a fast shading path with no branching and no indexing. - GetMainLight() is provided in shader to initialize Light struct with main light shading data. - Directional lights have a dedicated shadowmap for performance reasons. Shadow coord always comes from interpolator. - MainLigthRealtimeShadowAttenuation(float4 shadowCoord) is provided to compute main light realtime shadows. - Spot and Point lights are always shaded in the light loop. Branching on uniform and indexing happens when shading them. - GetLight(half index, float3 positionWS) is provided in shader to initialize Light struct for spot and point lights. - Spot light shadows are baked into a single shadow atlas. - Shadow coord for spot lights is always computed on fragment. - Use LocalLightShadowAttenuation(int lightIndex, float3 positionWS) to comppute realtime shadows for spot lights. ### Fixed - Issue that was causing VR on Android to render black - Camera viewport issues - UWP build issues - Prevent nested camera rendering in the pipeline ## [1.1.4-preview] ### Added - Terrain and grass shaders ported - Updated materials and shader default albedo and specular color to midgrey. - Exposed _ScaledScreenParams to shader. It works the same as _ScreenParams but takes pipeline RenderScale into consideration - Performance Improvements in mobile ### Fixed - SRP Shader library issue that was causing all constants to be highp in mobile - shader error that prevented LWRP to build to UWP - shader compilation errors in Linux due to case sensitive includes - Rendering Texture flipping issue - Standard Particles shader cutout and blending modes - crash caused by using projectors - issue that was causing Shadow Strength to not be computed on mobile - Material Upgrader issue that caused editor to SoftLocks - GI in Unlit shader - Null reference in the Unlit material shader GUI ## [1.1.2-preview] ### Changed - Performance improvements in mobile ### Fixed - Shadows on GLES 2.0 - CPU performance regression in shadow rendering - Alpha clip shadow issues - Unmatched command buffer error message - Null reference exception caused by missing resource in LWRP - Issue that was causing Camera clear flags was being ignored in mobile ## [1.1.1-preview] ### Added - Added Cascade Split selection UI - Added SHADER_HINT_NICE_QUALITY. If user defines this to 1 in the shader Lightweight pipeline will favor quality even on mobile platforms. ### Changed - Shadowmap uses 16bit format instead of 32bit. - Small shader performance improvements ### Fixed - Subtractive Mode - Shadow Distance does not accept negative values anymore ## [0.1.24] ### Added - Added Light abstraction layer on lightweight shader library. - Added HDR global setting on pipeline asset. - Added Soft Particles settings on pipeline asset. - Ported particles shaders to SRP library ### Changed - HDR RT now uses what format is configured in Tier settings. - Refactored lightweight standard shaders and shader library to improve ease of use. - Optimized tile LOAD op on mobile. - Reduced GC pressure - Reduced shader variant count by ~56% by improving fog and lightmap keywords - Converted LW shader library files to use real/half when necessary. ### Fixed - Realtime shadows on OpenGL - Shader compiler errors in GLES 2.0 - Issue sorting issues when BeforeTransparent custom fx was enabled. - VR single pass rendering. - Viewport rendering issues when rendering to backbuffer. - Viewport rendering issues when rendering to with MSAA turned off. - Multi-camera rendering. ## [0.1.23] ### Added - UI Improvements (Rendering features not supported by LW are hidden) ### Changed - Shaders were ported to the new SRP shader library. - Constant Buffer refactor to use new Batcher - Shadow filtering and bias improved. - Pipeline now updates color constants in gamma when in Gamma colorspace. - Optimized ALU and CB usage on Shadows. - Reduced shader variant count by ~33% by improving shadow and light classification keywords - Default resources were removed from the pipeline asset. ### Fixed - Fixed shader include path when using SRP from package manager. - Fixed spot light attenuation to match Unity Built-in pipeline. - Fixed depth pre-pass clearing issue. ## [0.1.12] ### Added - Standard Unlit shader now has an option to sample GI. - Added Material Upgrader for stock Unity Mobile and Legacy Shaders. - UI improvements ### Changed - Realtime shadow filtering was improved. ### Fixed - Fixed an issue that was including unreferenced shaders in the build. - Fixed a null reference caused by Particle System component lights. ## [0.1.11] Initial Release.