diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b4bd22..aa243c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.0] + +### Breaking changes + +- Upgraded to Unity 2019. Dropped support for Unity 2018. +- Removed `dynamicBatching` from Render Pipeline Asset. Configure dynamic batching in `Project Settings/Player/Others Settings` instead. + ## [0.0.1] ### Added diff --git a/README.md b/README.md index 3683cae..c3b7b67 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ ## Requirements -- Unity 2018 (Experimental API). Using Unity 2019 would require slight modification to the code. +- Unity 2019. - Shader Model 4.5 or newer. - Graphic API that supports geometry shader (this excludes Metal API). - Approximately 1GB of VRAM for highest voxel resolution setting. diff --git a/Runtime/SRP/VXGIRenderPipeline.cs b/Runtime/SRP/VXGIRenderPipeline.cs index 8b7ca92..32c1854 100644 --- a/Runtime/SRP/VXGIRenderPipeline.cs +++ b/Runtime/SRP/VXGIRenderPipeline.cs @@ -1,19 +1,11 @@ using System.Collections.ObjectModel; using UnityEngine; -using UnityEngine.Experimental.Rendering; using UnityEngine.Rendering; public class VXGIRenderPipeline : RenderPipeline { - public static bool isD3D11Supported { - get { return _D3D11DeviceType.Contains(SystemInfo.graphicsDeviceType); } - } + public static bool isD3D11Supported => _D3D11DeviceType.Contains(SystemInfo.graphicsDeviceType); - public DrawRendererFlags drawRendererFlags { - get { return _drawRendererFlags; } - } - public RendererConfiguration rendererConfiguration { - get { return _rendererConfiguration; } - } + public PerObjectData PerObjectData { get; } static readonly ReadOnlyCollection _D3D11DeviceType = new ReadOnlyCollection(new[] { GraphicsDeviceType.Direct3D11, @@ -23,10 +15,8 @@ public RendererConfiguration rendererConfiguration { }); CommandBuffer _command; - CullResults _cullResults; - DrawRendererFlags _drawRendererFlags; - FilterRenderersSettings _filterSettings; - RendererConfiguration _rendererConfiguration; + FilteringSettings _filteringSettings; + ScriptableCullingParameters _cullingParameters; VXGIRenderer _renderer; public static void TriggerCameraCallback(Camera camera, string message, Camera.CameraCallback callback) { @@ -37,63 +27,53 @@ public static void TriggerCameraCallback(Camera camera, string message, Camera.C public VXGIRenderPipeline(VXGIRenderPipelineAsset asset) { _renderer = new VXGIRenderer(this); _command = new CommandBuffer() { name = "VXGI.RenderPipeline" }; - _filterSettings = new FilterRenderersSettings(true) { renderQueueRange = RenderQueueRange.opaque }; - - _drawRendererFlags = DrawRendererFlags.None; - if (asset.dynamicBatching) _drawRendererFlags |= DrawRendererFlags.EnableDynamicBatching; - - _rendererConfiguration = RendererConfiguration.None; - - if (asset.environmentLighting) _rendererConfiguration |= RendererConfiguration.PerObjectLightProbe; - if (asset.environmentReflections) _rendererConfiguration |= RendererConfiguration.PerObjectReflectionProbes; + _filteringSettings = FilteringSettings.defaultValue; + PerObjectData = asset.perObjectData; Shader.globalRenderPipeline = "VXGI"; - GraphicsSettings.lightsUseLinearIntensity = true; GraphicsSettings.useScriptableRenderPipelineBatching = asset.SRPBatching; } - public override void Dispose() { - base.Dispose(); + protected override void Dispose(bool disposing) { + base.Dispose(disposing); _command.Dispose(); Shader.globalRenderPipeline = string.Empty; } - public override void Render(ScriptableRenderContext renderContext, Camera[] cameras) { - base.Render(renderContext, cameras); - BeginFrameRendering(cameras); + protected override void Render(ScriptableRenderContext renderContext, Camera[] cameras) { + var mainCamera = Camera.main; - foreach (var camera in cameras) { - BeginCameraRendering(camera); + BeginFrameRendering(renderContext, cameras); - var vxgi = camera.GetComponent(); + foreach (var camera in cameras) { + BeginCameraRendering(renderContext, camera); - if (vxgi != null && vxgi.isActiveAndEnabled) { + if (camera.TryGetComponent(out var vxgi) && vxgi.isActiveAndEnabled) { vxgi.Render(renderContext, _renderer); } else { - bool rendered = false; - #if UNITY_EDITOR if (camera.cameraType == CameraType.SceneView) { ScriptableRenderContext.EmitWorldGeometryForSceneView(camera); } - if (Camera.main != null) { - vxgi = Camera.main.GetComponent(); - - if (vxgi != null && vxgi.isActiveAndEnabled) { - vxgi.Render(renderContext, camera, _renderer); - rendered = true; - } + if (mainCamera != null && mainCamera.TryGetComponent(out vxgi) && vxgi.isActiveAndEnabled) { + vxgi.Render(renderContext, camera, _renderer); + } else { + RenderFallback(renderContext, camera); } +#else + RenderFallback(renderContext, camera); #endif - - if (!rendered) RenderFallback(renderContext, camera); } + + EndCameraRendering(renderContext, camera); } + EndFrameRendering(renderContext, cameras); + renderContext.Submit(); } @@ -106,20 +86,19 @@ void RenderFallback(ScriptableRenderContext renderContext, Camera camera) { TriggerCameraCallback(camera, "OnPreCull", Camera.onPreCull); - ScriptableCullingParameters cullingParams; - if (!CullResults.GetCullingParameters(camera, out cullingParams)) return; - CullResults.Cull(ref cullingParams, renderContext, ref _cullResults); + if (!camera.TryGetCullingParameters(out _cullingParameters)) return; - var drawSettings = new DrawRendererSettings(camera, new ShaderPassName("ForwardBase")); - drawSettings.SetShaderPassName(1, new ShaderPassName("PrepassBase")); - drawSettings.SetShaderPassName(2, new ShaderPassName("Always")); - drawSettings.SetShaderPassName(3, new ShaderPassName("Vertex")); - drawSettings.SetShaderPassName(4, new ShaderPassName("VertexLMRGBM")); - drawSettings.SetShaderPassName(5, new ShaderPassName("VertexLM")); - drawSettings.flags = _drawRendererFlags; + var cullingResults = renderContext.Cull(ref _cullingParameters); + var drawingSettings = new DrawingSettings { perObjectData = PerObjectData }; + drawingSettings.SetShaderPassName(0, ShaderTagIDs.Deferred); + drawingSettings.SetShaderPassName(1, ShaderTagIDs.PrepassBase); + drawingSettings.SetShaderPassName(2, ShaderTagIDs.Always); + drawingSettings.SetShaderPassName(3, ShaderTagIDs.Vertex); + drawingSettings.SetShaderPassName(4, ShaderTagIDs.VertexLMRGBM); + drawingSettings.SetShaderPassName(5, ShaderTagIDs.VertexLM); renderContext.SetupCameraProperties(camera); - renderContext.DrawRenderers(_cullResults.visibleRenderers, ref drawSettings, _filterSettings); + renderContext.DrawRenderers(cullingResults, ref drawingSettings, ref _filteringSettings); renderContext.DrawSkybox(camera); TriggerCameraCallback(camera, "OnPostRender", Camera.onPostRender); diff --git a/Runtime/SRP/VXGIRenderPipelineAsset.cs b/Runtime/SRP/VXGIRenderPipelineAsset.cs index f80c4c8..5457366 100644 --- a/Runtime/SRP/VXGIRenderPipelineAsset.cs +++ b/Runtime/SRP/VXGIRenderPipelineAsset.cs @@ -1,28 +1,14 @@ using UnityEngine; -using UnityEngine.Experimental.Rendering; +using UnityEngine.Rendering; [CreateAssetMenu(fileName = "VXGIRenderPipeline.asset", menuName = "Rendering/VXGI Render Pipeline Asset", order = 320)] public class VXGIRenderPipelineAsset : RenderPipelineAsset { - public bool dynamicBatching; public bool SRPBatching; + public PerObjectData perObjectData; - [Header("Lighting Settings")] - public bool environmentLighting = true; - public bool environmentReflections = true; + public override Material defaultMaterial => (Material)Resources.Load("VXGI/Material/Default"); + public override Material defaultParticleMaterial => (Material)Resources.Load("VXGI/Material/Default-Particle"); + public override Shader defaultShader => Shader.Find("VXGI/Standard"); - public override Material GetDefaultMaterial() { - return (Material)Resources.Load("VXGI/Material/Default"); - } - - public override Material GetDefaultParticleMaterial() { - return (Material)Resources.Load("VXGI/Material/Default-Particle"); - } - - public override Shader GetDefaultShader() { - return Shader.Find("VXGI/Standard"); - } - - protected override IRenderPipeline InternalCreatePipeline() { - return new VXGIRenderPipeline(this); - } + protected override RenderPipeline CreatePipeline() => new VXGIRenderPipeline(this); } diff --git a/Runtime/SRP/VXGIRenderer.cs b/Runtime/SRP/VXGIRenderer.cs index 5b3bdc6..832365a 100644 --- a/Runtime/SRP/VXGIRenderer.cs +++ b/Runtime/SRP/VXGIRenderer.cs @@ -1,36 +1,31 @@ using UnityEngine; -using UnityEngine.Experimental.Rendering; using UnityEngine.Rendering; using UnityEngine.Rendering.PostProcessing; public class VXGIRenderer : System.IDisposable { - public DrawRendererFlags drawRendererFlags { - get { return _renderPipeline.drawRendererFlags; } - } - public RendererConfiguration rendererConfiguration { - get { return _renderPipeline.rendererConfiguration; } - } - const string _sampleCameraEvent = "CameraEvent."; const string _samplePostProcessRender = "PostProcess.Render"; const string _samplePostProcessRenderOpaqueOnly = "PostProcess.Render.OpaqueOnly"; const string _sampleRenderLighting = "Render.Lighting"; + public VXGIRenderPipeline RenderPipeline { get; } + float[] _renderScale; CommandBuffer _command; CommandBuffer _eventCommand; - CullResults _cullResults; - FilterRenderersSettings _filterSettings; + CullingResults _cullingResults; + FilteringSettings _filteringSettings; LightingShader[] _lightingPasses; PostProcessRenderContext _postProcessRenderContext; RenderTargetBinding _gBufferBinding; - VXGIRenderPipeline _renderPipeline; + ScriptableCullingParameters _cullingParameters; public VXGIRenderer(VXGIRenderPipeline renderPipeline) { + RenderPipeline = renderPipeline; + _command = new CommandBuffer { name = "VXGI.Renderer" }; _eventCommand = new CommandBuffer(); - _filterSettings = new FilterRenderersSettings(true); - _renderPipeline = renderPipeline; + _filteringSettings = FilteringSettings.defaultValue; _gBufferBinding = new RenderTargetBinding( new RenderTargetIdentifier[] { ShaderIDs._CameraGBufferTexture0, ShaderIDs._CameraGBufferTexture1, ShaderIDs._CameraGBufferTexture2, ShaderIDs._CameraGBufferTexture3 }, @@ -57,9 +52,9 @@ public void Dispose() { } public void RenderDeferred(ScriptableRenderContext renderContext, Camera camera, VXGI vxgi) { - ScriptableCullingParameters cullingParams; - if (!CullResults.GetCullingParameters(camera, out cullingParams)) return; - CullResults.Cull(ref cullingParams, renderContext, ref _cullResults); + if (!camera.TryGetCullingParameters(out _cullingParameters)) return; + + _cullingResults = renderContext.Cull(ref _cullingParameters); renderContext.SetupCameraProperties(camera); @@ -119,6 +114,8 @@ public void RenderDeferred(ScriptableRenderContext renderContext, Camera camera, RenderTransparent(renderContext, camera); TriggerCameraEvent(renderContext, camera, CameraEvent.AfterForwardAlpha, vxgi); + renderContext.DrawGizmos(camera, GizmoSubset.PreImageEffects); + TriggerCameraEvent(renderContext, camera, CameraEvent.BeforeImageEffects, vxgi); RenderPostProcessing(renderContext, camera); _command.Blit(ShaderIDs.FrameBuffer, BuiltinRenderTextureType.CameraTarget); @@ -126,6 +123,8 @@ public void RenderDeferred(ScriptableRenderContext renderContext, Camera camera, _command.Clear(); TriggerCameraEvent(renderContext, camera, CameraEvent.AfterImageEffects, vxgi); + renderContext.DrawGizmos(camera, GizmoSubset.PostImageEffects); + TriggerCameraEvent(renderContext, camera, CameraEvent.AfterEverything, vxgi); if (depthNormalsNeeded) { @@ -161,14 +160,11 @@ void RenderCameraDepthNormalsTexture(ScriptableRenderContext renderContext, Came } void RenderGBuffers(ScriptableRenderContext renderContext, Camera camera) { - var drawSettings = new DrawRendererSettings(camera, new ShaderPassName("Deferred")); - drawSettings.flags = _renderPipeline.drawRendererFlags; - drawSettings.rendererConfiguration = _renderPipeline.rendererConfiguration; - drawSettings.sorting.flags = SortFlags.CommonOpaque; - - _filterSettings.renderQueueRange = RenderQueueRange.opaque; + var sortingSettings = new SortingSettings(camera) { criteria = SortingCriteria.CommonOpaque }; + var drawingSettings = new DrawingSettings(ShaderTagIDs.Deferred, sortingSettings) { perObjectData = RenderPipeline.PerObjectData }; - renderContext.DrawRenderers(_cullResults.visibleRenderers, ref drawSettings, _filterSettings); + _filteringSettings.renderQueueRange = RenderQueueRange.opaque; + renderContext.DrawRenderers(_cullingResults, ref drawingSettings, ref _filteringSettings); } void RenderLighting(ScriptableRenderContext renderContext, Camera camera, VXGI vxgi) { @@ -245,18 +241,15 @@ void RenderSkyBox(ScriptableRenderContext renderContext, Camera camera) { } void RenderTransparent(ScriptableRenderContext renderContext, Camera camera) { - var drawSettings = new DrawRendererSettings(camera, new ShaderPassName("ForwardBase")); - drawSettings.flags = _renderPipeline.drawRendererFlags; - drawSettings.rendererConfiguration = _renderPipeline.rendererConfiguration; - drawSettings.sorting.flags = SortFlags.CommonTransparent; - - _filterSettings.renderQueueRange = RenderQueueRange.transparent; - _command.SetRenderTarget(ShaderIDs.FrameBuffer, (RenderTargetIdentifier)ShaderIDs._CameraDepthTexture); renderContext.ExecuteCommandBuffer(_command); _command.Clear(); - renderContext.DrawRenderers(_cullResults.visibleRenderers, ref drawSettings, _filterSettings); + var sortingSettings = new SortingSettings(camera) { criteria = SortingCriteria.CommonTransparent }; + var drawingSettings = new DrawingSettings(ShaderTagIDs.ForwardBase, sortingSettings) { perObjectData = RenderPipeline.PerObjectData }; + + _filteringSettings.renderQueueRange = RenderQueueRange.transparent; + renderContext.DrawRenderers(_cullingResults, ref drawingSettings, ref _filteringSettings); } void TriggerCameraEvent(ScriptableRenderContext renderContext, Camera camera, CameraEvent cameraEvent, VXGI vxgi) { diff --git a/Runtime/ShaderStructs/LightSource.cs b/Runtime/ShaderStructs/LightSource.cs index b7e9e0d..16cd809 100644 --- a/Runtime/ShaderStructs/LightSource.cs +++ b/Runtime/ShaderStructs/LightSource.cs @@ -1,4 +1,5 @@ using UnityEngine; +using UnityEngine.Rendering; public struct LightSource { public const int size = (3 + 3 + 3 + 3 + 1 + 1 + 1 + 1) * 4; @@ -12,10 +13,10 @@ public struct LightSource { public float spotFactor; // 1 * 4 bytes public uint type; // 1 * 4 bytes - public LightSource(UnityEngine.Experimental.Rendering.VisibleLight light, Matrix4x4 worldToVoxel) { + public LightSource(VisibleLight light, Matrix4x4 worldToVoxel) { color = (Vector4)light.finalColor; - direction = light.localToWorld.GetColumn(2); - worldPosition = light.localToWorld.GetColumn(3); + direction = light.localToWorldMatrix.GetColumn(2); + worldPosition = light.localToWorldMatrix.GetColumn(3); voxelPosition = worldToVoxel * new Vector4(worldPosition.x, worldPosition.y, worldPosition.z, 1f); range = light.range; spotCos = 0f; diff --git a/Runtime/Stages/Mipmapper.cs b/Runtime/Stages/Mipmapper.cs index be24da4..8a0e657 100644 --- a/Runtime/Stages/Mipmapper.cs +++ b/Runtime/Stages/Mipmapper.cs @@ -1,7 +1,5 @@ -using System.Collections.ObjectModel; using UnityEngine; using UnityEngine.Rendering; -using UnityEngine.Experimental.Rendering; public class Mipmapper { public enum Mode { Box = 0, Gaussian3x3x3 = 1, Gaussian4x4x4 = 2 } diff --git a/Runtime/Stages/VoxelShader.cs b/Runtime/Stages/VoxelShader.cs index 8710524..1bed269 100644 --- a/Runtime/Stages/VoxelShader.cs +++ b/Runtime/Stages/VoxelShader.cs @@ -1,6 +1,5 @@ using UnityEngine; using UnityEngine.Rendering; -using UnityEngine.Experimental.Rendering; public class VoxelShader : System.IDisposable { public ComputeShader compute { diff --git a/Runtime/Stages/Voxelizer.cs b/Runtime/Stages/Voxelizer.cs index 2c41562..75dc396 100644 --- a/Runtime/Stages/Voxelizer.cs +++ b/Runtime/Stages/Voxelizer.cs @@ -1,7 +1,5 @@ -using System.Collections.Generic; -using UnityEngine; +using UnityEngine; using UnityEngine.Rendering; -using UnityEngine.Experimental.Rendering; public class Voxelizer : System.IDisposable { int _antiAliasing; @@ -9,11 +7,11 @@ public class Voxelizer : System.IDisposable { float _bound; Camera _camera; CommandBuffer _command; - CullResults _cullResults; - DrawRendererSettings _drawSettings; - FilterRenderersSettings _filterSettings; + DrawingSettings _drawingSettings; + FilteringSettings _filteringSettings; Rect _rect; RenderTextureDescriptor _cameraDescriptor; + ScriptableCullingParameters _cullingParameters; VXGI _vxgi; public Voxelizer(VXGI vxgi) { @@ -39,13 +37,13 @@ public void Dispose() { } public void Voxelize(ScriptableRenderContext renderContext, VXGIRenderer renderer) { - ScriptableCullingParameters cullingParams; - if (!CullResults.GetCullingParameters(_camera, out cullingParams)) return; - CullResults.Cull(ref cullingParams, renderContext, ref _cullResults); + if (!_camera.TryGetCullingParameters(out _cullingParameters)) return; + + var cullingResults = renderContext.Cull(ref _cullingParameters); _vxgi.lights.Clear(); - foreach (var light in _cullResults.visibleLights) { + foreach (var light in cullingResults.visibleLights) { if (VXGI.supportedLightTypes.Contains(light.lightType) && light.finalColor.maxColorComponent > 0f) { _vxgi.lights.Add(new LightSource(light, _vxgi.worldToVoxel)); } @@ -65,11 +63,10 @@ public void Voxelize(ScriptableRenderContext renderContext, VXGIRenderer rendere _command.SetGlobalMatrix(ShaderIDs.VoxelToProjection, GL.GetGPUProjectionMatrix(_camera.projectionMatrix, true) * _camera.worldToCameraMatrix * _vxgi.voxelToWorld); _command.SetRandomWriteTarget(1, _vxgi.voxelBuffer, false); - _drawSettings.flags = renderer.drawRendererFlags; - _drawSettings.rendererConfiguration = renderer.rendererConfiguration; + _drawingSettings.perObjectData = renderer.RenderPipeline.PerObjectData; renderContext.ExecuteCommandBuffer(_command); - renderContext.DrawRenderers(_cullResults.visibleRenderers, ref _drawSettings, _filterSettings); + renderContext.DrawRenderers(cullingResults, ref _drawingSettings, ref _filteringSettings); _command.Clear(); @@ -104,9 +101,9 @@ void CreateCameraDescriptor() { } void CreateCameraSettings() { - _drawSettings = new DrawRendererSettings(_camera, new ShaderPassName("Voxelization")); - _drawSettings.sorting.flags = SortFlags.OptimizeStateChanges; - _filterSettings = new FilterRenderersSettings(true) { renderQueueRange = RenderQueueRange.all }; + var sortingSettings = new SortingSettings(_camera) { criteria = SortingCriteria.OptimizeStateChanges }; + _drawingSettings = new DrawingSettings(ShaderTagIDs.Voxelization, sortingSettings); + _filteringSettings = new FilteringSettings(RenderQueueRange.all); } void ResizeCamera() { diff --git a/Runtime/Utilities/Parameterizer.cs b/Runtime/Utilities/Parameterizer.cs index 69a3fd7..f7c5df5 100644 --- a/Runtime/Utilities/Parameterizer.cs +++ b/Runtime/Utilities/Parameterizer.cs @@ -1,6 +1,5 @@ using UnityEngine; using UnityEngine.Rendering; -using UnityEngine.Experimental.Rendering; public class Parameterizer : System.IDisposable { int _kernelParameterize; diff --git a/Runtime/Utilities/ShaderIDs.cs b/Runtime/Utilities/ShaderIDs.cs index 8c98068..0842270 100644 --- a/Runtime/Utilities/ShaderIDs.cs +++ b/Runtime/Utilities/ShaderIDs.cs @@ -1,7 +1,7 @@ using System.Collections.ObjectModel; using UnityEngine; -static class ShaderIDs { +internal static class ShaderIDs { internal static readonly Collection Radiance = new Collection(new [] { Shader.PropertyToID("Radiance0"), Shader.PropertyToID("Radiance1"), diff --git a/Runtime/Utilities/ShaderTagIDs.cs b/Runtime/Utilities/ShaderTagIDs.cs new file mode 100755 index 0000000..f99b21b --- /dev/null +++ b/Runtime/Utilities/ShaderTagIDs.cs @@ -0,0 +1,13 @@ +using UnityEngine.Rendering; + +internal static class ShaderTagIDs +{ + internal static readonly ShaderTagId Always = new ShaderTagId("Always"); + internal static readonly ShaderTagId Deferred = new ShaderTagId("Deferred"); + internal static readonly ShaderTagId ForwardBase = new ShaderTagId("ForwardBase"); + internal static readonly ShaderTagId PrepassBase = new ShaderTagId("PrepassBase"); + internal static readonly ShaderTagId Vertex = new ShaderTagId("Vertex"); + internal static readonly ShaderTagId VertexLM = new ShaderTagId("VertexLM"); + internal static readonly ShaderTagId VertexLMRGBM = new ShaderTagId("VertexLMRGBM"); + internal static readonly ShaderTagId Voxelization = new ShaderTagId("Voxelization"); +} diff --git a/Runtime/Utilities/ShaderTagIDs.cs.meta b/Runtime/Utilities/ShaderTagIDs.cs.meta new file mode 100755 index 0000000..f6b808c --- /dev/null +++ b/Runtime/Utilities/ShaderTagIDs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70e1cc65c00aff0458f21a8f04c11804 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/VXGI.cs b/Runtime/VXGI.cs index d3021cd..869f0d0 100644 --- a/Runtime/VXGI.cs +++ b/Runtime/VXGI.cs @@ -2,7 +2,6 @@ using System.Collections.ObjectModel; using UnityEngine; using UnityEngine.Rendering; -using UnityEngine.Experimental.Rendering; [ExecuteAlways] [RequireComponent(typeof(Camera))] diff --git a/Shaders/Standard.shader b/Shaders/Standard.shader index 20f0c8d..4d15276 100644 --- a/Shaders/Standard.shader +++ b/Shaders/Standard.shader @@ -7,7 +7,7 @@ _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5 - _Glossiness("Smoothness", Range(0.0, 1.0)) = 0.0 + _Glossiness("Smoothness", Range(0.0, 1.0)) = 0.5 _GlossMapScale("Smoothness Scale", Range(0.0, 1.0)) = 1.0 [Enum(Metallic Alpha,0,Albedo Alpha,1)] _SmoothnessTextureChannel ("Smoothness texture channel", Float) = 0 @@ -18,7 +18,7 @@ [ToggleOff] _GlossyReflections("Glossy Reflections", Float) = 1.0 _BumpScale("Scale", Float) = 1.0 - _BumpMap("Normal Map", 2D) = "bump" {} + [Normal] _BumpMap("Normal Map", 2D) = "bump" {} _Parallax ("Height Scale", Range (0.005, 0.08)) = 0.02 _ParallaxMap ("Height Map", 2D) = "black" {} @@ -33,7 +33,7 @@ _DetailAlbedoMap("Detail Albedo x2", 2D) = "grey" {} _DetailNormalMapScale("Scale", Float) = 1.0 - _DetailNormalMap("Normal Map", 2D) = "bump" {} + [Normal] _DetailNormalMap("Normal Map", 2D) = "bump" {} [Enum(UV0,0,UV1,1)] _UVSec ("UV Set for secondary textures", Float) = 0 diff --git a/package.json b/package.json index b79de81..a9a2e09 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "com.looooong.srp.vxgi", - "version": "0.0.1", + "version": "0.1.0", "displayName": "Voxel-based Global Illumination", - "unity": "2018.1", + "unity": "2019.1", "dependencies": { "com.unity.postprocessing": "2.1.7" },