From da52c2b9572838048cab9b1a1a8303d7613b3ff2 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 6 May 2021 21:17:01 -0400 Subject: [PATCH 01/73] Initial commit of the marschner infrastructure (LUT/LTC, Analytic BSDF, ShaderGraph, etc.) --- .../Material/Hair/ShaderGraph/HairData.cs | 3 +- ...PropertyBlock.cs => HairPropertyBlocks.cs} | 21 ++ ...ock.cs.meta => HairPropertyBlocks.cs.meta} | 0 .../Hair/ShaderGraph/HairSubTarget.cs | 43 ++- .../Hair/ShaderGraph/ShaderPass.template.hlsl | 11 + .../ShaderPassDefine.template.hlsl | 1 + .../Material/ShaderGraph/HDBlockFields.cs | 8 + .../Editor/Material/ShaderGraph/HDTarget.cs | 1 + .../Runtime/Material/Hair/Hair.cs | 20 ++ .../Runtime/Material/Hair/Hair.cs.hlsl | 26 ++ .../Runtime/Material/Hair/Hair.hlsl | 15 ++ .../Material/Hair/HairPathTracing.hlsl | 56 ++++ .../Material/Hair/HairPathTracing.hlsl.meta | 7 + .../Hair/PreIntegratedAzimuthalScattering.cs | 71 +++++ .../PreIntegratedAzimuthalScattering.cs.hlsl | 13 + ...IntegratedAzimuthalScattering.cs.hlsl.meta | 7 + .../PreIntegratedAzimuthalScattering.cs.meta | 11 + .../PreIntegratedAzimuthalScattering.hlsl | 10 + ...PreIntegratedAzimuthalScattering.hlsl.meta | 7 + .../PreIntegratedAzimuthalScattering.shader | 58 ++++ ...eIntegratedAzimuthalScattering.shader.meta | 10 + .../LTCAreaLight/BRDF/BRDF_Marschner.cs | 26 ++ .../LTCAreaLight/BRDF/BRDF_Marschner.cs.meta | 11 + .../Material/LTCAreaLight/LTCAreaLight.cs | 4 + .../LTCAreaLight/LTCAreaLight.cs.hlsl | 9 +- .../HDRenderPipelineRuntimeResources.cs | 2 + .../RenderPipeline/HDStringConstants.cs | 1 + .../HDRenderPipelineRuntimeResources.asset | 253 ++++++------------ 28 files changed, 519 insertions(+), 186 deletions(-) rename com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/{HairAdvancedOptionsPropertyBlock.cs => HairPropertyBlocks.cs} (62%) rename com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/{HairAdvancedOptionsPropertyBlock.cs.meta => HairPropertyBlocks.cs.meta} (100%) create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl.meta create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl.meta create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.meta create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl.meta create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader.meta create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/BRDF/BRDF_Marschner.cs create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/BRDF/BRDF_Marschner.cs.meta diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs index 7e66d0c2f12..f66687c245f 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs @@ -8,7 +8,8 @@ class HairData : HDTargetData { public enum MaterialType { - KajiyaKay + KajiyaKay, + Marschner } [SerializeField] diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairAdvancedOptionsPropertyBlock.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs similarity index 62% rename from com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairAdvancedOptionsPropertyBlock.cs rename to com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 126c5e7bcc0..8f822953e93 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairAdvancedOptionsPropertyBlock.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -13,6 +13,27 @@ namespace UnityEditor.Rendering.HighDefinition.ShaderGraph { + class HairSurfaceOptionPropertyBlock : SurfaceOptionPropertyBlock + { + class Styles + { + public static GUIContent materialType = new GUIContent("Material Type", "TODO"); + } + + HairData hairData; + + public HairSurfaceOptionPropertyBlock(SurfaceOptionPropertyBlock.Features features, HairData hairData) : base(features) + => this.hairData = hairData; + + protected override void CreatePropertyGUI() + { + // TODO: Un-hide me when Marschner BSDF is available. + // AddProperty(Styles.materialType, () => hairData.materialType, (newValue) => hairData.materialType = newValue); + + base.CreatePropertyGUI(); + } + } + class HairAdvancedOptionsPropertyBlock : AdvancedOptionsPropertyBlock { class Styles diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairAdvancedOptionsPropertyBlock.cs.meta b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs.meta similarity index 100% rename from com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairAdvancedOptionsPropertyBlock.cs.meta rename to com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs.meta diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 872264269ff..52fe0478bd5 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -33,6 +33,8 @@ sealed partial class HairSubTarget : LightingSubTarget, ILegacyTarget, IRequires protected override string raytracingInclude => CoreIncludes.kHairRaytracing; protected override FieldDescriptor subShaderField => new FieldDescriptor(kSubShader, "Hair SubShader", ""); protected override bool requireSplitLighting => false; + protected override bool supportPathtracing => false; + protected override string pathtracingInclude => CoreIncludes.kHairPathtracing; HairData m_HairData; @@ -48,11 +50,12 @@ public HairData hairData set => m_HairData = value; } - public static FieldDescriptor KajiyaKay = new FieldDescriptor(kMaterial, "KajiyaKay", "_MATERIAL_FEATURE_HAIR_KAJIYA_KAY 1"); + public static FieldDescriptor KajiyaKay = new FieldDescriptor(kMaterial, "KajiyaKay", "_MATERIAL_FEATURE_HAIR_KAJIYA_KAY 1"); + public static FieldDescriptor Marschner = new FieldDescriptor(kMaterial, "Marschner", "_MATERIAL_FEATURE_HAIR_MARSCHNER 1"); public static FieldDescriptor RimTransmissionIntensity = new FieldDescriptor(string.Empty, "RimTransmissionIntensity", "_RIM_TRANSMISSION_INTENSITY 1"); - public static FieldDescriptor HairStrandDirection = new FieldDescriptor(string.Empty, "HairStrandDirection", "_HAIR_STRAND_DIRECTION 1"); - public static FieldDescriptor UseLightFacingNormal = new FieldDescriptor(string.Empty, "UseLightFacingNormal", "_USE_LIGHT_FACING_NORMAL 1"); - public static FieldDescriptor Transmittance = new FieldDescriptor(string.Empty, "Transmittance", "_TRANSMITTANCE 1"); + public static FieldDescriptor HairStrandDirection = new FieldDescriptor(string.Empty, "HairStrandDirection", "_HAIR_STRAND_DIRECTION 1"); + public static FieldDescriptor UseLightFacingNormal = new FieldDescriptor(string.Empty, "UseLightFacingNormal", "_USE_LIGHT_FACING_NORMAL 1"); + public static FieldDescriptor Transmittance = new FieldDescriptor(string.Empty, "Transmittance", "_TRANSMITTANCE 1"); public override void GetFields(ref TargetFieldContext context) { @@ -61,6 +64,7 @@ public override void GetFields(ref TargetFieldContext context) var descs = context.blocks.Select(x => x.descriptor); // Hair specific properties: context.AddField(KajiyaKay, hairData.materialType == HairData.MaterialType.KajiyaKay); + context.AddField(Marschner, hairData.materialType == HairData.MaterialType.Marschner); context.AddField(HairStrandDirection, descs.Contains(HDBlockFields.SurfaceDescription.HairStrandDirection) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.HairStrandDirection)); context.AddField(RimTransmissionIntensity, descs.Contains(HDBlockFields.SurfaceDescription.RimTransmissionIntensity) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.RimTransmissionIntensity)); context.AddField(UseLightFacingNormal, hairData.useLightFacingNormal); @@ -77,19 +81,32 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) base.GetActiveBlocks(ref context); // Hair specific blocks - context.AddBlock(HDBlockFields.SurfaceDescription.Transmittance); - context.AddBlock(HDBlockFields.SurfaceDescription.RimTransmissionIntensity); - context.AddBlock(HDBlockFields.SurfaceDescription.HairStrandDirection); - context.AddBlock(HDBlockFields.SurfaceDescription.SpecularTint); - context.AddBlock(HDBlockFields.SurfaceDescription.SpecularShift); - context.AddBlock(HDBlockFields.SurfaceDescription.SecondarySpecularTint); - context.AddBlock(HDBlockFields.SurfaceDescription.SecondarySmoothness); - context.AddBlock(HDBlockFields.SurfaceDescription.SecondarySpecularShift); + // TODO: Find common parameters between the two material types, if any. + if (hairData.materialType == HairData.MaterialType.KajiyaKay) + { + context.AddBlock(HDBlockFields.SurfaceDescription.Transmittance); + context.AddBlock(HDBlockFields.SurfaceDescription.RimTransmissionIntensity); + context.AddBlock(HDBlockFields.SurfaceDescription.HairStrandDirection); + context.AddBlock(HDBlockFields.SurfaceDescription.SpecularTint); + context.AddBlock(HDBlockFields.SurfaceDescription.SpecularShift); + context.AddBlock(HDBlockFields.SurfaceDescription.SecondarySpecularTint); + context.AddBlock(HDBlockFields.SurfaceDescription.SecondarySmoothness); + context.AddBlock(HDBlockFields.SurfaceDescription.SecondarySpecularShift); + } + else + { + context.AddBlock(HDBlockFields.SurfaceDescription.HairStrandDirection); + context.AddBlock(HDBlockFields.SurfaceDescription.LongitudinalRoughness); + context.AddBlock(HDBlockFields.SurfaceDescription.AzimuthalRoughness); + context.AddBlock(HDBlockFields.SurfaceDescription.PrimaryReflectionRoughness); + context.AddBlock(HDBlockFields.SurfaceDescription.RefractionIndex); + context.AddBlock(HDBlockFields.SurfaceDescription.CuticleAngle); + } } protected override void AddInspectorPropertyBlocks(SubTargetPropertiesGUI blockList) { - blockList.AddPropertyBlock(new SurfaceOptionPropertyBlock(SurfaceOptionPropertyBlock.Features.Lit)); + blockList.AddPropertyBlock(new HairSurfaceOptionPropertyBlock(SurfaceOptionPropertyBlock.Features.Lit, hairData)); blockList.AddPropertyBlock(new HairAdvancedOptionsPropertyBlock(hairData)); } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl index c3888a372d1..4078f8c6134 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl @@ -41,6 +41,13 @@ void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDes $SurfaceDescription.SecondarySpecularTint: surfaceData.secondarySpecularTint = surfaceDescription.SecondarySpecularTint; $SurfaceDescription.SecondarySpecularShift: surfaceData.secondarySpecularShift = surfaceDescription.SecondarySpecularShift; + // TODO: Adopt smoothness nomenclature + factorization? + $SurfaceDescription.LongitudinalRoughness: surfaceData.roughnessLongitudinal = surfaceDescription.LongitudinalRoughness; + $SurfaceDescription.AzimuthalRoughness: surfaceData.roughnessAzimuthal = surfaceDescription.AzimuthalRoughness; + $SurfaceDescription.PrimaryReflectionRoughness: surfaceData.roughnessPrimaryReflection = surfaceDescription.PrimaryReflectionRoughness; + $SurfaceDescription.RefractionIndex: surfaceData.ior = surfaceDescription.RefractionIndex; + $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; + // These static material feature allow compile time optimization surfaceData.materialFeatures = 0; @@ -49,6 +56,10 @@ void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDes surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_KAJIYA_KAY; #endif + #ifdef _MATERIAL_FEATURE_HAIR_MARSCHNER + surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER; + #endif + #ifdef _DOUBLESIDED_ON float3 doubleSidedConstants = _DoubleSidedConstants.xyz; #else diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl index 53aceb23cb3..d431d2bd034 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl @@ -1,4 +1,5 @@ $Material.KajiyaKay: #define _MATERIAL_FEATURE_HAIR_KAJIYA_KAY 1 +$Material.Marschner: #define _MATERIAL_FEATURE_HAIR_MARSCHNER 1 $UseLightFacingNormal: #define _USE_LIGHT_FACING_NORMAL 1 $AmbientOcclusion: #define _AMBIENT_OCCLUSION 1 $SpecularOcclusionFromAO: #define _SPECULAR_OCCLUSION_FROM_AO 1 diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index fccee5227c2..344aed52aaf 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -111,6 +111,14 @@ public struct SurfaceDescription new FloatControl(0.5f), ShaderStage.Fragment); public static BlockFieldDescriptor SecondarySpecularShift = new BlockFieldDescriptor(SurfaceDescription.name, "SecondarySpecularShift", "Secondary Specular Shift", "SURFACEDESCRIPTION_SECONDARYSPECULARSHIFT", new FloatControl(-0.1f), ShaderStage.Fragment); + public static BlockFieldDescriptor LongitudinalRoughness = new BlockFieldDescriptor(SurfaceDescription.name, "LongitudinalRoughness", "Longitudinal Roughness", "SURFACEDESCRIPTION_LONGITUDINALROUGHNESS", + new FloatControl(0.5f), ShaderStage.Fragment); + public static BlockFieldDescriptor AzimuthalRoughness = new BlockFieldDescriptor(SurfaceDescription.name, "AzimuthalRoughness", "Azimuthal Roughness", "SURFACEDESCRIPTION_AZIMUTHALROUGHNESS", + new FloatControl(0.5f), ShaderStage.Fragment); + public static BlockFieldDescriptor PrimaryReflectionRoughness = new BlockFieldDescriptor(SurfaceDescription.name, "PrimaryReflectionRoughness", "Primary Reflection Roughness", "SURFACEDESCRIPTION_PRIMARYREFLECTIONROUGHNESS", + new FloatControl(1f), ShaderStage.Fragment); + public static BlockFieldDescriptor CuticleAngle = new BlockFieldDescriptor(SurfaceDescription.name, "CuticleAngle", "Cuticle Angle", "SURFACEDESCRIPTION_CUTICLEANGLE", + new FloatControl(1.55f), ShaderStage.Fragment); // -------------------------------------------------- // StackLit diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs index 21c0d585e59..f307af3dba8 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs @@ -975,6 +975,7 @@ static class CoreIncludes public const string kEyeRaytracing = "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Eye/EyeRaytracing.hlsl"; public const string kStackLitRaytracing = "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/StackLit/StackLitRaytracing.hlsl"; public const string kHairRaytracing = "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairRaytracing.hlsl"; + public const string kHairPathtracing = "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl"; public const string kRaytracingLightLoop = "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl"; public const string kRaytracingCommon = "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingCommon.hlsl"; public const string kNormalBuffer = "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/NormalBuffer.hlsl"; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index b4be715b891..ce1712ce338 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -8,6 +8,7 @@ partial class Hair : RenderPipelineMaterial public enum MaterialFeatureFlags { HairKajiyaKay = 1 << 0, + HairMarschner = 1 << 1 }; //----------------------------------------------------------------------------- @@ -70,6 +71,18 @@ public struct SurfaceData [SurfaceDataAttributes("Secondary Specular Shift")] public float secondarySpecularShift; + + // Marschner + [SurfaceDataAttributes("Longitudinal Roughness")] + public float roughnessLongitudinal; + [SurfaceDataAttributes("Azimuthal Roughness")] + public float roughnessAzimuthal; + [SurfaceDataAttributes("Primary Reflection Roughness")] + public float roughnessPrimaryReflection; + [SurfaceDataAttributes("Refraction Index")] + public float ior; + [SurfaceDataAttributes("Cuticle Angle")] + public float cuticleAngle; }; //----------------------------------------------------------------------------- @@ -113,6 +126,9 @@ public struct BSDFData public float secondarySpecularExponent; public float specularShift; public float secondarySpecularShift; + + // Marschner + // TODO }; @@ -126,23 +142,27 @@ public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntim { PreIntegratedFGD.instance.Build(PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse); LTCAreaLight.instance.Build(); + PreIntegratedAzimuthalScattering.instance.Build(); } public override void Cleanup() { PreIntegratedFGD.instance.Cleanup(PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse); LTCAreaLight.instance.Cleanup(); + PreIntegratedAzimuthalScattering.instance.Cleanup(); } public override void RenderInit(CommandBuffer cmd) { PreIntegratedFGD.instance.RenderInit(PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse, cmd); + PreIntegratedAzimuthalScattering.instance.RenderInit(cmd); } public override void Bind(CommandBuffer cmd) { PreIntegratedFGD.instance.Bind(cmd, PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse); LTCAreaLight.instance.Bind(cmd); + PreIntegratedAzimuthalScattering.instance.Bind(cmd); } } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 829ec183f2d..42efbc513a3 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -8,6 +8,7 @@ // UnityEngine.Rendering.HighDefinition.Hair+MaterialFeatureFlags: static fields // #define MATERIALFEATUREFLAGS_HAIR_KAJIYA_KAY (1) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER (2) // // UnityEngine.Rendering.HighDefinition.Hair+SurfaceData: static fields @@ -29,6 +30,11 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_TINT (1414) #define DEBUGVIEW_HAIR_SURFACEDATA_SPECULAR_SHIFT (1415) #define DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_SHIFT (1416) +#define DEBUGVIEW_HAIR_SURFACEDATA_LONGITUDINAL_ROUGHNESS (1417) +#define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1418) +#define DEBUGVIEW_HAIR_SURFACEDATA_PRIMARY_REFLECTION_ROUGHNESS (1419) +#define DEBUGVIEW_HAIR_SURFACEDATA_REFRACTION_INDEX (1420) +#define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1421) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -74,6 +80,11 @@ struct SurfaceData float3 secondarySpecularTint; float specularShift; float secondarySpecularShift; + float roughnessLongitudinal; + float roughnessAzimuthal; + float roughnessPrimaryReflection; + float ior; + float cuticleAngle; }; // Generated from UnityEngine.Rendering.HighDefinition.Hair+BSDFData @@ -162,6 +173,21 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f case DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_SHIFT: result = surfacedata.secondarySpecularShift.xxx; break; + case DEBUGVIEW_HAIR_SURFACEDATA_LONGITUDINAL_ROUGHNESS: + result = surfacedata.roughnessLongitudinal.xxx; + break; + case DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS: + result = surfacedata.roughnessAzimuthal.xxx; + break; + case DEBUGVIEW_HAIR_SURFACEDATA_PRIMARY_REFLECTION_ROUGHNESS: + result = surfacedata.roughnessPrimaryReflection.xxx; + break; + case DEBUGVIEW_HAIR_SURFACEDATA_REFRACTION_INDEX: + result = surfacedata.ior.xxx; + break; + case DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE: + result = surfacedata.cuticleAngle.xxx; + break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index db799ef4e0e..7b67fe49a26 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -13,6 +13,7 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl" #define DEFAULT_HAIR_SPECULAR_VALUE 0.0465 // Hair is IOR 1.55 @@ -170,6 +171,12 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) bsdfData.anisotropy = 0.8; // For hair we fix the anisotropy } + // Marschner + if (HasFlag(surfaceData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) + { + // TODO + } + ApplyDebugToBSDFData(bsdfData); return bsdfData; @@ -447,6 +454,11 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD cbsdf.specT = scatterFresnel1 + bsdfData.rimTransmissionIntensity * scatterFresnel2; } + if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) + { + // TODO + } + return cbsdf; } @@ -741,6 +753,8 @@ IndirectLighting EvaluateBSDF_ScreenspaceRefraction(LightLoopContext lightLoopCo // EvaluateBSDF_Env // ---------------------------------------------------------------------------- +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Sampling/Sampling.hlsl" + // _preIntegratedFGD and _CubemapLD are unique for each BRDF IndirectLighting EvaluateBSDF_Env( LightLoopContext lightLoopContext, float3 V, PositionInputs posInput, @@ -768,6 +782,7 @@ IndirectLighting EvaluateBSDF_Env( LightLoopContext lightLoopContext, envLighting = preLightData.specularFGD * preLD.rgb; + // TODO: Marschner BSDF Env if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_KAJIYA_KAY)) { // We tint the HDRI with the secondary lob specular as it is more representatative of indirect lighting on hair. diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl new file mode 100644 index 00000000000..5d95fb23452 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl @@ -0,0 +1,56 @@ +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingIntersection.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingMaterial.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingBSDF.hlsl" + +// -------------------------------------------------------------------------------------- + +void ProcessBSDFData(PathIntersection pathIntersection, BuiltinData builtinData, inout BSDFData bsdfData) +{ + // TODO +} + +bool CreateMaterialData(PathIntersection pathIntersection, BuiltinData builtinData, BSDFData bsdfData, inout float3 shadingPosition, inout float theSample, out MaterialData mtlData) +{ + // Kajiya not supported. + if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_KAJIYA_KAY)) + return false; + + // Alter values in the material's bsdfData struct, to better suit path tracing + mtlData.bsdfData = bsdfData; + ProcessBSDFData(pathIntersection, builtinData, mtlData.bsdfData); + + mtlData.bsdfWeight = 0.0; + mtlData.V = -WorldRayDirection(); + + return true; +} + +void EvaluateMaterial(MaterialData mtlData, float3 sampleDir, out MaterialResult result) +{ + Init(result); + + // TODO +} + +bool SampleMaterial(MaterialData mtlData, float3 inputSample, out float3 sampleDir, out MaterialResult result) +{ + Init(result); + + // TODO + + return false; +} + +float AdjustPathRoughness(MaterialData mtlData, MaterialResult mtlResult, bool isSampleBelow, float pathRoughness) +{ + // TODO + + return pathRoughness; +} + +float3 ApplyAbsorption(MaterialData mtlData, SurfaceData surfaceData, float dist, bool isSampleBelow, float3 value) +{ + // TODO + + return value; +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl.meta new file mode 100644 index 00000000000..dbbc3a13262 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a2b7d0ce757396c48a20878a934de30c +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs new file mode 100644 index 00000000000..09242c24487 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs @@ -0,0 +1,71 @@ +using UnityEngine.Experimental.Rendering; + +namespace UnityEngine.Rendering.HighDefinition +{ + class PreIntegratedAzimuthalScattering + { + [GenerateHLSL] + public enum AzimuthalScatteringTexture + { + Resolution = 256 + } + + private static PreIntegratedAzimuthalScattering s_Instance; + + public static PreIntegratedAzimuthalScattering instance + { + get + { + if (s_Instance == null) + s_Instance = new PreIntegratedAzimuthalScattering(); + + return s_Instance; + } + } + + private bool m_IsInit = false; + + Material m_PreIntegratedAzimuthalScatteringMaterial = null; + RenderTexture m_PreIntegratedAzimuthalScatteringRT = null; + + PreIntegratedAzimuthalScattering() => m_IsInit = false; + + public void Build() + { + var res = (int)AzimuthalScatteringTexture.Resolution; + var format = GraphicsFormat.A2B10G10R10_UNormPack32; + + m_PreIntegratedAzimuthalScatteringMaterial = CoreUtils.CreateEngineMaterial(HDRenderPipelineGlobalSettings.instance.renderPipelineResources.shaders.preIntegratedAzimuthalScatteringPS); + m_PreIntegratedAzimuthalScatteringRT = new RenderTexture(res, res, 0, format); + m_PreIntegratedAzimuthalScatteringRT.hideFlags = HideFlags.HideAndDontSave; + m_PreIntegratedAzimuthalScatteringRT.filterMode = FilterMode.Bilinear; + m_PreIntegratedAzimuthalScatteringRT.wrapMode = TextureWrapMode.Clamp; + m_PreIntegratedAzimuthalScatteringRT.name = CoreUtils.GetRenderTargetAutoName(res, res, 1, format, "PreIntegratedAzimuthalScattering"); + m_PreIntegratedAzimuthalScatteringRT.Create(); + + m_IsInit = false; + } + + public void RenderInit(CommandBuffer cmd) + { + if (m_IsInit && m_PreIntegratedAzimuthalScatteringRT.IsCreated()) + return; + + // Execute the pre-integration. + CoreUtils.DrawFullScreen(cmd, m_PreIntegratedAzimuthalScatteringMaterial, new RenderTargetIdentifier(m_PreIntegratedAzimuthalScatteringRT)); + + m_IsInit = true; + } + + public void Cleanup() + { + CoreUtils.Destroy(m_PreIntegratedAzimuthalScatteringMaterial); + CoreUtils.Destroy(m_PreIntegratedAzimuthalScatteringRT); + } + + public void Bind(CommandBuffer cmd) + { + cmd.SetGlobalTexture(HDShaderIDs._PreIntegratedAzimuthalScattering, m_PreIntegratedAzimuthalScatteringRT); + } + } +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl new file mode 100644 index 00000000000..875ab982ea4 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl @@ -0,0 +1,13 @@ +// +// This file was automatically generated. Please don't edit by hand. Execute Editor command [ Edit > Rendering > Generate Shader Includes ] instead +// + +#ifndef PREINTEGRATEDAZIMUTHALSCATTERING_CS_HLSL +#define PREINTEGRATEDAZIMUTHALSCATTERING_CS_HLSL +// +// UnityEngine.Rendering.HighDefinition.PreIntegratedAzimuthalScattering+AzimuthalScatteringTexture: static fields +// +#define AZIMUTHALSCATTERINGTEXTURE_RESOLUTION (256) + + +#endif diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl.meta new file mode 100644 index 00000000000..c0b41d1d37a --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f339ab6f4b636854d80376c25d4ff68b +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.meta new file mode 100644 index 00000000000..d67ec037b41 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e5e6b4bc74f01443bb6b6b03ed421fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl new file mode 100644 index 00000000000..a0f7a3e2f1b --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl @@ -0,0 +1,10 @@ +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl" + +TEXTURE2D(_PreIntegratedAzimuthalScattering); + +// Returns the azimuthal scattering distribution term. +float GetPreIntegratedAzimuthalScattering(float beta, float theta, float phi) +{ + // TODO: Evaluate a gaussian with the sampled weights from the LUT and Phi. + return 0; +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl.meta new file mode 100644 index 00000000000..a301308f7d7 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7d4eb400dbae4984fa328855d31595a5 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader new file mode 100644 index 00000000000..fe1c48555e8 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader @@ -0,0 +1,58 @@ +Shader "Hidden/HDRP/PreIntegratedAzimuthalScattering" +{ + SubShader + { + Tags{ "RenderPipeline" = "HDRenderPipeline" } + Pass + { + ZTest Always Cull Off ZWrite Off + + HLSLPROGRAM + + #pragma editor_sync_compilation + + #pragma vertex Vert + #pragma fragment Frag + #pragma target 4.5 + #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch + #define PREFER_HALF 0 + + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl" + + struct Attributes + { + uint vertexID : SV_VertexID; + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float2 texCoord : TEXCOORD0; + }; + + Varyings Vert(Attributes input) + { + Varyings output; + + output.positionCS = GetFullScreenTriangleVertexPosition(input.vertexID); + output.texCoord = GetFullScreenTriangleTexCoord(input.vertexID); + + return output; + } + + float4 Frag(Varyings input) : SV_Target + { + // We want the LUT to contain the entire [0, 1] range, without losing half a texel at each side. + float2 coordLUT = RemapHalfTexelCoordTo01(input.texCoord, AZIMUTHALSCATTERINGTEXTURE_RESOLUTION); + + // TODO: Integrate the azimuthal scattering for all beta, theta, and phi. Then, fit a gaussian for each phi. + return float4(coordLUT, 0, 1); + } + + ENDHLSL + } + } + Fallback Off +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader.meta new file mode 100644 index 00000000000..46e52ba7ab5 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 26ad8e15a8a298e42bc4d11aff5f9c67 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/BRDF/BRDF_Marschner.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/BRDF/BRDF_Marschner.cs new file mode 100644 index 00000000000..a1f2ab62d3e --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/BRDF/BRDF_Marschner.cs @@ -0,0 +1,26 @@ +using System; +using UnityEngine.Rendering; + +namespace UnityEngine.Rendering.HighDefinition.LTC +{ + struct BRDF_Marschner : IBRDF + { + public double Eval(ref Vector3 _tsView, ref Vector3 _tsLight, float _alpha, out double _pdf) + { + // Uniform sampled over a sphere. + _pdf = 1f / (4f * Math.PI); + + return 0f; + } + + public void GetSamplingDirection(ref Vector3 _tsView, float _alpha, float _U1, float _U2, ref Vector3 _direction) + { + _direction = Vector3.up; + } + + public LTCLightingModel GetLightingModel() + { + return LTCLightingModel.Marschner; + } + } +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/BRDF/BRDF_Marschner.cs.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/BRDF/BRDF_Marschner.cs.meta new file mode 100644 index 00000000000..d59fce6781b --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/BRDF/BRDF_Marschner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3167230ca6e4dd141bcae8fd4cb8a207 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.cs index d6018b29ccb..f23e6640a76 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.cs @@ -17,6 +17,7 @@ public enum LTCLightingModel // Hair KajiyaKaySpecular, KajiyaKayDiffuse, + Marschner, // Other CookTorrance, @@ -45,6 +46,8 @@ internal static IBRDF GetBRDFInterface(LTCLightingModel model) return new BRDF_KajiyaKaySpecular(); case LTCLightingModel.KajiyaKayDiffuse: return new BRDF_KajiyaKayDiffuse(); + case LTCLightingModel.Marschner: + return new BRDF_Marschner(); case LTCLightingModel.CookTorrance: return new BRDF_CookTorrance(); @@ -125,6 +128,7 @@ public void Build() LoadLUT(m_LtcData, (int)LTCLightingModel.KajiyaKaySpecular, GraphicsFormat.R16G16B16A16_SFloat, s_LtcMatrixData_BRDF_KajiyaKaySpecular); LoadLUT(m_LtcData, (int)LTCLightingModel.KajiyaKayDiffuse, GraphicsFormat.R16G16B16A16_SFloat, s_LtcMatrixData_BRDF_KajiyaKayDiffuse); + // TODO: Generate the Marschner LCT Table LoadLUT(m_LtcData, (int)LTCLightingModel.CookTorrance, GraphicsFormat.R16G16B16A16_SFloat, s_LtcMatrixData_BRDF_CookTorrance); LoadLUT(m_LtcData, (int)LTCLightingModel.Ward, GraphicsFormat.R16G16B16A16_SFloat, s_LtcMatrixData_BRDF_Ward); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.cs.hlsl index 8debbda4b1c..ba26b296a8a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.cs.hlsl @@ -13,10 +13,11 @@ #define LTCLIGHTINGMODEL_FABRIC_LAMBERT (3) #define LTCLIGHTINGMODEL_KAJIYA_KAY_SPECULAR (4) #define LTCLIGHTINGMODEL_KAJIYA_KAY_DIFFUSE (5) -#define LTCLIGHTINGMODEL_COOK_TORRANCE (6) -#define LTCLIGHTINGMODEL_WARD (7) -#define LTCLIGHTINGMODEL_OREN_NAYAR (8) -#define LTCLIGHTINGMODEL_COUNT (9) +#define LTCLIGHTINGMODEL_MARSCHNER (6) +#define LTCLIGHTINGMODEL_COOK_TORRANCE (7) +#define LTCLIGHTINGMODEL_WARD (8) +#define LTCLIGHTINGMODEL_OREN_NAYAR (9) +#define LTCLIGHTINGMODEL_COUNT (10) #endif diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs index 2cbcf4c9f3e..2786bcc2e5e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs @@ -174,6 +174,8 @@ public sealed class ShaderResources public Shader preIntegratedFGD_WardPS; [Reload("Runtime/Material/AxF/PreIntegratedFGD_CookTorrance.shader")] public Shader preIntegratedFGD_CookTorrancePS; + [Reload("Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader")] + public Shader preIntegratedAzimuthalScatteringPS; // Utilities / Core [Reload("Runtime/Core/CoreResources/EncodeBC6H.compute")] diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs index c637cba7325..992d68514a2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs @@ -733,6 +733,7 @@ static class HDShaderIDs // Preintegrated texture name public static readonly int _PreIntegratedFGD_GGXDisneyDiffuse = Shader.PropertyToID("_PreIntegratedFGD_GGXDisneyDiffuse"); public static readonly int _PreIntegratedFGD_CharlieAndFabric = Shader.PropertyToID("_PreIntegratedFGD_CharlieAndFabric"); + public static readonly int _PreIntegratedAzimuthalScattering = Shader.PropertyToID("_PreIntegratedAzimuthalScattering"); public static readonly int _ExposureTexture = Shader.PropertyToID("_ExposureTexture"); public static readonly int _PrevExposureTexture = Shader.PropertyToID("_PrevExposureTexture"); diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset index 895ef81f295..9e140f6f9c8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset @@ -14,198 +14,128 @@ MonoBehaviour: m_EditorClassIdentifier: shaders: defaultPS: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} - debugDisplayLatlongPS: {fileID: 4800000, guid: c1d1d149a043a5349ba367da6c2051ba, - type: 3} - debugViewMaterialGBufferPS: {fileID: 4800000, guid: 439949ea1bfa91b4ba0d04269fcde33d, - type: 3} + debugDisplayLatlongPS: {fileID: 4800000, guid: c1d1d149a043a5349ba367da6c2051ba, type: 3} + debugViewMaterialGBufferPS: {fileID: 4800000, guid: 439949ea1bfa91b4ba0d04269fcde33d, type: 3} debugViewTilesPS: {fileID: 4800000, guid: c7c2bd17b06ceb4468e14081aaf1b96f, type: 3} debugFullScreenPS: {fileID: 4800000, guid: e874aca2df8300a488258738c31f85cf, type: 3} - debugColorPickerPS: {fileID: 4800000, guid: 8137b807709e178498f22ed710864bb0, - type: 3} + debugColorPickerPS: {fileID: 4800000, guid: 8137b807709e178498f22ed710864bb0, type: 3} debugExposurePS: {fileID: 4800000, guid: 0ef322534f047a34c96d29419d56d17a, type: 3} - debugLightVolumePS: {fileID: 4800000, guid: 8e706c0e71fcec34a8f5c9713e5e2943, - type: 3} - debugLightVolumeCS: {fileID: 7200000, guid: f5d5d21faef5cf445ac2c5d8ff9c4184, - type: 3} + debugLightVolumePS: {fileID: 4800000, guid: 8e706c0e71fcec34a8f5c9713e5e2943, type: 3} + debugLightVolumeCS: {fileID: 7200000, guid: f5d5d21faef5cf445ac2c5d8ff9c4184, type: 3} debugBlitQuad: {fileID: 4800000, guid: cf5ca5b6ef18b3f429ed707ee9ceac9f, type: 3} - debugViewVirtualTexturingBlit: {fileID: 4800000, guid: 55d195396b03b804eb78c92d468e3c8e, - type: 3} + debugViewVirtualTexturingBlit: {fileID: 4800000, guid: 55d195396b03b804eb78c92d468e3c8e, type: 3} materialError: {fileID: 4800000, guid: 79a966a5200a456188dec0d48d805614, type: 3} - probeVolumeDebugShader: {fileID: 4800000, guid: 3b21275fd12d65f49babb5286f040f2d, - type: 3} + probeVolumeDebugShader: {fileID: 4800000, guid: 3b21275fd12d65f49babb5286f040f2d, type: 3} deferredPS: {fileID: 4800000, guid: 00dd221e34a6ab349a1196b0f2fab693, type: 3} colorPyramidPS: {fileID: 4800000, guid: 2fcfb8d92f45e4549b3f0bad5d0654bf, type: 3} depthPyramidCS: {fileID: 7200000, guid: 64a553bb564274041906f78ffba955e4, type: 3} maxZCS: {fileID: 7200000, guid: e95abf8c7230c344595f41c4dd5ff517, type: 3} copyChannelCS: {fileID: 7200000, guid: a4d45eda75e8e474dbe24a31f741f3b4, type: 3} - screenSpaceReflectionsCS: {fileID: 7200000, guid: d1de9ac7d9016204da289affe9677942, - type: 3} + screenSpaceReflectionsCS: {fileID: 7200000, guid: d1de9ac7d9016204da289affe9677942, type: 3} applyDistortionPS: {fileID: 4800000, guid: 02ae56f4306413c4a96dcf005cde1971, type: 3} - clearDispatchIndirectCS: {fileID: 7200000, guid: fc1f553acb80a6446a32d33e403d0656, - type: 3} + clearDispatchIndirectCS: {fileID: 7200000, guid: fc1f553acb80a6446a32d33e403d0656, type: 3} clearLightListsCS: {fileID: 7200000, guid: 743eb3491795b9545955695d591195a1, type: 3} - buildDispatchIndirectCS: {fileID: 7200000, guid: 4eb1b418be7044c40bb5200496c50f14, - type: 3} + buildDispatchIndirectCS: {fileID: 7200000, guid: 4eb1b418be7044c40bb5200496c50f14, type: 3} buildScreenAABBCS: {fileID: 7200000, guid: 728dce960f8a9c44bbc3abb3b851d8f6, type: 3} - buildPerTileLightListCS: {fileID: 7200000, guid: 65af3444cbf4b3747a4dead7ee00cfee, - type: 3} - buildPerBigTileLightListCS: {fileID: 7200000, guid: 5ee1f9d6e09abe045b2f5e0b784b9072, - type: 3} - buildPerVoxelLightListCS: {fileID: 7200000, guid: 0bb1b7e0ddcd5c44baf3ddc7456eb196, - type: 3} - lightListClusterClearAtomicIndexCS: {fileID: 7200000, guid: 1e3472a94b14a334a93230bbc700d7b2, - type: 3} - buildMaterialFlagsCS: {fileID: 7200000, guid: fb3eda953cd6e634e877fb777be2cd08, - type: 3} + buildPerTileLightListCS: {fileID: 7200000, guid: 65af3444cbf4b3747a4dead7ee00cfee, type: 3} + buildPerBigTileLightListCS: {fileID: 7200000, guid: 5ee1f9d6e09abe045b2f5e0b784b9072, type: 3} + buildPerVoxelLightListCS: {fileID: 7200000, guid: 0bb1b7e0ddcd5c44baf3ddc7456eb196, type: 3} + lightListClusterClearAtomicIndexCS: {fileID: 7200000, guid: 1e3472a94b14a334a93230bbc700d7b2, type: 3} + buildMaterialFlagsCS: {fileID: 7200000, guid: fb3eda953cd6e634e877fb777be2cd08, type: 3} deferredCS: {fileID: 7200000, guid: 0b64f79746d2daf4198eaf6eab9af259, type: 3} contactShadowCS: {fileID: 7200000, guid: 3e6900e06dc185a4380af4dacb4db0a4, type: 3} - volumeVoxelizationCS: {fileID: 7200000, guid: c20b371db720da244b73830ec74a343a, - type: 3} - volumetricLightingCS: {fileID: 7200000, guid: b4901a10df2d1e24282725e9fbc77c97, - type: 3} - volumetricLightingFilteringCS: {fileID: 7200000, guid: ef9a910d0ec6ebb41ae3f5c7a69daf46, - type: 3} + volumeVoxelizationCS: {fileID: 7200000, guid: c20b371db720da244b73830ec74a343a, type: 3} + volumetricLightingCS: {fileID: 7200000, guid: b4901a10df2d1e24282725e9fbc77c97, type: 3} + volumetricLightingFilteringCS: {fileID: 7200000, guid: ef9a910d0ec6ebb41ae3f5c7a69daf46, type: 3} deferredTilePS: {fileID: 4800000, guid: dedaf4ea0d134ca4aad1d95a558c46e5, type: 3} - screenSpaceShadowPS: {fileID: 4800000, guid: bfa43a48695613b4ea19c58858ae1a61, - type: 3} - subsurfaceScatteringCS: {fileID: 7200000, guid: b06a7993621def248addd55d0fe931b1, - type: 3} + screenSpaceShadowPS: {fileID: 4800000, guid: bfa43a48695613b4ea19c58858ae1a61, type: 3} + subsurfaceScatteringCS: {fileID: 7200000, guid: b06a7993621def248addd55d0fe931b1, type: 3} combineLightingPS: {fileID: 4800000, guid: 2e37131331fbdca449b1a2bc47a639ca, type: 3} - debugLocalVolumetricFogAtlasPS: {fileID: 4800000, guid: 8371b763f09c7304889c22aa97ebdfd2, - type: 3} - cameraMotionVectorsPS: {fileID: 4800000, guid: 035941b63024d1943af48811c1db20d9, - type: 3} - clearStencilBufferPS: {fileID: 4800000, guid: 8ea49ef16606acd489439e676ab84040, - type: 3} - copyStencilBufferPS: {fileID: 4800000, guid: 3d1574f1cdfa0ce4995f9bc79ed7f8ec, - type: 3} + debugLocalVolumetricFogAtlasPS: {fileID: 4800000, guid: 8371b763f09c7304889c22aa97ebdfd2, type: 3} + cameraMotionVectorsPS: {fileID: 4800000, guid: 035941b63024d1943af48811c1db20d9, type: 3} + clearStencilBufferPS: {fileID: 4800000, guid: 8ea49ef16606acd489439e676ab84040, type: 3} + copyStencilBufferPS: {fileID: 4800000, guid: 3d1574f1cdfa0ce4995f9bc79ed7f8ec, type: 3} copyDepthBufferPS: {fileID: 4800000, guid: 42dfcc8fe803ece4096c58630689982f, type: 3} blitPS: {fileID: 4800000, guid: e22fc1942c664490980b8793dd4a163d, type: 3} - blitColorAndDepthPS: {fileID: 4800000, guid: b22ad378c678348729d3a3f981b9f270, - type: 3} + blitColorAndDepthPS: {fileID: 4800000, guid: b22ad378c678348729d3a3f981b9f270, type: 3} downsampleDepthPS: {fileID: 4800000, guid: 67d6171b0acc6554aad48c845ec7e67f, type: 3} - upsampleTransparentPS: {fileID: 4800000, guid: 2ad7ce40f0dbaf64dadef1f58d8524d3, - type: 3} + upsampleTransparentPS: {fileID: 4800000, guid: 2ad7ce40f0dbaf64dadef1f58d8524d3, type: 3} resolveStencilCS: {fileID: 7200000, guid: 65b89cac5f286b043a31bf8041776ee7, type: 3} blitCubemapPS: {fileID: 4800000, guid: d05913e251bed7a4992c921c62e1b647, type: 3} - buildProbabilityTablesCS: {fileID: 7200000, guid: b9f26cf340afe9145a699753531b2a4c, - type: 3} - computeGgxIblSampleDataCS: {fileID: 7200000, guid: 764a24bb47ef5ba4781d9ae82ca07445, - type: 3} + buildProbabilityTablesCS: {fileID: 7200000, guid: b9f26cf340afe9145a699753531b2a4c, type: 3} + computeGgxIblSampleDataCS: {fileID: 7200000, guid: 764a24bb47ef5ba4781d9ae82ca07445, type: 3} GGXConvolvePS: {fileID: 4800000, guid: 123ed592ad5c2494b8aed301fd609e7b, type: 3} charlieConvolvePS: {fileID: 4800000, guid: 5685fd17e71045e4ca9fefca38a7c177, type: 3} - opaqueAtmosphericScatteringPS: {fileID: 4800000, guid: 32f724728cf19904291226f239ec16f0, - type: 3} + opaqueAtmosphericScatteringPS: {fileID: 4800000, guid: 32f724728cf19904291226f239ec16f0, type: 3} hdriSkyPS: {fileID: 4800000, guid: 9bd32a6ece529fd4f9408b8d7e00c10d, type: 3} - integrateHdriSkyPS: {fileID: 4800000, guid: 48db2705cf2856d4e893eb30a6892d1b, - type: 3} + integrateHdriSkyPS: {fileID: 4800000, guid: 48db2705cf2856d4e893eb30a6892d1b, type: 3} skyboxCubemapPS: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} gradientSkyPS: {fileID: 4800000, guid: 2b5d4f1b26f03dc4a873b093e0c4adb1, type: 3} - ambientProbeConvolutionCS: {fileID: 7200000, guid: 6d048f7b1bd45e840b4e79ec92639fa8, - type: 3} - groundIrradiancePrecomputationCS: {fileID: 7200000, guid: eb6ae6f326207ee4d987a3e5adddf63a, - type: 3} - inScatteredRadiancePrecomputationCS: {fileID: 7200000, guid: 70c69d514688f8545855680760d77418, - type: 3} - physicallyBasedSkyPS: {fileID: 4800000, guid: a06934a4863e778498be65d8f865b7a4, - type: 3} - planarReflectionFilteringCS: {fileID: 7200000, guid: 9f3f8a01b8caaaa4595591dc96d43dd2, - type: 3} + ambientProbeConvolutionCS: {fileID: 7200000, guid: 6d048f7b1bd45e840b4e79ec92639fa8, type: 3} + groundIrradiancePrecomputationCS: {fileID: 7200000, guid: eb6ae6f326207ee4d987a3e5adddf63a, type: 3} + inScatteredRadiancePrecomputationCS: {fileID: 7200000, guid: 70c69d514688f8545855680760d77418, type: 3} + physicallyBasedSkyPS: {fileID: 4800000, guid: a06934a4863e778498be65d8f865b7a4, type: 3} + planarReflectionFilteringCS: {fileID: 7200000, guid: 9f3f8a01b8caaaa4595591dc96d43dd2, type: 3} cloudLayerPS: {fileID: 4800000, guid: 001a47fa123e95a4bba13ecb0442d944, type: 3} - bakeCloudTextureCS: {fileID: 7200000, guid: 09a7f6850ee9fb4439e5ebd632127da5, - type: 3} - bakeCloudShadowsCS: {fileID: 7200000, guid: 3e7317e0800c066448ee07a3e47f102b, - type: 3} - volumetricCloudsCS: {fileID: 7200000, guid: f911a8577fa9a4546a6b255bcf888baf, - type: 3} - volumetricCloudMapGeneratorCS: {fileID: 7200000, guid: 6b22771f0aa98744cb09f455a5a818cb, - type: 3} - preIntegratedFGD_GGXDisneyDiffusePS: {fileID: 4800000, guid: 123f13d52852ef547b2962de4bd9eaad, - type: 3} - preIntegratedFGD_CharlieFabricLambertPS: {fileID: 4800000, guid: 3b3bf235775cf8b4baae7f3306787ab0, - type: 3} - preIntegratedFGD_WardPS: {fileID: 4800000, guid: d279c46a545b0af4f9f0c4fa82cd489e, - type: 3} - preIntegratedFGD_CookTorrancePS: {fileID: 4800000, guid: a6402c19b020b4a4fb7073aaa2e26aba, - type: 3} + bakeCloudTextureCS: {fileID: 7200000, guid: 09a7f6850ee9fb4439e5ebd632127da5, type: 3} + bakeCloudShadowsCS: {fileID: 7200000, guid: 3e7317e0800c066448ee07a3e47f102b, type: 3} + volumetricCloudsCS: {fileID: 7200000, guid: f911a8577fa9a4546a6b255bcf888baf, type: 3} + volumetricCloudMapGeneratorCS: {fileID: 7200000, guid: 6b22771f0aa98744cb09f455a5a818cb, type: 3} + preIntegratedFGD_GGXDisneyDiffusePS: {fileID: 4800000, guid: 123f13d52852ef547b2962de4bd9eaad, type: 3} + preIntegratedFGD_CharlieFabricLambertPS: {fileID: 4800000, guid: 3b3bf235775cf8b4baae7f3306787ab0, type: 3} + preIntegratedFGD_WardPS: {fileID: 4800000, guid: d279c46a545b0af4f9f0c4fa82cd489e, type: 3} + preIntegratedFGD_CookTorrancePS: {fileID: 4800000, guid: a6402c19b020b4a4fb7073aaa2e26aba, type: 3} + preIntegratedAzimuthalScatteringPS: {fileID: 4800000, guid: 26ad8e15a8a298e42bc4d11aff5f9c67, type: 3} encodeBC6HCS: {fileID: 7200000, guid: aa922d239de60304f964e24488559eeb, type: 3} cubeToPanoPS: {fileID: 4800000, guid: 595434cc3b6405246b6cd3086d0b6f7d, type: 3} - blitCubeTextureFacePS: {fileID: 4800000, guid: d850d0a2481878d4bbf17e5126b04163, - type: 3} - filterAreaLightCookiesPS: {fileID: 4800000, guid: c243aac96dda5fa40bed693ed5ba02c4, - type: 3} - clearUIntTextureCS: {fileID: 7200000, guid: d067ad4b88af51c498875426894aef76, - type: 3} + blitCubeTextureFacePS: {fileID: 4800000, guid: d850d0a2481878d4bbf17e5126b04163, type: 3} + filterAreaLightCookiesPS: {fileID: 4800000, guid: c243aac96dda5fa40bed693ed5ba02c4, type: 3} + clearUIntTextureCS: {fileID: 7200000, guid: d067ad4b88af51c498875426894aef76, type: 3} customPassUtils: {fileID: 4800000, guid: 7e3722d0388000848acb25fd3cc8c088, type: 3} - customPassRenderersUtils: {fileID: 4800000, guid: cef5ba33ee5063d4c8b495d2292e394d, - type: 3} + customPassRenderersUtils: {fileID: 4800000, guid: cef5ba33ee5063d4c8b495d2292e394d, type: 3} texture3DAtlasCS: {fileID: 7200000, guid: 81522e314a83afd4a8ed43bd00757051, type: 3} xrMirrorViewPS: {fileID: 4800000, guid: e6255f98cf405eb45ab6f9006cf11e1f, type: 3} xrOcclusionMeshPS: {fileID: 4800000, guid: 46a45b32bb110604fb36216b63bcdb81, type: 3} shadowClearPS: {fileID: 4800000, guid: e3cab24f27741f44d8af1e94d006267c, type: 3} evsmBlurCS: {fileID: 7200000, guid: fb36979473602464fa32deacb9630c08, type: 3} - debugHDShadowMapPS: {fileID: 4800000, guid: 93d40cc9a6e13994f86f576a624efa18, - type: 3} + debugHDShadowMapPS: {fileID: 4800000, guid: 93d40cc9a6e13994f86f576a624efa18, type: 3} momentShadowsCS: {fileID: 7200000, guid: 4dea53e2ff15ed0448817c2aa4246e53, type: 3} shadowBlitPS: {fileID: 4800000, guid: ca059f1af4587a24b9a9eed3b66cff0f, type: 3} - decalNormalBufferPS: {fileID: 4800000, guid: fd532bf1795188c4daaa66ea798b8b0a, - type: 3} + decalNormalBufferPS: {fileID: 4800000, guid: fd532bf1795188c4daaa66ea798b8b0a, type: 3} GTAOCS: {fileID: 7200000, guid: 6710b06492bd58c4bb8aec0fdc1fced3, type: 3} - GTAOSpatialDenoiseCS: {fileID: 7200000, guid: 2cb33c21587d12b4388d7866ab6c65f6, - type: 3} - GTAOTemporalDenoiseCS: {fileID: 7200000, guid: 31e0ca4c210f97c468037d11a5b832bb, - type: 3} + GTAOSpatialDenoiseCS: {fileID: 7200000, guid: 2cb33c21587d12b4388d7866ab6c65f6, type: 3} + GTAOTemporalDenoiseCS: {fileID: 7200000, guid: 31e0ca4c210f97c468037d11a5b832bb, type: 3} GTAOCopyHistoryCS: {fileID: 7200000, guid: 7f43be57ffd12ff469d4fc175c00c4b4, type: 3} - GTAOBlurAndUpsample: {fileID: 7200000, guid: 9eb1abde882538a4ea46fa23e49ab9fa, - type: 3} - screenSpaceGlobalIlluminationCS: {fileID: 7200000, guid: 96170a954eb538b40a5ff369552c3629, - type: 3} + GTAOBlurAndUpsample: {fileID: 7200000, guid: 9eb1abde882538a4ea46fa23e49ab9fa, type: 3} + screenSpaceGlobalIlluminationCS: {fileID: 7200000, guid: 96170a954eb538b40a5ff369552c3629, type: 3} depthValuesPS: {fileID: 4800000, guid: 6e6a4a3dbb788234594aa74f2d6aeb6f, type: 3} colorResolvePS: {fileID: 4800000, guid: dd7047092f3c82b40b3a07868f9c4de2, type: 3} - resolveMotionVecPS: {fileID: 4800000, guid: ea18ca9826385e943979c46cf98968cc, - type: 3} + resolveMotionVecPS: {fileID: 4800000, guid: ea18ca9826385e943979c46cf98968cc, type: 3} copyAlphaCS: {fileID: 7200000, guid: c2c7eb6611725264187721ef9df0354b, type: 3} nanKillerCS: {fileID: 7200000, guid: 83982f199acf927499576a99abc9bea9, type: 3} exposureCS: {fileID: 7200000, guid: 976d7bce54fae534fb9ec67e9c18570c, type: 3} - histogramExposureCS: {fileID: 7200000, guid: 222da48299136f34b8e3fb75ae9f8ac7, - type: 3} + histogramExposureCS: {fileID: 7200000, guid: 222da48299136f34b8e3fb75ae9f8ac7, type: 3} applyExposureCS: {fileID: 7200000, guid: 1a6fea1dc099b984d8f2b27d504dc096, type: 3} - debugImageHistogramCS: {fileID: 7200000, guid: 52cc17ef5a5ffc443a5c142f9b745a85, - type: 3} + debugImageHistogramCS: {fileID: 7200000, guid: 52cc17ef5a5ffc443a5c142f9b745a85, type: 3} uberPostCS: {fileID: 7200000, guid: f1bf52f7c71bffd4f91e6cd90d12a4f7, type: 3} lutBuilder3DCS: {fileID: 7200000, guid: 37f2b1b0ecd6f1c439e4c1b4f2fdb524, type: 3} - depthOfFieldKernelCS: {fileID: 7200000, guid: 7869415cc3e4eaa4d82ac21a752a2780, - type: 3} + depthOfFieldKernelCS: {fileID: 7200000, guid: 7869415cc3e4eaa4d82ac21a752a2780, type: 3} depthOfFieldCoCCS: {fileID: 7200000, guid: 048b235b54fbfaa4d80ec85ea847d4f8, type: 3} - depthOfFieldCoCReprojectCS: {fileID: 7200000, guid: 4980decaa3878d6448569489f5fc7931, - type: 3} - depthOfFieldDilateCS: {fileID: 7200000, guid: 1c93af4338c0c1b42b92464992eebc10, - type: 3} + depthOfFieldCoCReprojectCS: {fileID: 7200000, guid: 4980decaa3878d6448569489f5fc7931, type: 3} + depthOfFieldDilateCS: {fileID: 7200000, guid: 1c93af4338c0c1b42b92464992eebc10, type: 3} depthOfFieldMipCS: {fileID: 7200000, guid: d3ef53de069ded64e8377cba6eb951fa, type: 3} - depthOfFieldMipSafeCS: {fileID: 7200000, guid: 2d24ee7b2c804d947a5c371c12ed46bd, - type: 3} - depthOfFieldPrefilterCS: {fileID: 7200000, guid: f2b89d19910854346b792fe7177ce634, - type: 3} - depthOfFieldTileMaxCS: {fileID: 7200000, guid: 84f84585ea8a7a849bea4a581adb93a7, - type: 3} - depthOfFieldGatherCS: {fileID: 7200000, guid: 486be52dddc4e054fb10a7b9b78788c2, - type: 3} - depthOfFieldCombineCS: {fileID: 7200000, guid: c8049ca85c4c7d047ba28f34d800c663, - type: 3} - depthOfFieldPreCombineFarCS: {fileID: 7200000, guid: 3b4a2acd03d1ce2438d93c325d588735, - type: 3} - depthOfFieldClearIndirectArgsCS: {fileID: 7200000, guid: 69905045e1d0a65458b205d6ab55502b, - type: 3} - paniniProjectionCS: {fileID: 7200000, guid: 0ddbf72c8fbb6e44b983f470c8384ef6, - type: 3} - motionBlurMotionVecPrepCS: {fileID: 7200000, guid: ed9438fa777911d48933402087203b15, - type: 3} - motionBlurGenTileCS: {fileID: 7200000, guid: 336e1fdbb3a1b8647b06208415f87804, - type: 3} - motionBlurMergeTileCS: {fileID: 7200000, guid: cd14ddf849edeed43b0e3ccf66023038, - type: 3} - motionBlurNeighborhoodTileCS: {fileID: 7200000, guid: 5ea9865df3e53b448856785b88f8e7b9, - type: 3} + depthOfFieldMipSafeCS: {fileID: 7200000, guid: 2d24ee7b2c804d947a5c371c12ed46bd, type: 3} + depthOfFieldPrefilterCS: {fileID: 7200000, guid: f2b89d19910854346b792fe7177ce634, type: 3} + depthOfFieldTileMaxCS: {fileID: 7200000, guid: 84f84585ea8a7a849bea4a581adb93a7, type: 3} + depthOfFieldGatherCS: {fileID: 7200000, guid: 486be52dddc4e054fb10a7b9b78788c2, type: 3} + depthOfFieldCombineCS: {fileID: 7200000, guid: c8049ca85c4c7d047ba28f34d800c663, type: 3} + depthOfFieldPreCombineFarCS: {fileID: 7200000, guid: 3b4a2acd03d1ce2438d93c325d588735, type: 3} + depthOfFieldClearIndirectArgsCS: {fileID: 7200000, guid: 69905045e1d0a65458b205d6ab55502b, type: 3} + paniniProjectionCS: {fileID: 7200000, guid: 0ddbf72c8fbb6e44b983f470c8384ef6, type: 3} + motionBlurMotionVecPrepCS: {fileID: 7200000, guid: ed9438fa777911d48933402087203b15, type: 3} + motionBlurGenTileCS: {fileID: 7200000, guid: 336e1fdbb3a1b8647b06208415f87804, type: 3} + motionBlurMergeTileCS: {fileID: 7200000, guid: cd14ddf849edeed43b0e3ccf66023038, type: 3} + motionBlurNeighborhoodTileCS: {fileID: 7200000, guid: 5ea9865df3e53b448856785b88f8e7b9, type: 3} motionBlurCS: {fileID: 7200000, guid: 2af5c49c7865edb4b823826970ec176a, type: 3} bloomPrefilterCS: {fileID: 7200000, guid: 243b24008041aaa4a91800690f63c684, type: 3} bloomBlurCS: {fileID: 7200000, guid: 133a68380d324de4ea8d3ff8657b02d8, type: 3} @@ -214,24 +144,19 @@ MonoBehaviour: finalPassPS: {fileID: 4800000, guid: 5ac9ef0c50282754b93c7692488e7ee7, type: 3} clearBlackPS: {fileID: 4800000, guid: 3330c1503ea8c6d4d9408df3f64227eb, type: 3} SMAAPS: {fileID: 4800000, guid: 9655f4aa89a469c49aceaceabf9bc77b, type: 3} - temporalAntialiasingPS: {fileID: 4800000, guid: 3dd9fd928fdb83743b1f27d15df22179, - type: 3} - dofCircleOfConfusion: {fileID: 7200000, guid: 75332b7b315c80d4babe506820aa0bfd, - type: 3} + temporalAntialiasingPS: {fileID: 4800000, guid: 3dd9fd928fdb83743b1f27d15df22179, type: 3} + dofCircleOfConfusion: {fileID: 7200000, guid: 75332b7b315c80d4babe506820aa0bfd, type: 3} dofGatherCS: {fileID: 7200000, guid: 1e6b16a7970a1494db74b1d3d007d1cc, type: 3} dofCoCMinMaxCS: {fileID: 7200000, guid: c70dd492c3d2fe94589d6ca8d4e37915, type: 3} dofMinMaxDilateCS: {fileID: 7200000, guid: 757a3f81b35177b44b2b178909b49172, type: 3} - contrastAdaptiveSharpenCS: {fileID: 7200000, guid: 560896aec2f412c48995be35551a4ac6, - type: 3} - VTFeedbackDownsample: {fileID: 7200000, guid: 32d963548086c2c439aeb23a93e9a00a, - type: 3} + contrastAdaptiveSharpenCS: {fileID: 7200000, guid: 560896aec2f412c48995be35551a4ac6, type: 3} + VTFeedbackDownsample: {fileID: 7200000, guid: 32d963548086c2c439aeb23a93e9a00a, type: 3} accumulationCS: {fileID: 7200000, guid: ed80add7a217efa468d137d6f7c668f3, type: 3} alphaInjectionPS: {fileID: 4800000, guid: 4edd96259a5e8b44c90479928f0cd11e, type: 3} chromaKeyingPS: {fileID: 4800000, guid: 49feb6b111e82ec4eb6d3d08e4b6903e, type: 3} customClearPS: {fileID: 4800000, guid: 9cef3686fa32c8840947ed99b561195c, type: 3} ssGIDenoiserCS: {fileID: 7200000, guid: a435d803bc32d0845ba1a713b7a1c8b1, type: 3} - bilateralUpsampleCS: {fileID: 7200000, guid: 68e831c555284d741b985e05369f0e63, - type: 3} + bilateralUpsampleCS: {fileID: 7200000, guid: 68e831c555284d741b985e05369f0e63, type: 3} textures: debugFontTex: {fileID: 2800000, guid: a3ad2df0e49aaa341a3b3a80f93b3f66, type: 3} colorGradient: {fileID: 2800000, guid: 4ea52e665573c1644bf05dd9b11fd2a4, type: 3} @@ -302,23 +227,17 @@ MonoBehaviour: - {fileID: 2800000, guid: 7641a2b116fafd64d9c3d6459fdfe801, type: 3} - {fileID: 2800000, guid: c6a5e40e6746fef4fa486e8f620ee8d4, type: 3} - {fileID: 2800000, guid: fd4189357c6dfb94fa2d36afbce72086, type: 3} - owenScrambledRGBATex: {fileID: 2800000, guid: b0fe077c1ee7d80428f3d8dfa28a027d, - type: 3} - owenScrambled256Tex: {fileID: 2800000, guid: 2a205358e67aa9e4a94a128ac9362f4e, - type: 3} + owenScrambledRGBATex: {fileID: 2800000, guid: b0fe077c1ee7d80428f3d8dfa28a027d, type: 3} + owenScrambled256Tex: {fileID: 2800000, guid: 2a205358e67aa9e4a94a128ac9362f4e, type: 3} scramblingTex: {fileID: 2800000, guid: bf25cd6288e2c8d43854a61a8496a830, type: 3} rankingTile1SPP: {fileID: 2800000, guid: f2fe0251f704c4c478a8063775cffedb, type: 3} - scramblingTile1SPP: {fileID: 2800000, guid: 6185473f62ad3e74da4acac5d482917a, - type: 3} + scramblingTile1SPP: {fileID: 2800000, guid: 6185473f62ad3e74da4acac5d482917a, type: 3} rankingTile8SPP: {fileID: 2800000, guid: af4bd638a4b3eb14781e6441adcdfbb9, type: 3} - scramblingTile8SPP: {fileID: 2800000, guid: 152f8b933250a7b448fc2d4d301b9944, - type: 3} + scramblingTile8SPP: {fileID: 2800000, guid: 152f8b933250a7b448fc2d4d301b9944, type: 3} rankingTile256SPP: {fileID: 2800000, guid: 1e604a266c415cd46b36d97cd9220aa8, type: 3} - scramblingTile256SPP: {fileID: 2800000, guid: 882fb55d7b3e7c94598a318df9376e32, - type: 3} + scramblingTile256SPP: {fileID: 2800000, guid: 882fb55d7b3e7c94598a318df9376e32, type: 3} cloudLutRainAO: {fileID: 2800000, guid: e0bcfddf26ed5584ba3d8b94d3200114, type: 3} - worleyNoise128RGBA: {fileID: 11700000, guid: 1fe54a721d0e2504e89f121c723404a8, - type: 3} + worleyNoise128RGBA: {fileID: 11700000, guid: 1fe54a721d0e2504e89f121c723404a8, type: 3} worleyNoise32RGB: {fileID: 11700000, guid: ec156c314a242914dbb706f73ad78cf2, type: 3} filmGrainTex: - {fileID: 2800000, guid: 284a1ac236869fa4eacf377d73c7dff8, type: 3} @@ -336,10 +255,8 @@ MonoBehaviour: defaultHDRISky: {fileID: 8900000, guid: 8253d41e6e8b11a4cbe77a4f8f82934d, type: 3} defaultCloudMap: {fileID: 2800000, guid: 57a33fc2476a01644865bfde5f06e2f4, type: 3} assets: - defaultDiffusionProfile: {fileID: 11400000, guid: 2b7005ba3a4d8474b8cdc34141ad766e, - type: 2} - emissiveCylinderMesh: {fileID: 2534964839176971238, guid: accb6d90f0d50fe4ca0f68159b4323de, - type: 3} + defaultDiffusionProfile: {fileID: 11400000, guid: 2b7005ba3a4d8474b8cdc34141ad766e, type: 2} + emissiveCylinderMesh: {fileID: 2534964839176971238, guid: accb6d90f0d50fe4ca0f68159b4323de, type: 3} emissiveQuadMesh: {fileID: 4300000, guid: 1d5a8595286f94f4bb54171d49f473c3, type: 3} sphereMesh: {fileID: 4300000, guid: 9e0af751bc36ea146940ba245193e28c, type: 3} m_Version: 4 From 49cce2f7d1118e1d15eb3eaf6ce815fe33244ca9 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 10 May 2021 20:24:05 -0400 Subject: [PATCH 02/73] Initial commit to add scattering mode dropdown --- .../Editor/Material/Hair/ShaderGraph/HairData.cs | 15 +++++++++++++++ .../Hair/ShaderGraph/HairPropertyBlocks.cs | 6 +++++- .../Material/Hair/ShaderGraph/HairSubTarget.cs | 3 +++ .../ShaderGraph/ShaderPassDefine.template.hlsl | 1 + 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs index f66687c245f..5040e43a3ad 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs @@ -12,6 +12,12 @@ public enum MaterialType Marschner } + public enum ScatteringMode + { + Approximate, + DensityVolume + } + [SerializeField] MaterialType m_MaterialType; public MaterialType materialType @@ -20,6 +26,15 @@ public MaterialType materialType set => m_MaterialType = value; } + [SerializeField] + ScatteringMode m_ScatteringMode; + + public ScatteringMode scatteringMode + { + get => m_ScatteringMode; + set => m_ScatteringMode = value; + } + [SerializeField] bool m_UseLightFacingNormal = false; public bool useLightFacingNormal diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 8f822953e93..0726c5bb3d6 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -28,7 +28,7 @@ public HairSurfaceOptionPropertyBlock(SurfaceOptionPropertyBlock.Features featur protected override void CreatePropertyGUI() { // TODO: Un-hide me when Marschner BSDF is available. - // AddProperty(Styles.materialType, () => hairData.materialType, (newValue) => hairData.materialType = newValue); + AddProperty(Styles.materialType, () => hairData.materialType, (newValue) => hairData.materialType = newValue); base.CreatePropertyGUI(); } @@ -39,6 +39,7 @@ class HairAdvancedOptionsPropertyBlock : AdvancedOptionsPropertyBlock class Styles { public static GUIContent useLightFacingNormal = new GUIContent("Use Light Facing Normal", "TODO"); + public static GUIContent scatteringMode = new GUIContent("Scattering Mode", ""); } HairData hairData; @@ -51,6 +52,9 @@ protected override void CreatePropertyGUI() // Hair specific properties GUI AddProperty(Styles.useLightFacingNormal, () => hairData.useLightFacingNormal, (newValue) => hairData.useLightFacingNormal = newValue); + + if (hairData.materialType == HairData.MaterialType.Marschner) + AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 52fe0478bd5..6673cda8a61 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -56,12 +56,14 @@ public HairData hairData public static FieldDescriptor HairStrandDirection = new FieldDescriptor(string.Empty, "HairStrandDirection", "_HAIR_STRAND_DIRECTION 1"); public static FieldDescriptor UseLightFacingNormal = new FieldDescriptor(string.Empty, "UseLightFacingNormal", "_USE_LIGHT_FACING_NORMAL 1"); public static FieldDescriptor Transmittance = new FieldDescriptor(string.Empty, "Transmittance", "_TRANSMITTANCE 1"); + public static FieldDescriptor ScatteringDensityVolume = new FieldDescriptor(string.Empty, "ScatteringDensityVolume", "_USE_DENSITY_VOLUME_SCATTERING"); public override void GetFields(ref TargetFieldContext context) { base.GetFields(ref context); var descs = context.blocks.Select(x => x.descriptor); + // Hair specific properties: context.AddField(KajiyaKay, hairData.materialType == HairData.MaterialType.KajiyaKay); context.AddField(Marschner, hairData.materialType == HairData.MaterialType.Marschner); @@ -69,6 +71,7 @@ public override void GetFields(ref TargetFieldContext context) context.AddField(RimTransmissionIntensity, descs.Contains(HDBlockFields.SurfaceDescription.RimTransmissionIntensity) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.RimTransmissionIntensity)); context.AddField(UseLightFacingNormal, hairData.useLightFacingNormal); context.AddField(Transmittance, descs.Contains(HDBlockFields.SurfaceDescription.Transmittance) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.Transmittance)); + context.AddField(ScatteringDensityVolume, hairData.scatteringMode == HairData.ScatteringMode.DensityVolume); // Misc context.AddField(SpecularAA, lightingData.specularAA && diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl index d431d2bd034..89d8c6882b3 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl @@ -6,3 +6,4 @@ $SpecularOcclusionFromAO: #define _SPECULAR_OCCLUSION_FROM_AO 1 $SpecularOcclusionFromAOBentNormal: #define _SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL 1 $SpecularOcclusionCustom: #define _SPECULAR_OCCLUSION_CUSTOM 1 $Specular.AA: #define _ENABLE_GEOMETRIC_SPECULAR_AA 1 +$ScatteringDensityVolume #define _USE_DENSITY_VOLUME_SCATTERING 1 From 669720bae34fd1609eaaebc7cdb2978ecd0c9f2a Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 11 May 2021 12:47:23 -0400 Subject: [PATCH 03/73] Add the framework for a preintegrated Marschner FGD --- .../PreIntegratedFGD/PreIntegratedFGD.cs | 17 +++++- .../PreIntegratedFGD_Marschner.shader | 60 +++++++++++++++++++ .../PreIntegratedFGD_Marschner.shader.meta | 10 ++++ .../HDRenderPipelineRuntimeResources.cs | 2 + .../RenderPipeline/HDStringConstants.cs | 1 + .../HDRenderPipelineRuntimeResources.asset | 1 + 6 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader.meta diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD.cs index 58c10911c47..daec7e402bf 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD.cs @@ -27,7 +27,8 @@ public enum FGDIndex { FGD_GGXAndDisneyDiffuse = 0, FGD_CharlieAndFabricLambert = 1, - Count = 2 + FGD_Marschner = 2, + Count = 3 } bool[] m_isInit = new bool[(int)FGDIndex.Count]; @@ -76,6 +77,16 @@ public void Build(FGDIndex index) m_PreIntegratedFGD[(int)index].Create(); break; + case FGDIndex.FGD_Marschner: + m_PreIntegratedFGDMaterial[(int)index] = CoreUtils.CreateEngineMaterial(HDRenderPipelineGlobalSettings.instance.renderPipelineResources.shaders.preIntegratedFGD_MarschnerPS); + m_PreIntegratedFGD[(int)index] = new RenderTexture(res, res, 0, GraphicsFormat.A2B10G10R10_UNormPack32); + m_PreIntegratedFGD[(int)index].hideFlags = HideFlags.HideAndDontSave; + m_PreIntegratedFGD[(int)index].filterMode = FilterMode.Bilinear; + m_PreIntegratedFGD[(int)index].wrapMode = TextureWrapMode.Clamp; + m_PreIntegratedFGD[(int)index].name = CoreUtils.GetRenderTargetAutoName(res, res, 1, GraphicsFormat.A2B10G10R10_UNormPack32, "preIntegratedFGD_Marschner"); + m_PreIntegratedFGD[(int)index].Create(); + break; + default: break; } @@ -124,6 +135,10 @@ public void Bind(CommandBuffer cmd, FGDIndex index) cmd.SetGlobalTexture(HDShaderIDs._PreIntegratedFGD_CharlieAndFabric, m_PreIntegratedFGD[(int)index]); break; + case FGDIndex.FGD_Marschner: + cmd.SetGlobalTexture(HDShaderIDs._PreIntegratedFGD_CharlieAndFabric, m_PreIntegratedFGD[(int)index]); + break; + default: break; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader new file mode 100644 index 00000000000..8226dcb02a1 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader @@ -0,0 +1,60 @@ +Shader "Hidden/HDRP/PreIntegratedFGD_Marschner" +{ + SubShader + { + Tags{ "RenderPipeline" = "HDRenderPipeline" } + Pass + { + ZTest Always Cull Off ZWrite Off + + HLSLPROGRAM + + #pragma editor_sync_compilation + + #pragma vertex Vert + #pragma fragment Frag + #pragma target 4.5 + #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch + #define PREFER_HALF 0 + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/ImageBasedLighting.hlsl" + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" + + // ---------------------------------------------------------------------------- + // Pre-Integration + // ---------------------------------------------------------------------------- + + struct Attributes + { + uint vertexID : SV_VertexID; + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float2 texCoord : TEXCOORD0; + }; + + Varyings Vert(Attributes input) + { + Varyings output; + + output.positionCS = GetFullScreenTriangleVertexPosition(input.vertexID); + output.texCoord = GetFullScreenTriangleTexCoord(input.vertexID); + + return output; + } + + float4 Frag(Varyings input) : SV_Target + { + // TODO + float4 preFGD = 0; + + return float4(preFGD.xyz, 1.0); + } + + ENDHLSL + } + } + Fallback Off +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader.meta new file mode 100644 index 00000000000..4a04eb5f27a --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 31f36caf0a5e7f848a1b5328b6ad3eb8 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs index 2786bcc2e5e..1fb95543406 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs @@ -170,6 +170,8 @@ public sealed class ShaderResources public Shader preIntegratedFGD_GGXDisneyDiffusePS; [Reload("Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_CharlieFabricLambert.shader")] public Shader preIntegratedFGD_CharlieFabricLambertPS; + [Reload("Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader")] + public Shader preIntegratedFGD_MarschnerPS; [Reload("Runtime/Material/AxF/PreIntegratedFGD_Ward.shader")] public Shader preIntegratedFGD_WardPS; [Reload("Runtime/Material/AxF/PreIntegratedFGD_CookTorrance.shader")] diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs index 992d68514a2..3882430d4b8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs @@ -733,6 +733,7 @@ static class HDShaderIDs // Preintegrated texture name public static readonly int _PreIntegratedFGD_GGXDisneyDiffuse = Shader.PropertyToID("_PreIntegratedFGD_GGXDisneyDiffuse"); public static readonly int _PreIntegratedFGD_CharlieAndFabric = Shader.PropertyToID("_PreIntegratedFGD_CharlieAndFabric"); + public static readonly int _PreIntegratedFGD_Marschner = Shader.PropertyToID("_PreIntegratedFGD_Marschner"); public static readonly int _PreIntegratedAzimuthalScattering = Shader.PropertyToID("_PreIntegratedAzimuthalScattering"); public static readonly int _ExposureTexture = Shader.PropertyToID("_ExposureTexture"); diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset index 9e140f6f9c8..858672abc7e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset @@ -83,6 +83,7 @@ MonoBehaviour: volumetricCloudMapGeneratorCS: {fileID: 7200000, guid: 6b22771f0aa98744cb09f455a5a818cb, type: 3} preIntegratedFGD_GGXDisneyDiffusePS: {fileID: 4800000, guid: 123f13d52852ef547b2962de4bd9eaad, type: 3} preIntegratedFGD_CharlieFabricLambertPS: {fileID: 4800000, guid: 3b3bf235775cf8b4baae7f3306787ab0, type: 3} + preIntegratedFGD_MarschnerPS: {fileID: 4800000, guid: 31f36caf0a5e7f848a1b5328b6ad3eb8, type: 3} preIntegratedFGD_WardPS: {fileID: 4800000, guid: d279c46a545b0af4f9f0c4fa82cd489e, type: 3} preIntegratedFGD_CookTorrancePS: {fileID: 4800000, guid: a6402c19b020b4a4fb7073aaa2e26aba, type: 3} preIntegratedAzimuthalScatteringPS: {fileID: 4800000, guid: 26ad8e15a8a298e42bc4d11aff5f9c67, type: 3} From ed6388df91f6b98cb6fc95553690d49eea306f1d Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 11 May 2021 12:49:05 -0400 Subject: [PATCH 04/73] Re-hide the material type for hair --- .../Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 0726c5bb3d6..6cf673c05b3 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -28,7 +28,7 @@ public HairSurfaceOptionPropertyBlock(SurfaceOptionPropertyBlock.Features featur protected override void CreatePropertyGUI() { // TODO: Un-hide me when Marschner BSDF is available. - AddProperty(Styles.materialType, () => hairData.materialType, (newValue) => hairData.materialType = newValue); + // AddProperty(Styles.materialType, () => hairData.materialType, (newValue) => hairData.materialType = newValue); base.CreatePropertyGUI(); } From 6b4b76d6c4781cd8323ca83739567db37399b5a5 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 11 May 2021 12:54:37 -0400 Subject: [PATCH 05/73] Correct some slight typos --- .../Editor/Material/Hair/ShaderGraph/HairSubTarget.cs | 2 +- .../Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 6673cda8a61..90d0b71007b 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -56,7 +56,7 @@ public HairData hairData public static FieldDescriptor HairStrandDirection = new FieldDescriptor(string.Empty, "HairStrandDirection", "_HAIR_STRAND_DIRECTION 1"); public static FieldDescriptor UseLightFacingNormal = new FieldDescriptor(string.Empty, "UseLightFacingNormal", "_USE_LIGHT_FACING_NORMAL 1"); public static FieldDescriptor Transmittance = new FieldDescriptor(string.Empty, "Transmittance", "_TRANSMITTANCE 1"); - public static FieldDescriptor ScatteringDensityVolume = new FieldDescriptor(string.Empty, "ScatteringDensityVolume", "_USE_DENSITY_VOLUME_SCATTERING"); + public static FieldDescriptor ScatteringDensityVolume = new FieldDescriptor(string.Empty, "ScatteringDensityVolume", "_USE_DENSITY_VOLUME_SCATTERING 1"); public override void GetFields(ref TargetFieldContext context) { diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl index 89d8c6882b3..eafed664206 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl @@ -6,4 +6,4 @@ $SpecularOcclusionFromAO: #define _SPECULAR_OCCLUSION_FROM_AO 1 $SpecularOcclusionFromAOBentNormal: #define _SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL 1 $SpecularOcclusionCustom: #define _SPECULAR_OCCLUSION_CUSTOM 1 $Specular.AA: #define _ENABLE_GEOMETRIC_SPECULAR_AA 1 -$ScatteringDensityVolume #define _USE_DENSITY_VOLUME_SCATTERING 1 +$ScatteringDensityVolume: #define _USE_DENSITY_VOLUME_SCATTERING 1 From e7e5060b00ca3beb0f339fd49bf62c392d1869f2 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 11 May 2021 14:04:19 -0400 Subject: [PATCH 06/73] Un-hide the hair material type --- .../Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 6cf673c05b3..0726c5bb3d6 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -28,7 +28,7 @@ public HairSurfaceOptionPropertyBlock(SurfaceOptionPropertyBlock.Features featur protected override void CreatePropertyGUI() { // TODO: Un-hide me when Marschner BSDF is available. - // AddProperty(Styles.materialType, () => hairData.materialType, (newValue) => hairData.materialType = newValue); + AddProperty(Styles.materialType, () => hairData.materialType, (newValue) => hairData.materialType = newValue); base.CreatePropertyGUI(); } From d2babafe5b1e2c0c9f6185c40c09f80313ba203e Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 13 May 2021 11:59:28 -0400 Subject: [PATCH 07/73] Initial commit strand count estimation from density volume --- .../Runtime/Material/Hair/Hair.cs | 2 +- .../Runtime/Material/Hair/Hair.cs.hlsl | 5 +++ .../Runtime/Material/Hair/Hair.hlsl | 12 +++++++ .../Runtime/Material/Hair/HairScattering.hlsl | 34 +++++++++++++++++++ .../Material/Hair/HairScattering.hlsl.meta | 7 ++++ 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index ce1712ce338..ac76c196b2d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -128,7 +128,7 @@ public struct BSDFData public float secondarySpecularShift; // Marschner - // TODO + public float lightPathLength; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 42efbc513a3..6b02488c616 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -60,6 +60,7 @@ #define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_EXPONENT (1468) #define DEBUGVIEW_HAIR_BSDFDATA_SPECULAR_SHIFT (1469) #define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_SHIFT (1470) +#define DEBUGVIEW_HAIR_BSDFDATA_LIGHT_PATH_LENGTH (1471) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -110,6 +111,7 @@ struct BSDFData float secondarySpecularExponent; float specularShift; float secondarySpecularShift; + float lightPathLength; }; // @@ -262,6 +264,9 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_SHIFT: result = bsdfdata.secondarySpecularShift.xxx; break; + case DEBUGVIEW_HAIR_BSDFDATA_LIGHT_PATH_LENGTH: + result = bsdfdata.lightPathLength.xxx; + break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 7b67fe49a26..3119d0d67e7 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -252,6 +252,11 @@ struct PreLightData { float NdotV; // Could be negative due to normal mapping, use ClampNdotV() + // Scattering +#if _USE_DENSITY_VOLUME_SCATTERING + +#endif + // IBL float3 iblR; // Reflected specular direction, used for IBL in EvaluateBSDF_Env() float iblPerceptualRoughness; @@ -471,6 +476,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialEvaluation.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl" //----------------------------------------------------------------------------- // EvaluateBSDF_Directional @@ -481,6 +487,12 @@ DirectLighting EvaluateBSDF_Directional(LightLoopContext lightLoopContext, DirectionalLightData lightData, BSDFData bsdfData, BuiltinData builtinData) { + // if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) + // { + // // For now, write it to the BSDFData + // bsdfData.lightPathLength = EvaluateStrandCount(-lightData.forward, posInput.positionWS);; + // } + return ShadeSurface_Directional(lightLoopContext, posInput, builtinData, preLightData, lightData, bsdfData, V); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl new file mode 100644 index 00000000000..0784eed08c2 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl @@ -0,0 +1,34 @@ +#if _USE_DENSITY_VOLUME_SCATTERING +// NOTE: Temporary package dependency. We should move all of this to somewhere in HDRP +// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimData.hlsl" +// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimComputeVolumeUtility.hlsl" +#endif + +float EvaluateStrandCount(float3 L, float3 P) +{ +#if _USE_DENSITY_VOLUME_SCATTERING + // Trace against the density field in the light ray direction. +// const float3 worldPos = GetAbsolutePositionWS(P); +// const float3 worldDir = L; +// +// const int numStepsWithinCell = 10; +// const int numSteps = _VolumeCells.x * numStepsWithinCell; +// +// VolumeTraceState trace = VolumeTraceBegin(worldPos, worldDir, 0.5, numStepsWithinCell); +// +// float density = 0; +// +// for (int i = 0; i != numSteps; i++) +// { +// if (VolumeTraceStep(trace)) +// { +// density += VolumeSampleScalar(_VolumeDensity, trace.uvw); +// } +// } +// +// return saturate(density); +#else + // TODO + return 1; +#endif +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta new file mode 100644 index 00000000000..cd4c9924ec1 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c15cf6d48b32d1842b3dd4b411111d37 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 72319da7af1e981063c6aa0b7f4bbfa8e81770df Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 13 May 2021 13:28:33 -0400 Subject: [PATCH 08/73] Initial work for Surface to BSDF data --- .../Runtime/Material/Hair/Hair.cs | 14 ++++++ .../Runtime/Material/Hair/Hair.cs.hlsl | 50 +++++++++++++++++++ .../Runtime/Material/Hair/Hair.hlsl | 44 +++++++++++++++- 3 files changed, 107 insertions(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index ac76c196b2d..1cabb267f26 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -129,6 +129,20 @@ public struct BSDFData // Marschner public float lightPathLength; + + public float cuticleAngleR; + public float cuticleAngleTT; + public float cuticleAngleTRT; + + public float roughnessLR; + public float roughnessLTT; + public float roughnessLTRT; + + public float roughnessAR; + public float roughnessATT; + public float roughnessATRT; + + public float ior; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 6b02488c616..fe2edbfc477 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -61,6 +61,16 @@ #define DEBUGVIEW_HAIR_BSDFDATA_SPECULAR_SHIFT (1469) #define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_SHIFT (1470) #define DEBUGVIEW_HAIR_BSDFDATA_LIGHT_PATH_LENGTH (1471) +#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_R (1472) +#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TT (1473) +#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TRT (1474) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LR (1475) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTT (1476) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTRT (1477) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_AR (1478) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATT (1479) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATRT (1480) +#define DEBUGVIEW_HAIR_BSDFDATA_IOR (1481) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -112,6 +122,16 @@ struct BSDFData float specularShift; float secondarySpecularShift; float lightPathLength; + float cuticleAngleR; + float cuticleAngleTT; + float cuticleAngleTRT; + float roughnessLR; + float roughnessLTT; + float roughnessLTRT; + float roughnessAR; + float roughnessATT; + float roughnessATRT; + float ior; }; // @@ -267,6 +287,36 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_LIGHT_PATH_LENGTH: result = bsdfdata.lightPathLength.xxx; break; + case DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_R: + result = bsdfdata.cuticleAngleR.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TT: + result = bsdfdata.cuticleAngleTT.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TRT: + result = bsdfdata.cuticleAngleTRT.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LR: + result = bsdfdata.roughnessLR.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTT: + result = bsdfdata.roughnessLTT.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTRT: + result = bsdfdata.roughnessLTRT.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_AR: + result = bsdfdata.roughnessAR.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATT: + result = bsdfdata.roughnessATT.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATRT: + result = bsdfdata.roughnessATRT.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_IOR: + result = bsdfdata.ior.xxx; + break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 3119d0d67e7..5f9598fbf09 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -21,6 +21,22 @@ // Helper functions/variable specific to this material //----------------------------------------------------------------------------- +// Ref: A Practical and Controllable Hair and Fur Model for Production Path Tracing +float3 DiffuseColorToAbsorption(float3 diffuseColor, float azimuthalRoughness) +{ + float beta = azimuthalRoughness; + float beta2 = beta * beta; + float beta3 = beta2 * beta; + float beta4 = beta3 * beta; + float beta5 = beta4 * beta; + + // Least squares fit of an inverse mapping between scattering parameters and scattering albedo. + float denom = 5.969 - (0.215 * beta) + (2.532 * beta2) - (10.73 * beta3) + (5.574 * beta4) + (0.245 * beta5); + + float3 t = log(diffuseColor) / denom; + return t * t; +} + float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) { return float4(bsdfData.diffuseColor, 0.0); @@ -174,7 +190,33 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) // Marschner if (HasFlag(surfaceData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) { - // TODO + // Note: Light Path Length is computed per-light. + + // Absorption + bsdfData.diffuseColor = DiffuseColorToAbsorption(surfaceData.diffuseColor, surfaceData.roughnessAzimuthal); + + // Note: The following angle and roughness terms are derived from Marschner's original paper. + + // Cuticle Angle + const float cuticleAngle = radians(surfaceData.cuticleAngle); + bsdfData.cuticleAngleR = cuticleAngle; + bsdfData.cuticleAngleTT = -cuticleAngle * 0.5; + bsdfData.cuticleAngleTRT = -cuticleAngle * 3.0 * 0.5; + + // Longitudinal Roughness + const float roughnessL = surfaceData.roughnessLongitudinal; + bsdfData.roughnessLR = roughnessL; + bsdfData.roughnessLTT = roughnessL * 0.5; + bsdfData.roughnessLTRT = roughnessL * 2.0; + + // Azimuthal Roughness + const float roughnessA = surfaceData.roughnessAzimuthal; + bsdfData.roughnessAR = roughnessA; + bsdfData.roughnessATT = roughnessA * 0.5; + bsdfData.roughnessATRT = roughnessA * 2.0; + + // Refraction Index + bsdfData.ior = surfaceData.ior; } ApplyDebugToBSDFData(bsdfData); From d9a9ec890423c0d1645333ef338e0c50e564fe7e Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 13 May 2021 13:34:03 -0400 Subject: [PATCH 09/73] Initial readdition of the hair reference --- .../Runtime/Material/Hair/HairReference.hlsl | 393 ++++++++++++++++++ .../Material/Hair/HairReference.hlsl.meta | 7 + 2 files changed, 400 insertions(+) create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl.meta diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl new file mode 100644 index 00000000000..f8cc90955e1 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl @@ -0,0 +1,393 @@ +// #define HAIR_REFERENCE_NEAR_FIELD + +struct ReferenceInputs +{ + float thetaI; + float thetaR; + float thetaD; + float thetaT; + + float phiI; + float phiR; + float phi; + + float LdotV; + + float h; + + float eta; + float etaP; + float fresnel0; + + float shifts[3]; + float variances[3]; + float logisticScale; + + float3 absorption; + float3 absorptionP; +}; + +float ModifiedIOR(float ior, float thetaD) +{ + float sinThetaD = sin(thetaD); + float num = (ior * ior) - (sinThetaD * sinThetaD); + return sqrt(num) / cos(thetaD); +} + +float HyperbolicCosecant(float x) +{ + return rcp(sinh(x)); +} + +// Plot: https://www.desmos.com/calculator/4dnfmn9xal +float RoughnessToLongitudinalVariance(float roughness) +{ + float beta = roughness; + float v = (0.726 * beta) + (0.812 * beta * beta) + (3.7 * pow(beta, 20.0)); + return v * v; +} + +float RoughnessToLogisticalScale(float roughness) +{ + float beta = roughness; + return (0.265 * beta) + (1.194 * beta * beta) + (5.372 * pow(beta, 22.0)); +} + +// Precompute the factorials (should really precompute the squared value). +static const float FACTORIAL[11] = { 1.0, + 1.0, + 2.0, + 6.0, + 24.0, + 120.0, + 720.0, + 5040.0, + 40320.0, + 362880.0, + 3628800.0 }; + +// Modified Bessel Function of the First Kind +float BesselI(float x) +{ + float b = 0; + + UNITY_UNROLL + for (int i = 0; i <= 10; ++i) + { + const float f = FACTORIAL[i]; + b += pow(x, 2.0 * i) / (pow(4, i) * f * f); + } + + return b; +} + +// Remap the azimuthal direction to the normalized logistic function on -PI to PI. +float RemapLogisticAngle(float a) +{ + if (a < -PI) + a += TWO_PI; + + if (a > +PI) + a -= TWO_PI; + + return a; +} + +// Ref: Light Scattering from Human Hair Fibers +float AzimuthalDirection(uint p, float etaPrime, float h) +{ + float gammaI = asin(h); + float gammaT = asin(h / etaPrime); + float omega = (2 * p * gammaT) - (2 * gammaI) + p * PI; + + return omega; +} + +float3 Attenuation(uint p, float h, float LdotV, float thetaD, float etaPrime, float fresnel0, float3 absorption) +{ + float3 A; + + if (p == 0) + { + // Attenuation term for R is a special case. + A = F_Schlick(fresnel0, sqrt(0.5 + 0.5 * LdotV)); + } + else + { + float f = F_Schlick(fresnel0, acos(cos(thetaD) * cos(asin(h)))); + float gammaT = asin(h / etaPrime); + float3 T = exp(-2 * absorption * (1 + cos(2 * gammaT))); + + // A = pow(1 - f, 2.0) * pow(f, p - 1) * pow(T, p); + + if (p == 1) + A = pow(1 - f, 2.0) * T; + else + A = pow(1 - f, 2.0) * f * (T * T); + } + + return A; +} + +// Ref: [A Practical and Controllable Hair and Fur Model for Production Path Tracing] +// Plot: https://www.desmos.com/calculator/cmy0eig6ln +float LogisticAzimuthalAngularDistribution(float s, float phi) +{ + const float a = -PI; + const float b = +PI; + + const float scalePeakTerm = sqrt(PI / 8.0); + s *= scalePeakTerm; + + float normalizeTerm = rcp(rcp(1 + exp(a / s)) - rcp(1 + exp(b / s))); + + float distributionN = exp(-phi / s); + + float distributionD = 1 + exp(-phi / s); + distributionD = s * distributionD * distributionD; + + return normalizeTerm * (distributionN / distributionD); +} + +float Gaussian(float beta, float phi) +{ + return exp(-0.5 * (phi * phi) / (beta * beta)) * rcp(sqrt(TWO_PI) * beta); +} + +// Ref: [An Energy-Conserving Hair Reflectance Model] +float GaussianDetector(float beta, float phi) +{ + float D = 0; + + // Higher order detection is negligible for (beta < 80º). + int order = 4; + + for (int k = -order; k <= order; k++) + { + D += Gaussian(beta, phi - (TWO_PI * k)); + } + + return D; +} + +float3 AzimuthalScatteringNearField(uint p, ReferenceInputs inputs) +{ + // Evaluation of near field azimuthal scattering is done with the true offset (h). + // It leverages the monte carlo integration of the pathtracer to solve the full integral. + float3 A = Attenuation(p, inputs.h, inputs.LdotV, inputs.thetaD, inputs.etaP, inputs.fresnel0, inputs.absorptionP); + + float azimuth = AzimuthalDirection(p, inputs.etaP, inputs.h); + + // Remap to the logistic function. + azimuth = RemapLogisticAngle(azimuth); + + float D = LogisticAzimuthalAngularDistribution(inputs.logisticScale, inputs.phi - azimuth); + + return A * D; +} + +float3 AzimuthalScatteringFarField(uint p, ReferenceInputs inputs) +{ + // Integrate azimuthal scattering over the fiber width using a gaussian quadrature. + // Np(phi) = 0.5 * Int{-1, 1}{A(p, h) * D(phi - Omega)dh} where h is the fiber axis offset. + float3 N = 0; + + // Quadrature of order 35 is sufficient for all but very smooth hairs (beta < 2º). + const uint n = 35; + + for (uint i = 0; i < n; i++) + { + // Remap h to -1..1 + float h = 2 * ((float)i / n) - 1; + + float3 A = Attenuation(p, h, inputs.LdotV, inputs.thetaD, inputs.etaP, inputs.fresnel0, inputs.absorptionP); + + float omega = AzimuthalDirection(p, inputs.etaP, h); + + float D = GaussianDetector(inputs.logisticScale, inputs.phi - omega); + + N += A * D; + } + + N *= 2.0 / n; + + return 0.5 * N; +} + +// Ref: [An Energy-Conserving Hair Reflectance Model] +// Plot: https://www.desmos.com/calculator/jmf1ofgfdv +float LongitudinalScattering(uint p, ReferenceInputs inputs) +{ + const float v = max(0.0001, inputs.variances[p]); + const float thetaI = inputs.thetaI; + const float thetaR = inputs.thetaR - radians(inputs.shifts[p]); + + float M; + +#if 1 + if (v < 0.1) + { + // Ref: [https://publons.com/review/414383/] + // Small variances (< ~0.1) produce numerical issues due to limited floating precision. + float a = (cos(-thetaI) * cos(thetaR)) / v; + float b = (sin(-thetaI) * sin(thetaR)) / v; + + // The log of the bessel function may also be problematic for larger inputs (> ~12)... + float lnI0; + if (a > 12) + { + // ...in which case it's approximated. + lnI0 = a + 0.5 * (-log(TWO_PI) + log(rcp(a)) + rcp(8 * a)); + } + else + { + lnI0 = log(BesselI(a)); + } + + M = exp(lnI0 + b - rcp(v) + 0.6931 + log(rcp(2 * v))); + } + else + { + M = HyperbolicCosecant(rcp(v)) / (2 * v); + M *= exp((sin(-thetaI) * sin(thetaR)) / v); + M *= BesselI((cos(-thetaI) * cos(thetaR)) / v); + } +#else + // TODO: Marschner Gaussian + M = 1; +#endif + + return M; +} + +float3 AzimuthalScattering(uint p, ReferenceInputs inputs) +{ + float3 N; + +#ifdef HAIR_REFERENCE_NEAR_FIELD + // Disney Integration of N(phi, h) (Near-Field). + N = AzimuthalScatteringNearField(p, inputs); +#else + // D'Eon's integration over fiber width and Gaussian Detector (Far-Field). + N = AzimuthalScatteringFarField(p, inputs); +#endif + + return N; +} + +CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) +{ + CBSDF cbsdf; + ZERO_INITIALIZE(CBSDF, cbsdf); + + // Transform to the local frame for spherical coordinates + float3x3 frame = GetLocalFrame(bsdfData.hairStrandDirectionWS); + float3 I = TransformWorldToTangent(L, frame); + float3 R = TransformWorldToTangent(V, frame); + + ReferenceInputs inputs; + ZERO_INITIALIZE(ReferenceInputs, inputs); + + // Model Reference Inputs. + // Notation Ref: Light Scattering from Human Hair Fibers + { + // Longitudinal + inputs.thetaI = HALF_PI - acos(I.z); + inputs.thetaR = HALF_PI - acos(R.z); + inputs.thetaD = (inputs.thetaR - inputs.thetaI) * 0.5; + + // Azimuthal + float phiI = atan2(I.y, I.x); + float phiR = atan2(R.y, R.x); + inputs.phi = phiR - phiI; + + // TODO: Move to ConvertSurfaceDataToBSDFData + // Only the first lobe is attenuated by primary reflection roughness. + float variance = RoughnessToLongitudinalVariance(bsdfData.roughnessT); + inputs.variances[0] = variance * bsdfData.roughnessPrimaryReflection; + inputs.variances[1] = 0.5 * variance; + inputs.variances[2] = 2.0 * variance; + + inputs.shifts[0] = bsdfData.cuticleAngle; + inputs.shifts[1] = -inputs.shifts[0] / 2.0; + inputs.shifts[2] = 3 * -inputs.shifts[0] / 2.0; + + inputs.eta = bsdfData.ior; + inputs.fresnel0 = IorToFresnel0(inputs.eta); + + // The analysis of azimuthal scattering can be restricted to the normal plane by exploiting + // the Bravais properties of a smooth cylinder fiber and using the modified index of refraction. + inputs.etaP = ModifiedIOR(inputs.eta, inputs.thetaD); + + inputs.LdotV = dot(L, V); + +#ifdef HAIR_REFERENCE_NEAR_FIELD + // Evaluation of h in the normal plane, given by gammaI = asin(h), where gammaI is the incident angle. + // Since we are using a near-field method, we can use the true h value (rather than integrating over the whole fiber width). + inputs.h = dot(cross(bsdfData.normalWS, X), Z); + + inputs.logisticScale = RoughnessToLogisticalScale(bsdfData.roughnessB); +#else + // TODO: Maintain the Disney parameterization for the far field model. + inputs.logisticScale = bsdfData.roughnessB; +#endif + + float thetaT = asin(sin(inputs.thetaR / inputs.eta)); + inputs.absorptionP = bsdfData.transmittance / cos(thetaT); + } + + float3 S = 0; + + // Factored lobe representation. Sigma Sp(thetai, thetao, phi) = Mp(thetai, thetao) * Np(phi). + for (uint p = 0; p < 3; p++) + { + // TEMP: Lobe (R, TT, TRT, TRRT) selection + // if (p == 0) continue; + // if (p == 1) continue; + // if (p == 2) continue; + + S += LongitudinalScattering(p, inputs) * AzimuthalScattering(p, inputs); + } + + // Suppress NaNs. + S = saturate(S); + + // Transmission is currently built in to the model. Should the TT lobe be separated? + cbsdf.specR = S; + + return cbsdf; +} + +//----------------------------------------------------------------------------- +// EvaluateBSDF_Env - Reference +// ---------------------------------------------------------------------------- + +float3 IntegrateMarschnerIBLRef(LightLoopContext lightLoopContext, + float3 V, PreLightData preLightData, EnvLightData lightData, BSDFData bsdfData, + uint sampleCount = 16) +{ + float3 acc = float3(0.0, 0.0, 0.0); + + // Add some jittering on Hammersley2d + float2 randNum = InitRandom(V.xy * 0.5 + 0.5); + + // Integrate over the sphere due to reflective and transmissive events in the BSDF. + for (uint i = 0; i < sampleCount; ++i) + { + float2 u = Hammersley2d(i, sampleCount); + u = frac(u + randNum); + + float3 L = SampleSphereUniform(u.x, u.y); + + // Incident Light intensity + float4 val = SampleEnv(lightLoopContext, lightData.envIndex, L, 0, lightData.rangeCompressionFactorCompensation, 0.5); + + // BRDF Data + CBSDF cbsdf = EvaluateMarschnerReference(V, L, bsdfData); + + float weight = rcp(INV_FOUR_PI * sampleCount); + acc += val.rgb * cbsdf.specR * weight; + } + + return acc; +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl.meta new file mode 100644 index 00000000000..50bed83a826 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: deec6414df92499458370add8c145275 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From c21239752ccc7f14a0f9912e45171922d7dbef66 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 13 May 2021 14:10:49 -0400 Subject: [PATCH 10/73] Adapt the reference to use the new BSDF data --- .../Hair/ShaderGraph/HairSubTarget.cs | 2 +- .../Runtime/Material/Hair/Hair.cs | 7 +++ .../Runtime/Material/Hair/Hair.cs.hlsl | 54 +++++++++++++------ .../Runtime/Material/Hair/Hair.hlsl | 5 ++ .../Material/Hair/HairPathTracing.hlsl | 14 +++-- .../Runtime/Material/Hair/HairReference.hlsl | 25 ++++----- 6 files changed, 72 insertions(+), 35 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 90d0b71007b..adceca6c58f 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -33,7 +33,7 @@ sealed partial class HairSubTarget : LightingSubTarget, ILegacyTarget, IRequires protected override string raytracingInclude => CoreIncludes.kHairRaytracing; protected override FieldDescriptor subShaderField => new FieldDescriptor(kSubShader, "Hair SubShader", ""); protected override bool requireSplitLighting => false; - protected override bool supportPathtracing => false; + protected override bool supportPathtracing => true; protected override string pathtracingInclude => CoreIncludes.kHairPathtracing; HairData m_HairData; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 1cabb267f26..7c285e6b82b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -119,6 +119,13 @@ public struct BSDFData public Vector3 hairStrandDirectionWS; public float anisotropy; + // TEMP: Pathtracer Compatibility. + // Path tracer assumes this anisotropic fields generally exist (even though we don't use them). + public Vector3 tangentWS; + public Vector3 bitangentWS; + public float roughnessT; + public float roughnessB; + // Kajiya kay public float secondaryPerceptualRoughness; public Vector3 secondarySpecularTint; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index fe2edbfc477..f759824d0f5 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -54,23 +54,27 @@ #define DEBUGVIEW_HAIR_BSDFDATA_RIM_TRANSMISSION_INTENSITY (1462) #define DEBUGVIEW_HAIR_BSDFDATA_HAIR_STRAND_DIRECTION_WS (1463) #define DEBUGVIEW_HAIR_BSDFDATA_ANISOTROPY (1464) -#define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_PERCEPTUAL_ROUGHNESS (1465) -#define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_TINT (1466) -#define DEBUGVIEW_HAIR_BSDFDATA_SPECULAR_EXPONENT (1467) -#define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_EXPONENT (1468) -#define DEBUGVIEW_HAIR_BSDFDATA_SPECULAR_SHIFT (1469) -#define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_SHIFT (1470) -#define DEBUGVIEW_HAIR_BSDFDATA_LIGHT_PATH_LENGTH (1471) -#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_R (1472) -#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TT (1473) -#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TRT (1474) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LR (1475) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTT (1476) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTRT (1477) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_AR (1478) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATT (1479) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATRT (1480) -#define DEBUGVIEW_HAIR_BSDFDATA_IOR (1481) +#define DEBUGVIEW_HAIR_BSDFDATA_TANGENT_WS (1465) +#define DEBUGVIEW_HAIR_BSDFDATA_BITANGENT_WS (1466) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_T (1467) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_B (1468) +#define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_PERCEPTUAL_ROUGHNESS (1469) +#define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_TINT (1470) +#define DEBUGVIEW_HAIR_BSDFDATA_SPECULAR_EXPONENT (1471) +#define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_EXPONENT (1472) +#define DEBUGVIEW_HAIR_BSDFDATA_SPECULAR_SHIFT (1473) +#define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_SHIFT (1474) +#define DEBUGVIEW_HAIR_BSDFDATA_LIGHT_PATH_LENGTH (1475) +#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_R (1476) +#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TT (1477) +#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TRT (1478) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LR (1479) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTT (1480) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTRT (1481) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_AR (1482) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATT (1483) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATRT (1484) +#define DEBUGVIEW_HAIR_BSDFDATA_IOR (1485) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -115,6 +119,10 @@ struct BSDFData float rimTransmissionIntensity; float3 hairStrandDirectionWS; float anisotropy; + float3 tangentWS; + float3 bitangentWS; + float roughnessT; + float roughnessB; float secondaryPerceptualRoughness; float3 secondarySpecularTint; float specularExponent; @@ -266,6 +274,18 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_ANISOTROPY: result = bsdfdata.anisotropy.xxx; break; + case DEBUGVIEW_HAIR_BSDFDATA_TANGENT_WS: + result = bsdfdata.tangentWS; + break; + case DEBUGVIEW_HAIR_BSDFDATA_BITANGENT_WS: + result = bsdfdata.bitangentWS; + break; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_T: + result = bsdfdata.roughnessT.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_B: + result = bsdfdata.roughnessB.xxx; + break; case DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_PERCEPTUAL_ROUGHNESS: result = bsdfdata.secondaryPerceptualRoughness.xxx; break; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 5f9598fbf09..bcc80c9e0ef 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -217,6 +217,9 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) // Refraction Index bsdfData.ior = surfaceData.ior; + + // We override the fresnel0 with the custom one (not 1.55 for human hair). + bsdfData.fresnel0 = IorToFresnel0(surfaceData.ior); } ApplyDebugToBSDFData(bsdfData); @@ -436,6 +439,8 @@ LightTransportData GetLightTransportData(SurfaceData surfaceData, BuiltinData bu // BSDF share between directional light, punctual light and area light (reference) //----------------------------------------------------------------------------- +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl" + bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) { return true; // Due to either reflection or transmission being always active diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl index 5d95fb23452..fddbfedadc2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl @@ -29,16 +29,24 @@ void EvaluateMaterial(MaterialData mtlData, float3 sampleDir, out MaterialResult { Init(result); - // TODO + CBSDF cbsdf = EvaluateMarschnerReference(mtlData.V, sampleDir, mtlData.bsdfData); + + result.specValue = cbsdf.specR; + + // TODO: Importance Sample + result.specPdf = INV_FOUR_PI; } bool SampleMaterial(MaterialData mtlData, float3 inputSample, out float3 sampleDir, out MaterialResult result) { Init(result); - // TODO + // We sample the sphere due to reflective and transmittive events. + sampleDir = SampleSphereUniform(inputSample.x, inputSample.y); + + EvaluateMaterial(mtlData, sampleDir, result); - return false; + return true; } float AdjustPathRoughness(MaterialData mtlData, MaterialResult mtlResult, bool isSampleBelow, float pathRoughness) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl index f8cc90955e1..3ab23570596 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl @@ -301,19 +301,16 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) float phiR = atan2(R.y, R.x); inputs.phi = phiR - phiI; - // TODO: Move to ConvertSurfaceDataToBSDFData - // Only the first lobe is attenuated by primary reflection roughness. - float variance = RoughnessToLongitudinalVariance(bsdfData.roughnessT); - inputs.variances[0] = variance * bsdfData.roughnessPrimaryReflection; - inputs.variances[1] = 0.5 * variance; - inputs.variances[2] = 2.0 * variance; + inputs.variances[0] = RoughnessToLongitudinalVariance(bsdfData.roughnessLR); + inputs.variances[1] = RoughnessToLongitudinalVariance(bsdfData.roughnessLTT); + inputs.variances[2] = RoughnessToLongitudinalVariance(bsdfData.roughnessLTRT); - inputs.shifts[0] = bsdfData.cuticleAngle; - inputs.shifts[1] = -inputs.shifts[0] / 2.0; - inputs.shifts[2] = 3 * -inputs.shifts[0] / 2.0; + inputs.shifts[0] = bsdfData.cuticleAngleR; + inputs.shifts[1] = bsdfData.cuticleAngleTT; + inputs.shifts[2] = bsdfData.cuticleAngleTRT; - inputs.eta = bsdfData.ior; - inputs.fresnel0 = IorToFresnel0(inputs.eta); + inputs.eta = bsdfData.ior; + inputs.fresnel0 = bsdfData.fresnel0; // The analysis of azimuthal scattering can be restricted to the normal plane by exploiting // the Bravais properties of a smooth cylinder fiber and using the modified index of refraction. @@ -326,14 +323,14 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) // Since we are using a near-field method, we can use the true h value (rather than integrating over the whole fiber width). inputs.h = dot(cross(bsdfData.normalWS, X), Z); - inputs.logisticScale = RoughnessToLogisticalScale(bsdfData.roughnessB); + inputs.logisticScale = RoughnessToLogisticalScale(bsdfData.roughnessAR); #else // TODO: Maintain the Disney parameterization for the far field model. - inputs.logisticScale = bsdfData.roughnessB; + inputs.logisticScale = bsdfData.roughnessAR; #endif float thetaT = asin(sin(inputs.thetaR / inputs.eta)); - inputs.absorptionP = bsdfData.transmittance / cos(thetaT); + inputs.absorptionP = bsdfData.diffuseColor / cos(thetaT); } float3 S = 0; From 7ebe25511e90ffeb1a7ab2b08d1f76741c483349 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 13 May 2021 14:41:04 -0400 Subject: [PATCH 11/73] Use the reference for the raster BSDF --- .../Runtime/Material/Hair/Hair.hlsl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index bcc80c9e0ef..44eb6376916 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -17,6 +17,9 @@ #define DEFAULT_HAIR_SPECULAR_VALUE 0.0465 // Hair is IOR 1.55 +#define HAIR_DISPLAY_REFERENCE_BSDF +// #define HAIR_DISPLAY_REFERENCE_IBL + //----------------------------------------------------------------------------- // Helper functions/variable specific to this material //----------------------------------------------------------------------------- @@ -508,7 +511,11 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) { - // TODO + #ifdef HAIR_DISPLAY_REFERENCE_BSDF + cbsdf = EvaluateMarschnerReference(V, L, bsdfData); + #else + + #endif } return cbsdf; From 23a62735fcba267b1dfa940a541c86d584d0042b Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 13 May 2021 17:12:37 -0400 Subject: [PATCH 12/73] Add the first lobe approximation --- .../Runtime/Material/Hair/Hair.hlsl | 85 ++++++++++++++++++- .../Runtime/Material/Hair/HairReference.hlsl | 4 +- 2 files changed, 85 insertions(+), 4 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 44eb6376916..cb9e513ffc7 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -17,13 +17,25 @@ #define DEFAULT_HAIR_SPECULAR_VALUE 0.0465 // Hair is IOR 1.55 -#define HAIR_DISPLAY_REFERENCE_BSDF +// #define HAIR_DISPLAY_REFERENCE_BSDF // #define HAIR_DISPLAY_REFERENCE_IBL //----------------------------------------------------------------------------- // Helper functions/variable specific to this material //----------------------------------------------------------------------------- +// Ref: "Light Scattering from Human Hair Fibers" +// Longitudinal scattering as modeled by a normal distribution. +// To be used as an approximation to d'Eon et al's Energy Conserving Longitudinal Scattering Function. +// TODO: Move me to BSDF.hlsl +real D_LongitudinalScatteringGaussian(real theta, real beta) +{ + real v = theta / beta; + + const real sqrtTwoPi = 2.50662827463100050241; + return rcp(beta * sqrtTwoPi) * exp(-0.5 * v * v); +} + // Ref: A Practical and Controllable Hair and Fur Model for Production Path Tracing float3 DiffuseColorToAbsorption(float3 diffuseColor, float azimuthalRoughness) { @@ -207,7 +219,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) bsdfData.cuticleAngleTRT = -cuticleAngle * 3.0 * 0.5; // Longitudinal Roughness - const float roughnessL = surfaceData.roughnessLongitudinal; + const float roughnessL = PerceptualRoughnessToRoughness(surfaceData.roughnessLongitudinal); bsdfData.roughnessLR = roughnessL; bsdfData.roughnessLTT = roughnessL * 0.5; bsdfData.roughnessLTRT = roughnessL * 2.0; @@ -449,6 +461,28 @@ bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD return true; // Due to either reflection or transmission being always active } +void GetHairAngle(float3 T, float3 V, float3 L, + out float sinThetaI, out float sinThetaR, out float cosThetaD, out float cosPhi) +{ + // TODO: Optimize the math. For now we get everything in terms of the approximated BSDF. + // It could be nice to generalize this as a spherical coordinate angle alternative to GetBSDFAngle + + // Transform to the local frame for spherical coordinates + float3x3 frame = GetLocalFrame(T); + float3 I = TransformWorldToTangent(L, frame); + float3 R = TransformWorldToTangent(V, frame); + + // Longitudinal angle. + sinThetaI = sin(HALF_PI - acos(I.z)); + sinThetaR = sin(HALF_PI - acos(R.z)); + cosThetaD = 0; // cos((cosThetaR - cosThetaI) * 0.5); + + // Azimuthal angle. + float phiI = atan2(I.y, I.x); + float phiR = atan2(R.y, R.x); + cosPhi = cos(phiR - phiI); +} + CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) { CBSDF cbsdf; @@ -514,7 +548,54 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #ifdef HAIR_DISPLAY_REFERENCE_BSDF cbsdf = EvaluateMarschnerReference(V, L, bsdfData); #else + // Approximation of the three primary paths in a hair fiber (R, TT, TRT), with concepts from: + // "Strand-Based Hair Rendering in Frostbite" (Tafuri 2019) + // "A Practical and Controllable Hair and Fur Model for Production Path Tracing" (Chiang 2016) + // "Physically Based Hair Shading in Unreal" (Karis 2016) + // "An Energy-Conserving Hair Reflectance Model" (d'Eon 2011) + // "Light Scattering from Human Hair Fibers" (Marschner 2003) + + // Retrieve angles via spherical coordinates in the hair shading space. + float sinThetaI, sinThetaR, cosThetaD, cosPhi; + GetHairAngle(T, V, L, sinThetaI, sinThetaR, cosThetaD, cosPhi); + + float3 S = 0; + + float M, D; + float3 A; + + // R Path + // -------------------------------------------------------- + #if 1 + { + M = D_LongitudinalScatteringGaussian(sinThetaI + sinThetaR - bsdfData.cuticleAngleR, bsdfData.roughnessLR); + + // Distribution and attenuation for the this path as proposed by d'Eon et al, replaced with a trig identity for cos half phi. + D = 0.25 * sqrt(0.5 + 0.5 * cosPhi); + A = F_Schlick(bsdfData.fresnel0, sqrt(0.5 + 0.5 * LdotV)); + + S += M * A * D; + } + #endif + + // TT Path + // -------------------------------------------------------- + #if 0 + { + // TODO + } + #endif + + // TRT Path + // -------------------------------------------------------- + #if 0 + { + // TODO + } + #endif + // Transmission event is built into the model. + cbsdf.specR = S; #endif } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl index 3ab23570596..49e08ddd348 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl @@ -340,8 +340,8 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) { // TEMP: Lobe (R, TT, TRT, TRRT) selection // if (p == 0) continue; - // if (p == 1) continue; - // if (p == 2) continue; + if (p == 1) continue; + if (p == 2) continue; S += LongitudinalScattering(p, inputs) * AzimuthalScattering(p, inputs); } From 3533017f0365230716a39355fc461a5c9349453a Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 18 May 2021 12:16:06 -0400 Subject: [PATCH 13/73] Initial commit TRT approximation --- .../Runtime/Material/Hair/Hair.cs | 2 + .../Runtime/Material/Hair/Hair.cs.hlsl | 27 ++--- .../Runtime/Material/Hair/Hair.hlsl | 99 +++++++++++++------ .../Runtime/Material/Hair/HairReference.hlsl | 41 ++++---- 4 files changed, 111 insertions(+), 58 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 7c285e6b82b..0351a7608b1 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -135,6 +135,8 @@ public struct BSDFData public float secondarySpecularShift; // Marschner + public Vector3 absorption; + public float lightPathLength; public float cuticleAngleR; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index f759824d0f5..4d7b8ed732f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -64,17 +64,18 @@ #define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_EXPONENT (1472) #define DEBUGVIEW_HAIR_BSDFDATA_SPECULAR_SHIFT (1473) #define DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_SHIFT (1474) -#define DEBUGVIEW_HAIR_BSDFDATA_LIGHT_PATH_LENGTH (1475) -#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_R (1476) -#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TT (1477) -#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TRT (1478) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LR (1479) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTT (1480) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTRT (1481) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_AR (1482) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATT (1483) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATRT (1484) -#define DEBUGVIEW_HAIR_BSDFDATA_IOR (1485) +#define DEBUGVIEW_HAIR_BSDFDATA_ABSORPTION (1475) +#define DEBUGVIEW_HAIR_BSDFDATA_LIGHT_PATH_LENGTH (1476) +#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_R (1477) +#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TT (1478) +#define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TRT (1479) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LR (1480) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTT (1481) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTRT (1482) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_AR (1483) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATT (1484) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATRT (1485) +#define DEBUGVIEW_HAIR_BSDFDATA_IOR (1486) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -129,6 +130,7 @@ struct BSDFData float secondarySpecularExponent; float specularShift; float secondarySpecularShift; + float3 absorption; float lightPathLength; float cuticleAngleR; float cuticleAngleTT; @@ -304,6 +306,9 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_SECONDARY_SPECULAR_SHIFT: result = bsdfdata.secondarySpecularShift.xxx; break; + case DEBUGVIEW_HAIR_BSDFDATA_ABSORPTION: + result = bsdfdata.absorption; + break; case DEBUGVIEW_HAIR_BSDFDATA_LIGHT_PATH_LENGTH: result = bsdfdata.lightPathLength.xxx; break; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index cb9e513ffc7..de423bb4660 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -17,7 +17,10 @@ #define DEFAULT_HAIR_SPECULAR_VALUE 0.0465 // Hair is IOR 1.55 -// #define HAIR_DISPLAY_REFERENCE_BSDF +#define HAIR_TT_OFFSET_VALUE 0 +#define HAIR_TRT_OFFSET_VALUE sqrt(3) / 2 + +#define HAIR_DISPLAY_REFERENCE_BSDF // #define HAIR_DISPLAY_REFERENCE_IBL //----------------------------------------------------------------------------- @@ -36,6 +39,14 @@ real D_LongitudinalScatteringGaussian(real theta, real beta) return rcp(beta * sqrtTwoPi) * exp(-0.5 * v * v); } +float ModifiedRefractionIndex(float eta, float cosThetaD) +{ + // Use the original derivation and not the approximation, since the approximation + // assumes human hair IOR (1.55), and we parametrize IOR. + float sinThetaD = sqrt(1 - Sq(cosThetaD)); + return sqrt(Sq(eta) - Sq(sinThetaD)) / cosThetaD; +} + // Ref: A Practical and Controllable Hair and Fur Model for Production Path Tracing float3 DiffuseColorToAbsorption(float3 diffuseColor, float azimuthalRoughness) { @@ -208,7 +219,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) // Note: Light Path Length is computed per-light. // Absorption - bsdfData.diffuseColor = DiffuseColorToAbsorption(surfaceData.diffuseColor, surfaceData.roughnessAzimuthal); + bsdfData.absorption = DiffuseColorToAbsorption(surfaceData.diffuseColor, surfaceData.roughnessAzimuthal); // Note: The following angle and roughness terms are derived from Marschner's original paper. @@ -220,15 +231,16 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) // Longitudinal Roughness const float roughnessL = PerceptualRoughnessToRoughness(surfaceData.roughnessLongitudinal); - bsdfData.roughnessLR = roughnessL; + bsdfData.roughnessLR = roughnessL * surfaceData.roughnessPrimaryReflection; bsdfData.roughnessLTT = roughnessL * 0.5; bsdfData.roughnessLTRT = roughnessL * 2.0; // Azimuthal Roughness - const float roughnessA = surfaceData.roughnessAzimuthal; + // TODO: Do we need one per-lobe? + const float roughnessA = PerceptualRoughnessToRoughness(surfaceData.roughnessAzimuthal); bsdfData.roughnessAR = roughnessA; - bsdfData.roughnessATT = roughnessA * 0.5; - bsdfData.roughnessATRT = roughnessA * 2.0; + bsdfData.roughnessATT = roughnessA; // * 0.5; + bsdfData.roughnessATRT = roughnessA; // * 2.0; // Refraction Index bsdfData.ior = surfaceData.ior; @@ -461,11 +473,10 @@ bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD return true; // Due to either reflection or transmission being always active } -void GetHairAngle(float3 T, float3 V, float3 L, - out float sinThetaI, out float sinThetaR, out float cosThetaD, out float cosPhi) +void GetHairAngle(float3 T, float3 V, float3 L, float eta, + out float sinThetaI, out float sinThetaR, out float cosThetaD, out float cosThetaT, out float thetaH, out float cosPhi) { - // TODO: Optimize the math. For now we get everything in terms of the approximated BSDF. - // It could be nice to generalize this as a spherical coordinate angle alternative to GetBSDFAngle + // TODO: Optimize the math (ie inverse trig). For now, just get everything in terms of the BSDF approximation. // Transform to the local frame for spherical coordinates float3x3 frame = GetLocalFrame(T); @@ -473,13 +484,20 @@ void GetHairAngle(float3 T, float3 V, float3 L, float3 R = TransformWorldToTangent(V, frame); // Longitudinal angle. - sinThetaI = sin(HALF_PI - acos(I.z)); - sinThetaR = sin(HALF_PI - acos(R.z)); - cosThetaD = 0; // cos((cosThetaR - cosThetaI) * 0.5); + float thetaI = HALF_PI - acos(I.z); + float thetaR = HALF_PI - acos(R.z); + sinThetaI = sin(thetaI); + sinThetaR = sin(thetaR); + cosThetaD = cos((thetaR - thetaI) * 0.5); + thetaH = (thetaI + thetaR) * 0.5; + + // Refraction angle (required for absorption) + float sinThetaT = sinThetaI / eta; + cosThetaT = sqrt(1 - Sq(sinThetaT)); // Azimuthal angle. - float phiI = atan2(I.y, I.x); - float phiR = atan2(R.y, R.x); + float phiI = FastAtan2(I.y, I.x); + float phiR = FastAtan2(R.y, R.x); cosPhi = cos(phiR - phiI); } @@ -555,22 +573,30 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // "An Energy-Conserving Hair Reflectance Model" (d'Eon 2011) // "Light Scattering from Human Hair Fibers" (Marschner 2003) + float eta = bsdfData.ior; + // Retrieve angles via spherical coordinates in the hair shading space. - float sinThetaI, sinThetaR, cosThetaD, cosPhi; - GetHairAngle(T, V, L, sinThetaI, sinThetaR, cosThetaD, cosPhi); + float sinThetaI, sinThetaR, cosThetaD, cosThetaT, thetaH, cosPhi; + GetHairAngle(T, V, L, eta, sinThetaI, sinThetaR, cosThetaD, cosThetaT, thetaH, cosPhi); + + // The index of refraction that can be used to analyze scattering in the normal plane (Bravais' Law). + float etaPrime = ModifiedRefractionIndex(eta, cosThetaD); + + // Reduced absorption coefficient. + float3 muPrime = bsdfData.absorption / cosThetaT; - float3 S = 0; + // Various terms reused between lobe evaluation. + float M, D, F = 0; + float3 A, T, S = 0; - float M, D; - float3 A; + // Solve the first three lobes (R, TT, TRT). - // R Path - // -------------------------------------------------------- + // R #if 1 { - M = D_LongitudinalScatteringGaussian(sinThetaI + sinThetaR - bsdfData.cuticleAngleR, bsdfData.roughnessLR); + M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleR, bsdfData.roughnessLR); - // Distribution and attenuation for the this path as proposed by d'Eon et al, replaced with a trig identity for cos half phi. + // Distribution and attenuation for this path as proposed by d'Eon et al, replaced with a trig identity for cos half phi. D = 0.25 * sqrt(0.5 + 0.5 * cosPhi); A = F_Schlick(bsdfData.fresnel0, sqrt(0.5 + 0.5 * LdotV)); @@ -578,19 +604,32 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD } #endif - // TT Path - // -------------------------------------------------------- + // TT #if 0 { // TODO } #endif - // TRT Path - // -------------------------------------------------------- - #if 0 + // TRT + #if 1 { - // TODO + M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTRT, bsdfData.roughnessLTRT); + + // This lobe's distribution is determined by Frostbite's improvement over Karis' TRT approximation (maintaining Azimuthal Roughness). + // TODO: This can be moved out of the BSDF evaluation. + float scaleFactor = saturate(1.5 * (1 - bsdfData.roughnessATRT)); + D = scaleFactor * exp(scaleFactor * (17.0 * cosPhi - 16.78)); + + // Attenutation + const float gammatTRT = asin(HAIR_TRT_OFFSET_VALUE / etaPrime); + + // Note: cos(arcsin(√3/2)) = 0.5 + F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD * 0.5)); + T = exp(-2 * muPrime * (1 + cos(2 * gammatTRT))); + A = Sq(1 - F) * F * Sq(T); + + S += M * A * D; } #endif diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl index 49e08ddd348..1540ecbaba0 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl @@ -1,4 +1,5 @@ // #define HAIR_REFERENCE_NEAR_FIELD +// #define HAIR_REFERENCE_LONGITUDINAL_ENERGY_CONSERVING struct ReferenceInputs { @@ -42,9 +43,13 @@ float HyperbolicCosecant(float x) // Plot: https://www.desmos.com/calculator/4dnfmn9xal float RoughnessToLongitudinalVariance(float roughness) { +#ifdef HAIR_REFERENCE_LONGITUDINAL_ENERGY_CONSERVING float beta = roughness; float v = (0.726 * beta) + (0.812 * beta * beta) + (3.7 * pow(beta, 20.0)); return v * v; +#else + return roughness; +#endif } float RoughnessToLogisticalScale(float roughness) @@ -98,7 +103,7 @@ float AzimuthalDirection(uint p, float etaPrime, float h) { float gammaI = asin(h); float gammaT = asin(h / etaPrime); - float omega = (2 * p * gammaT) - (2 * gammaI) + p * PI; + float omega = (2 * p * gammaT) - (2 * gammaI) + (p * PI); return omega; } @@ -109,7 +114,7 @@ float3 Attenuation(uint p, float h, float LdotV, float thetaD, float etaPrime, f if (p == 0) { - // Attenuation term for R is a special case. + // Attenuation term for R is a special case.s A = F_Schlick(fresnel0, sqrt(0.5 + 0.5 * LdotV)); } else @@ -131,7 +136,7 @@ float3 Attenuation(uint p, float h, float LdotV, float thetaD, float etaPrime, f // Ref: [A Practical and Controllable Hair and Fur Model for Production Path Tracing] // Plot: https://www.desmos.com/calculator/cmy0eig6ln -float LogisticAzimuthalAngularDistribution(float s, float phi) +float LogisticAzimuthalAngularDistribution(float x, float s) { const float a = -PI; const float b = +PI; @@ -141,10 +146,8 @@ float LogisticAzimuthalAngularDistribution(float s, float phi) float normalizeTerm = rcp(rcp(1 + exp(a / s)) - rcp(1 + exp(b / s))); - float distributionN = exp(-phi / s); - - float distributionD = 1 + exp(-phi / s); - distributionD = s * distributionD * distributionD; + float distributionN = exp(-x / s); + float distributionD = s * Sq(1 + distributionN); return normalizeTerm * (distributionN / distributionD); } @@ -182,6 +185,7 @@ float3 AzimuthalScatteringNearField(uint p, ReferenceInputs inputs) azimuth = RemapLogisticAngle(azimuth); float D = LogisticAzimuthalAngularDistribution(inputs.logisticScale, inputs.phi - azimuth); + // float D = GaussianDetector(inputs.logisticScale, inputs.phi - azimuth); return A * D; } @@ -218,13 +222,16 @@ float3 AzimuthalScatteringFarField(uint p, ReferenceInputs inputs) // Plot: https://www.desmos.com/calculator/jmf1ofgfdv float LongitudinalScattering(uint p, ReferenceInputs inputs) { - const float v = max(0.0001, inputs.variances[p]); - const float thetaI = inputs.thetaI; - const float thetaR = inputs.thetaR - radians(inputs.shifts[p]); + const float v = max(0.0001, inputs.variances[p]); + float thetaI = inputs.thetaI; + float thetaR = inputs.thetaR; float M; -#if 1 +#ifdef HAIR_REFERENCE_LONGITUDINAL_ENERGY_CONSERVING + // Apply the cuticle shift. + thetaR -= inputs.shifts[p]; + if (v < 0.1) { // Ref: [https://publons.com/review/414383/] @@ -253,8 +260,8 @@ float LongitudinalScattering(uint p, ReferenceInputs inputs) M *= BesselI((cos(-thetaI) * cos(thetaR)) / v); } #else - // TODO: Marschner Gaussian - M = 1; + const float thetaH = 0.5 * (thetaI + thetaR); + M = D_LongitudinalScatteringGaussian(thetaH - inputs.shifts[p], v); #endif return M; @@ -321,7 +328,7 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) #ifdef HAIR_REFERENCE_NEAR_FIELD // Evaluation of h in the normal plane, given by gammaI = asin(h), where gammaI is the incident angle. // Since we are using a near-field method, we can use the true h value (rather than integrating over the whole fiber width). - inputs.h = dot(cross(bsdfData.normalWS, X), Z); + inputs.h = sin(acos(dot(bsdfData.normalWS, L))); inputs.logisticScale = RoughnessToLogisticalScale(bsdfData.roughnessAR); #else @@ -330,7 +337,7 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) #endif float thetaT = asin(sin(inputs.thetaR / inputs.eta)); - inputs.absorptionP = bsdfData.diffuseColor / cos(thetaT); + inputs.absorptionP = bsdfData.absorption / cos(thetaT); } float3 S = 0; @@ -340,8 +347,8 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) { // TEMP: Lobe (R, TT, TRT, TRRT) selection // if (p == 0) continue; - if (p == 1) continue; - if (p == 2) continue; + // if (p == 1) continue; + // if (p == 2) continue; S += LongitudinalScattering(p, inputs) * AzimuthalScattering(p, inputs); } From 819ae15fe46980da1443f6efa2c02dfd7dd0adbf Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 19 May 2021 08:43:41 -0400 Subject: [PATCH 14/73] Add TT attenuation term --- .../Runtime/Material/Hair/Hair.hlsl | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index de423bb4660..63b8572a45d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -17,10 +17,13 @@ #define DEFAULT_HAIR_SPECULAR_VALUE 0.0465 // Hair is IOR 1.55 -#define HAIR_TT_OFFSET_VALUE 0 -#define HAIR_TRT_OFFSET_VALUE sqrt(3) / 2 +// These H offset values (-1, 1) are used to approximate the integral for far-field azimuthal scattering. +// For TT, the dominant contribution comes from light transmitted straight through the fiber (thus 0). +// For TRT, a similar observation is made and √3/2 is used to approximate. +#define HAIR_H_TT 0.0 +#define HAIR_H_TRT 0.866 -#define HAIR_DISPLAY_REFERENCE_BSDF +// #define HAIR_DISPLAY_REFERENCE_BSDF // #define HAIR_DISPLAY_REFERENCE_IBL //----------------------------------------------------------------------------- @@ -607,7 +610,17 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // TT #if 0 { - // TODO + M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTT, bsdfData.roughnessLTT); + + // This lobe's distribution is determined by sampling gaussian weights from a pre-integrated LUT of the distribution and evaluating the gaussian. + D = 1; + + // Attenutation + F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD)); // cos(arcsin(0.0)) = 1.0 + T = exp(-2 * muPrime * (1 + cos(2 * asin(HAIR_H_TT / etaPrime)))); + A = Sq(1 - F) * T; + + S += M * A * D; } #endif @@ -622,11 +635,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD D = scaleFactor * exp(scaleFactor * (17.0 * cosPhi - 16.78)); // Attenutation - const float gammatTRT = asin(HAIR_TRT_OFFSET_VALUE / etaPrime); - - // Note: cos(arcsin(√3/2)) = 0.5 - F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD * 0.5)); - T = exp(-2 * muPrime * (1 + cos(2 * gammatTRT))); + F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD * 0.5)); // cos(arcsin(√3/2)) = 0.5 + T = exp(-2 * muPrime * (1 + cos(2 * asin(HAIR_H_TRT / etaPrime)))); A = Sq(1 - F) * F * Sq(T); S += M * A * D; From 601281ed559c69c6200b2152792f8114ae68a5e3 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 19 May 2021 11:12:31 -0400 Subject: [PATCH 15/73] Further simplify the attenuation TT --- .../Runtime/Material/Hair/Hair.hlsl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 9486ef91a5b..faa52bbc3d6 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -615,9 +615,9 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // This lobe's distribution is determined by sampling gaussian weights from a pre-integrated LUT of the distribution and evaluating the gaussian. D = 1; - // Attenutation - F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD)); // cos(arcsin(0.0)) = 1.0 - T = exp(-2 * muPrime * (1 + cos(2 * asin(HAIR_H_TT / etaPrime)))); + // Attenutation (Simplified for H = 0) + F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD)); + T = exp(-2 * muPrime); A = Sq(1 - F) * T; S += M * A * D; @@ -634,8 +634,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD float scaleFactor = saturate(1.5 * (1 - bsdfData.roughnessATRT)); D = scaleFactor * exp(scaleFactor * (17.0 * cosPhi - 16.78)); - // Attenutation - F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD * 0.5)); // cos(arcsin(v3/2)) = 0.5 + // Attenutation (Simplified for H = v3/2) + F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD * 0.5)); T = exp(-2 * muPrime * (1 + cos(2 * asin(HAIR_H_TRT / etaPrime)))); A = Sq(1 - F) * F * Sq(T); From bfe3297939266e3e2dc72b5624653aadfa13014f Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 24 May 2021 20:15:42 -0400 Subject: [PATCH 16/73] Add roughened azimuthal scattering, remove IOR param, add TT distribution --- .../Material/Hair/ShaderGraph/HairData.cs | 9 ++ .../Hair/ShaderGraph/HairPropertyBlocks.cs | 4 + .../Hair/ShaderGraph/HairSubTarget.cs | 21 ++--- .../ShaderPassDefine.template.hlsl | 1 + .../Runtime/Material/Hair/Hair.cs | 10 +-- .../Runtime/Material/Hair/Hair.cs.hlsl | 44 ++++----- .../Runtime/Material/Hair/Hair.hlsl | 89 ++++++++++--------- .../Material/Hair/HairPathTracing.hlsl | 15 ++-- .../Runtime/Material/Hair/HairReference.hlsl | 12 +-- .../Hair/PreIntegratedAzimuthalScattering.cs | 2 +- .../PreIntegratedAzimuthalScattering.hlsl | 15 +++- .../PreIntegratedAzimuthalScattering.shader | 67 +++++++++++++- 12 files changed, 180 insertions(+), 109 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs index 5040e43a3ad..797502efc50 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs @@ -42,5 +42,14 @@ public bool useLightFacingNormal get => m_UseLightFacingNormal; set => m_UseLightFacingNormal = value; } + + [SerializeField] + bool m_UseRoughenedAzimuthalScattering = false; + + public bool useRoughenedAzimuthalScattering + { + get => m_UseRoughenedAzimuthalScattering; + set => m_UseRoughenedAzimuthalScattering = value; + } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 0726c5bb3d6..2eebb10daee 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -39,6 +39,7 @@ class HairAdvancedOptionsPropertyBlock : AdvancedOptionsPropertyBlock class Styles { public static GUIContent useLightFacingNormal = new GUIContent("Use Light Facing Normal", "TODO"); + public static GUIContent useRoughenedAzimuthalScattering = new GUIContent("Use Roughened Azimuthal Scattering", ""); public static GUIContent scatteringMode = new GUIContent("Scattering Mode", ""); } @@ -54,7 +55,10 @@ protected override void CreatePropertyGUI() AddProperty(Styles.useLightFacingNormal, () => hairData.useLightFacingNormal, (newValue) => hairData.useLightFacingNormal = newValue); if (hairData.materialType == HairData.MaterialType.Marschner) + { + AddProperty(Styles.useRoughenedAzimuthalScattering, () => hairData.useRoughenedAzimuthalScattering, (newValue) => hairData.useRoughenedAzimuthalScattering = newValue); AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); + } } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index adceca6c58f..5e7fff83beb 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -50,13 +50,14 @@ public HairData hairData set => m_HairData = value; } - public static FieldDescriptor KajiyaKay = new FieldDescriptor(kMaterial, "KajiyaKay", "_MATERIAL_FEATURE_HAIR_KAJIYA_KAY 1"); - public static FieldDescriptor Marschner = new FieldDescriptor(kMaterial, "Marschner", "_MATERIAL_FEATURE_HAIR_MARSCHNER 1"); - public static FieldDescriptor RimTransmissionIntensity = new FieldDescriptor(string.Empty, "RimTransmissionIntensity", "_RIM_TRANSMISSION_INTENSITY 1"); - public static FieldDescriptor HairStrandDirection = new FieldDescriptor(string.Empty, "HairStrandDirection", "_HAIR_STRAND_DIRECTION 1"); - public static FieldDescriptor UseLightFacingNormal = new FieldDescriptor(string.Empty, "UseLightFacingNormal", "_USE_LIGHT_FACING_NORMAL 1"); - public static FieldDescriptor Transmittance = new FieldDescriptor(string.Empty, "Transmittance", "_TRANSMITTANCE 1"); - public static FieldDescriptor ScatteringDensityVolume = new FieldDescriptor(string.Empty, "ScatteringDensityVolume", "_USE_DENSITY_VOLUME_SCATTERING 1"); + public static FieldDescriptor KajiyaKay = new FieldDescriptor(kMaterial, "KajiyaKay", "_MATERIAL_FEATURE_HAIR_KAJIYA_KAY 1"); + public static FieldDescriptor Marschner = new FieldDescriptor(kMaterial, "Marschner", "_MATERIAL_FEATURE_HAIR_MARSCHNER 1"); + public static FieldDescriptor RimTransmissionIntensity = new FieldDescriptor(string.Empty, "RimTransmissionIntensity", "_RIM_TRANSMISSION_INTENSITY 1"); + public static FieldDescriptor HairStrandDirection = new FieldDescriptor(string.Empty, "HairStrandDirection", "_HAIR_STRAND_DIRECTION 1"); + public static FieldDescriptor UseLightFacingNormal = new FieldDescriptor(string.Empty, "UseLightFacingNormal", "_USE_LIGHT_FACING_NORMAL 1"); + public static FieldDescriptor Transmittance = new FieldDescriptor(string.Empty, "Transmittance", "_TRANSMITTANCE 1"); + public static FieldDescriptor UseRoughenedAzimuthalScattering = new FieldDescriptor(string.Empty, "UseRoughenedAzimuthalScattering", "_USE_ROUGHENED_AZIMUTHAL_SCATTERING 1"); + public static FieldDescriptor ScatteringDensityVolume = new FieldDescriptor(string.Empty, "ScatteringDensityVolume", "_USE_DENSITY_VOLUME_SCATTERING 1"); public override void GetFields(ref TargetFieldContext context) { @@ -71,7 +72,8 @@ public override void GetFields(ref TargetFieldContext context) context.AddField(RimTransmissionIntensity, descs.Contains(HDBlockFields.SurfaceDescription.RimTransmissionIntensity) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.RimTransmissionIntensity)); context.AddField(UseLightFacingNormal, hairData.useLightFacingNormal); context.AddField(Transmittance, descs.Contains(HDBlockFields.SurfaceDescription.Transmittance) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.Transmittance)); - context.AddField(ScatteringDensityVolume, hairData.scatteringMode == HairData.ScatteringMode.DensityVolume); + context.AddField(UseRoughenedAzimuthalScattering, hairData.useRoughenedAzimuthalScattering); + context.AddField(ScatteringDensityVolume, hairData.scatteringMode == HairData.ScatteringMode.DensityVolume); // Misc context.AddField(SpecularAA, lightingData.specularAA && @@ -100,9 +102,8 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) { context.AddBlock(HDBlockFields.SurfaceDescription.HairStrandDirection); context.AddBlock(HDBlockFields.SurfaceDescription.LongitudinalRoughness); - context.AddBlock(HDBlockFields.SurfaceDescription.AzimuthalRoughness); + context.AddBlock(HDBlockFields.SurfaceDescription.AzimuthalRoughness, hairData.useRoughenedAzimuthalScattering); context.AddBlock(HDBlockFields.SurfaceDescription.PrimaryReflectionRoughness); - context.AddBlock(HDBlockFields.SurfaceDescription.RefractionIndex); context.AddBlock(HDBlockFields.SurfaceDescription.CuticleAngle); } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl index eafed664206..02118d65168 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl @@ -7,3 +7,4 @@ $SpecularOcclusionFromAOBentNormal: #define _SPECULAR_OCCLUSION_FROM_AO_BENT_NOR $SpecularOcclusionCustom: #define _SPECULAR_OCCLUSION_CUSTOM 1 $Specular.AA: #define _ENABLE_GEOMETRIC_SPECULAR_AA 1 $ScatteringDensityVolume: #define _USE_DENSITY_VOLUME_SCATTERING 1 +$UseRoughenedAzimuthalScattering: #define _USE_ROUGHENED_AZIMUTHAL_SCATTERING 1 diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 0351a7608b1..67ae499f1a5 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -143,13 +143,11 @@ public struct BSDFData public float cuticleAngleTT; public float cuticleAngleTRT; - public float roughnessLR; - public float roughnessLTT; - public float roughnessLTRT; + public float roughnessR; + public float roughnessTT; + public float roughnessTRT; - public float roughnessAR; - public float roughnessATT; - public float roughnessATRT; + public float roughnessRadial; public float ior; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 4d7b8ed732f..95a50d56c4f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -69,13 +69,11 @@ #define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_R (1477) #define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TT (1478) #define DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TRT (1479) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LR (1480) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTT (1481) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTRT (1482) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_AR (1483) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATT (1484) -#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATRT (1485) -#define DEBUGVIEW_HAIR_BSDFDATA_IOR (1486) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_R (1480) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT (1481) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) +#define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) +#define DEBUGVIEW_HAIR_BSDFDATA_IOR (1484) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -135,12 +133,10 @@ struct BSDFData float cuticleAngleR; float cuticleAngleTT; float cuticleAngleTRT; - float roughnessLR; - float roughnessLTT; - float roughnessLTRT; - float roughnessAR; - float roughnessATT; - float roughnessATRT; + float roughnessR; + float roughnessTT; + float roughnessTRT; + float roughnessRadial; float ior; }; @@ -321,23 +317,17 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_CUTICLE_ANGLE_TRT: result = bsdfdata.cuticleAngleTRT.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LR: - result = bsdfdata.roughnessLR.xxx; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_R: + result = bsdfdata.roughnessR.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTT: - result = bsdfdata.roughnessLTT.xxx; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT: + result = bsdfdata.roughnessTT.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_LTRT: - result = bsdfdata.roughnessLTRT.xxx; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT: + result = bsdfdata.roughnessTRT.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_AR: - result = bsdfdata.roughnessAR.xxx; - break; - case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATT: - result = bsdfdata.roughnessATT.xxx; - break; - case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_ATRT: - result = bsdfdata.roughnessATRT.xxx; + case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL: + result = bsdfdata.roughnessRadial.xxx; break; case DEBUGVIEW_HAIR_BSDFDATA_IOR: result = bsdfdata.ior.xxx; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index faa52bbc3d6..6d1fedd2532 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -2,7 +2,7 @@ // SurfaceData and BSDFData //----------------------------------------------------------------------------- // SurfaceData is defined in Hair.cs which generates Hair.cs.hlsl -#include "Hair.cs.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/SubsurfaceScattering/SubsurfaceScattering.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/NormalBuffer.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/VolumeRendering.hlsl" @@ -13,7 +13,6 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/LTCAreaLight/LTCAreaLight.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD.hlsl" -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl" #define DEFAULT_HAIR_SPECULAR_VALUE 0.0465 // Hair is IOR 1.55 @@ -42,12 +41,14 @@ real D_LongitudinalScatteringGaussian(real theta, real beta) return rcp(beta * sqrtTwoPi) * exp(-0.5 * v * v); } -float ModifiedRefractionIndex(float eta, float cosThetaD) +float ModifiedRefractionIndex(float cosThetaD) { - // Use the original derivation and not the approximation, since the approximation - // assumes human hair IOR (1.55), and we parametrize IOR. - float sinThetaD = sqrt(1 - Sq(cosThetaD)); - return sqrt(Sq(eta) - Sq(sinThetaD)) / cosThetaD; + // Original derivation of modified refraction index for arbitrary IOR. + // float sinThetaD = sqrt(1 - Sq(cosThetaD)); + // return sqrt(Sq(eta) - Sq(sinThetaD)) / cosThetaD; + + // Approximate the modified refraction index for human hair (1.55) + return 1.19 / cosThetaD + (0.36 * cosThetaD); } // Ref: A Practical and Controllable Hair and Fur Model for Production Path Tracing @@ -224,8 +225,6 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) // Absorption bsdfData.absorption = DiffuseColorToAbsorption(surfaceData.diffuseColor, surfaceData.roughnessAzimuthal); - // Note: The following angle and roughness terms are derived from Marschner's original paper. - // Cuticle Angle const float cuticleAngle = radians(surfaceData.cuticleAngle); bsdfData.cuticleAngleR = cuticleAngle; @@ -234,22 +233,14 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) // Longitudinal Roughness const float roughnessL = PerceptualRoughnessToRoughness(surfaceData.roughnessLongitudinal); - bsdfData.roughnessLR = roughnessL * surfaceData.roughnessPrimaryReflection; - bsdfData.roughnessLTT = roughnessL * 0.5; - bsdfData.roughnessLTRT = roughnessL * 2.0; + bsdfData.roughnessR = roughnessL * surfaceData.roughnessPrimaryReflection; + bsdfData.roughnessTT = roughnessL * 0.5; + bsdfData.roughnessTRT = roughnessL * 2.0; // Azimuthal Roughness - // TODO: Do we need one per-lobe? - const float roughnessA = PerceptualRoughnessToRoughness(surfaceData.roughnessAzimuthal); - bsdfData.roughnessAR = roughnessA; - bsdfData.roughnessATT = roughnessA; // * 0.5; - bsdfData.roughnessATRT = roughnessA; // * 2.0; - - // Refraction Index - bsdfData.ior = surfaceData.ior; - - // We override the fresnel0 with the custom one (not 1.55 for human hair). - bsdfData.fresnel0 = IorToFresnel0(surfaceData.ior); + #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING + bsdfData.roughnessRadial = PerceptualRoughnessToRoughness(surfaceData.roughnessAzimuthal); + #endif } ApplyDebugToBSDFData(bsdfData); @@ -470,16 +461,17 @@ LightTransportData GetLightTransportData(SurfaceData surfaceData, BuiltinData bu //----------------------------------------------------------------------------- #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl" bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) { return true; // Due to either reflection or transmission being always active } -void GetHairAngle(float3 T, float3 V, float3 L, float eta, +void GetHairAngle(float3 T, float3 V, float3 L, out float sinThetaI, out float sinThetaR, out float cosThetaD, out float cosThetaT, out float thetaH, out float cosPhi) { - // TODO: Optimize the math (ie inverse trig). For now, just get everything in terms of the BSDF approximation. + // TODO: Optimize the math. For now, just get everything in terms of the BSDF approximation. // Transform to the local frame for spherical coordinates float3x3 frame = GetLocalFrame(T); @@ -495,7 +487,7 @@ void GetHairAngle(float3 T, float3 V, float3 L, float eta, thetaH = (thetaI + thetaR) * 0.5; // Refraction angle (required for absorption) - float sinThetaT = sinThetaI / eta; + float sinThetaT = sinThetaI / 1.55; cosThetaT = sqrt(1 - Sq(sinThetaT)); // Azimuthal angle. @@ -566,9 +558,9 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) { - #ifdef HAIR_DISPLAY_REFERENCE_BSDF +#ifdef HAIR_DISPLAY_REFERENCE_BSDF cbsdf = EvaluateMarschnerReference(V, L, bsdfData); - #else +#else // Approximation of the three primary paths in a hair fiber (R, TT, TRT), with concepts from: // "Strand-Based Hair Rendering in Frostbite" (Tafuri 2019) // "A Practical and Controllable Hair and Fur Model for Production Path Tracing" (Chiang 2016) @@ -576,14 +568,12 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // "An Energy-Conserving Hair Reflectance Model" (d'Eon 2011) // "Light Scattering from Human Hair Fibers" (Marschner 2003) - float eta = bsdfData.ior; - // Retrieve angles via spherical coordinates in the hair shading space. float sinThetaI, sinThetaR, cosThetaD, cosThetaT, thetaH, cosPhi; - GetHairAngle(T, V, L, eta, sinThetaI, sinThetaR, cosThetaD, cosThetaT, thetaH, cosPhi); + GetHairAngle(T, V, L, sinThetaI, sinThetaR, cosThetaD, cosThetaT, thetaH, cosPhi); // The index of refraction that can be used to analyze scattering in the normal plane (Bravais' Law). - float etaPrime = ModifiedRefractionIndex(eta, cosThetaD); + float etaPrime = ModifiedRefractionIndex(cosThetaD); // Reduced absorption coefficient. float3 muPrime = bsdfData.absorption / cosThetaT; @@ -597,7 +587,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // R #if 1 { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleR, bsdfData.roughnessLR); + M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleR, bsdfData.roughnessR); // Distribution and attenuation for this path as proposed by d'Eon et al, replaced with a trig identity for cos half phi. D = 0.25 * sqrt(0.5 + 0.5 * cosPhi); @@ -608,16 +598,23 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #endif // TT - #if 0 + #if 1 { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTT, bsdfData.roughnessLTT); + M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTT, bsdfData.roughnessTT); + #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING // This lobe's distribution is determined by sampling gaussian weights from a pre-integrated LUT of the distribution and evaluating the gaussian. - D = 1; + D = GetPreIntegratedAzimuthalScatteringTransmissionDistribution(bsdfData.roughnessRadial, cosThetaD, cosPhi); + #else + // Karis' approximation of Pixar's logisitic with scale of √0.35 + D = exp(-3.65 * cosPhi - 3.98); + #endif // Attenutation (Simplified for H = 0) - F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD)); - T = exp(-2 * muPrime); + // Note: H = ~0.55 seems to be more suitable for this lobe's attenuation, but H = 0 allows us to simplify more of the math at the cost of slightly more error. + // Plot: https://www.desmos.com/calculator/pum8esu6ot + F = F_Schlick(bsdfData.fresnel0, cosThetaD); + T = exp(-4 * muPrime); A = Sq(1 - F) * T; S += M * A * D; @@ -627,16 +624,20 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // TRT #if 1 { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTRT, bsdfData.roughnessLTRT); + M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTRT, bsdfData.roughnessTRT); + // TODO: Move this out of the BSDF evaluation. + #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING // This lobe's distribution is determined by Frostbite's improvement over Karis' TRT approximation (maintaining Azimuthal Roughness). - // TODO: This can be moved out of the BSDF evaluation. - float scaleFactor = saturate(1.5 * (1 - bsdfData.roughnessATRT)); + float scaleFactor = saturate(1.5 * (1 - bsdfData.roughnessRadial)); + #else + float scaleFactor = 1; + #endif D = scaleFactor * exp(scaleFactor * (17.0 * cosPhi - 16.78)); - // Attenutation (Simplified for H = v3/2) - F = F_Schlick(bsdfData.fresnel0, acos(cosThetaD * 0.5)); - T = exp(-2 * muPrime * (1 + cos(2 * asin(HAIR_H_TRT / etaPrime)))); + // Attenutation (Simplified for H = √3/2) + F = F_Schlick(bsdfData.fresnel0, cosThetaD * 0.5); + T = exp(-2 * muPrime * (1 + cos(2 * FastASin(HAIR_H_TRT / etaPrime)))); A = Sq(1 - F) * F * Sq(T); S += M * A * D; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl index ebddaf026d5..43c87687a6b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairPathTracing.hlsl @@ -29,36 +29,33 @@ void EvaluateMaterial(MaterialData mtlData, float3 sampleDir, out MaterialResult { Init(result); -<<<<<<< HEAD CBSDF cbsdf = EvaluateMarschnerReference(mtlData.V, sampleDir, mtlData.bsdfData); result.specValue = cbsdf.specR; // TODO: Importance Sample result.specPdf = INV_FOUR_PI; -======= - // TODO ->>>>>>> master } bool SampleMaterial(MaterialData mtlData, float3 inputSample, out float3 sampleDir, out MaterialResult result) { Init(result); -<<<<<<< HEAD // We sample the sphere due to reflective and transmittive events. sampleDir = SampleSphereUniform(inputSample.x, inputSample.y); EvaluateMaterial(mtlData, sampleDir, result); return true; -======= - // TODO +} - return false; ->>>>>>> master +float3 GetLightNormal(MaterialData mtlData) +{ + // If both diffuse and specular normals are quasi-indentical, return one of them, otherwise return a null vector + return dot(GetDiffuseNormal(mtlData), GetSpecularNormal(mtlData)) > 0.99 ? GetDiffuseNormal(mtlData) : float3(0.0, 0.0, 0.0); } + float AdjustPathRoughness(MaterialData mtlData, MaterialResult mtlResult, bool isSampleBelow, float pathRoughness) { // TODO diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl index 1540ecbaba0..bebbaf3e59a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl @@ -185,11 +185,11 @@ float3 AzimuthalScatteringNearField(uint p, ReferenceInputs inputs) azimuth = RemapLogisticAngle(azimuth); float D = LogisticAzimuthalAngularDistribution(inputs.logisticScale, inputs.phi - azimuth); - // float D = GaussianDetector(inputs.logisticScale, inputs.phi - azimuth); return A * D; } +// Plot: https://www.desmos.com/calculator/i86ekgtzlg float3 AzimuthalScatteringFarField(uint p, ReferenceInputs inputs) { // Integrate azimuthal scattering over the fiber width using a gaussian quadrature. @@ -308,9 +308,9 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) float phiR = atan2(R.y, R.x); inputs.phi = phiR - phiI; - inputs.variances[0] = RoughnessToLongitudinalVariance(bsdfData.roughnessLR); - inputs.variances[1] = RoughnessToLongitudinalVariance(bsdfData.roughnessLTT); - inputs.variances[2] = RoughnessToLongitudinalVariance(bsdfData.roughnessLTRT); + inputs.variances[0] = RoughnessToLongitudinalVariance(bsdfData.roughnessR); + inputs.variances[1] = RoughnessToLongitudinalVariance(bsdfData.roughnessTT); + inputs.variances[2] = RoughnessToLongitudinalVariance(bsdfData.roughnessTRT); inputs.shifts[0] = bsdfData.cuticleAngleR; inputs.shifts[1] = bsdfData.cuticleAngleTT; @@ -330,10 +330,10 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) // Since we are using a near-field method, we can use the true h value (rather than integrating over the whole fiber width). inputs.h = sin(acos(dot(bsdfData.normalWS, L))); - inputs.logisticScale = RoughnessToLogisticalScale(bsdfData.roughnessAR); + inputs.logisticScale = RoughnessToLogisticalScale(bsdfData.roughnessRadial); #else // TODO: Maintain the Disney parameterization for the far field model. - inputs.logisticScale = bsdfData.roughnessAR; + inputs.logisticScale = bsdfData.roughnessRadial; #endif float thetaT = asin(sin(inputs.thetaR / inputs.eta)); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs index 09242c24487..101604d2090 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs @@ -33,7 +33,7 @@ public static PreIntegratedAzimuthalScattering instance public void Build() { var res = (int)AzimuthalScatteringTexture.Resolution; - var format = GraphicsFormat.A2B10G10R10_UNormPack32; + var format = GraphicsFormat.R16G16_SFloat; m_PreIntegratedAzimuthalScatteringMaterial = CoreUtils.CreateEngineMaterial(HDRenderPipelineGlobalSettings.instance.renderPipelineResources.shaders.preIntegratedAzimuthalScatteringPS); m_PreIntegratedAzimuthalScatteringRT = new RenderTexture(res, res, 0, format); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl index a0f7a3e2f1b..ec099f54b9a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl @@ -2,9 +2,16 @@ TEXTURE2D(_PreIntegratedAzimuthalScattering); -// Returns the azimuthal scattering distribution term. -float GetPreIntegratedAzimuthalScattering(float beta, float theta, float phi) +// Returns the roughened azimuthal scattering TT distribution term. +float GetPreIntegratedAzimuthalScatteringTransmissionDistribution(float beta, float cosTheta, float cosPhi) { - // TODO: Evaluate a gaussian with the sampled weights from the LUT and Phi. - return 0; + float2 coord; + coord.x = cosTheta; + coord.y = FastACos(cosPhi) * INV_FOUR_PI + 0.5; + + // Sample the LUT. + return SAMPLE_TEXTURE2D_LOD(_PreIntegratedAzimuthalScattering, s_linear_clamp_sampler, coord, 0).x; + + // Evaluate the gaussian with the sampled weights. + // return weights.x * exp(-Sq(phi - weights.y)); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader index fe1c48555e8..26cc772a27f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader @@ -42,13 +42,76 @@ Shader "Hidden/HDRP/PreIntegratedAzimuthalScattering" return output; } + // TODO: Merge/Re-use + + // Ref: Light Scattering from Human Hair Fibers + float AzimuthalDirection(uint p, float etaPrime, float h) + { + float gammaI = asin(h); + float gammaT = asin(h / etaPrime); + + return (2 * p * gammaT) - (2 * gammaI) + (p * PI); + } + + float ModifiedRefractionIndex(float cosThetaD) + { + // Original derivation of modified refraction index for arbitrary IOR. + // float sinThetaD = sqrt(1 - Sq(cosThetaD)); + // return sqrt(Sq(eta) - Sq(sinThetaD)) / cosThetaD; + + // Approximate the modified refraction index for human hair (1.55) + return 1.19 / cosThetaD + (0.36 * cosThetaD); + } + + float Gaussian(float beta, float phi) + { + return exp(-0.5 * (phi * phi) / (beta * beta)) * rcp(sqrt(TWO_PI) * beta); + } + + // Ref: [An Energy-Conserving Hair Reflectance Model] + float GaussianDetector(float beta, float phi) + { + float D = 0; + + // Higher order detection is negligible for (beta < 80º). + int order = 4; + + for (int k = -order; k <= order; k++) + { + D += Gaussian(beta, phi - (TWO_PI * k)); + } + + return D; + } + + float4 Frag(Varyings input) : SV_Target { // We want the LUT to contain the entire [0, 1] range, without losing half a texel at each side. float2 coordLUT = RemapHalfTexelCoordTo01(input.texCoord, AZIMUTHALSCATTERINGTEXTURE_RESOLUTION); - // TODO: Integrate the azimuthal scattering for all beta, theta, and phi. Then, fit a gaussian for each phi. - return float4(coordLUT, 0, 1); + float beta = 0.35; + float cosThetaD = coordLUT.x; + float phi = coordLUT.y * FOUR_PI - TWO_PI; + + // Fixed at 1.55 (human hair). + float refractionIndex = ModifiedRefractionIndex(cosThetaD); + + const uint sampleCountDistribution = 1024; + + float D = 0; + + // Evaluate the distribution for this slice of phi. + for (uint k = 0; k < sampleCountDistribution; k++) + { + float h = 2 * ((float)k / sampleCountDistribution) - 1; + float omega = AzimuthalDirection(1, refractionIndex, h); + D += GaussianDetector(beta, phi - omega) * rcp(sampleCountDistribution); + } + + D *= 0.5; + + return float4(D, D, D, 1); } ENDHLSL From 17986e4c34af15a0e37ab24edc53cf4b647240f8 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 1 Jun 2021 11:36:00 -0400 Subject: [PATCH 17/73] Initial work for environment evaluation --- .../Runtime/Material/Hair/Hair.hlsl | 64 +++++++++++++------ 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 6d1fedd2532..18c1a8d94b7 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -415,25 +415,6 @@ PreLightData GetPreLightData(float3 V, PositionInputs posInput, inout BSDFData b return preLightData; } -//----------------------------------------------------------------------------- -// bake lighting function -//----------------------------------------------------------------------------- - -// This define allow to say that we implement a ModifyBakedDiffuseLighting function to be call in PostInitBuiltinData -#define MODIFY_BAKED_DIFFUSE_LIGHTING - -void ModifyBakedDiffuseLighting(float3 V, PositionInputs posInput, PreLightData preLightData, BSDFData bsdfData, inout BuiltinData builtinData) -{ - // Add GI transmission contribution to bakeDiffuseLighting, we then drop backBakeDiffuseLighting (i.e it is not used anymore, this save VGPR) - { - // TODO: disabled until further notice (not clear how to handle occlusion). - //builtinData.bakeDiffuseLighting += builtinData.backBakeDiffuseLighting * bsdfData.transmittance; - } - - // Premultiply (back) bake diffuse lighting information with diffuse pre-integration - builtinData.bakeDiffuseLighting *= preLightData.diffuseFGD * bsdfData.diffuseColor; -} - //----------------------------------------------------------------------------- // light transport functions //----------------------------------------------------------------------------- @@ -652,6 +633,45 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD return cbsdf; } +//----------------------------------------------------------------------------- +// bake lighting function +//----------------------------------------------------------------------------- + +// This define allow to say that we implement a ModifyBakedDiffuseLighting function to be call in PostInitBuiltinData +#define MODIFY_BAKED_DIFFUSE_LIGHTING + +void ModifyBakedDiffuseLighting(float3 V, PositionInputs posInput, PreLightData preLightData, BSDFData bsdfData, inout BuiltinData builtinData) +{ + // Add GI transmission contribution to bakeDiffuseLighting, we then drop backBakeDiffuseLighting (i.e it is not used anymore, this save VGPR) + { + // TODO: disabled until further notice (not clear how to handle occlusion). + //builtinData.bakeDiffuseLighting += builtinData.backBakeDiffuseLighting * bsdfData.transmittance; + } + + if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) + { + // [NOTE-MARSCHNER-IBL] + // For now we approximate Marschner IBL as proposed by Brian Karis in "Physically Based Hair Shading in Unreal": + + // Modify the roughness + bsdfData.roughnessR = saturate(bsdfData.roughnessR + 0.2); + bsdfData.roughnessTRT = saturate(bsdfData.roughnessTRT + 0.2); + + // This sample is treated as a directional light source and we evaluate the BSDF with it directly. + // TODO: Lobe mask for the TT lobe. + CBSDF cbsdf = EvaluateBSDF(V, bsdfData.normalWS, preLightData, bsdfData); + + // Repurpose the spherical harmonic sample of the environment lighting (sampled with the modified normal). + builtinData.bakeDiffuseLighting *= PI * cbsdf.specR; + } + else + { + // Premultiply (back) bake diffuse lighting information with diffuse pre-integration + builtinData.bakeDiffuseLighting *= preLightData.diffuseFGD * bsdfData.diffuseColor; + } +} + + //----------------------------------------------------------------------------- // Surface shading (all light types) below //----------------------------------------------------------------------------- @@ -965,6 +985,12 @@ IndirectLighting EvaluateBSDF_Env( LightLoopContext lightLoopContext, if (GPUImageBasedLightingType == GPUIMAGEBASEDLIGHTINGTYPE_REFRACTION) return lighting; + if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) + { + // See: [NOTE-MARSCHNER-IBL] + return lighting; + } + float3 envLighting; float3 positionWS = posInput.positionWS; float weight = 1.0; From d23fe8fe316ed1fe551118dfeeebfee50fde9d6c Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 1 Jun 2021 13:01:26 -0400 Subject: [PATCH 18/73] Add the approximated scattering mode. Move the environment evaluation to post evaluate BSDF --- .../Runtime/Material/Hair/Hair.hlsl | 107 +++++++++++------- 1 file changed, 65 insertions(+), 42 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 18c1a8d94b7..82792f61b5d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -415,6 +415,33 @@ PreLightData GetPreLightData(float3 V, PositionInputs posInput, inout BSDFData b return preLightData; } +//----------------------------------------------------------------------------- +// bake lighting function +//----------------------------------------------------------------------------- + +// This define allow to say that we implement a ModifyBakedDiffuseLighting function to be call in PostInitBuiltinData +#define MODIFY_BAKED_DIFFUSE_LIGHTING + +void ModifyBakedDiffuseLighting(float3 V, PositionInputs posInput, PreLightData preLightData, BSDFData bsdfData, inout BuiltinData builtinData) +{ + // Add GI transmission contribution to bakeDiffuseLighting, we then drop backBakeDiffuseLighting (i.e it is not used anymore, this save VGPR) + { + // TODO: disabled until further notice (not clear how to handle occlusion). + //builtinData.bakeDiffuseLighting += builtinData.backBakeDiffuseLighting * bsdfData.transmittance; + } + + if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) + { + // See: [NOTE-MARSCHNER-IBL] + builtinData.bakeDiffuseLighting *= PI; + } + else + { + // Premultiply (back) bake diffuse lighting information with diffuse pre-integration + builtinData.bakeDiffuseLighting *= preLightData.diffuseFGD * bsdfData.diffuseColor; + } +} + //----------------------------------------------------------------------------- // light transport functions //----------------------------------------------------------------------------- @@ -628,50 +655,26 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Transmission event is built into the model. cbsdf.specR = S; #endif - } - - return cbsdf; -} - -//----------------------------------------------------------------------------- -// bake lighting function -//----------------------------------------------------------------------------- -// This define allow to say that we implement a ModifyBakedDiffuseLighting function to be call in PostInitBuiltinData -#define MODIFY_BAKED_DIFFUSE_LIGHTING - -void ModifyBakedDiffuseLighting(float3 V, PositionInputs posInput, PreLightData preLightData, BSDFData bsdfData, inout BuiltinData builtinData) -{ - // Add GI transmission contribution to bakeDiffuseLighting, we then drop backBakeDiffuseLighting (i.e it is not used anymore, this save VGPR) - { - // TODO: disabled until further notice (not clear how to handle occlusion). - //builtinData.bakeDiffuseLighting += builtinData.backBakeDiffuseLighting * bsdfData.transmittance; + // Multiple Scattering + #if _USE_DENSITY_VOLUME_SCATTERING + cbsdf.diffR = 0; + #else + #if _USE_LIGHT_FACING_NORMAL + // See "Analytic Tangent Irradiance Environment Maps for Anisotropic Surfaces". + cbsdf.diffR = rcp(PI * PI) * clampedNdotL; + // Transmission is built into the model, and it's not exactly clear how to split it. + cbsdf.diffT = 0; + #else + // Double-sided Lambert. + cbsdf.diffR = Lambert() * clampedNdotL; + #endif // _USE_LIGHT_FACING_NORMAL + #endif // _USE_DENSITY_VOLUME_SCATTERING } - if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) - { - // [NOTE-MARSCHNER-IBL] - // For now we approximate Marschner IBL as proposed by Brian Karis in "Physically Based Hair Shading in Unreal": - - // Modify the roughness - bsdfData.roughnessR = saturate(bsdfData.roughnessR + 0.2); - bsdfData.roughnessTRT = saturate(bsdfData.roughnessTRT + 0.2); - - // This sample is treated as a directional light source and we evaluate the BSDF with it directly. - // TODO: Lobe mask for the TT lobe. - CBSDF cbsdf = EvaluateBSDF(V, bsdfData.normalWS, preLightData, bsdfData); - - // Repurpose the spherical harmonic sample of the environment lighting (sampled with the modified normal). - builtinData.bakeDiffuseLighting *= PI * cbsdf.specR; - } - else - { - // Premultiply (back) bake diffuse lighting information with diffuse pre-integration - builtinData.bakeDiffuseLighting *= preLightData.diffuseFGD * bsdfData.diffuseColor; - } + return cbsdf; } - //----------------------------------------------------------------------------- // Surface shading (all light types) below //----------------------------------------------------------------------------- @@ -1005,7 +1008,6 @@ IndirectLighting EvaluateBSDF_Env( LightLoopContext lightLoopContext, envLighting = preLightData.specularFGD * preLD.rgb; - // TODO: Marschner BSDF Env if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_KAJIYA_KAY)) { // We tint the HDRI with the secondary lob specular as it is more representatative of indirect lighting on hair. @@ -1032,10 +1034,31 @@ void PostEvaluateBSDF( LightLoopContext lightLoopContext, GetScreenSpaceAmbientOcclusionMultibounce(posInput.positionSS, preLightData.NdotV, bsdfData.perceptualRoughness, bsdfData.ambientOcclusion, bsdfData.specularOcclusion, bsdfData.diffuseColor, bsdfData.fresnel0, aoFactor); ApplyAmbientOcclusionFactor(aoFactor, builtinData, lighting); + float3 indirectDiffuse = builtinData.bakeDiffuseLighting; + float3 indirectSpecular = lighting.indirect.specularReflected; + + if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) + { + // [NOTE-MARSCHNER-IBL] + // For now we approximate Marschner IBL as proposed by Brian Karis in "Physically Based Hair Shading in Unreal": + + // Modify the roughness + bsdfData.roughnessR = saturate(bsdfData.roughnessR + 0.2); + bsdfData.roughnessTRT = saturate(bsdfData.roughnessTRT + 0.2); + + // This sample is treated as a directional light source and we evaluate the BSDF with it directly. + // TODO: Lobe mask for the TT lobe. + CBSDF cbsdf = EvaluateBSDF(V, bsdfData.normalWS, preLightData, bsdfData); + + // Repurpose the spherical harmonic sample of the environment lighting (sampled with the modified normal). + indirectDiffuse = cbsdf.diffR * builtinData.bakeDiffuseLighting * bsdfData.diffuseColor; + indirectSpecular = cbsdf.specR * builtinData.bakeDiffuseLighting; + } + // Apply the albedo to the direct diffuse lighting (only once). The indirect (baked) // diffuse lighting has already multiply the albedo in ModifyBakedDiffuseLighting(). - lightLoopOutput.diffuseLighting = bsdfData.diffuseColor * lighting.direct.diffuse + builtinData.bakeDiffuseLighting + builtinData.emissiveColor; - lightLoopOutput.specularLighting = lighting.direct.specular + lighting.indirect.specularReflected; + lightLoopOutput.diffuseLighting = bsdfData.diffuseColor * lighting.direct.diffuse + indirectDiffuse + builtinData.emissiveColor; + lightLoopOutput.specularLighting = lighting.direct.specular + indirectSpecular; #ifdef DEBUG_DISPLAY PostEvaluateBSDFDebugDisplay(aoFactor, builtinData, lighting, bsdfData.diffuseColor, lightLoopOutput); From 5bef0657f801ae85a6d78d97801f77f20537f9a6 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 1 Jun 2021 15:39:49 -0400 Subject: [PATCH 19/73] Disable area lights for Marschner (temporary until LTC is fixed for anisotropy) --- .../Runtime/Material/Hair/Hair.hlsl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 82792f61b5d..abaf49598e2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -919,6 +919,16 @@ DirectLighting EvaluateBSDF_Area(LightLoopContext lightLoopContext, PreLightData preLightData, LightData lightData, BSDFData bsdfData, BuiltinData builtinData) { + if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) + { + DirectLighting lighting; + ZERO_INITIALIZE(DirectLighting, lighting); + + // Currently, this model does not support area lights. Add the support once an issue is + // fixed with making an LTC fit for anisotropic materials. + return lighting; + } + if (lightData.lightType == GPULIGHTTYPE_TUBE) { return EvaluateBSDF_Line(lightLoopContext, V, posInput, preLightData, lightData, bsdfData, builtinData); From 30de2e3b270b0cec28e78327b6bdc870914d2d72 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 7 Jun 2021 12:49:46 -0400 Subject: [PATCH 20/73] Use the newly fitted gaussian coefficient LUT for azimuthal transmission roughness --- .../Runtime/Material/Hair/Hair.cs | 11 +- .../Runtime/Material/Hair/Hair.hlsl | 2 +- .../Runtime/Material/Hair/HairReference.hlsl | 2 +- .../Hair/PreIntegratedAzimuthalScattering.cs | 71 ---------- .../PreIntegratedAzimuthalScattering.cs.hlsl | 13 -- ...IntegratedAzimuthalScattering.cs.hlsl.meta | 7 - .../PreIntegratedAzimuthalScattering.cs.meta | 11 -- .../PreIntegratedAzimuthalScattering.hlsl | 54 ++++++-- .../PreIntegratedAzimuthalScattering.shader | 121 ----------------- ...eIntegratedAzimuthalScattering.shader.meta | 10 -- .../HDRenderPipelineRuntimeResources.cs | 6 +- .../HDRenderPipelineRuntimeResources.asset | 3 +- .../PreintegratedAzimuthalScattering.exr | Bin 0 -> 6961 bytes .../PreintegratedAzimuthalScattering.exr.meta | 122 ++++++++++++++++++ 14 files changed, 180 insertions(+), 253 deletions(-) delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl.meta delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.meta delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader.meta create mode 100644 com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr create mode 100644 com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr.meta diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 67ae499f1a5..4180042ad56 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -157,33 +157,36 @@ public struct BSDFData // Init precomputed texture //----------------------------------------------------------------------------- + private Texture2D m_PreIntegratedAzimuthalScatteringLUT; + public Hair() {} public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntimeResources defaultResources) { PreIntegratedFGD.instance.Build(PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse); LTCAreaLight.instance.Build(); - PreIntegratedAzimuthalScattering.instance.Build(); + + m_PreIntegratedAzimuthalScatteringLUT = defaultResources.textures.preintegratedAzimuthalScattering; } public override void Cleanup() { PreIntegratedFGD.instance.Cleanup(PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse); LTCAreaLight.instance.Cleanup(); - PreIntegratedAzimuthalScattering.instance.Cleanup(); } public override void RenderInit(CommandBuffer cmd) { PreIntegratedFGD.instance.RenderInit(PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse, cmd); - PreIntegratedAzimuthalScattering.instance.RenderInit(cmd); } public override void Bind(CommandBuffer cmd) { PreIntegratedFGD.instance.Bind(cmd, PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse); LTCAreaLight.instance.Bind(cmd); - PreIntegratedAzimuthalScattering.instance.Bind(cmd); + + if (m_PreIntegratedAzimuthalScatteringLUT != null) + cmd.SetGlobalTexture(HDShaderIDs._PreIntegratedAzimuthalScattering, m_PreIntegratedAzimuthalScatteringLUT); } } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index abaf49598e2..524f72a2572 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -611,7 +611,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTT, bsdfData.roughnessTT); #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING - // This lobe's distribution is determined by sampling gaussian weights from a pre-integrated LUT of the distribution and evaluating the gaussian. + // This lobe's distribution is determined by sampling coefficients from a pre-integrated LUT of the distribution and evaluating a gaussian. D = GetPreIntegratedAzimuthalScatteringTransmissionDistribution(bsdfData.roughnessRadial, cosThetaD, cosPhi); #else // Karis' approximation of Pixar's logisitic with scale of √0.35 diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl index bebbaf3e59a..6a56ea39f4e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl @@ -316,7 +316,7 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) inputs.shifts[1] = bsdfData.cuticleAngleTT; inputs.shifts[2] = bsdfData.cuticleAngleTRT; - inputs.eta = bsdfData.ior; + inputs.eta = 1.55; inputs.fresnel0 = bsdfData.fresnel0; // The analysis of azimuthal scattering can be restricted to the normal plane by exploiting diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs deleted file mode 100644 index 101604d2090..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs +++ /dev/null @@ -1,71 +0,0 @@ -using UnityEngine.Experimental.Rendering; - -namespace UnityEngine.Rendering.HighDefinition -{ - class PreIntegratedAzimuthalScattering - { - [GenerateHLSL] - public enum AzimuthalScatteringTexture - { - Resolution = 256 - } - - private static PreIntegratedAzimuthalScattering s_Instance; - - public static PreIntegratedAzimuthalScattering instance - { - get - { - if (s_Instance == null) - s_Instance = new PreIntegratedAzimuthalScattering(); - - return s_Instance; - } - } - - private bool m_IsInit = false; - - Material m_PreIntegratedAzimuthalScatteringMaterial = null; - RenderTexture m_PreIntegratedAzimuthalScatteringRT = null; - - PreIntegratedAzimuthalScattering() => m_IsInit = false; - - public void Build() - { - var res = (int)AzimuthalScatteringTexture.Resolution; - var format = GraphicsFormat.R16G16_SFloat; - - m_PreIntegratedAzimuthalScatteringMaterial = CoreUtils.CreateEngineMaterial(HDRenderPipelineGlobalSettings.instance.renderPipelineResources.shaders.preIntegratedAzimuthalScatteringPS); - m_PreIntegratedAzimuthalScatteringRT = new RenderTexture(res, res, 0, format); - m_PreIntegratedAzimuthalScatteringRT.hideFlags = HideFlags.HideAndDontSave; - m_PreIntegratedAzimuthalScatteringRT.filterMode = FilterMode.Bilinear; - m_PreIntegratedAzimuthalScatteringRT.wrapMode = TextureWrapMode.Clamp; - m_PreIntegratedAzimuthalScatteringRT.name = CoreUtils.GetRenderTargetAutoName(res, res, 1, format, "PreIntegratedAzimuthalScattering"); - m_PreIntegratedAzimuthalScatteringRT.Create(); - - m_IsInit = false; - } - - public void RenderInit(CommandBuffer cmd) - { - if (m_IsInit && m_PreIntegratedAzimuthalScatteringRT.IsCreated()) - return; - - // Execute the pre-integration. - CoreUtils.DrawFullScreen(cmd, m_PreIntegratedAzimuthalScatteringMaterial, new RenderTargetIdentifier(m_PreIntegratedAzimuthalScatteringRT)); - - m_IsInit = true; - } - - public void Cleanup() - { - CoreUtils.Destroy(m_PreIntegratedAzimuthalScatteringMaterial); - CoreUtils.Destroy(m_PreIntegratedAzimuthalScatteringRT); - } - - public void Bind(CommandBuffer cmd) - { - cmd.SetGlobalTexture(HDShaderIDs._PreIntegratedAzimuthalScattering, m_PreIntegratedAzimuthalScatteringRT); - } - } -} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl deleted file mode 100644 index 875ab982ea4..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl +++ /dev/null @@ -1,13 +0,0 @@ -// -// This file was automatically generated. Please don't edit by hand. Execute Editor command [ Edit > Rendering > Generate Shader Includes ] instead -// - -#ifndef PREINTEGRATEDAZIMUTHALSCATTERING_CS_HLSL -#define PREINTEGRATEDAZIMUTHALSCATTERING_CS_HLSL -// -// UnityEngine.Rendering.HighDefinition.PreIntegratedAzimuthalScattering+AzimuthalScatteringTexture: static fields -// -#define AZIMUTHALSCATTERINGTEXTURE_RESOLUTION (256) - - -#endif diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl.meta deleted file mode 100644 index c0b41d1d37a..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f339ab6f4b636854d80376c25d4ff68b -ShaderIncludeImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.meta deleted file mode 100644 index d67ec037b41..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8e5e6b4bc74f01443bb6b6b03ed421fd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl index ec099f54b9a..0fa3bd49e0d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl @@ -1,17 +1,49 @@ -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl" - TEXTURE2D(_PreIntegratedAzimuthalScattering); -// Returns the roughened azimuthal scattering TT distribution term. -float GetPreIntegratedAzimuthalScatteringTransmissionDistribution(float beta, float cosTheta, float cosPhi) +float SampleAzimuthalScatteringLUT(float beta, float cosTheta, float cosPhi) +{ + // Sample the coefficients. + float3 c = SAMPLE_TEXTURE2D_LOD(_PreIntegratedAzimuthalScattering, s_point_clamp_sampler, float2(beta, 0.5 * cosTheta + 0.5), 0).xyz; + + // The distribution is parameterized by phi, which means we must pay the cost of inverse trig here. + float phi = acos(cosPhi); + + // The distribution is symmetrical over the origin, so take the absolute value. + phi = abs(phi); + + // Evaluate the gaussian with the sampled coefficients. + return c.x * exp(-Sq(phi - PI) / (2 * c.y * c.y)) + c.z; +} + +float SampleAzimuthalScatteringIntegral(float beta, float cosTheta, float cosPhi) { - float2 coord; - coord.x = cosTheta; - coord.y = FastACos(cosPhi) * INV_FOUR_PI + 0.5; + // Integrate azimuthal scattering over the fiber width using a gaussian quadrature. + // Np(phi) = 0.5 * Int{-1, 1}{A(p, h) * D(phi - Omega)dh} where h is the fiber axis offset. + float3 D = 0; + + // Quadrature of order 35 is sufficient for all but very smooth hairs (beta < 2º). + const uint n = 35; + + for (uint i = 0; i < n; i++) + { + // Remap h to -1..1 + float h = 2 * ((float)i / n) - 1; + float omega = AzimuthalDirection(1, ModifiedRefractionIndex(cosTheta), h); + D += GaussianDetector(beta, acos(cosPhi) - omega); + } + + D *= 2.0 / n; - // Sample the LUT. - return SAMPLE_TEXTURE2D_LOD(_PreIntegratedAzimuthalScattering, s_linear_clamp_sampler, coord, 0).x; + return 0.5 * D; +} - // Evaluate the gaussian with the sampled weights. - // return weights.x * exp(-Sq(phi - weights.y)); +// Returns the roughened azimuthal scattering TT distribution term. +float GetPreIntegratedAzimuthalScatteringTransmissionDistribution(float beta, float cosTheta, float cosPhi) +{ +#if 1 + return SampleAzimuthalScatteringLUT(beta, cosTheta, cosPhi); +#else + // TODO: Remove me after the LUT matches the reference integral. + return SampleAzimuthalScatteringIntegral(beta, cosTheta, cosPhi); +#endif } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader deleted file mode 100644 index 26cc772a27f..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader +++ /dev/null @@ -1,121 +0,0 @@ -Shader "Hidden/HDRP/PreIntegratedAzimuthalScattering" -{ - SubShader - { - Tags{ "RenderPipeline" = "HDRenderPipeline" } - Pass - { - ZTest Always Cull Off ZWrite Off - - HLSLPROGRAM - - #pragma editor_sync_compilation - - #pragma vertex Vert - #pragma fragment Frag - #pragma target 4.5 - #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch - #define PREFER_HALF 0 - - #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" - #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" - #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.cs.hlsl" - - struct Attributes - { - uint vertexID : SV_VertexID; - }; - - struct Varyings - { - float4 positionCS : SV_POSITION; - float2 texCoord : TEXCOORD0; - }; - - Varyings Vert(Attributes input) - { - Varyings output; - - output.positionCS = GetFullScreenTriangleVertexPosition(input.vertexID); - output.texCoord = GetFullScreenTriangleTexCoord(input.vertexID); - - return output; - } - - // TODO: Merge/Re-use - - // Ref: Light Scattering from Human Hair Fibers - float AzimuthalDirection(uint p, float etaPrime, float h) - { - float gammaI = asin(h); - float gammaT = asin(h / etaPrime); - - return (2 * p * gammaT) - (2 * gammaI) + (p * PI); - } - - float ModifiedRefractionIndex(float cosThetaD) - { - // Original derivation of modified refraction index for arbitrary IOR. - // float sinThetaD = sqrt(1 - Sq(cosThetaD)); - // return sqrt(Sq(eta) - Sq(sinThetaD)) / cosThetaD; - - // Approximate the modified refraction index for human hair (1.55) - return 1.19 / cosThetaD + (0.36 * cosThetaD); - } - - float Gaussian(float beta, float phi) - { - return exp(-0.5 * (phi * phi) / (beta * beta)) * rcp(sqrt(TWO_PI) * beta); - } - - // Ref: [An Energy-Conserving Hair Reflectance Model] - float GaussianDetector(float beta, float phi) - { - float D = 0; - - // Higher order detection is negligible for (beta < 80º). - int order = 4; - - for (int k = -order; k <= order; k++) - { - D += Gaussian(beta, phi - (TWO_PI * k)); - } - - return D; - } - - - float4 Frag(Varyings input) : SV_Target - { - // We want the LUT to contain the entire [0, 1] range, without losing half a texel at each side. - float2 coordLUT = RemapHalfTexelCoordTo01(input.texCoord, AZIMUTHALSCATTERINGTEXTURE_RESOLUTION); - - float beta = 0.35; - float cosThetaD = coordLUT.x; - float phi = coordLUT.y * FOUR_PI - TWO_PI; - - // Fixed at 1.55 (human hair). - float refractionIndex = ModifiedRefractionIndex(cosThetaD); - - const uint sampleCountDistribution = 1024; - - float D = 0; - - // Evaluate the distribution for this slice of phi. - for (uint k = 0; k < sampleCountDistribution; k++) - { - float h = 2 * ((float)k / sampleCountDistribution) - 1; - float omega = AzimuthalDirection(1, refractionIndex, h); - D += GaussianDetector(beta, phi - omega) * rcp(sampleCountDistribution); - } - - D *= 0.5; - - return float4(D, D, D, 1); - } - - ENDHLSL - } - } - Fallback Off -} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader.meta deleted file mode 100644 index 46e52ba7ab5..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 26ad8e15a8a298e42bc4d11aff5f9c67 -ShaderImporter: - externalObjects: {} - defaultTextures: [] - nonModifiableTextures: [] - preprocessorOverride: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs index 37566dd3724..01e45fcfb6b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs @@ -176,8 +176,6 @@ public sealed class ShaderResources public Shader preIntegratedFGD_WardPS; [Reload("Runtime/Material/AxF/PreIntegratedFGD_CookTorrance.shader")] public Shader preIntegratedFGD_CookTorrancePS; - [Reload("Runtime/Material/Hair/PreIntegratedAzimuthalScattering.shader")] - public Shader preIntegratedAzimuthalScatteringPS; // Utilities / Core [Reload("Runtime/Core/CoreResources/EncodeBC6H.compute")] @@ -406,6 +404,10 @@ public sealed class TextureResources [Reload("Runtime/RenderPipelineResources/Texture/CoherentNoise/ScramblingTile256SPP.png")] public Texture2D scramblingTile256SPP; + // Pre-integration LUTs + [Reload("Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr")] + public Texture2D preintegratedAzimuthalScattering; + // Clouds textures [Reload("Runtime/RenderPipelineResources/Texture/VolumetricClouds/CloudLutRainAO.png")] public Texture2D cloudLutRainAO; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset index 404a1cfee1b..1da0eead228 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset @@ -146,9 +146,9 @@ MonoBehaviour: clearBlackPS: {fileID: 4800000, guid: 3330c1503ea8c6d4d9408df3f64227eb, type: 3} SMAAPS: {fileID: 4800000, guid: 9655f4aa89a469c49aceaceabf9bc77b, type: 3} temporalAntialiasingPS: {fileID: 4800000, guid: 3dd9fd928fdb83743b1f27d15df22179, type: 3} - dofCircleOfConfusion: {fileID: 7200000, guid: 75332b7b315c80d4babe506820aa0bfd, type: 3} upsampleSceneCS: {fileID: 7200000, guid: 51e13c18f34ea1d4183edb912e98cbf7, type: 3} lensFlareDataDrivenPS: {fileID: 4800000, guid: 85330b3de0cfebc4ba78b2d61b1a2899, type: 3} + dofCircleOfConfusion: {fileID: 7200000, guid: 75332b7b315c80d4babe506820aa0bfd, type: 3} dofGatherCS: {fileID: 7200000, guid: 1e6b16a7970a1494db74b1d3d007d1cc, type: 3} dofCoCMinMaxCS: {fileID: 7200000, guid: c70dd492c3d2fe94589d6ca8d4e37915, type: 3} dofMinMaxDilateCS: {fileID: 7200000, guid: 757a3f81b35177b44b2b178909b49172, type: 3} @@ -239,6 +239,7 @@ MonoBehaviour: scramblingTile8SPP: {fileID: 2800000, guid: 152f8b933250a7b448fc2d4d301b9944, type: 3} rankingTile256SPP: {fileID: 2800000, guid: 1e604a266c415cd46b36d97cd9220aa8, type: 3} scramblingTile256SPP: {fileID: 2800000, guid: 882fb55d7b3e7c94598a318df9376e32, type: 3} + preintegratedAzimuthalScattering: {fileID: 2800000, guid: 4f022cc0bdd8db4428a8faae60acb3dc, type: 3} cloudLutRainAO: {fileID: 2800000, guid: e0bcfddf26ed5584ba3d8b94d3200114, type: 3} worleyNoise128RGBA: {fileID: 11700000, guid: 1fe54a721d0e2504e89f121c723404a8, type: 3} worleyNoise32RGB: {fileID: 11700000, guid: ec156c314a242914dbb706f73ad78cf2, type: 3} diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr new file mode 100644 index 0000000000000000000000000000000000000000..70787d298056e6f97362b8f33b79b310526baf65 GIT binary patch literal 6961 zcmai32~>_>w=WgZK!!vJNhLHPy~Ez6Lj92j8Iq(yrIaQmQkqB2ljb=oqUn8~=Xslz z2GL{)sfAwF!^#23lGIy|dbh31IwsAQBKkUCrcr46Z%#PZe zw{W<~b;iM6$%bpm-~9g)i9h|{YGLE-XlLf}|Bkb>Id7@!WMS#V_21UtQMep!+%4_Y zogFRBUG&XdY#g|(>>SKoxOo5eae1S&xs#>k`G3-DSe|$JL*S-l#l`;*_dlC|A9B>j z!o~W3QE+MhBM=vt-l~6_CC0@itiFS;x>|;QU34A&v;8u9|2QALTlF(dZmNxzHh7D+ z&n$u#+-N~d8&aaZ4_QEKw`o+hln+w~4P9lM9lkyu_mX}i4o z6RfDtOcbqVT@b6Dsaaj^cX@4fUh?{Clck%gQ~IRw#F!j>JX5HlzEQN)-Jl{&dmt^6mf9sLIN`eWez_5&E_55kVb7x1p47i_p6!-(x?are)S6&jIs%n(bXQf()uui6CvgGtiSTiBFS@mJrtb*Httnd&8R;w6q zRnsy#)r#-0RaeX&pp98((N3HjrR79yrWXaBrspfg(B~JB^ctDZ^jV{I)h9#ORjX)A zRLA+Quime`v07ViQ}wf+%_z>2#hfo&G0{r_I}CQiXH{bx@di0iDhabkoaofdJxW7>pi{387slg@Kc3%jIq(!*T zd;t!~^5Tz4E|dwFg-rT4;1m3l``HgLAUFh+`b!8-egbUKPIyz+2G5+D;L*W42-rix z*@IQUw!H_9@g*?TUI_9rOK9X&v1(k$In|n`6{_16rFL)T&8u?MHDV24xW%$mA7<%` zi?EsJWZCmFnQXp*gKV9-W9*tiQ+CG(GxoKBQ|#bZhU^o?8ti^mS+(P| zR$Z0JRxMe#mo{i|i*_WLhra3ujqV+Ih5lSQk6y0VO&_?=%g~OM#eiN}^!MF@2h-&+ zW%D)^UoMYN%@mQfa0j;Xsi6H~8oIt=q7tBGs{S(-u&W;CXIH3%T25&>{ z&LUWUJr9^G&#@~X$FuVr64_k8(%7~Gd2GqH+iX)I7Msai$5xhZVW$W`X45Y8vboki zXYcvc$M(A0$5x^}W1o`mW2nO{bD3b%Z8NkDv%8hDMBUIB+%6H1ap{S;zAkp+~nq8C9&K8kOVrLmCvW*q8tG3>kp?zaE(s`#b^ghAo^p5R|7;^nv7$Gv6xa)u>#&&7q^-3+2`??o{0`_CtIUSVDIDi%Fb#dyW z9tO`C;zsRb=T6;7x8mbnMNB&qHaTrBOtju}CEj4`&b# z?HNRjQwCA?E}dvwlTIAuPa|4VQwZD6WMU{Ok(e5aBlMD^iH+$I1b167AwS_uY%KI3 zew$enIp++BA3`)@o2NLjCHFIXg?2o98AY(_YM0Xn6Q9tk_A}`%5Ka$RR!1*B|BIei zFTpqpnhdGS23V70fCd{4ar>wtURr2``A$diru1>#v)LFI*qNZ~lqr6$JA*eLT4I@~ z4fZA2;jKfCXsP0Y(+AygI{Y%~d3d8eaSam}`QsP!K)l)zjFPfp$c~6W(aA_$aySNK za^o;>ECDaeCF4b-6l9!F!~J`HLqyvg7--LdzTq!8!2J`1j{JZ@!x`wEKLtJ)zCh27 zarhYa8Cw4u2BZFWu>8;vNTl_HP){GcntlRfi@IS%3RSH$3=XGEoJCowJ5LhSIUA!Ij|6Na38;>2hIQLgV# z^z)e#+>%=fyWNBASgjpw*ONT7ZC#Tzo>L}tRzV(pxc?13wR$;2^$?A*MckZ`lVE}7 zEE6iAFjnC6H)E%$uc;dD@Uf8+8 z2hVW%qVI$sHcbX#GIua)h=<|?BOD3y>sS&Ng4Fssz5SwEl)v7;WR9p zPRII(nb@x}4!Li}z{X?@_Qa3E*K40)(dH3Y>N^Zu(mudz&vziS;SJo19ssK66-bZu zLDtYy$g1pty$+qQPq+g{5?XbE$V;3P^0%q%8foZ}}Ow0{%xCWna_w=QDHql!>ZNg|qN?TGMe zYl#w-Aoh{2In`ey!gR+bKf3CoX8Nlle#Vaz3XGQm#*98AKZbVIMNDtGh##cgF}2wp zoeMqC;K3y{k-m&q>aL)1(p6mFe3I@4$=i=1N~8l6^xNQ} z^8=W5zYp^)>S1tK4IKJHLP;_UB)3;UOvzoSTyq;Xcoe~rhJ1KDmkn!WGvK*K3bgAc z!rOzfuooktV8(-VIOIb{uDeDK`S_4OZ+MeoZ@ozAg_p_wDemO+C>L_P%YnSFX-jfy z%}JrnCrQ-<24teJHfgkvNuGHmPx|?;Cv$0wNlwNzVXWRplq^djqRI~v?LnpNUhXwC zy>3PNtxwtXH~wGghmS}xyw(~p#Oiz)Qaf)j!jc1!x*dQ|UIgG>$v{jF2*ksDLFkqq zgdv8(*e)4@I|W1Wf?ycVZ45`nLlL+y>^j=?MPh+!H1g%fpsjcumLH0*JE=s~a zl^dAYkb=s(X&Bv;jul5Tv9>)6XXrWDoR*7^zUJWoqX1`J3o(3kFUT16!mU5|W>;Jf zOg!&~2P0k3*VYNIFF%Hxa~-hA@F6sLwL!6W3j`ZCgM!F?IGC5kz^>_6Ay39qrt{40(dTm!0xr+$f=NgJ)A>cOiU*mtdhvBn$e`> zh7gh(^Crvp+LKGojL3PbnPiIT26CPx5BaUMfjIlolXxiA%)WBOop#;cmaby@i0-&u zjIqf}hjIP47h`QxGQ*XtlJP|{24&=9P~Rv9H^;v_$hIb`IN>3Uh33O z9!lZ$JZhdjH^r^;o7_VEAoFy-k(W55q}ALzQfKBRxg@iTd^_1h-u%QSdqQuKoSqbN zM|&ulGwMWsF8hlN|G9yjE%`)jEsr3oN6Xj?B?oB_jI-$Xe=T6_i&SI$=3HVVDBNK1 z=CK&gg-;pT>$9+Nc^1Bu&B6`Gv+z-J7HW=Wp_P6%+BRk*pH>dOdzgd#X1Un%Jr`dl zsBAD{H+`*Mkh!=(E5_l6S#Ui}I0ZegfYF>bhDjHzcz(BVf3E(^bn zqO0$qXyzSk+)#>dZQO`&aXbl5X!C*M0?hhyIeBiKzCn){aq^$nhLkWebQR^g-V#qM5b5S&E zy`~C-d0KRcpFACCV(cT(QTXc%&1OedueY~@&w(gq3Z(z+^I{V=JtIP-;s_5T(D*p9&K8p;idHQ`ug2 zRA9U*b>CZ$ay`3;n!cb!MbvMglrAr!LWv}dp>hxjTo~rrWKdIYek3QR-Aa&iY7I! z7?se9OOChV53W`miDVxkt7Kpn{P z*TI~3Eu_}gz_!L}&b3aEE0gSYLa@a=mEOWS3h9U zrz2r_A`Av5g1~LY4^rm)z<$~#i1%=Um^NFuw!<89?;3;jenZflIsh`F+c~M$ikz?N z3LH@fIgWz+Ce9c~oYVbKgcB>Zfa9V$LzRmRQu!in)Fro4N<_A7zy{tI% zUZOnHTwR0Nzukx#DJ-N$&k<6SauQPO4ir?os34$r{K`VLmB92xKqOG{x!@)jIt=fPRGOgMHd1p-YIfC`BQx2NI2y)PJY zy8YnRRd0A3<_^5Nj_`4hHHcZAhSL?tphr;;9`|a)c=jIPPo%@*>MYLiniP(qPb{aw zB9!x5&6~sEvf?Y2K2cWVol{V|;J-~xPf=D)KX8+pVXK7N?~USW%W_23(oZZ^D?1>p z=6!jQTG_|>YLU@AYMw4!YC~eP7*X;Kv$MyMXYv#F$Grbj3k)Hf?8gPP7id2H6nn;d z@b1Pgj1GQ;+8ZC@z{fx5+sg;Y`q6}aa36VL8D5@PjLS9&;@y}9*#3(f_imj5JDU-Z z5*mOc&0eV4*alWbb>RGr1(R8&z?m(CAH7-dOF9KQ2IIiy=XGec4FMi0e^@Q)4I-o) zV7fiLePaPZz9-?0lOZ%09e`PBEm$?kgsVNfKxs}M9v+j0zyC9y{`nhlPq}e#lgpHi zfv-kZrAhBr*I4j4pf@vY<3BACZWQQhziZ~ox0m&z*99(`K8$KTtw2=~7Xx=qdxkb& z=@2?8KO&HBM0E7$Z#{kFtjGPF>nYO~hs2KT$~%zYwSJP}HG0nH;480BOW%2!Cne@y zDwmh{dU(+&RPxiWXsgtnyU*=r+PjWxcO_)q&%f87-pk50GML?yLDzjfapGuk3~_5T z^ok`}VAOfWvCgeSpmuKLN3!{5@;2SMYx8ir<13nMan;V-#$P9tMZW!&(Bl=(zS{jO zdsM>pcfstwmpDA9H+}t|ko5Ck52I9eoC;A^@GGWScg%HN9n$`CcYBd})@?7xpXTg> z{*!cBc{8sUStEsChT18yRfD2O$~{IEm{&SaPIz_S9o4Teoikn|JaazYYs>ea0v+Na zZ;7Hh+7{v6GY&gw35@B8mbR})voeczo^ROhC3jgb{iEr@(8h%^%E!A(Y~oy5V=m8P zm^3h??`<%GNjWoM= nNtAUYMk$)-dyb#@6`Iy}Hh;@Yga2cJ|AKVOX1TQ&y|(x-_C2AI literal 0 HcmV?d00001 diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr.meta b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr.meta new file mode 100644 index 00000000000..add9d61eb8b --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 4f022cc0bdd8db4428a8faae60acb3dc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 3 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 17 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 1 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: From b0c646b57698309fbcac776766440b3c0616cdfd Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 10 Jun 2021 16:14:49 -0400 Subject: [PATCH 21/73] Readjust the gaussian fit for azimuthal roughness --- .../PreIntegratedAzimuthalScattering.hlsl | 46 +++--------------- .../PreintegratedAzimuthalScattering.exr | Bin 6961 -> 8519 bytes .../PreintegratedAzimuthalScattering.exr.meta | 6 +-- 3 files changed, 9 insertions(+), 43 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl index 0fa3bd49e0d..431dc9b5e5b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl @@ -1,49 +1,15 @@ TEXTURE2D(_PreIntegratedAzimuthalScattering); -float SampleAzimuthalScatteringLUT(float beta, float cosTheta, float cosPhi) +// Returns the roughened azimuthal scattering TT distribution term. +float GetPreIntegratedAzimuthalScatteringTransmissionDistribution(float beta, float cosTheta, float cosPhi) { // Sample the coefficients. - float3 c = SAMPLE_TEXTURE2D_LOD(_PreIntegratedAzimuthalScattering, s_point_clamp_sampler, float2(beta, 0.5 * cosTheta + 0.5), 0).xyz; + float2 c = SAMPLE_TEXTURE2D_LOD(_PreIntegratedAzimuthalScattering, s_linear_clamp_sampler, float2(beta, cosTheta), 0).xy; // The distribution is parameterized by phi, which means we must pay the cost of inverse trig here. - float phi = acos(cosPhi); - - // The distribution is symmetrical over the origin, so take the absolute value. - phi = abs(phi); + float phi = FastACos(cosPhi); // Evaluate the gaussian with the sampled coefficients. - return c.x * exp(-Sq(phi - PI) / (2 * c.y * c.y)) + c.z; -} - -float SampleAzimuthalScatteringIntegral(float beta, float cosTheta, float cosPhi) -{ - // Integrate azimuthal scattering over the fiber width using a gaussian quadrature. - // Np(phi) = 0.5 * Int{-1, 1}{A(p, h) * D(phi - Omega)dh} where h is the fiber axis offset. - float3 D = 0; - - // Quadrature of order 35 is sufficient for all but very smooth hairs (beta < 2º). - const uint n = 35; - - for (uint i = 0; i < n; i++) - { - // Remap h to -1..1 - float h = 2 * ((float)i / n) - 1; - float omega = AzimuthalDirection(1, ModifiedRefractionIndex(cosTheta), h); - D += GaussianDetector(beta, acos(cosPhi) - omega); - } - - D *= 2.0 / n; - - return 0.5 * D; -} - -// Returns the roughened azimuthal scattering TT distribution term. -float GetPreIntegratedAzimuthalScatteringTransmissionDistribution(float beta, float cosTheta, float cosPhi) -{ -#if 1 - return SampleAzimuthalScatteringLUT(beta, cosTheta, cosPhi); -#else - // TODO: Remove me after the LUT matches the reference integral. - return SampleAzimuthalScatteringIntegral(beta, cosTheta, cosPhi); -#endif + // Gaussian denominator is pre-computed in the second coefficient. + return c.x * exp(-Sq(phi - PI) / c.y); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr index 70787d298056e6f97362b8f33b79b310526baf65..0bae7814257d396ad6fa83a77a2797b6703bc982 100644 GIT binary patch literal 8519 zcmaiYc{JDG_pYfVq|iVqjY{H^1~fc-M~3E7Xf84~pfsm4&qU^V9y5!Su|%3^kS3K% zMRTN??)&ro{nom_d+#6jthLYUtTXJh_S$wSkkgKRR#x`^rC!gsDwjzm4G?*YP~J0WZ@oV%D`vG%J=PFRTQ2<`iH_o;DrWs6#UI=99=G z&|W89Qn+eJ%XC(fLZt~kTDq0|+imFbk$n^|e}c5uds6L`0NQ#mlxhrPsUS9$q@8l< zW>YDN71mJS$ZKRX=pMPbx06l4ds?FMlU}Kba?0?*>}x!X?Yc(s%IC@)s5^}xjL>B9 zw^M0#=2ZIhRE0F-rjW#&Ni^}s1WMYVOu`9DWSgl-lI|nv(*k*_d^VJ-_Djlx$jr6m_Ie%F+%==QuQrj1 zygBXLXhSAN_H;q+5H-Suqz`)1D|LU8wF{xDNl~=PB9X!;WRkXZ0jaB(ljpIEbYj(Y zDmZhG)K9n5l>zT*(cmAn##n?aJ`CcZ$1?m^c_dq39?Pq4PT`=%8mu>4n|mINrHOH4 zsjg3nI=_vf?%>h%v_*mL-WW-K?!&1M#~>2b0cX+;T>+Soqa z9R3}}W51vS?=b7wE12AW2659zQ2p707Z;mRRCo>H_4ODhbP++@D)IKkISltLLHp_g zjMX^<3j=c+RBlcN);s8@zBMTu?4;W54m30P0LeBx)2;wF>YwdRvfBelO!_os&W|FE z_X#w7Tn0(p%cEyQ%IMV1YFZ%MNK2pICihuwMDlMa)xDdZdiIlc@Br4DA;lJB;iQM@d|3rbh&MMHsDGKymXB5eQA3M|D^m2CTV{hiZ3_I_)OZ zj2cnxQwObg)tKOL0k`GK;P{{jqbl?8tSTFsF^=?c`CjrK=|uT&575wuN66>t37U4y zjebab(Ur-5q;xTe#GZxHpA*saB`J|q^fPGk?mS8zQA+OmRdn}fJ+;hkCdD5QC|my} zsVjdZ4ga5%T`$6``T%r1Env63gd zU^zOoN0vH7hS5AT8M4|ZO=~twQtKEAa;_Li>q(4y@`dTBazA8l|G=OlJ&02Nh|5i# zIPUurIVMlBNb4as%oOCkK{K)sT|-bqJ=|tpL{@brT5Zaap?(&AvW0jqn+q|GEHsXA zrD^J}BqQ!dckJBhi*|?M< zKUb28Ts^5)-X!<;t)!aKPEPOMl1)u7355#rtkVNIwq1(N+~oL#vm#HwH=bicr}50% zne1&jk9Yd(anRDCG;ronnp7!6)_p^$|GPBx7D^G+C29RZ2@(w!CsDTn^ubt^21^K& z!@53{ANqk>&mOGw{)kB)T@ZHfK%Vb2h{QiaU+q2I`f&^01~)J#?+V(~>QLBFjgiML zKy_&uuFNV%npQrnOmdJMkb(ZCezbLuA59YE_GaGzGO!o;`f)JHG=&QCA(Da@#nShh zM9Qm8qaeK;x@uHN_imMuWm^?(++9!2t~Y7a*j9R|`;4Y^chVX49(w+}k0um|abw#!j+C+NAU1_Nn`Us|;JF-d2^=G2#M-%%^!&6WIScH~aUV?Yqa?^<-ykv{ zE>7KE1L)HYQJVZgm|`CN#pCqfa5MOhwGG|SSO18kUR}^>6=eRzb|@csjL4=|7|gx{ zyX>0?`R6K1uV03tb1n4sDzSQeIci6oMe)Q!C>!PCy?Ykkx28erbtr9}6Grm~h109e z5#+8NML(irNXaFh-gG6=$<{PltDh~X_xU7}T|)W^=gD_OEhWodp@`5X%8h9y`)SYU z%A!u1`1%XQD*PciM^WB6PJ;WDWVp^@ID0FMVX5&Gd32yEhgxZ}L&-dDa?ulD-*Prs zAWr#X#3{0RAo)%nNS}-c(5$6mWF;d?(wV~4H(ZF8U;2X{#h(bLUL4f<0^?yHu(G)m z?MFLsO|c#FrH>)G>OOQo+(B$;6V~WogV=xu)VEy3^s*{g=A4H?aVfSp6+!xM9^4n_ zpgkc2+Cx&&xI(~R8WLz&Vj`{jkVKI+DU>!mopL{BQvZ@OG+L#Asys`m)2f_aT&beD zxpkB!ca60F-l7SP59ql~J1yz#q}ZM>lppY$0w0TT@%%xY)FsW2I_0=vp&~E+pv>3% zRCw({4IaKti`QQyKACC61C@+<*&7k6s}mt1dlCBBAxvYZ3e)0wLbQ8fKOBmGBlYnQ z?77$r{oUON>iCGAn(vUf<$7RH{o*MHAsxV0w<$7Bps|lRbB(F+v)9u zH?(>0N7`ldjf!&m>C8=0o_J~yPmYu34mUm2}@^a;3(S~Iyn zyhA_4?o(UAW72xuPRo5>Q&RbR8ff1`sX4#MQ(Kr-Ee7y}76~p69>Vc4ay+|t6g#E~ zIDXzFww9mHKig;WZv`Dry}~@M$A}{{*6^$k8+pWCOZKM^cqH}#20rg`r|un;&%VX) zO|Z{uOQU;5-x|HL%sJY)*7@y$MGRXA8v*Cj=Oj?=N43YZ(vsXRlHx)fak9- zVe!ctyd7SNRe9w|G%Q8=>mn=&$VZ5P>vVt0#F4@@C_5+P_Syv4YR97W>@AwJ_cnAxYW$BwhB9`tP-o-@bMV4(OmMle;K!;YSL%-$Qr5{-oQ>gm}esQMRcR z=O0fcdG4~ITqio58zmLF-+CP1P?*fd)28#$*qJPTNSl-Dh+BOPS@rHJ9+I=3I~6Qg zR%17ZM7%=GhF4hmtpk+?9hkNDCG^L>Ku1nH-2Oa8&xj}3(EkXM=N`aAzZJ{!@8VhS zEo3V<;l1W{od2g0FO}-?z3(FCwNxWDwF2$-#T_MC6T(gN$M{jIKPR;-T%-*4$3h{ye7_NiWH*`W3~RbW)e~JKECokre)P(=oU2 zq~-I6V#S5|nUomAM4Sy@4CY6rLwMpHSuWKX$uXZsv(0y9HZYmOGDFmOor)$qW@>YA zIC1q)1Af)Ek{=qG@j9dJ{PVRPo6g+Ny=qS}Tk0v^ zAR68Zm4X)J#NWXx%Uk#`unF6Iufyq6Bia`<#Q0dbQY&7 ziZHz-ALTh`@HRCIE0fY;lAMCIS&8s1i^H^=(OCZ>0);C+5vo7Yc#qHYDd!7m8upOR z#$LMK@ts=U{GvF^ej;^Yj-K1DjbPmkHg$WVX*D_N+?l%*}U@$XZ%d}hZ!e%j^CyC&R+R(~s& zrnf?9R4ab2y@<E%-X)E@s}kjSqUa(C6O-%QH8yJpCHpIXA**P6I6O)S=Y$A|mUn zAwHoJ&+O0RMt&LAbd;cOSP@p}g9vY82ib3#!NE|2$ z!+-u~2)f?_zE-kchzp{GSbM54uj>}(OW#CTX08}tDICCQHsb8INrHC=N^*3+G#@S; z%0+2%to~#Kt8P|gtx02fh4ut~5Icn%jHh$B`9ExNa}IxvozD$-7qPsv5kHSx#lK+2 z{kyjD7IjUICSqO5*ltm%KtjrCSAk! zh(^f1Xh6u|dIZVV;o6^C48BnfN%u;)OuB%9CFd|~LsL-vC=r+#4{Q4v#8pLNv1~X>_ne0K83A^SO7M-{5*+?Zg1c%5b6Tw=oBWdE zT>ByHF?J|-4VLB6bL2TBVFdp*Qs8ZK$8fLhINtPf0taSI;ja~{>@;43_dc1$@4jmD z;XU9@D;BeR>{3qLwuVQgtmiSiw{y}JTQ;xR%Wt_|gs^9`*1ls*0~-ob6SN z{MLv}vqlsKUcsU01{`;;$06;@FlxSpZ@L$e9bSX@t5q2LyaFyy&qF~F^Yg+=F?CG| zl==z<#4;bLs<|*I%!d4oOuS44Ebu_3Z6D<9dGa7$ZTi9rWQN-ZO=X)FwL1O z2DQ&=L~CEdA-9Y8o?eTUX*Fm&Q4LkCDzr3JAi?kg zwx^ausG|&fB}@j1lV!q3WLxi@aPoRpvnULKb>6GtlgvhP9hg zFmqB8M(bnbm1{lp4|7vmrJ!y@tv1ptk)OAe;%BJ zZSgr|9yy1O$>(5RREDEt%5d985Z7U6VVY8c<)Oupw=Kf0@r5YAm=C!nd6;+p3{K1C zz;{Cyq6F_b&QF7QZ3>RoC1L7?1Z1SgA;3EZ2h5}Jdv*jWM8mMAIRqxrr?6>9AU>-5 zBe>58xtnKlcHc}cR@G#k0!P{o@#Bl(@~a4+@{3@iUj+T?Ld;hzM8k#x_#Mv&yz)@G zKNl@a&LC=F4y1Agb!~no0!q{Ib95To9a0cloCL>L33w_Ik2T|Cv3N!_=4(Xa;?!{1 zjt)iLpb*$~2jSDh0KBgC!-Fgz0WNx>RAeC+IxOV<4;He;7O?9`VwFM6`Ts29&!=^H z+|0#XB5lAsryKG5z@^+hcLgh`t>*E2*Yd-`X6z=&ZxQ2doFr+<3pMT7@TNUibnIs} z*JJ$D#Fgc=JbAmFFE8j0WQY5wdDOTl&TEe60iRRZ!aIj+`*Jb;WiH%HbCKbgi;|(a zcpiQRzCvd(WK9lUduJmdJqwR=GGQE*fjjo;n4^&f+eay|*_#aA-b4(wNq}%;99AmC zLT__4=AMp3U}ZQiw1qZ(8Tdr|LZT>~SA{=pDc&Z-V(|ayZYbis2?o;zj>t@Tu@z zRy|b0Ii;CUx{-;AnVE36&4kRbOh_hYAZ1hrWDlpKs3r~XKBYoWA{EP|QjqgA3B&Is z!Z;!US^^$l@G2Gs`(j}5DGH&RBT-)wjxj^R@OIs41cwCUNPQ5-b_bwuls{tU`{L*( zZzvu0L|>FU{LZ^VVwxGpD+ywEof#i{V8&vh>)G0K0~;1^jf?k(EJ+d9lS zV7n#fsoL;f!<{Tqxre6*?d3t25AYGoqkQ(@NnY&g##4Me*`dXU@9YdR(mZhWo9gO56UvyY`8 zn}q~&fOrTGz7fWMUqB~3D*Rl=eFot?oe&y2D=25ElGgS zqy+r<6pzG=cq}%G$MY5eel3rKe?csi`(u!<9fRZBqM_gvg`ZB5$g_w*D}`g4R2X(Q zp2o=oAy_LPj4$ay*f%{8gEIW_d4wO1ob*9|yBD4>@PvPuJ1n|fabtlCjFgY#_|+qr z(B;I21NQUS(fe5OM$Zs0B{&4_rcpAj1qeA#tP$+lkMX>6^XnuGij;o}T`02+~_EpK^ zrB%7yU0THPBhPVhXC?P))Un&wtNd=^ZJs0lkh@Pl=a~`V*m*o0MVrG>tq~62&tbTn z5QanZ!q8b43ZwaPb&oD?1C}N?-WMI24PEFApC;@V7$*CdyV{1JIGd@PpDsWN2rAxa=yC2TJ$7d4R?m=#3RsBKZqV}Cp^=4gi4hkkGA&X>=S-G zBLA*Be6kiq%;kiMlIeJMLPu7Xx)!U=^!=)JRwv6ZG zrAd73a4K_827j)};f9y_%$6lQ-mskQPgk+?@;dH4c9kEi+~OFs`z$N>jI%A?u<5GL zEUXuT;VVLLUSQjC=@1m%4#qlGuu2QUeUTt2tO>+{Qvq01?T=Sa z{LuQ*7wKPo@cFej?3=yNb;c8X+yhpN-LXl;4Rgv}1n=MzP*ZlsYuh6z$T^4?Z=7&v z!d}#DvB%w*T{v$ND&Q%h{JJQVvn9j$c|aH&&k5(VViEl2cLaxyiQ+f5(R}b_46B@q z&3r!TSIqedWxP_Rf@NOR@VhbfJh|Z-8+Y8| z?I-SYa_m!nsP~$UPJZNS)9-xGPH2(c=0Kzf?8?;+M4Lsvn1k@CTI9dF!T?*%zQd{;So;N(tsjN0IatqWZ-XOs)3-8+uo zJCC8i=P)+yI|##0Cww#8i>Nw#tevqN^CIoAOwHl8O{$8(Ho0-w5+z)#!~ zIdoSNYn@2up2`&7q?*QSucq_&xJ-VWmCX^K&+w?j`5dHI#8zf!*`WL!kKR?m0}s@& z!{a*cPi^GHmYeMDbe9);Kjfql?fhx#8*Z)t$j-grIIQ+B&yEsXbR<(^(Mfk-3^?eE z7aM(1rRj^tUp}ZU@xj+EKJfhMjZoT4KGM z1zh9O_}9{Oo+gkXSJL@~V+LF5WpXZM@lBg-UQ(UIpY?OOK{%fcdJFjd#A5ajIm@$k z&#}(D3q0k70MBGEvP$1&4${5KKAkuD<<~o0w&wxcZg|QC)g7Fk_Kq86dwB4$-~8pS z@FF$Gfs3RpBp21?4_(yX_>w=WgZK!!vJNhLHPy~Ez6Lj92j8Iq(yrIaQmQkqB2ljb=oqUn8~=Xslz z2GL{)sfAwF!^#23lGIy|dbh31IwsAQBKkUCrcr46Z%#PZe zw{W<~b;iM6$%bpm-~9g)i9h|{YGLE-XlLf}|Bkb>Id7@!WMS#V_21UtQMep!+%4_Y zogFRBUG&XdY#g|(>>SKoxOo5eae1S&xs#>k`G3-DSe|$JL*S-l#l`;*_dlC|A9B>j z!o~W3QE+MhBM=vt-l~6_CC0@itiFS;x>|;QU34A&v;8u9|2QALTlF(dZmNxzHh7D+ z&n$u#+-N~d8&aaZ4_QEKw`o+hln+w~4P9lM9lkyu_mX}i4o z6RfDtOcbqVT@b6Dsaaj^cX@4fUh?{Clck%gQ~IRw#F!j>JX5HlzEQN)-Jl{&dmt^6mf9sLIN`eWez_5&E_55kVb7x1p47i_p6!-(x?are)S6&jIs%n(bXQf()uui6CvgGtiSTiBFS@mJrtb*Httnd&8R;w6q zRnsy#)r#-0RaeX&pp98((N3HjrR79yrWXaBrspfg(B~JB^ctDZ^jV{I)h9#ORjX)A zRLA+Quime`v07ViQ}wf+%_z>2#hfo&G0{r_I}CQiXH{bx@di0iDhabkoaofdJxW7>pi{387slg@Kc3%jIq(!*T zd;t!~^5Tz4E|dwFg-rT4;1m3l``HgLAUFh+`b!8-egbUKPIyz+2G5+D;L*W42-rix z*@IQUw!H_9@g*?TUI_9rOK9X&v1(k$In|n`6{_16rFL)T&8u?MHDV24xW%$mA7<%` zi?EsJWZCmFnQXp*gKV9-W9*tiQ+CG(GxoKBQ|#bZhU^o?8ti^mS+(P| zR$Z0JRxMe#mo{i|i*_WLhra3ujqV+Ih5lSQk6y0VO&_?=%g~OM#eiN}^!MF@2h-&+ zW%D)^UoMYN%@mQfa0j;Xsi6H~8oIt=q7tBGs{S(-u&W;CXIH3%T25&>{ z&LUWUJr9^G&#@~X$FuVr64_k8(%7~Gd2GqH+iX)I7Msai$5xhZVW$W`X45Y8vboki zXYcvc$M(A0$5x^}W1o`mW2nO{bD3b%Z8NkDv%8hDMBUIB+%6H1ap{S;zAkp+~nq8C9&K8kOVrLmCvW*q8tG3>kp?zaE(s`#b^ghAo^p5R|7;^nv7$Gv6xa)u>#&&7q^-3+2`??o{0`_CtIUSVDIDi%Fb#dyW z9tO`C;zsRb=T6;7x8mbnMNB&qHaTrBOtju}CEj4`&b# z?HNRjQwCA?E}dvwlTIAuPa|4VQwZD6WMU{Ok(e5aBlMD^iH+$I1b167AwS_uY%KI3 zew$enIp++BA3`)@o2NLjCHFIXg?2o98AY(_YM0Xn6Q9tk_A}`%5Ka$RR!1*B|BIei zFTpqpnhdGS23V70fCd{4ar>wtURr2``A$diru1>#v)LFI*qNZ~lqr6$JA*eLT4I@~ z4fZA2;jKfCXsP0Y(+AygI{Y%~d3d8eaSam}`QsP!K)l)zjFPfp$c~6W(aA_$aySNK za^o;>ECDaeCF4b-6l9!F!~J`HLqyvg7--LdzTq!8!2J`1j{JZ@!x`wEKLtJ)zCh27 zarhYa8Cw4u2BZFWu>8;vNTl_HP){GcntlRfi@IS%3RSH$3=XGEoJCowJ5LhSIUA!Ij|6Na38;>2hIQLgV# z^z)e#+>%=fyWNBASgjpw*ONT7ZC#Tzo>L}tRzV(pxc?13wR$;2^$?A*MckZ`lVE}7 zEE6iAFjnC6H)E%$uc;dD@Uf8+8 z2hVW%qVI$sHcbX#GIua)h=<|?BOD3y>sS&Ng4Fssz5SwEl)v7;WR9p zPRII(nb@x}4!Li}z{X?@_Qa3E*K40)(dH3Y>N^Zu(mudz&vziS;SJo19ssK66-bZu zLDtYy$g1pty$+qQPq+g{5?XbE$V;3P^0%q%8foZ}}Ow0{%xCWna_w=QDHql!>ZNg|qN?TGMe zYl#w-Aoh{2In`ey!gR+bKf3CoX8Nlle#Vaz3XGQm#*98AKZbVIMNDtGh##cgF}2wp zoeMqC;K3y{k-m&q>aL)1(p6mFe3I@4$=i=1N~8l6^xNQ} z^8=W5zYp^)>S1tK4IKJHLP;_UB)3;UOvzoSTyq;Xcoe~rhJ1KDmkn!WGvK*K3bgAc z!rOzfuooktV8(-VIOIb{uDeDK`S_4OZ+MeoZ@ozAg_p_wDemO+C>L_P%YnSFX-jfy z%}JrnCrQ-<24teJHfgkvNuGHmPx|?;Cv$0wNlwNzVXWRplq^djqRI~v?LnpNUhXwC zy>3PNtxwtXH~wGghmS}xyw(~p#Oiz)Qaf)j!jc1!x*dQ|UIgG>$v{jF2*ksDLFkqq zgdv8(*e)4@I|W1Wf?ycVZ45`nLlL+y>^j=?MPh+!H1g%fpsjcumLH0*JE=s~a zl^dAYkb=s(X&Bv;jul5Tv9>)6XXrWDoR*7^zUJWoqX1`J3o(3kFUT16!mU5|W>;Jf zOg!&~2P0k3*VYNIFF%Hxa~-hA@F6sLwL!6W3j`ZCgM!F?IGC5kz^>_6Ay39qrt{40(dTm!0xr+$f=NgJ)A>cOiU*mtdhvBn$e`> zh7gh(^Crvp+LKGojL3PbnPiIT26CPx5BaUMfjIlolXxiA%)WBOop#;cmaby@i0-&u zjIqf}hjIP47h`QxGQ*XtlJP|{24&=9P~Rv9H^;v_$hIb`IN>3Uh33O z9!lZ$JZhdjH^r^;o7_VEAoFy-k(W55q}ALzQfKBRxg@iTd^_1h-u%QSdqQuKoSqbN zM|&ulGwMWsF8hlN|G9yjE%`)jEsr3oN6Xj?B?oB_jI-$Xe=T6_i&SI$=3HVVDBNK1 z=CK&gg-;pT>$9+Nc^1Bu&B6`Gv+z-J7HW=Wp_P6%+BRk*pH>dOdzgd#X1Un%Jr`dl zsBAD{H+`*Mkh!=(E5_l6S#Ui}I0ZegfYF>bhDjHzcz(BVf3E(^bn zqO0$qXyzSk+)#>dZQO`&aXbl5X!C*M0?hhyIeBiKzCn){aq^$nhLkWebQR^g-V#qM5b5S&E zy`~C-d0KRcpFACCV(cT(QTXc%&1OedueY~@&w(gq3Z(z+^I{V=JtIP-;s_5T(D*p9&K8p;idHQ`ug2 zRA9U*b>CZ$ay`3;n!cb!MbvMglrAr!LWv}dp>hxjTo~rrWKdIYek3QR-Aa&iY7I! z7?se9OOChV53W`miDVxkt7Kpn{P z*TI~3Eu_}gz_!L}&b3aEE0gSYLa@a=mEOWS3h9U zrz2r_A`Av5g1~LY4^rm)z<$~#i1%=Um^NFuw!<89?;3;jenZflIsh`F+c~M$ikz?N z3LH@fIgWz+Ce9c~oYVbKgcB>Zfa9V$LzRmRQu!in)Fro4N<_A7zy{tI% zUZOnHTwR0Nzukx#DJ-N$&k<6SauQPO4ir?os34$r{K`VLmB92xKqOG{x!@)jIt=fPRGOgMHd1p-YIfC`BQx2NI2y)PJY zy8YnRRd0A3<_^5Nj_`4hHHcZAhSL?tphr;;9`|a)c=jIPPo%@*>MYLiniP(qPb{aw zB9!x5&6~sEvf?Y2K2cWVol{V|;J-~xPf=D)KX8+pVXK7N?~USW%W_23(oZZ^D?1>p z=6!jQTG_|>YLU@AYMw4!YC~eP7*X;Kv$MyMXYv#F$Grbj3k)Hf?8gPP7id2H6nn;d z@b1Pgj1GQ;+8ZC@z{fx5+sg;Y`q6}aa36VL8D5@PjLS9&;@y}9*#3(f_imj5JDU-Z z5*mOc&0eV4*alWbb>RGr1(R8&z?m(CAH7-dOF9KQ2IIiy=XGec4FMi0e^@Q)4I-o) zV7fiLePaPZz9-?0lOZ%09e`PBEm$?kgsVNfKxs}M9v+j0zyC9y{`nhlPq}e#lgpHi zfv-kZrAhBr*I4j4pf@vY<3BACZWQQhziZ~ox0m&z*99(`K8$KTtw2=~7Xx=qdxkb& z=@2?8KO&HBM0E7$Z#{kFtjGPF>nYO~hs2KT$~%zYwSJP}HG0nH;480BOW%2!Cne@y zDwmh{dU(+&RPxiWXsgtnyU*=r+PjWxcO_)q&%f87-pk50GML?yLDzjfapGuk3~_5T z^ok`}VAOfWvCgeSpmuKLN3!{5@;2SMYx8ir<13nMan;V-#$P9tMZW!&(Bl=(zS{jO zdsM>pcfstwmpDA9H+}t|ko5Ck52I9eoC;A^@GGWScg%HN9n$`CcYBd})@?7xpXTg> z{*!cBc{8sUStEsChT18yRfD2O$~{IEm{&SaPIz_S9o4Teoikn|JaazYYs>ea0v+Na zZ;7Hh+7{v6GY&gw35@B8mbR})voeczo^ROhC3jgb{iEr@(8h%^%E!A(Y~oy5V=m8P zm^3h??`<%GNjWoM= nNtAUYMk$)-dyb#@6`Iy}Hh;@Yga2cJ|AKVOX1TQ&y|(x-_C2AI diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr.meta b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr.meta index add9d61eb8b..b8ab3721de0 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr.meta +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/Texture/PreintegratedAzimuthalScattering.exr.meta @@ -50,7 +50,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -68,7 +68,7 @@ TextureImporter: buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: 3 + textureFormat: -1 textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 @@ -80,7 +80,7 @@ TextureImporter: buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 - textureFormat: 17 + textureFormat: 72 textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 From 642dd187c3a3837e656e536d59331c2982ac4b95 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 22 Jun 2021 11:11:30 -0400 Subject: [PATCH 22/73] Skip TT lobe for environment sample --- .../Runtime/Material/Hair/Hair.hlsl | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 524f72a2572..fe8d4e69f3e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -25,6 +25,10 @@ // #define HAIR_DISPLAY_REFERENCE_BSDF // #define HAIR_DISPLAY_REFERENCE_IBL +// An extra material feature flag we utilize to compile two different versions of BSDF evaluation (one with transmission lobe +// for analytic lights, one without transmission lobe for environment light). +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 16) + //----------------------------------------------------------------------------- // Helper functions/variable specific to this material //----------------------------------------------------------------------------- @@ -479,8 +483,15 @@ bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD void GetHairAngle(float3 T, float3 V, float3 L, out float sinThetaI, out float sinThetaR, out float cosThetaD, out float cosThetaT, out float thetaH, out float cosPhi) { +#if 0 // TODO: Optimize the math. For now, just get everything in terms of the BSDF approximation. - + sinThetaI = 0; + sinThetaR = 0; + cosThetaD = 0; + thetaH = 0; + cosThetaT = 0; + cosPhi = 0; +#else // Transform to the local frame for spherical coordinates float3x3 frame = GetLocalFrame(T); float3 I = TransformWorldToTangent(L, frame); @@ -502,6 +513,7 @@ void GetHairAngle(float3 T, float3 V, float3 L, float phiI = FastAtan2(I.y, I.x); float phiR = FastAtan2(R.y, R.x); cosPhi = cos(phiR - phiI); +#endif } CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) @@ -593,7 +605,6 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Solve the first three lobes (R, TT, TRT). // R - #if 1 { M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleR, bsdfData.roughnessR); @@ -603,10 +614,9 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD S += M * A * D; } - #endif // TT - #if 1 + if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT)) { M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTT, bsdfData.roughnessTT); @@ -627,10 +637,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD S += M * A * D; } - #endif // TRT - #if 1 { M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTRT, bsdfData.roughnessTRT); @@ -650,7 +658,6 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD S += M * A * D; } - #endif // Transmission event is built into the model. cbsdf.specR = S; @@ -1056,8 +1063,10 @@ void PostEvaluateBSDF( LightLoopContext lightLoopContext, bsdfData.roughnessR = saturate(bsdfData.roughnessR + 0.2); bsdfData.roughnessTRT = saturate(bsdfData.roughnessTRT + 0.2); + // Skip TT for the environment sample (compiler will optimizate for these two different BSDF versions) + bsdfData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT; + // This sample is treated as a directional light source and we evaluate the BSDF with it directly. - // TODO: Lobe mask for the TT lobe. CBSDF cbsdf = EvaluateBSDF(V, bsdfData.normalWS, preLightData, bsdfData); // Repurpose the spherical harmonic sample of the environment lighting (sampled with the modified normal). From 57867ad8523ab789290c417984420e47f702dab7 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 22 Jun 2021 13:11:03 -0400 Subject: [PATCH 23/73] Improve Parameterization: Longitudinal Roughness -> Smoothness --- .../Material/Hair/ShaderGraph/HairSubTarget.cs | 10 ++++++---- .../Editor/Material/ShaderGraph/HDBlockFields.cs | 2 -- .../Runtime/Material/Hair/Hair.cs | 2 -- .../Runtime/Material/Hair/Hair.cs.hlsl | 13 ++++--------- .../Runtime/Material/Hair/Hair.hlsl | 2 +- 5 files changed, 11 insertions(+), 18 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 5e7fff83beb..3eb7ec5e78b 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -86,12 +86,13 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) base.GetActiveBlocks(ref context); // Hair specific blocks - // TODO: Find common parameters between the two material types, if any. + context.AddBlock(HDBlockFields.SurfaceDescription.HairStrandDirection); + + // Parametrization for Kajiya-Kay and Marschner models. if (hairData.materialType == HairData.MaterialType.KajiyaKay) { context.AddBlock(HDBlockFields.SurfaceDescription.Transmittance); context.AddBlock(HDBlockFields.SurfaceDescription.RimTransmissionIntensity); - context.AddBlock(HDBlockFields.SurfaceDescription.HairStrandDirection); context.AddBlock(HDBlockFields.SurfaceDescription.SpecularTint); context.AddBlock(HDBlockFields.SurfaceDescription.SpecularShift); context.AddBlock(HDBlockFields.SurfaceDescription.SecondarySpecularTint); @@ -100,11 +101,12 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) } else { - context.AddBlock(HDBlockFields.SurfaceDescription.HairStrandDirection); - context.AddBlock(HDBlockFields.SurfaceDescription.LongitudinalRoughness); context.AddBlock(HDBlockFields.SurfaceDescription.AzimuthalRoughness, hairData.useRoughenedAzimuthalScattering); context.AddBlock(HDBlockFields.SurfaceDescription.PrimaryReflectionRoughness); context.AddBlock(HDBlockFields.SurfaceDescription.CuticleAngle); + + // TODO: Refraction Index + // Right now, the Marschner model implicitly assumes a human hair IOR of 1.55. } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index 02808371b9a..915cbfe7e81 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -123,8 +123,6 @@ public struct SurfaceDescription new FloatControl(0.5f), ShaderStage.Fragment); public static BlockFieldDescriptor SecondarySpecularShift = new BlockFieldDescriptor(SurfaceDescription.name, "SecondarySpecularShift", "Secondary Specular Shift", "SURFACEDESCRIPTION_SECONDARYSPECULARSHIFT", new FloatControl(-0.1f), ShaderStage.Fragment); - public static BlockFieldDescriptor LongitudinalRoughness = new BlockFieldDescriptor(SurfaceDescription.name, "LongitudinalRoughness", "Longitudinal Roughness", "SURFACEDESCRIPTION_LONGITUDINALROUGHNESS", - new FloatControl(0.5f), ShaderStage.Fragment); public static BlockFieldDescriptor AzimuthalRoughness = new BlockFieldDescriptor(SurfaceDescription.name, "AzimuthalRoughness", "Azimuthal Roughness", "SURFACEDESCRIPTION_AZIMUTHALROUGHNESS", new FloatControl(0.5f), ShaderStage.Fragment); public static BlockFieldDescriptor PrimaryReflectionRoughness = new BlockFieldDescriptor(SurfaceDescription.name, "PrimaryReflectionRoughness", "Primary Reflection Roughness", "SURFACEDESCRIPTION_PRIMARYREFLECTIONROUGHNESS", diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 4180042ad56..fe0045cd9ae 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -73,8 +73,6 @@ public struct SurfaceData public float secondarySpecularShift; // Marschner - [SurfaceDataAttributes("Longitudinal Roughness")] - public float roughnessLongitudinal; [SurfaceDataAttributes("Azimuthal Roughness")] public float roughnessAzimuthal; [SurfaceDataAttributes("Primary Reflection Roughness")] diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 95a50d56c4f..08caf839ac6 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -30,11 +30,10 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_TINT (1414) #define DEBUGVIEW_HAIR_SURFACEDATA_SPECULAR_SHIFT (1415) #define DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_SHIFT (1416) -#define DEBUGVIEW_HAIR_SURFACEDATA_LONGITUDINAL_ROUGHNESS (1417) -#define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1418) -#define DEBUGVIEW_HAIR_SURFACEDATA_PRIMARY_REFLECTION_ROUGHNESS (1419) -#define DEBUGVIEW_HAIR_SURFACEDATA_REFRACTION_INDEX (1420) -#define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1421) +#define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1417) +#define DEBUGVIEW_HAIR_SURFACEDATA_PRIMARY_REFLECTION_ROUGHNESS (1418) +#define DEBUGVIEW_HAIR_SURFACEDATA_REFRACTION_INDEX (1419) +#define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1420) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -94,7 +93,6 @@ struct SurfaceData float3 secondarySpecularTint; float specularShift; float secondarySpecularShift; - float roughnessLongitudinal; float roughnessAzimuthal; float roughnessPrimaryReflection; float ior; @@ -201,9 +199,6 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f case DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_SHIFT: result = surfacedata.secondarySpecularShift.xxx; break; - case DEBUGVIEW_HAIR_SURFACEDATA_LONGITUDINAL_ROUGHNESS: - result = surfacedata.roughnessLongitudinal.xxx; - break; case DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS: result = surfacedata.roughnessAzimuthal.xxx; break; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 1db3ca2d4e6..379b343d186 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -236,7 +236,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) bsdfData.cuticleAngleTRT = -cuticleAngle * 3.0 * 0.5; // Longitudinal Roughness - const float roughnessL = PerceptualRoughnessToRoughness(surfaceData.roughnessLongitudinal); + const float roughnessL = PerceptualRoughnessToRoughness(bsdfData.perceptualRoughness); bsdfData.roughnessR = roughnessL * surfaceData.roughnessPrimaryReflection; bsdfData.roughnessTT = roughnessL * 0.5; bsdfData.roughnessTRT = roughnessL * 2.0; From 1f5b02db58b59adbd62f76b54e4e34a9e0d1b635 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 22 Jun 2021 13:31:51 -0400 Subject: [PATCH 24/73] Improve Parameterization: Azimuthal Roughness -> Radial Smoothness --- .../Hair/ShaderGraph/HairPropertyBlocks.cs | 2 +- .../Hair/ShaderGraph/HairSubTarget.cs | 4 ++-- .../Hair/ShaderGraph/ShaderPass.template.hlsl | 7 ++----- .../Material/ShaderGraph/HDBlockFields.cs | 6 +++--- .../Runtime/Material/Hair/Hair.cs | 8 ++------ .../Runtime/Material/Hair/Hair.cs.hlsl | 20 +++++-------------- .../Runtime/Material/Hair/Hair.hlsl | 20 +++++++++++-------- 7 files changed, 27 insertions(+), 40 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 2eebb10daee..0109cea8928 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -39,7 +39,7 @@ class HairAdvancedOptionsPropertyBlock : AdvancedOptionsPropertyBlock class Styles { public static GUIContent useLightFacingNormal = new GUIContent("Use Light Facing Normal", "TODO"); - public static GUIContent useRoughenedAzimuthalScattering = new GUIContent("Use Roughened Azimuthal Scattering", ""); + public static GUIContent useRoughenedAzimuthalScattering = new GUIContent("Allow Radial Smoothness", ""); public static GUIContent scatteringMode = new GUIContent("Scattering Mode", ""); } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 3eb7ec5e78b..04b78d8b8a6 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -101,8 +101,8 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) } else { - context.AddBlock(HDBlockFields.SurfaceDescription.AzimuthalRoughness, hairData.useRoughenedAzimuthalScattering); - context.AddBlock(HDBlockFields.SurfaceDescription.PrimaryReflectionRoughness); + context.AddBlock(HDBlockFields.SurfaceDescription.RadialSmoothness, hairData.useRoughenedAzimuthalScattering); + context.AddBlock(HDBlockFields.SurfaceDescription.PrimaryReflectionSmoothness); context.AddBlock(HDBlockFields.SurfaceDescription.CuticleAngle); // TODO: Refraction Index diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl index 5fcb55d88de..06e5c31efc6 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl @@ -41,11 +41,8 @@ void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDes $SurfaceDescription.SecondarySpecularTint: surfaceData.secondarySpecularTint = surfaceDescription.SecondarySpecularTint; $SurfaceDescription.SecondarySpecularShift: surfaceData.secondarySpecularShift = surfaceDescription.SecondarySpecularShift; - // TODO: Adopt smoothness nomenclature + factorization? - $SurfaceDescription.LongitudinalRoughness: surfaceData.roughnessLongitudinal = surfaceDescription.LongitudinalRoughness; - $SurfaceDescription.AzimuthalRoughness: surfaceData.roughnessAzimuthal = surfaceDescription.AzimuthalRoughness; - $SurfaceDescription.PrimaryReflectionRoughness: surfaceData.roughnessPrimaryReflection = surfaceDescription.PrimaryReflectionRoughness; - $SurfaceDescription.RefractionIndex: surfaceData.ior = surfaceDescription.RefractionIndex; + $SurfaceDescription.RadialSmoothness: surfaceData.perceptualRadialSmoothness = surfaceDescription.RadialSmoothness; + $SurfaceDescription.PrimaryReflectionSmoothness: surfaceData.primaryReflectionSmoothness = surfaceDescription.PrimaryReflectionSmoothness; $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; // These static material feature allow compile time optimization diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index 915cbfe7e81..6f9c4550067 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -123,12 +123,12 @@ public struct SurfaceDescription new FloatControl(0.5f), ShaderStage.Fragment); public static BlockFieldDescriptor SecondarySpecularShift = new BlockFieldDescriptor(SurfaceDescription.name, "SecondarySpecularShift", "Secondary Specular Shift", "SURFACEDESCRIPTION_SECONDARYSPECULARSHIFT", new FloatControl(-0.1f), ShaderStage.Fragment); - public static BlockFieldDescriptor AzimuthalRoughness = new BlockFieldDescriptor(SurfaceDescription.name, "AzimuthalRoughness", "Azimuthal Roughness", "SURFACEDESCRIPTION_AZIMUTHALROUGHNESS", + public static BlockFieldDescriptor RadialSmoothness = new BlockFieldDescriptor(SurfaceDescription.name, "RadialSmoothness", "Radial Smoothness", "SURFACEDESCRIPTION_RADIALSMOOTHNESS", new FloatControl(0.5f), ShaderStage.Fragment); - public static BlockFieldDescriptor PrimaryReflectionRoughness = new BlockFieldDescriptor(SurfaceDescription.name, "PrimaryReflectionRoughness", "Primary Reflection Roughness", "SURFACEDESCRIPTION_PRIMARYREFLECTIONROUGHNESS", + public static BlockFieldDescriptor PrimaryReflectionSmoothness = new BlockFieldDescriptor(SurfaceDescription.name, "PrimaryReflectionSmoothness", "Primary Reflection Smoothness", "SURFACEDESCRIPTION_PRIMARYREFLECTIONSMOOTHNESS", new FloatControl(1f), ShaderStage.Fragment); public static BlockFieldDescriptor CuticleAngle = new BlockFieldDescriptor(SurfaceDescription.name, "CuticleAngle", "Cuticle Angle", "SURFACEDESCRIPTION_CUTICLEANGLE", - new FloatControl(1.55f), ShaderStage.Fragment); + new FloatControl(3f), ShaderStage.Fragment); // -------------------------------------------------- // StackLit diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index fe0045cd9ae..9efad607f05 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -74,11 +74,9 @@ public struct SurfaceData // Marschner [SurfaceDataAttributes("Azimuthal Roughness")] - public float roughnessAzimuthal; + public float perceptualRadialSmoothness; [SurfaceDataAttributes("Primary Reflection Roughness")] - public float roughnessPrimaryReflection; - [SurfaceDataAttributes("Refraction Index")] - public float ior; + public float primaryReflectionSmoothness; [SurfaceDataAttributes("Cuticle Angle")] public float cuticleAngle; }; @@ -146,8 +144,6 @@ public struct BSDFData public float roughnessTRT; public float roughnessRadial; - - public float ior; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 08caf839ac6..e14ed36e09f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -32,8 +32,7 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_SHIFT (1416) #define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1417) #define DEBUGVIEW_HAIR_SURFACEDATA_PRIMARY_REFLECTION_ROUGHNESS (1418) -#define DEBUGVIEW_HAIR_SURFACEDATA_REFRACTION_INDEX (1419) -#define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1420) +#define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1419) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -72,7 +71,6 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT (1481) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) -#define DEBUGVIEW_HAIR_BSDFDATA_IOR (1484) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -93,9 +91,8 @@ struct SurfaceData float3 secondarySpecularTint; float specularShift; float secondarySpecularShift; - float roughnessAzimuthal; - float roughnessPrimaryReflection; - float ior; + float perceptualRadialSmoothness; + float primaryReflectionSmoothness; float cuticleAngle; }; @@ -135,7 +132,6 @@ struct BSDFData float roughnessTT; float roughnessTRT; float roughnessRadial; - float ior; }; // @@ -200,13 +196,10 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f result = surfacedata.secondarySpecularShift.xxx; break; case DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS: - result = surfacedata.roughnessAzimuthal.xxx; + result = surfacedata.perceptualRadialSmoothness.xxx; break; case DEBUGVIEW_HAIR_SURFACEDATA_PRIMARY_REFLECTION_ROUGHNESS: - result = surfacedata.roughnessPrimaryReflection.xxx; - break; - case DEBUGVIEW_HAIR_SURFACEDATA_REFRACTION_INDEX: - result = surfacedata.ior.xxx; + result = surfacedata.primaryReflectionSmoothness.xxx; break; case DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE: result = surfacedata.cuticleAngle.xxx; @@ -324,9 +317,6 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL: result = bsdfdata.roughnessRadial.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_IOR: - result = bsdfdata.ior.xxx; - break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 379b343d186..75cda344413 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -226,25 +226,29 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) { // Note: Light Path Length is computed per-light. - // Absorption - bsdfData.absorption = DiffuseColorToAbsorption(surfaceData.diffuseColor, surfaceData.roughnessAzimuthal); - // Cuticle Angle const float cuticleAngle = radians(surfaceData.cuticleAngle); - bsdfData.cuticleAngleR = cuticleAngle; - bsdfData.cuticleAngleTT = -cuticleAngle * 0.5; - bsdfData.cuticleAngleTRT = -cuticleAngle * 3.0 * 0.5; + bsdfData.cuticleAngleR = -cuticleAngle; + bsdfData.cuticleAngleTT = cuticleAngle * 0.5; + bsdfData.cuticleAngleTRT = cuticleAngle * 3.0 * 0.5; // Longitudinal Roughness const float roughnessL = PerceptualRoughnessToRoughness(bsdfData.perceptualRoughness); - bsdfData.roughnessR = roughnessL * surfaceData.roughnessPrimaryReflection; + bsdfData.roughnessR = roughnessL * PerceptualSmoothnessToPerceptualRoughness(surfaceData.primaryReflectionSmoothness); bsdfData.roughnessTT = roughnessL * 0.5; bsdfData.roughnessTRT = roughnessL * 2.0; // Azimuthal Roughness #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING - bsdfData.roughnessRadial = PerceptualRoughnessToRoughness(surfaceData.roughnessAzimuthal); + bsdfData.roughnessRadial = PerceptualSmoothnessToRoughness(surfaceData.perceptualRadialSmoothness); + #else + // Need to provide some sensible default in case of no roughened azimuthal scattering, since currently our + // absorption is dependent on it. + bsdfData.roughnessRadial = 0.5; #endif + + // Absorption + bsdfData.absorption = DiffuseColorToAbsorption(surfaceData.diffuseColor, bsdfData.roughnessRadial); } ApplyDebugToBSDFData(bsdfData); From 3affd51e8b35a0bffb07378ff2f76132a65c9a5b Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 22 Jun 2021 16:42:03 -0400 Subject: [PATCH 25/73] Optimize the math for spherical coordinate angles. --- .../Runtime/Material/Hair/Hair.hlsl | 78 ++++++++----------- 1 file changed, 32 insertions(+), 46 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 75cda344413..5954ca9647e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -51,7 +51,7 @@ float ModifiedRefractionIndex(float cosThetaD) // float sinThetaD = sqrt(1 - Sq(cosThetaD)); // return sqrt(Sq(eta) - Sq(sinThetaD)) / cosThetaD; - // Approximate the modified refraction index for human hair (1.55) + // Karis approximation for the modified refraction index for human hair (1.55) return 1.19 / cosThetaD + (0.36 * cosThetaD); } @@ -486,40 +486,24 @@ bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD return true; // Due to either reflection or transmission being always active } -void GetHairAngle(float3 T, float3 V, float3 L, - out float sinThetaI, out float sinThetaR, out float cosThetaD, out float cosThetaT, out float thetaH, out float cosPhi) +void GetMarschnerAngle(float3 T, float3 V, float3 L, + out float sinTheta, out float cosThetaD, out float cosPhi) { -#if 0 - // TODO: Optimize the math. For now, just get everything in terms of the BSDF approximation. - sinThetaI = 0; - sinThetaR = 0; - cosThetaD = 0; - thetaH = 0; - cosThetaT = 0; - cosPhi = 0; -#else - // Transform to the local frame for spherical coordinates - float3x3 frame = GetLocalFrame(T); - float3 I = TransformWorldToTangent(L, frame); - float3 R = TransformWorldToTangent(V, frame); - - // Longitudinal angle. - float thetaI = HALF_PI - acos(I.z); - float thetaR = HALF_PI - acos(R.z); - sinThetaI = sin(thetaI); - sinThetaR = sin(thetaR); - cosThetaD = cos((thetaR - thetaI) * 0.5); - thetaH = (thetaI + thetaR) * 0.5; - - // Refraction angle (required for absorption) - float sinThetaT = sinThetaI / 1.55; - cosThetaT = sqrt(1 - Sq(sinThetaT)); - - // Azimuthal angle. - float phiI = FastAtan2(I.y, I.x); - float phiR = FastAtan2(R.y, R.x); - cosPhi = cos(phiR - phiI); -#endif + // Optimized math for spherical coordinate angle derivation. + // Ref: Light Scattering from Human Hair Fibers + + // Note, we use the sine theta instead of theta H for Longitudinal scattering. + float sinThetaI = dot(T, L); + float sinThetaR = dot(T, V); + sinTheta = sinThetaI + sinThetaR; + + cosThetaD = cos(0.5 * FastASin(sinThetaI) - FastASin(sinThetaR)); + + // Projection onto the normal plane, and since phi is the relative angle, we take the cosine in this projection. + // Ref: Hair Animation and Rendering in the Nalu Demo + float3 LProj = L - sinThetaI * T; + float3 VProj = V - sinThetaR * T; + cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj)); } CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) @@ -544,11 +528,11 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD float clampedNdotV = ClampNdotV(NdotV); float clampedNdotL = saturate(NdotL); - float LdotV, NdotH, LdotH, invLenLV; - GetBSDFAngle(V, L, NdotL, NdotV, LdotV, NdotH, LdotH, invLenLV); - if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_KAJIYA_KAY)) { + float LdotV, NdotH, LdotH, invLenLV; + GetBSDFAngle(V, L, NdotL, NdotV, LdotV, NdotH, LdotH, invLenLV); + float3 t1 = ShiftTangent(T, N, bsdfData.specularShift); float3 t2 = ShiftTangent(T, N, bsdfData.secondarySpecularShift); @@ -595,14 +579,16 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // "Light Scattering from Human Hair Fibers" (Marschner 2003) // Retrieve angles via spherical coordinates in the hair shading space. - float sinThetaI, sinThetaR, cosThetaD, cosThetaT, thetaH, cosPhi; - GetHairAngle(T, V, L, sinThetaI, sinThetaR, cosThetaD, cosThetaT, thetaH, cosPhi); + float sinTheta, cosThetaD, cosPhi; + GetMarschnerAngle(T, V, L, sinTheta, cosThetaD, cosPhi); // The index of refraction that can be used to analyze scattering in the normal plane (Bravais' Law). float etaPrime = ModifiedRefractionIndex(cosThetaD); // Reduced absorption coefficient. - float3 muPrime = bsdfData.absorption / cosThetaT; + // Note: Technically should divide absorption by thetaT here, but comparing to reference + // proved a negligible difference and thus not worth the extra computation cost. + float3 mu = bsdfData.absorption; // Various terms reused between lobe evaluation. float M, D, F = 0; @@ -612,11 +598,11 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // R { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleR, bsdfData.roughnessR); + M = D_LongitudinalScatteringGaussian(sinTheta - bsdfData.cuticleAngleR, bsdfData.roughnessR); // Distribution and attenuation for this path as proposed by d'Eon et al, replaced with a trig identity for cos half phi. D = 0.25 * sqrt(0.5 + 0.5 * cosPhi); - A = F_Schlick(bsdfData.fresnel0, sqrt(0.5 + 0.5 * LdotV)); + A = F_Schlick(bsdfData.fresnel0, sqrt(0.5 + 0.5 * dot(L, V))); S += M * A * D; } @@ -624,7 +610,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // TT if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT)) { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTT, bsdfData.roughnessTT); + M = D_LongitudinalScatteringGaussian(sinTheta - bsdfData.cuticleAngleTT, bsdfData.roughnessTT); #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING // This lobe's distribution is determined by sampling coefficients from a pre-integrated LUT of the distribution and evaluating a gaussian. @@ -638,7 +624,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Note: H = ~0.55 seems to be more suitable for this lobe's attenuation, but H = 0 allows us to simplify more of the math at the cost of slightly more error. // Plot: https://www.desmos.com/calculator/pum8esu6ot F = F_Schlick(bsdfData.fresnel0, cosThetaD); - T = exp(-4 * muPrime); + T = exp(-4 * mu); A = Sq(1 - F) * T; S += M * A * D; @@ -646,7 +632,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // TRT { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTRT, bsdfData.roughnessTRT); + M = D_LongitudinalScatteringGaussian(sinTheta - bsdfData.cuticleAngleTRT, bsdfData.roughnessTRT); // TODO: Move this out of the BSDF evaluation. #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING @@ -659,7 +645,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Attenutation (Simplified for H = √3/2) F = F_Schlick(bsdfData.fresnel0, cosThetaD * 0.5); - T = exp(-2 * muPrime * (1 + cos(2 * FastASin(HAIR_H_TRT / etaPrime)))); + T = exp(-2 * mu * (1 + cos(2 * FastASin(HAIR_H_TRT / etaPrime)))); A = Sq(1 - F) * F * Sq(T); S += M * A * D; From 6e8b2af5b2bfa2673e3e90c1275ddad68b01502b Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 22 Jun 2021 17:43:19 -0400 Subject: [PATCH 26/73] NaN suppression --- .../Runtime/Material/Hair/Hair.hlsl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 5954ca9647e..ddbd5d956dc 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -652,7 +652,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD } // Transmission event is built into the model. - cbsdf.specR = S; + // Some stubborn NaNs have cropped up due to the angle optimization, we suppress them here with a max for now. + cbsdf.specR = max(S, 0); #endif // Multiple Scattering From 9ba40631d39d19a53b3c53e5226841413a52a4fd Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 22 Jun 2021 18:42:18 -0400 Subject: [PATCH 27/73] Revert back from sine theta to the half angle for longitudinal scatter --- .../Runtime/Material/Hair/Hair.hlsl | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index ddbd5d956dc..84e4e5199dc 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -487,20 +487,21 @@ bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD } void GetMarschnerAngle(float3 T, float3 V, float3 L, - out float sinTheta, out float cosThetaD, out float cosPhi) + out float thetaH, out float cosThetaD, out float cosPhi) { // Optimized math for spherical coordinate angle derivation. // Ref: Light Scattering from Human Hair Fibers - - // Note, we use the sine theta instead of theta H for Longitudinal scattering. float sinThetaI = dot(T, L); float sinThetaR = dot(T, V); - sinTheta = sinThetaI + sinThetaR; - cosThetaD = cos(0.5 * FastASin(sinThetaI) - FastASin(sinThetaR)); + float thetaI = FastASin(sinThetaI); + float thetaR = FastASin(sinThetaR); + thetaH = (thetaI + thetaR) * 0.5; + + cosThetaD = cos((thetaR - thetaI) * 0.5); - // Projection onto the normal plane, and since phi is the relative angle, we take the cosine in this projection. // Ref: Hair Animation and Rendering in the Nalu Demo + // Projection onto the normal plane, and since phi is the relative angle, we take the cosine in this projection. float3 LProj = L - sinThetaI * T; float3 VProj = V - sinThetaR * T; cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj)); @@ -579,8 +580,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // "Light Scattering from Human Hair Fibers" (Marschner 2003) // Retrieve angles via spherical coordinates in the hair shading space. - float sinTheta, cosThetaD, cosPhi; - GetMarschnerAngle(T, V, L, sinTheta, cosThetaD, cosPhi); + float thetaH, cosThetaD, cosPhi; + GetMarschnerAngle(T, V, L, thetaH, cosThetaD, cosPhi); // The index of refraction that can be used to analyze scattering in the normal plane (Bravais' Law). float etaPrime = ModifiedRefractionIndex(cosThetaD); @@ -598,7 +599,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // R { - M = D_LongitudinalScatteringGaussian(sinTheta - bsdfData.cuticleAngleR, bsdfData.roughnessR); + M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleR, bsdfData.roughnessR); // Distribution and attenuation for this path as proposed by d'Eon et al, replaced with a trig identity for cos half phi. D = 0.25 * sqrt(0.5 + 0.5 * cosPhi); @@ -610,7 +611,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // TT if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT)) { - M = D_LongitudinalScatteringGaussian(sinTheta - bsdfData.cuticleAngleTT, bsdfData.roughnessTT); + M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTT, bsdfData.roughnessTT); #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING // This lobe's distribution is determined by sampling coefficients from a pre-integrated LUT of the distribution and evaluating a gaussian. @@ -632,7 +633,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // TRT { - M = D_LongitudinalScatteringGaussian(sinTheta - bsdfData.cuticleAngleTRT, bsdfData.roughnessTRT); + M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTRT, bsdfData.roughnessTRT); // TODO: Move this out of the BSDF evaluation. #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING From e27115ecb1cd95b53c292976c579d32ef5b2e0b5 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 23 Jun 2021 10:10:29 -0400 Subject: [PATCH 28/73] Fix all the warnings --- .../Runtime/Material/Hair/Hair.hlsl | 9 +++++++-- .../Runtime/Material/Hair/HairReference.hlsl | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 84e4e5199dc..16a7204b6c9 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -362,6 +362,11 @@ PreLightData GetPreLightData(float3 V, PositionInputs posInput, inout BSDFData b #if _USE_LIGHT_FACING_NORMAL float3 N = ComputeViewFacingNormal(V, bsdfData.hairStrandDirectionWS); + + // Silence the imaginary square root compiler warning for the cosThetaParam. + // The compiler seems to think that the dot product result between view vector and view facing normal produces + // a result > 1, thus producing an imaginary square root for sqrt(1 - x). + V = normalize(V); #else float3 N = bsdfData.normalWS; #endif @@ -592,8 +597,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD float3 mu = bsdfData.absorption; // Various terms reused between lobe evaluation. - float M, D, F = 0; - float3 A, T, S = 0; + float M, D = 0; + float3 A, F, T, S = 0; // Solve the first three lobes (R, TT, TRT). diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl index 6a56ea39f4e..bca2f4943d2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl @@ -18,7 +18,7 @@ struct ReferenceInputs float eta; float etaP; - float fresnel0; + float3 fresnel0; float shifts[3]; float variances[3]; @@ -108,7 +108,7 @@ float AzimuthalDirection(uint p, float etaPrime, float h) return omega; } -float3 Attenuation(uint p, float h, float LdotV, float thetaD, float etaPrime, float fresnel0, float3 absorption) +float3 Attenuation(uint p, float h, float LdotV, float thetaD, float etaPrime, float3 fresnel0, float3 absorption) { float3 A; @@ -119,7 +119,7 @@ float3 Attenuation(uint p, float h, float LdotV, float thetaD, float etaPrime, f } else { - float f = F_Schlick(fresnel0, acos(cos(thetaD) * cos(asin(h)))); + float3 f = F_Schlick(fresnel0, acos(cos(thetaD) * cos(asin(h)))); float gammaT = asin(h / etaPrime); float3 T = exp(-2 * absorption * (1 + cos(2 * gammaT))); From 63aae44180ac2c7de05e24c3d91b811a990059ba Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 25 Jun 2021 10:41:17 -0400 Subject: [PATCH 29/73] Re-enable area light and fall back to GGX like Kajiya --- .../Runtime/Material/Hair/Hair.hlsl | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 16a7204b6c9..104cd1447d5 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -376,7 +376,7 @@ PreLightData GetPreLightData(float3 V, PositionInputs posInput, inout BSDFData b float unused; - if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_KAJIYA_KAY)) + // Both models share usage of GGX for now due to anisotropic LTC area light limitation, and Marschner invokes the BSDF directly for the environment evaluation. { // Note: For Kajiya hair we currently rely on a single cubemap sample instead of two, as in practice smoothness of both lobe aren't too far from each other. // and we take smoothness of the secondary lobe as it is often more rough (it is the colored one). @@ -387,12 +387,6 @@ PreLightData GetPreLightData(float3 V, PositionInputs posInput, inout BSDFData b // Note: this normalization term is wrong, correct one is (1/(Pi^2)). preLightData.diffuseFGD = 1.0; } - else - { - preLightData.iblPerceptualRoughness = bsdfData.perceptualRoughness; - preLightData.specularFGD = 1.0; - preLightData.diffuseFGD = 1.0; - } // Stretch hack... Copy-pasted from GGX, ALU-optimized for hair. // float3 iblN = normalize(lerp(bsdfData.normalWS, N, bsdfData.anisotropy)); @@ -925,16 +919,6 @@ DirectLighting EvaluateBSDF_Area(LightLoopContext lightLoopContext, PreLightData preLightData, LightData lightData, BSDFData bsdfData, BuiltinData builtinData) { - if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) - { - DirectLighting lighting; - ZERO_INITIALIZE(DirectLighting, lighting); - - // Currently, this model does not support area lights. Add the support once an issue is - // fixed with making an LTC fit for anisotropic materials. - return lighting; - } - if (lightData.lightType == GPULIGHTTYPE_TUBE) { return EvaluateBSDF_Line(lightLoopContext, V, posInput, preLightData, lightData, bsdfData, builtinData); From ba0196d241f30e40793a026e576645419941c0b9 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 25 Jun 2021 10:44:53 -0400 Subject: [PATCH 30/73] Add note regarding Marschner pre-integration --- .../PreIntegratedFGD/PreIntegratedFGD_Marschner.shader | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader index 8226dcb02a1..1b9c823b8d2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader @@ -47,7 +47,10 @@ Shader "Hidden/HDRP/PreIntegratedFGD_Marschner" float4 Frag(Varyings input) : SV_Target { - // TODO + // Currently, we do not implement the pre-integration of Marschner for two reason: + // 1) Area Light support for anisotropic LTC is not supported, and we fall back to GGX. + // 2) Environment lighting is evaluated with the BSDF directly. + float4 preFGD = 0; return float4(preFGD.xyz, 1.0); From d9521f5ddaeb33b8fad84eaba468f921a62ab404 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 28 Jun 2021 15:24:01 -0400 Subject: [PATCH 31/73] Update hair graphics test --- .../Scenes/1x_Materials/1401_HairGraph.unity | 2385 ++++- .../HairTest Light Facing Normal_Opaque.mat | 19 +- ...HairTest Marschner Light Facing Normal.mat | 318 + ...est Marschner Light Facing Normal.mat.meta | 8 + ...t Marschner Light Facing Normal_Opaque.mat | 320 + ...schner Light Facing Normal_Opaque.mat.meta | 8 + ...HairTest Marschner No Shadow Threshold.mat | 318 + ...est Marschner No Shadow Threshold.mat.meta | 8 + .../1401_HairGraph/HairTest_Marschner.mat | 339 + .../HairTest_Marschner.mat.meta | 8 + .../HairTest_Marschner_Opaque.mat | 341 + .../HairTest_Marschner_Opaque.mat.meta | 8 + .../1401_HairGraph/HairTest_Opaque.mat | 19 +- .../Shadergraph/SG_Hair.shadergraph | 9478 ++++++++++++++++- .../Shadergraph/SG_Hair_Marschner.shadergraph | 6428 +++++++++++ .../SG_Hair_Marschner.shadergraph.meta | 10 + ...r_Marschner_LightFacingNormals.shadergraph | 6428 +++++++++++ ...schner_LightFacingNormals.shadergraph.meta | 10 + ...ir_Marschner_NoShadowThreshold.shadergraph | 6428 +++++++++++ ...rschner_NoShadowThreshold.shadergraph.meta | 10 + .../1401_HairGraphSettings.lighting | 63 + .../1401_HairGraphSettings.lighting.meta | 8 + .../Vulkan/None/1401_HairGraph.png | 4 +- .../OSXEditor/Metal/None/1401_HairGraph.png | 4 +- .../Direct3D11/None/1401_HairGraph.png | 4 +- .../Direct3D12/None/1401_HairGraph.png | 4 +- .../Vulkan/None/1401_HairGraph.png | 4 +- 27 files changed, 31897 insertions(+), 1085 deletions(-) create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal.mat create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal.mat.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal_Opaque.mat create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal_Opaque.mat.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner No Shadow Threshold.mat create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner No Shadow Threshold.mat.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner.mat create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner.mat.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque.mat create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque.mat.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraphSettings.lighting create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraphSettings.lighting.meta diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph.unity index af0c6853bbb..9f1610e3222 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph.unity +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph.unity @@ -38,12 +38,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.097270824, g: 0.101579025, b: 0.10441435, a: 1} + m_IndirectSpecularColor: {r: 0.09726915, g: 0.101576716, b: 0.1044133, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 @@ -99,7 +99,8 @@ LightmapSettings: m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 112000000, guid: 95c8d76730e02894da0882e5350d1812, type: 2} - m_UseShadowmask: 0 + m_LightingSettings: {fileID: 4890085278179872738, guid: 0da6b29ee2c0b2244985ffce66a03e82, + type: 2} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -119,6 +120,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -165,10 +168,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 1 m_Materials: @@ -193,6 +198,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &333805874 MeshFilter: m_ObjectHideFlags: 0 @@ -211,51 +217,85 @@ Transform: m_LocalRotation: {x: 0.013634171, y: 0.15583922, z: 0.08608275, w: 0.9839299} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1.047619, y: 1.0476191, z: 1.0476191} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1718021479} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 18, z: 10} +--- !u!1 &367260125 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 367260126} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &367260126 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 367260125} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: 0.26775196, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 718955200} + - {fileID: 1114387487} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &457997677 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1947511358} m_Modifications: - - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_Name - value: BentPlane (3) + propertyPath: m_RootOrder + value: 5 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalPosition.x - value: 2.339 + propertyPath: m_LocalScale.x + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalPosition.y - value: 0.2 + propertyPath: m_LocalScale.y + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalPosition.z - value: -1.5 + propertyPath: m_LocalScale.z + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.x - value: -0.7071068 + propertyPath: m_LocalPosition.x + value: 1.6117282 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalPosition.y + value: -0.676524 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_LocalPosition.z + value: -1.557965 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} @@ -264,8 +304,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_RootOrder - value: 9 + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} @@ -282,6 +332,134 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 976d7b40c63248c488350e967591decb, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Name + value: BentPlane (3) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} +--- !u!4 &457997678 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 457997677} + m_PrefabAsset: {fileID: 0} +--- !u!1 &521845498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 521845499} + - component: {fileID: 521845502} + - component: {fileID: 521845501} + - component: {fileID: 521845500} + m_Layer: 0 + m_Name: Sphere_Opaque + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &521845499 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 521845498} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.80527186, y: -0.37652397, z: -1.557965} + m_LocalScale: {x: 0.8018109, y: 0.8018109, z: 0.8018109} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1333828272} + m_Father: {fileID: 1740667119} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &521845500 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 521845498} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &521845501 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 521845498} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 33b70156a300851489f650590cc59e92, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &521845502 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 521845498} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &612512998 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1740667119} + m_Modifications: + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} propertyPath: m_LocalScale.x @@ -297,13 +475,74 @@ PrefabInstance: propertyPath: m_LocalScale.z value: 70 objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.x + value: 1.6117282 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.676524 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.z + value: -1.557965 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071067 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: 976d7b40c63248c488350e967591decb, type: 2} + objectReference: {fileID: 2100000, guid: e48744028cd081e448cdc62ef839f71d, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Name + value: BentPlane (3) + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} +--- !u!4 &612512999 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 612512998} + m_PrefabAsset: {fileID: 0} --- !u!1 &660069173 GameObject: m_ObjectHideFlags: 0 @@ -381,6 +620,7 @@ Light: m_UseColorTemperature: 1 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &660069175 @@ -393,6 +633,7 @@ Transform: m_LocalRotation: {x: 0, y: 0.9393938, z: -0.34284008, w: 0} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -409,39 +650,52 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 6 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 1024 - m_ObsoleteContactShadows: 1 m_Intensity: 8 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 2 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 - m_LightTypeExtent: 0 - m_SpotLightShape: 0 m_ShapeWidth: 0.5 m_ShapeHeight: 0.5 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 + m_UseRayTracedShadows: 0 + m_NumRayTracingSamples: 4 + m_FilterTracedShadow: 1 + m_FilterSizeTraced: 16 + m_SunLightConeAngle: 0.5 + m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -449,10 +703,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -464,13 +717,23 @@ MonoBehaviour: m_VolumetricShadowDimmer: 1 m_ShadowFadeDistance: 10000 m_UseContactShadow: - m_Level: 0 - m_UseOverride: 1 m_Override: 1 + m_UseOverride: 1 + m_Level: 0 + m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 - m_ConstantBias: 0.15 + m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 + m_OnDemandShadowRenderOnPlacement: 1 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -486,137 +749,250 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 0 ---- !u!1001 &796446786 -PrefabInstance: + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 1024 + m_ObsoleteContactShadows: 1 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 +--- !u!1 &718955199 +GameObject: m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_Name - value: BentPlane (2) - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_LocalPosition.x - value: 3.5 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_LocalPosition.y - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 718955200} + - component: {fileID: 718955202} + - component: {fileID: 718955201} + m_Layer: 0 + m_Name: Kajiya + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &718955200 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718955199} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: -3.11, y: -0.081, z: 1.78} + m_LocalScale: {x: 0.21546872, y: 0.21546872, z: 0.21546872} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 367260126} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!102 &718955201 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718955199} + m_Text: Kajiya-Kay + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 0 + m_TabSize: 4 + m_FontSize: 0 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 74a5091d8707f334b9a5c31ef71a64ba, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!23 &718955202 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718955199} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 74a5091d8707f334b9a5c31ef71a64ba, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1001 &796446786 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1947511358} + m_Modifications: + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_RootOrder + value: 4 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.x - value: -0.7071068 + propertyPath: m_LocalScale.x + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalScale.y + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_LocalScale.z + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071067 + propertyPath: m_LocalPosition.x + value: 2.7727282 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_RootOrder - value: 6 + propertyPath: m_LocalPosition.y + value: -0.676524 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_LocalPosition.z + value: -0.05796504 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 + propertyPath: m_LocalRotation.w + value: 0.7071067 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.x + value: -0.7071068 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalScale.x - value: 70 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalScale.y - value: 70 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalScale.z - value: 70 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 7a50d5661a7fe487692535c0bcd21064, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Name + value: BentPlane (2) + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} ---- !u!1001 &1038286093 +--- !u!4 &796446787 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 796446786} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &811747106 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1740667119} m_Modifications: - - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_Name - value: BentPlane + propertyPath: m_RootOrder + value: 4 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalPosition.x - value: 1.24 + propertyPath: m_LocalScale.x + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalPosition.y - value: 0.2 + propertyPath: m_LocalScale.y + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_LocalScale.z + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.x - value: -0.7071068 + propertyPath: m_LocalPosition.x + value: 2.7727282 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalPosition.y + value: -0.676524 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_LocalPosition.z + value: -0.05796504 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} @@ -625,8 +1001,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_RootOrder - value: 5 + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} @@ -643,6 +1029,36 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 0c3f275564dd0a546bf8bb16e0fbba34, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Name + value: BentPlane (2) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} +--- !u!4 &811747107 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 811747106} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1038286093 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1947511358} + m_Modifications: + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} propertyPath: m_LocalScale.x @@ -658,13 +1074,74 @@ PrefabInstance: propertyPath: m_LocalScale.z value: 70 objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.51272815 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.676524 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.05796504 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071067 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 22d5afbf1b5452e4083d5e00488e45f6, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Name + value: BentPlane + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} +--- !u!4 &1038286094 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 1038286093} + m_PrefabAsset: {fileID: 0} --- !u!1 &1041598167 GameObject: m_ObjectHideFlags: 0 @@ -708,10 +1185,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -736,6 +1215,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &1041598170 MeshFilter: m_ObjectHideFlags: 0 @@ -751,15 +1231,16 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1041598167} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.078, y: 0.5, z: 0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.80527186, y: -0.37652397, z: -0.05796504} m_LocalScale: {x: 0.8018109, y: 0.8018109, z: 0.8018109} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1718021479} - m_Father: {fileID: 0} - m_RootOrder: 2 + m_Father: {fileID: 1947511358} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1115885341 +--- !u!1 &1049823871 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -767,10 +1248,205 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1115885345} - - component: {fileID: 1115885344} - - component: {fileID: 1115885343} - - component: {fileID: 1115885342} + - component: {fileID: 1049823872} + - component: {fileID: 1049823875} + - component: {fileID: 1049823874} + - component: {fileID: 1049823873} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &1049823872 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049823871} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.80527186, y: -0.37652397, z: -0.05796504} + m_LocalScale: {x: 0.8018109, y: 0.8018109, z: 0.8018109} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1963828116} + m_Father: {fileID: 1740667119} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &1049823873 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049823871} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1049823874 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049823871} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 33b70156a300851489f650590cc59e92, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1049823875 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049823871} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1114387486 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1114387487} + - component: {fileID: 1114387489} + - component: {fileID: 1114387488} + m_Layer: 0 + m_Name: Marschner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1114387487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114387486} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 2.24, y: -0.081, z: 1.78} + m_LocalScale: {x: 0.21546872, y: 0.21546872, z: 0.21546872} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 367260126} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!102 &1114387488 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114387486} + m_Text: Marschner + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 0 + m_TabSize: 4 + m_FontSize: 0 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 74a5091d8707f334b9a5c31ef71a64ba, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!23 &1114387489 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114387486} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 74a5091d8707f334b9a5c31ef71a64ba, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1115885341 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1115885345} + - component: {fileID: 1115885344} + - component: {fileID: 1115885343} + - component: {fileID: 1115885342} m_Layer: 0 m_Name: Sphere_Opaque m_TagString: Untagged @@ -802,10 +1478,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -830,6 +1508,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &1115885344 MeshFilter: m_ObjectHideFlags: 0 @@ -845,15 +1524,16 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1115885341} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.078, y: 0.5, z: -1.5} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.80527186, y: -0.37652397, z: -1.557965} m_LocalScale: {x: 0.8018109, y: 0.8018109, z: 0.8018109} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1391346169} - m_Father: {fileID: 0} - m_RootOrder: 8 + m_Father: {fileID: 1947511358} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1350357054 +--- !u!1 &1161390179 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -861,10 +1541,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1350357055} - - component: {fileID: 1350357058} - - component: {fileID: 1350357057} - - component: {fileID: 1350357056} + - component: {fileID: 1161390180} + - component: {fileID: 1161390183} + - component: {fileID: 1161390182} + - component: {fileID: 1161390181} m_Layer: 0 m_Name: Sphere Hair (1) m_TagString: Untagged @@ -872,52 +1552,55 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1350357055 +--- !u!4 &1161390180 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1350357054} + m_GameObject: {fileID: 1161390179} m_LocalRotation: {x: 0.013634171, y: 0.15583922, z: 0.08608275, w: 0.9839299} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1.047619, y: 1.0476191, z: 1.0476191} + m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1391346169} + m_Father: {fileID: 1333828272} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 18, z: 10} ---- !u!135 &1350357056 +--- !u!135 &1161390181 SphereCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1350357054} + m_GameObject: {fileID: 1161390179} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1350357057 +--- !u!23 &1161390182 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1350357054} + m_GameObject: {fileID: 1161390179} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 1 m_Materials: - - {fileID: 2100000, guid: 7fe99b16e21216a439c21a6e587263ba, type: 2} + - {fileID: 2100000, guid: dd8186317a2957a4fb19fb3b02a773b1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -938,15 +1621,16 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 ---- !u!33 &1350357058 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1161390183 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1350357054} + m_GameObject: {fileID: 1161390179} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1391346168 +--- !u!1 &1333828271 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -954,10 +1638,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1391346169} - - component: {fileID: 1391346172} - - component: {fileID: 1391346171} - - component: {fileID: 1391346170} + - component: {fileID: 1333828272} + - component: {fileID: 1333828275} + - component: {fileID: 1333828274} + - component: {fileID: 1333828273} m_Layer: 0 m_Name: Sphere Hair m_TagString: Untagged @@ -965,53 +1649,56 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1391346169 +--- !u!4 &1333828272 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1391346168} + m_GameObject: {fileID: 1333828271} m_LocalRotation: {x: -0, y: -0, z: 0.01817496, w: 0.99983484} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1.05, y: 1.05, z: 1.05} + m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1350357055} - m_Father: {fileID: 1115885345} + - {fileID: 1161390180} + m_Father: {fileID: 521845499} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 2.0830002} ---- !u!135 &1391346170 +--- !u!135 &1333828273 SphereCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1391346168} + m_GameObject: {fileID: 1333828271} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1391346171 +--- !u!23 &1333828274 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1391346168} + m_GameObject: {fileID: 1333828271} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7fe99b16e21216a439c21a6e587263ba, type: 2} + - {fileID: 2100000, guid: dd8186317a2957a4fb19fb3b02a773b1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1032,56 +1719,720 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 ---- !u!33 &1391346172 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1333828275 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1391346168} + m_GameObject: {fileID: 1333828271} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &1571147377 -PrefabInstance: +--- !u!1 &1350357054 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1350357055} + - component: {fileID: 1350357058} + - component: {fileID: 1350357057} + - component: {fileID: 1350357056} + m_Layer: 0 + m_Name: Sphere Hair (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1350357055 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350357054} + m_LocalRotation: {x: 0.013634171, y: 0.15583922, z: 0.08608275, w: 0.9839299} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.047619, y: 1.0476191, z: 1.0476191} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1391346169} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 18, z: 10} +--- !u!135 &1350357056 +SphereCollider: m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350357054} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_Name - value: BentPlane (1) - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_LocalPosition.x - value: 2.339 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_LocalPosition.y - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_LocalRotation.x - value: -0.7071068 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1350357057 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350357054} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 1 + m_Materials: + - {fileID: 2100000, guid: 7fe99b16e21216a439c21a6e587263ba, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1350357058 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1350357054} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1389380438 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1740667119} + m_Modifications: + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalScale.x + value: 70 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalScale.y + value: 70 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalScale.z + value: 70 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.x + value: 1.6117282 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.676524 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.05796504 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071067 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 6d34c81844587b34096ae21000ed66bf, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Name + value: BentPlane (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} +--- !u!4 &1389380439 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 1389380438} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1391346168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1391346169} + - component: {fileID: 1391346172} + - component: {fileID: 1391346171} + - component: {fileID: 1391346170} + m_Layer: 0 + m_Name: Sphere Hair + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1391346169 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1391346168} + m_LocalRotation: {x: -0, y: -0, z: 0.01817496, w: 0.99983484} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.05, y: 1.05, z: 1.05} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1350357055} + m_Father: {fileID: 1115885345} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 2.0830002} +--- !u!135 &1391346170 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1391346168} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1391346171 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1391346168} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7fe99b16e21216a439c21a6e587263ba, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1391346172 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1391346168} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1571147377 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1947511358} + m_Modifications: + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalScale.x + value: 70 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalScale.y + value: 70 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalScale.z + value: 70 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.x + value: 1.6117282 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.676524 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.05796504 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071067 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 0ffcca947274641b19b172d43e460d22, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Name + value: BentPlane (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} +--- !u!4 &1571147378 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 1571147377} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1581196604 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1132393308280272, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_Name + value: HDRP_Test_Camera + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalPosition.x + value: 3.31 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalPosition.y + value: 6.94 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalPosition.z + value: -0.56 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: m_Version + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: m_RenderingPathCustomFrameSettings.bitDatas.data1 + value: 70005818916701 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: ImageComparisonSettings.TargetWidth + value: 600 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: ImageComparisonSettings.TargetHeight + value: 360 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} +--- !u!1 &1624247534 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1624247536} + - component: {fileID: 1624247535} + - component: {fileID: 1624247537} + m_Layer: 0 + m_Name: RenderingSettings + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1624247535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624247534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: + isGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: c5cc9b32f8c21194d93b79f9b7ed8ad5, type: 2} +--- !u!4 &1624247536 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624247534} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1624247537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624247534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 441482e8936e35048a1dffac814e3ef8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Profile: {fileID: 11400000, guid: c5cc9b32f8c21194d93b79f9b7ed8ad5, type: 2} + m_StaticLightingSkyUniqueID: 1 + m_StaticLightingCloudsUniqueID: 0 +--- !u!1 &1718021475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1718021479} + - component: {fileID: 1718021478} + - component: {fileID: 1718021477} + - component: {fileID: 1718021476} + m_Layer: 0 + m_Name: Sphere Hair + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &1718021476 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718021475} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1718021477 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718021475} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 22d5afbf1b5452e4083d5e00488e45f6, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1718021478 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718021475} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1718021479 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718021475} + m_LocalRotation: {x: -0, y: -0, z: 0.01817496, w: 0.99983484} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.05, y: 1.05, z: 1.05} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 333805875} + m_Father: {fileID: 1041598171} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 2.0830002} +--- !u!1 &1740667118 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1740667119} + m_Layer: 0 + m_Name: Marschner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1740667119 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740667118} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.92, y: 1.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1049823872} + - {fileID: 521845499} + - {fileID: 1389380439} + - {fileID: 2097076643} + - {fileID: 811747107} + - {fileID: 612512999} + - {fileID: 1907090815} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1758184890 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1947511358} + m_Modifications: + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalScale.x + value: 70 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalScale.y + value: 70 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalScale.z + value: 70 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.51272815 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.676524 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalPosition.z + value: -1.557965 + objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} propertyPath: m_LocalRotation.w @@ -1089,8 +2440,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_RootOrder - value: 4 + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} @@ -1104,8 +2465,38 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 22d5afbf1b5452e4083d5e00488e45f6, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Name + value: BentPlane (4) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} +--- !u!4 &1758184891 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 1758184890} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1907090814 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1740667119} + m_Modifications: + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_RootOrder + value: 6 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} @@ -1122,91 +2513,75 @@ PrefabInstance: propertyPath: m_LocalScale.z value: 70 objectReference: {fileID: 0} - - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 0ffcca947274641b19b172d43e460d22, type: 2} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} ---- !u!1001 &1581196604 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalPosition.x - value: 1.41 + value: 0.51272815 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} propertyPath: m_LocalPosition.y - value: 2.815 + value: -0.676524 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} propertyPath: m_LocalPosition.z - value: -0.754 + value: -1.557965 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071067 + objectReference: {fileID: 0} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} propertyPath: m_LocalRotation.x - value: 0.7071068 + value: -0.7071068 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} propertyPath: m_LocalRotation.y - value: 0 + value: -0 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_RootOrder - value: 7 + value: -0 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} propertyPath: m_LocalEulerAnglesHint.x - value: 90 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: ImageComparisonSettings.TargetHeight - value: 360 - objectReference: {fileID: 0} - - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: a56b1449bfe7c814cbf0b992f78a7507, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: ImageComparisonSettings.TargetWidth - value: 600 - objectReference: {fileID: 0} - - target: {fileID: 1132393308280272, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_Name - value: HDRP_Test_Camera - objectReference: {fileID: 0} - - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, - type: 3} - propertyPath: m_Version - value: 6 - objectReference: {fileID: 0} - - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, - type: 3} - propertyPath: m_RenderingPathCustomFrameSettings.bitDatas.data1 - value: 69456063102749 + value: BentPlane (4) objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} ---- !u!1 &1624247534 + m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} +--- !u!4 &1907090815 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 1907090814} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1916639635 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1214,65 +2589,233 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1624247536} - - component: {fileID: 1624247535} - - component: {fileID: 1624247537} + - component: {fileID: 1916639639} + - component: {fileID: 1916639638} + - component: {fileID: 1916639637} + - component: {fileID: 1916639636} m_Layer: 0 - m_Name: RenderingSettings + m_Name: Quad m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 + m_StaticEditorFlags: 4294967295 m_IsActive: 1 ---- !u!114 &1624247535 -MonoBehaviour: +--- !u!64 &1916639636 +MeshCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1624247534} + m_GameObject: {fileID: 1916639635} + m_Material: {fileID: 0} + m_IsTrigger: 0 m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} - m_Name: - m_EditorClassIdentifier: - isGlobal: 1 - priority: 0 - blendDistance: 0 - weight: 1 - sharedProfile: {fileID: 11400000, guid: c5cc9b32f8c21194d93b79f9b7ed8ad5, type: 2} ---- !u!4 &1624247536 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1916639637 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1916639635} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 33b70156a300851489f650590cc59e92, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1916639638 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1916639635} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1916639639 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1916639635} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 3.67, y: 0, z: 0} + m_LocalScale: {x: 20, y: 20, z: 20} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &1947511357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1947511358} + m_Layer: 0 + m_Name: Kajiya + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1947511358 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1947511357} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1041598171} + - {fileID: 1115885345} + - {fileID: 1571147378} + - {fileID: 1038286094} + - {fileID: 796446787} + - {fileID: 457997678} + - {fileID: 1758184891} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1963828115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1963828116} + - component: {fileID: 1963828119} + - component: {fileID: 1963828118} + - component: {fileID: 1963828117} + m_Layer: 0 + m_Name: Sphere Hair + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1963828116 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1624247534} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1624247537 -MonoBehaviour: + m_GameObject: {fileID: 1963828115} + m_LocalRotation: {x: -0, y: -0, z: 0.01817496, w: 0.99983484} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.05, y: 1.05, z: 1.05} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2079958784} + m_Father: {fileID: 1049823872} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 2.0830002} +--- !u!135 &1963828117 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1963828115} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1963828118 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1963828115} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a56b1449bfe7c814cbf0b992f78a7507, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1963828119 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1624247534} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 441482e8936e35048a1dffac814e3ef8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Profile: {fileID: 11400000, guid: c5cc9b32f8c21194d93b79f9b7ed8ad5, type: 2} - m_StaticLightingSkyUniqueID: 1 - m_SkySettings: {fileID: 2047677435} - m_SkySettingsFromProfile: {fileID: 1591020152603708557, guid: c5cc9b32f8c21194d93b79f9b7ed8ad5, - type: 2} ---- !u!1 &1718021475 + m_GameObject: {fileID: 1963828115} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2079958783 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1280,49 +2823,66 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1718021479} - - component: {fileID: 1718021478} - - component: {fileID: 1718021477} - - component: {fileID: 1718021476} + - component: {fileID: 2079958784} + - component: {fileID: 2079958787} + - component: {fileID: 2079958786} + - component: {fileID: 2079958785} m_Layer: 0 - m_Name: Sphere Hair + m_Name: Sphere Hair (1) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!135 &1718021476 +--- !u!4 &2079958784 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2079958783} + m_LocalRotation: {x: 0.013634171, y: 0.15583922, z: 0.08608275, w: 0.9839299} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.047619, y: 1.0476191, z: 1.0476191} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1963828116} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 18, z: 10} +--- !u!135 &2079958785 SphereCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1718021475} + m_GameObject: {fileID: 2079958783} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1718021477 +--- !u!23 &2079958786 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1718021475} + m_GameObject: {fileID: 2079958783} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 - m_RendererPriority: 0 + m_RendererPriority: 1 m_Materials: - - {fileID: 2100000, guid: 22d5afbf1b5452e4083d5e00488e45f6, type: 2} + - {fileID: 2100000, guid: a56b1449bfe7c814cbf0b992f78a7507, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1343,70 +2903,56 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 ---- !u!33 &1718021478 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2079958787 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1718021475} + m_GameObject: {fileID: 2079958783} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1718021479 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1718021475} - m_LocalRotation: {x: -0, y: -0, z: 0.01817496, w: 0.99983484} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1.05, y: 1.05, z: 1.05} - m_Children: - - {fileID: 333805875} - m_Father: {fileID: 1041598171} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 2.0830002} ---- !u!1001 &1758184890 +--- !u!1001 &2097076642 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1740667119} m_Modifications: - - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_Name - value: BentPlane (4) + propertyPath: m_RootOrder + value: 3 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalPosition.x - value: 1.24 + propertyPath: m_LocalScale.x + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalPosition.y - value: 0.2 + propertyPath: m_LocalScale.y + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalPosition.z - value: -1.5 + propertyPath: m_LocalScale.z + value: 70 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.x - value: -0.7071068 + propertyPath: m_LocalPosition.x + value: 0.51272815 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalPosition.y + value: -0.676524 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_LocalPosition.z + value: -0.05796504 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} @@ -1415,186 +2961,49 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_RootOrder - value: 10 + propertyPath: m_LocalRotation.x + value: -0.7071068 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalScale.x - value: 70 - objectReference: {fileID: 0} - - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, - type: 3} - propertyPath: m_LocalScale.y - value: 70 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} - propertyPath: m_LocalScale.z - value: 70 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: -1504981713932161579, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: 22d5afbf1b5452e4083d5e00488e45f6, type: 2} + objectReference: {fileID: 2100000, guid: a56b1449bfe7c814cbf0b992f78a7507, type: 2} + - target: {fileID: -927199367670048503, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + propertyPath: m_Name + value: BentPlane + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ddd66e417395c7d4cbcbf2de29527b2e, type: 3} ---- !u!1 &1916639635 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1916639639} - - component: {fileID: 1916639638} - - component: {fileID: 1916639637} - - component: {fileID: 1916639636} - m_Layer: 0 - m_Name: Quad - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!64 &1916639636 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916639635} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1916639637 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916639635} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 33b70156a300851489f650590cc59e92, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &1916639638 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916639635} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1916639639 +--- !u!4 &2097076643 stripped Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: ddd66e417395c7d4cbcbf2de29527b2e, + type: 3} + m_PrefabInstance: {fileID: 2097076642} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916639635} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 20, y: 20, z: 20} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!114 &2047677435 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59b6606ef2548734bb6d11b9d160bc7e, type: 3} - m_Name: - m_EditorClassIdentifier: - active: 1 - m_AdvancedMode: 0 - rotation: - m_OverrideState: 0 - m_Value: 0 - min: 0 - max: 360 - skyIntensityMode: - m_OverrideState: 0 - m_Value: 0 - exposure: - m_OverrideState: 0 - m_Value: -2 - multiplier: - m_OverrideState: 0 - m_Value: 1 - min: 0 - upperHemisphereLuxValue: - m_OverrideState: 0 - m_Value: 1 - min: 0 - desiredLuxValue: - m_OverrideState: 0 - m_Value: 20000 - updateMode: - m_OverrideState: 0 - m_Value: 0 - updatePeriod: - m_OverrideState: 0 - m_Value: 0 - min: 0 - includeSunInBaking: - m_OverrideState: 0 - m_Value: 0 - hdriSky: - m_OverrideState: 0 - m_Value: {fileID: 8900000, guid: 5fb993a599e7e9b4b825e1a28e6d2c07, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Light Facing Normal_Opaque.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Light Facing Normal_Opaque.mat index 69af2786b99..8628199a2b1 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Light Facing Normal_Opaque.mat +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Light Facing Normal_Opaque.mat @@ -13,6 +13,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: --- !u!21 &2100000 Material: serializedVersion: 6 @@ -135,6 +138,18 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: - AlphaCutoff: 0.564 @@ -158,6 +173,7 @@ Material: - _Anisotropy: 0 - _BlendMode: 0 - _CoatMask: 0 + - _ConservativeDepthOffsetEnable: 0 - _CullMode: 0 - _CullModeForward: 0 - _Cutoff: 0.5 @@ -185,6 +201,7 @@ Material: - _DistortionVectorBias: -1 - _DistortionVectorScale: 2 - _DoubleSidedEnable: 1 + - _DoubleSidedGIMode: 0 - _DoubleSidedNormalMode: 1 - _Drag: 1 - _DstBlend: 0 @@ -226,7 +243,7 @@ Material: - _ReceivesSSR: 1 - _ReceivesSSRTransparent: 0 - _RefractionModel: 0 - - _RenderQueueType: 4 + - _RenderQueueType: 1 - _RequireSplitLighting: 0 - _RimTransmissionIntensity: 0 - _SSRefractionProjectionModel: 0 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal.mat new file mode 100644 index 00000000000..873b32b7b62 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal.mat @@ -0,0 +1,318 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4727822957753971342 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HairTest Marschner Light Facing Normal + m_Shader: {fileID: -6465566751694194690, guid: 84386fd8e1506df4fb7fb982c2ed9ec2, + type: 3} + m_ShaderKeywords: _ALPHATEST_ON _BLENDMODE_ALPHA _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON + _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT _TRANSPARENT_WRITES_MOTION_VEC + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 3000 + stringTagMap: + MotionVector: User + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - Texture2D_189C8E90: + m_Texture: {fileID: 2800000, guid: e0d86873105ce774d8fa34942fc1e8fc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_6C0DA6CC: + m_Texture: {fileID: 2800000, guid: 66171ce41a2b74140b03d4b2781a85bf, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_9D58E1D1: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DistortionVectorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + m_Texture: {fileID: 2800000, guid: cbd88c0d1d791c044950d2a6b99b7db5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: f75fdfd95ada34844997dda9b91794b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - AlphaCutoff: 0 + - Boolean_F987B642: 0 + - Vector1_7D9AC3D3: 0.36 + - Vector1_901E5FC2: 1 + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 1 + - _AlphaCutoffPostpass: 0.25 + - _AlphaCutoffPrepass: 0.96 + - _AlphaCutoffShadows: 0.75 + - _AlphaDstBlend: 10 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _ConservativeDepthOffsetEnable: 0 + - _CullMode: 0 + - _CullModeForward: 2 + - _Cuticle_Tilt: 0.125 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileID: 4 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 0 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 0 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 0 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 0 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 1 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 1 + - _Drag: 1 + - _DstBlend: 10 + - _EmissiveColorMode: 1 + - _EnableBlendModePreserveSpecularLighting: 0 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnableMotionVectorForVertexAnimation: 0 + - _EnableSpecularOcclusion: 0 + - _EnableWind: 0 + - _EnergyConservingSpecularColor: 1 + - _HdrpVersion: 2 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InitialBend: 1 + - _InvTilingScale: 1 + - _Ior: 1 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _NormalMapSpace: 0 + - _NormalScale: 0.3 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _PreRefractionPass: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _RenderQueueType: 4 + - _RequireSplitLighting: 0 + - _RimTransmissionIntensity: 0 + - _SSRefractionProjectionModel: 0 + - _SecondarySpecularMultiplier: 1 + - _SecondarySpecularShift: 0 + - _ShiverDirectionality: 0.5 + - _ShiverDrag: 0.2 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 0.89 + - _SmoothnessRemapMin: 0.547 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularMultiplier: 0.348 + - _SpecularShift: 0.125 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 0 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 2 + - _StencilRefMV: 32 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _Stiffness: 1 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 1 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _ThicknessMultiplier: 1 + - _ThicknessRemapMax: 0.001 + - _ThicknessRemapMin: 0 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 1 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 1 + - _TransparentDepthPrepassEnable: 1 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 1 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseDetailMap: 0 + - _UseShadowThreshold: 1 + - _ZTestDepthEqualForOpaque: 4 + - _ZTestGBuffer: 3 + - _ZTestModeDistortion: 8 + - _ZTestTransparent: 4 + - _ZWrite: 0 + m_Colors: + - Color_6FC6C3A4: {r: 0.29999998, g: 0.19499996, b: 0.089999996, a: 1} + - _BaseColor: {r: 0.5, g: 0.34403664, b: 0.24770638, a: 1} + - _Color: {r: 0.5, g: 0.3440366, b: 0.24770635, a: 1} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 0.8679245, g: 0.559068, b: 0.2251691, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseMask: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseST: {r: 0.5, g: 0.5, b: 0, a: 0} + - _uvDetailMask: {r: 1, g: 0, b: 0, a: 0} + - _uvDetailST: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal.mat.meta new file mode 100644 index 00000000000..4ab526b930c --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d34c81844587b34096ae21000ed66bf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal_Opaque.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal_Opaque.mat new file mode 100644 index 00000000000..1098beb6431 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal_Opaque.mat @@ -0,0 +1,320 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4727822957753971342 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HairTest Marschner Light Facing Normal_Opaque + m_Shader: {fileID: -6465566751694194690, guid: 84386fd8e1506df4fb7fb982c2ed9ec2, + type: 3} + m_ShaderKeywords: _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 2475 + stringTagMap: + MotionVector: User + RenderType: TransparentCutout + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + - TransparentDepthPrepass + - TransparentDepthPostpass + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - Texture2D_189C8E90: + m_Texture: {fileID: 2800000, guid: e0d86873105ce774d8fa34942fc1e8fc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_6C0DA6CC: + m_Texture: {fileID: 2800000, guid: 66171ce41a2b74140b03d4b2781a85bf, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_9D58E1D1: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DistortionVectorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + m_Texture: {fileID: 2800000, guid: cbd88c0d1d791c044950d2a6b99b7db5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: f75fdfd95ada34844997dda9b91794b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - AlphaCutoff: 0.564 + - Boolean_F987B642: 0 + - Vector1_7D9AC3D3: 0.36 + - Vector1_901E5FC2: 1 + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 1 + - _AlphaCutoffPostpass: 0.25 + - _AlphaCutoffPrepass: 0.96 + - _AlphaCutoffShadows: 0.75 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _ConservativeDepthOffsetEnable: 0 + - _CullMode: 0 + - _CullModeForward: 0 + - _Cuticle_Tilt: 0.125 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileID: 4 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 0 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 0 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 0 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 0 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 1 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 1 + - _Drag: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EnableBlendModePreserveSpecularLighting: 0 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnableMotionVectorForVertexAnimation: 0 + - _EnableSpecularOcclusion: 0 + - _EnableWind: 0 + - _EnergyConservingSpecularColor: 1 + - _HdrpVersion: 2 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InitialBend: 1 + - _InvTilingScale: 1 + - _Ior: 1 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _NormalMapSpace: 0 + - _NormalScale: 0.3 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _PreRefractionPass: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _RenderQueueType: 1 + - _RequireSplitLighting: 0 + - _RimTransmissionIntensity: 0 + - _SSRefractionProjectionModel: 0 + - _SecondarySpecularMultiplier: 1 + - _SecondarySpecularShift: 0 + - _ShiverDirectionality: 0.5 + - _ShiverDrag: 0.2 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 0.89 + - _SmoothnessRemapMin: 0.547 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularMultiplier: 0.348 + - _SpecularShift: 0.125 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _Stiffness: 1 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _ThicknessMultiplier: 1 + - _ThicknessRemapMax: 0.001 + - _ThicknessRemapMin: 0 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 1 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 1 + - _TransparentDepthPrepassEnable: 1 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 1 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseDetailMap: 0 + - _UseShadowThreshold: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 3 + - _ZTestModeDistortion: 8 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - Color_6FC6C3A4: {r: 0.29999998, g: 0.19499996, b: 0.089999996, a: 1} + - _BaseColor: {r: 0.5, g: 0.34403664, b: 0.24770638, a: 1} + - _Color: {r: 0.5, g: 0.3440366, b: 0.24770635, a: 1} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 0.8679245, g: 0.559068, b: 0.2251691, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseMask: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseST: {r: 0.5, g: 0.5, b: 0, a: 0} + - _uvDetailMask: {r: 1, g: 0, b: 0, a: 0} + - _uvDetailST: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal_Opaque.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal_Opaque.mat.meta new file mode 100644 index 00000000000..c674eec0fe1 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner Light Facing Normal_Opaque.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e48744028cd081e448cdc62ef839f71d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner No Shadow Threshold.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner No Shadow Threshold.mat new file mode 100644 index 00000000000..03d615a5f20 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner No Shadow Threshold.mat @@ -0,0 +1,318 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4370868658692699752 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HairTest Marschner No Shadow Threshold + m_Shader: {fileID: -6465566751694194690, guid: 8954d5af27115924d918342722041882, + type: 3} + m_ShaderKeywords: _ALPHATEST_ON _BLENDMODE_ALPHA _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON + _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT _TRANSPARENT_WRITES_MOTION_VEC + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 3000 + stringTagMap: + MotionVector: User + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - Texture2D_189C8E90: + m_Texture: {fileID: 2800000, guid: e0d86873105ce774d8fa34942fc1e8fc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_6C0DA6CC: + m_Texture: {fileID: 2800000, guid: 66171ce41a2b74140b03d4b2781a85bf, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_9D58E1D1: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DistortionVectorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + m_Texture: {fileID: 2800000, guid: cbd88c0d1d791c044950d2a6b99b7db5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: f75fdfd95ada34844997dda9b91794b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - AlphaCutoff: 0 + - Boolean_F987B642: 0 + - Vector1_7D9AC3D3: 0.36 + - Vector1_901E5FC2: 1 + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0 + - _AlphaCutoffEnable: 1 + - _AlphaCutoffPostpass: 0.25 + - _AlphaCutoffPrepass: 0.96 + - _AlphaCutoffShadows: 0.75 + - _AlphaDstBlend: 10 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _ConservativeDepthOffsetEnable: 0 + - _CullMode: 0 + - _CullModeForward: 2 + - _Cuticle_Tilt: 0.125 + - _Cutoff: 0 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileID: 4 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 0 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 0 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 0 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 0 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 1 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 1 + - _Drag: 1 + - _DstBlend: 10 + - _EmissiveColorMode: 1 + - _EnableBlendModePreserveSpecularLighting: 0 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnableMotionVectorForVertexAnimation: 0 + - _EnableSpecularOcclusion: 0 + - _EnableWind: 0 + - _EnergyConservingSpecularColor: 1 + - _HdrpVersion: 2 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InitialBend: 1 + - _InvTilingScale: 1 + - _Ior: 1 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _NormalMapSpace: 0 + - _NormalScale: 0.3 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _PreRefractionPass: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _RenderQueueType: 4 + - _RequireSplitLighting: 0 + - _RimTransmissionIntensity: 0 + - _SSRefractionProjectionModel: 0 + - _SecondarySpecularMultiplier: 1 + - _SecondarySpecularShift: 0 + - _ShiverDirectionality: 0.5 + - _ShiverDrag: 0.2 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 0.89 + - _SmoothnessRemapMin: 0.547 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularMultiplier: 0.348 + - _SpecularShift: 0.125 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 0 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 2 + - _StencilRefMV: 32 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _Stiffness: 1 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 1 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _ThicknessMultiplier: 1 + - _ThicknessRemapMax: 0.001 + - _ThicknessRemapMin: 0 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 1 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 1 + - _TransparentDepthPrepassEnable: 1 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 1 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseDetailMap: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 4 + - _ZTestGBuffer: 3 + - _ZTestModeDistortion: 8 + - _ZTestTransparent: 4 + - _ZWrite: 0 + m_Colors: + - Color_6FC6C3A4: {r: 0.29999998, g: 0.19499996, b: 0.089999996, a: 1} + - _BaseColor: {r: 0.5, g: 0.34403664, b: 0.24770638, a: 1} + - _Color: {r: 0.5, g: 0.3440366, b: 0.24770635, a: 1} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 0.8679245, g: 0.559068, b: 0.2251691, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseMask: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseST: {r: 0.5, g: 0.5, b: 0, a: 0} + - _uvDetailMask: {r: 1, g: 0, b: 0, a: 0} + - _uvDetailST: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner No Shadow Threshold.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner No Shadow Threshold.mat.meta new file mode 100644 index 00000000000..88a19a1bd05 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest Marschner No Shadow Threshold.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0c3f275564dd0a546bf8bb16e0fbba34 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner.mat new file mode 100644 index 00000000000..b3452fee465 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner.mat @@ -0,0 +1,339 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1535412643302782085 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HairTest_Marschner + m_Shader: {fileID: -6465566751694194690, guid: 0d22ba2f967dac046b0a4059e70f7648, + type: 3} + m_ShaderKeywords: _ALPHATEST_ON _BLENDMODE_ALPHA _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON + _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT _TRANSPARENT_WRITES_MOTION_VEC + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 3000 + stringTagMap: + MotionVector: User + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - Texture2D_189C8E90: + m_Texture: {fileID: 2800000, guid: e0d86873105ce774d8fa34942fc1e8fc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_6C0DA6CC: + m_Texture: {fileID: 2800000, guid: 66171ce41a2b74140b03d4b2781a85bf, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_9D58E1D1: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Ambient_Occlusion_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Diffuse_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DistortionVectorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + m_Texture: {fileID: 2800000, guid: cbd88c0d1d791c044950d2a6b99b7db5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: f75fdfd95ada34844997dda9b91794b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Smoothness_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Specular_Shift_Texture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - AlphaCutoff: 0 + - Boolean_F987B642: 0 + - Vector1_7D9AC3D3: 0.36 + - Vector1_901E5FC2: 1 + - _AORemapMax: 1 + - _AORemapMin: 0 + - _AO_Max: 1 + - _AO_Min: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 1 + - _AlphaCutoffPostpass: 0.25 + - _AlphaCutoffPrepass: 0.96 + - _AlphaCutoffShadows: 0.75 + - _AlphaDstBlend: 10 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _ConservativeDepthOffsetEnable: 0 + - _CullMode: 0 + - _CullModeForward: 2 + - _Cuticle_Tilt: 0.125 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileID: 4 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 0 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 0 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 0 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 0 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 1 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 2 + - _Drag: 1 + - _DstBlend: 10 + - _EmissiveColorMode: 1 + - _EnableBlendModePreserveSpecularLighting: 0 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnableMotionVectorForVertexAnimation: 0 + - _EnableSpecularOcclusion: 0 + - _EnableWind: 0 + - _EnergyConservingSpecularColor: 1 + - _HdrpVersion: 2 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InitialBend: 1 + - _InvTilingScale: 1 + - _Ior: 1 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _NormalMapSpace: 0 + - _NormalScale: 0.3 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _PreRefractionPass: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _RenderQueueType: 4 + - _RequireSplitLighting: 0 + - _RimTransmissionIntensity: 0 + - _SSRefractionProjectionModel: 0 + - _SecondarySpecularMultiplier: 1 + - _SecondarySpecularShift: 0 + - _ShiverDirectionality: 0.5 + - _ShiverDrag: 0.2 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 0.89 + - _SmoothnessRemapMin: 0.547 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularMultiplier: 0.348 + - _SpecularShift: 0.125 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 0 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 2 + - _StencilRefMV: 32 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _Stiffness: 1 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 1 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _ThicknessMultiplier: 1 + - _ThicknessRemapMax: 0.001 + - _ThicknessRemapMin: 0 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 1 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 1 + - _TransparentDepthPrepassEnable: 1 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 1 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseDetailMap: 0 + - _UseShadowThreshold: 1 + - _ZTestDepthEqualForOpaque: 4 + - _ZTestGBuffer: 3 + - _ZTestModeDistortion: 8 + - _ZTestTransparent: 4 + - _ZWrite: 0 + m_Colors: + - Color_6FC6C3A4: {r: 0.29999998, g: 0.19499996, b: 0.089999996, a: 1} + - _BaseColor: {r: 0.5, g: 0.34403664, b: 0.24770638, a: 1} + - _Base_UV_Mask: {r: 1, g: 0, b: 0, a: 0} + - _Base_UV_Tiling_and_Offset: {r: 1, g: 1, b: 0, a: 0} + - _Color: {r: 0.5, g: 0.3440366, b: 0.24770635, a: 1} + - _Diffuse_Color: {r: 0.643, g: 0.47758824, b: 0.35943696, a: 1} + - _DoubleSidedConstants: {r: 1, g: 1, b: 1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 0.8679245, g: 0.559068, b: 0.2251691, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseMask: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseST: {r: 0.5, g: 0.5, b: 0, a: 0} + - _uvDetailMask: {r: 1, g: 0, b: 0, a: 0} + - _uvDetailST: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner.mat.meta new file mode 100644 index 00000000000..9b80462799c --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a56b1449bfe7c814cbf0b992f78a7507 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque.mat new file mode 100644 index 00000000000..abf1d97c8ad --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque.mat @@ -0,0 +1,341 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1535412643302782085 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HairTest_Marschner_Opaque + m_Shader: {fileID: -6465566751694194690, guid: 0d22ba2f967dac046b0a4059e70f7648, + type: 3} + m_ShaderKeywords: _ALPHATEST_ON _BLENDMODE_ALPHA _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 2475 + stringTagMap: + MotionVector: User + RenderType: TransparentCutout + disabledShaderPasses: + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - Texture2D_189C8E90: + m_Texture: {fileID: 2800000, guid: e0d86873105ce774d8fa34942fc1e8fc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_6C0DA6CC: + m_Texture: {fileID: 2800000, guid: 66171ce41a2b74140b03d4b2781a85bf, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_9D58E1D1: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Ambient_Occlusion_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Diffuse_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DistortionVectorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + m_Texture: {fileID: 2800000, guid: cbd88c0d1d791c044950d2a6b99b7db5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: f75fdfd95ada34844997dda9b91794b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Smoothness_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Specular_Shift_Texture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - AlphaCutoff: 0.653 + - Boolean_F987B642: 0 + - Vector1_7D9AC3D3: 0.36 + - Vector1_901E5FC2: 1 + - _AORemapMax: 1 + - _AORemapMin: 0 + - _AO_Max: 1 + - _AO_Min: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 1 + - _AlphaCutoffPostpass: 0.25 + - _AlphaCutoffPrepass: 0.96 + - _AlphaCutoffShadows: 0.75 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _ConservativeDepthOffsetEnable: 0 + - _CullMode: 0 + - _CullModeForward: 0 + - _Cuticle_Tilt: 0.125 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileID: 4 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 0 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 0 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 0 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 0 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 1 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 2 + - _Drag: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EnableBlendModePreserveSpecularLighting: 0 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnableMotionVectorForVertexAnimation: 0 + - _EnableSpecularOcclusion: 0 + - _EnableWind: 0 + - _EnergyConservingSpecularColor: 1 + - _HdrpVersion: 2 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InitialBend: 1 + - _InvTilingScale: 1 + - _Ior: 1 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _NormalMapSpace: 0 + - _NormalScale: 0.3 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _PreRefractionPass: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _RenderQueueType: 1 + - _RequireSplitLighting: 0 + - _RimTransmissionIntensity: 0 + - _SSRefractionProjectionModel: 0 + - _SecondarySpecularMultiplier: 1 + - _SecondarySpecularShift: 0 + - _ShiverDirectionality: 0.5 + - _ShiverDrag: 0.2 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 0.89 + - _SmoothnessRemapMin: 0.547 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularMultiplier: 0.348 + - _SpecularShift: 0.125 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _Stiffness: 1 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _ThicknessMultiplier: 1 + - _ThicknessRemapMax: 0.001 + - _ThicknessRemapMin: 0 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 1 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 1 + - _TransparentDepthPrepassEnable: 1 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 1 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseDetailMap: 0 + - _UseShadowThreshold: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 3 + - _ZTestModeDistortion: 8 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - Color_6FC6C3A4: {r: 0.29999998, g: 0.19499996, b: 0.089999996, a: 1} + - _BaseColor: {r: 0.5, g: 0.34403664, b: 0.24770638, a: 1} + - _Base_UV_Mask: {r: 1, g: 0, b: 0, a: 0} + - _Base_UV_Tiling_and_Offset: {r: 1, g: 1, b: 0, a: 0} + - _Color: {r: 0.5, g: 0.3440366, b: 0.24770635, a: 1} + - _Diffuse_Color: {r: 0.643, g: 0.47758824, b: 0.35943696, a: 1} + - _DoubleSidedConstants: {r: 1, g: 1, b: 1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 0.8679245, g: 0.559068, b: 0.2251691, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseMask: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseST: {r: 0.5, g: 0.5, b: 0, a: 0} + - _uvDetailMask: {r: 1, g: 0, b: 0, a: 0} + - _uvDetailST: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque.mat.meta new file mode 100644 index 00000000000..34c181bebc6 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd8186317a2957a4fb19fb3b02a773b1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Opaque.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Opaque.mat index b700ba76042..ba2f5321bcc 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Opaque.mat +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Opaque.mat @@ -13,6 +13,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: --- !u!21 &2100000 Material: serializedVersion: 6 @@ -135,6 +138,18 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: - AlphaCutoff: 0.655 @@ -158,6 +173,7 @@ Material: - _Anisotropy: 0 - _BlendMode: 0 - _CoatMask: 0 + - _ConservativeDepthOffsetEnable: 0 - _CullMode: 0 - _CullModeForward: 0 - _Cutoff: 0.5 @@ -185,6 +201,7 @@ Material: - _DistortionVectorBias: -1 - _DistortionVectorScale: 2 - _DoubleSidedEnable: 1 + - _DoubleSidedGIMode: 0 - _DoubleSidedNormalMode: 2 - _Drag: 1 - _DstBlend: 0 @@ -226,7 +243,7 @@ Material: - _ReceivesSSR: 1 - _ReceivesSSRTransparent: 0 - _RefractionModel: 0 - - _RenderQueueType: 4 + - _RenderQueueType: 1 - _RequireSplitLighting: 0 - _RimTransmissionIntensity: 0 - _SSRefractionProjectionModel: 0 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair.shadergraph index e4e7ba126b3..125df9b11c6 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair.shadergraph +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair.shadergraph @@ -1,968 +1,1365 @@ { - "m_SerializedProperties": [ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "842ec2466abf45b983c2119e8f46e652", + "m_Properties": [ { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.TextureShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"6343a65d-92e9-4ea6-a610-b17eff7c3712\"\n },\n \"m_Name\": \"Diffuse Map\",\n \"m_DefaultReferenceName\": \"Texture2D_1DA0BB85\",\n \"m_OverrideReferenceName\": \"_BaseColorMap\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"m_SerializedTexture\": \"{\\\"texture\\\":{\\\"instanceID\\\":0}}\",\n \"m_Guid\": \"\"\n },\n \"m_Modifiable\": true,\n \"m_DefaultType\": 0\n}" + "m_Id": "e1b12c8c0685d48fb559e1038df5f742" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.ColorShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"cdb23723-972f-4d49-9f82-4ac5e80e2d1d\"\n },\n \"m_Name\": \"Diffuse Color\",\n \"m_DefaultReferenceName\": \"Color_22DC9E2D\",\n \"m_OverrideReferenceName\": \"_BaseColor\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"r\": 0.6430000066757202,\n \"g\": 0.4775882661342621,\n \"b\": 0.3594370186328888,\n \"a\": 1.0\n },\n \"m_ColorMode\": 0\n}" + "m_Id": "aa5a2f964cf25980ab0164038acea9aa" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"1c11679b-cbb6-4fa9-8f37-996c04d07707\"\n },\n \"m_Name\": \"Alpha Cutoff\",\n \"m_DefaultReferenceName\": \"Vector1_15C6E93B\",\n \"m_OverrideReferenceName\": \"AlphaCutoff\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.0,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + "m_Id": "b9ff8d51f0055e8d92ba8e5fd06ee2f3" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"d91fd1a5-e079-4844-b874-c9c0ca592f79\"\n },\n \"m_Name\": \"Alpha Cutoff Prepass\",\n \"m_DefaultReferenceName\": \"Vector1_AD26FB16\",\n \"m_OverrideReferenceName\": \"_AlphaCutoffPrepass\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.8999999761581421,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + "m_Id": "501171e25405ea8aa7a0d5b5f3713087" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"2fbe22fb-2883-4e21-974b-0e58cf6fa5a8\"\n },\n \"m_Name\": \"Alpha Cutoff Postpass\",\n \"m_DefaultReferenceName\": \"Vector1_4B895F81\",\n \"m_OverrideReferenceName\": \"_AlphaCutoffPostpass\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.5,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.20000000298023225,\n \"y\": 1.0\n }\n}" + "m_Id": "945a7e2b6d504c868770a8379a255466" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"08ee1c25-529f-4fca-8392-271b44871553\"\n },\n \"m_Name\": \"Alpha Cutoff Shadows\",\n \"m_DefaultReferenceName\": \"Vector1_CAFF147E\",\n \"m_OverrideReferenceName\": \"_AlphaCutoffShadows\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.5,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + "m_Id": "ccb32e665a00c889b12294ef9f3e966e" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.TextureShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"d5937b9c-e726-47e2-9096-c64bd42839d2\"\n },\n \"m_Name\": \"Ambient Occlusion Map\",\n \"m_DefaultReferenceName\": \"Texture2D_E48D0DF2\",\n \"m_OverrideReferenceName\": \"_MaskMap\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"m_SerializedTexture\": \"{\\\"texture\\\":{\\\"instanceID\\\":0}}\",\n \"m_Guid\": \"\"\n },\n \"m_Modifiable\": true,\n \"m_DefaultType\": 0\n}" + "m_Id": "693203d698e0f88aaedc60507b42f88a" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.BooleanShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"9e22e251-3c42-49bc-9403-4e38bab24977\"\n },\n \"m_Name\": \"Ambient Occlusion use lightmap UVs\",\n \"m_DefaultReferenceName\": \"Boolean_F987B642\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": false\n}" + "m_Id": "a399c12028963188b1be13467fbed8d0" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"33400aac-8162-4d1d-9d4b-243c04977272\"\n },\n \"m_Name\": \"AO Min\",\n \"m_DefaultReferenceName\": \"Vector1_164AD3BD\",\n \"m_OverrideReferenceName\": \"_AORemapMin\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.0,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + "m_Id": "6ff86797a9ac10818236680358bf476b" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"f7dfeb70-3e1c-4c38-9793-23ec535a1aa6\"\n },\n \"m_Name\": \"AO Max\",\n \"m_DefaultReferenceName\": \"Vector1_FBDC704E\",\n \"m_OverrideReferenceName\": \"_AORemapMax\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 1.0,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + "m_Id": "8d41ad9c690c7a839eb636901e8f379d" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.TextureShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"179767ac-b5e5-49ea-a32e-2546c617a112\"\n },\n \"m_Name\": \"Smoothness Map (R)\",\n \"m_DefaultReferenceName\": \"Texture2D_189C8E90\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"m_SerializedTexture\": \"{\\\"texture\\\":{\\\"instanceID\\\":0}}\",\n \"m_Guid\": \"\"\n },\n \"m_Modifiable\": true,\n \"m_DefaultType\": 2\n}" + "m_Id": "16beddedea97758c93c96bdb9ea2b322" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"e4dc662e-3747-4770-96eb-43812b6540e3\"\n },\n \"m_Name\": \"Smoothness Min\",\n \"m_DefaultReferenceName\": \"Vector1_4F7BB2EA\",\n \"m_OverrideReferenceName\": \"_SmoothnessRemapMin\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.0,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + "m_Id": "402d57acf7a6e28aa047a74f99430ce8" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"4005f9a0-1e7b-4422-9591-2d7900dc14a5\"\n },\n \"m_Name\": \"Smoothness Max\",\n \"m_DefaultReferenceName\": \"Vector1_A659E432\",\n \"m_OverrideReferenceName\": \"_SmoothnessRemapMax\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 1.0,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + "m_Id": "0e0649de113e1f8cbfc23094ce76578d" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.TextureShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"91b97227-7399-4cd6-9d23-d7f3396a4d2d\"\n },\n \"m_Name\": \"Specular Shift Texture (R)\",\n \"m_DefaultReferenceName\": \"Texture2D_6C0DA6CC\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"m_SerializedTexture\": \"{\\\"texture\\\":{\\\"instanceID\\\":0}}\",\n \"m_Guid\": \"\"\n },\n \"m_Modifiable\": true,\n \"m_DefaultType\": 2\n}" + "m_Id": "f43dec3c47e914849cce041dedd60fa3" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"66ded31f-2a1d-40c4-9c0c-c7faef0f5375\"\n },\n \"m_Name\": \"Specular Shift Texture Intensity\",\n \"m_DefaultReferenceName\": \"Vector1_7D9AC3D3\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 1.0,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 3.0\n }\n}" + "m_Id": "4f9b5c65f95b4687931d9d1bbcac0a91" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.ColorShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"b4a05d66-058e-4286-b129-93c8a70a29f0\"\n },\n \"m_Name\": \"Specular Color\",\n \"m_DefaultReferenceName\": \"Color_4A6C7251\",\n \"m_OverrideReferenceName\": \"_SpecularColor\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"r\": 0.6039215922355652,\n \"g\": 0.3137255012989044,\n \"b\": 0.0,\n \"a\": 1.0\n },\n \"m_ColorMode\": 0\n}" + "m_Id": "368d458a8280cf8c9e2680f0bcd30923" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"30baad2a-79b4-4e7a-a0a0-359486015c37\"\n },\n \"m_Name\": \"Specular Multiplier\",\n \"m_DefaultReferenceName\": \"Vector1_DB18215D\",\n \"m_OverrideReferenceName\": \"_SpecularMultiplier\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.5,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + "m_Id": "1e89cfabb97f2e83b7216bc1a03514f7" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"f6b1080a-6719-4e29-8e2d-7479348c4ef3\"\n },\n \"m_Name\": \"Specular Shift\",\n \"m_DefaultReferenceName\": \"Vector1_2ED6936D\",\n \"m_OverrideReferenceName\": \"_SpecularShift\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.125,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": -0.5,\n \"y\": 0.5\n }\n}" + "m_Id": "13a19a30f40767838720b6bc20dc0f96" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"7bad42e8-0c76-4876-8271-807c4aeaf174\"\n },\n \"m_Name\": \"Secondary Specular Multiplier\",\n \"m_DefaultReferenceName\": \"Vector1_CB3E2EAA\",\n \"m_OverrideReferenceName\": \"_SecondarySpecularMultiplier\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.5,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + "m_Id": "62ee46de6bfcd384834d04eba69ebb01" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"ee3a9099-a106-4e67-9881-37e1e2767167\"\n },\n \"m_Name\": \"Secondary Specular Shift\",\n \"m_DefaultReferenceName\": \"Vector1_80025A86\",\n \"m_OverrideReferenceName\": \"_SecondarySpecularShift\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": -0.125,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": -0.5,\n \"y\": 0.5\n }\n}" + "m_Id": "26a7729007a6a788ae282ac72a384829" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.TextureShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"f713fd50-191c-4103-85a2-925a51d5dd5b\"\n },\n \"m_Name\": \"Normal Map\",\n \"m_DefaultReferenceName\": \"Texture2D_272FF350\",\n \"m_OverrideReferenceName\": \"_NormalMap\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"m_SerializedTexture\": \"{\\\"texture\\\":{\\\"instanceID\\\":0}}\",\n \"m_Guid\": \"\"\n },\n \"m_Modifiable\": true,\n \"m_DefaultType\": 3\n}" + "m_Id": "57fa31585b35f18a8365063c5c300c72" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"45256b52-4919-4436-824f-6f9e813fe9b1\"\n },\n \"m_Name\": \"Normal Map Strength\",\n \"m_DefaultReferenceName\": \"Vector1_2B87C9F0\",\n \"m_OverrideReferenceName\": \"_NormalScale\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 1.0,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 8.0\n }\n}" + "m_Id": "016ae939cdbc7c83815f88544f15702b" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.TextureShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"2f5fe95c-42c7-4245-bb11-68c85f0c3261\"\n },\n \"m_Name\": \"Transmission Map (R)\",\n \"m_DefaultReferenceName\": \"Texture2D_9D58E1D1\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"m_SerializedTexture\": \"{\\\"texture\\\":{\\\"instanceID\\\":0}}\",\n \"m_Guid\": \"\"\n },\n \"m_Modifiable\": true,\n \"m_DefaultType\": 0\n}" + "m_Id": "29421cacf85da28f9121a0c263897c02" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.ColorShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"a186db1e-d420-4f52-83db-355818bb464f\"\n },\n \"m_Name\": \"Transmission Color\",\n \"m_DefaultReferenceName\": \"Color_6FC6C3A4\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"r\": 0.30000001192092898,\n \"g\": 0.19499999284744264,\n \"b\": 0.09000000357627869,\n \"a\": 1.0\n },\n \"m_ColorMode\": 0\n}" + "m_Id": "caaf1de3a5900386b892886989180df8" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"f2493b6b-81f4-4433-8ed1-5e71d02b733d\"\n },\n \"m_Name\": \"Transmission Rim Intensity\",\n \"m_DefaultReferenceName\": \"Vector1_901E5FC2\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 1.0,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 2.0\n }\n}" + "m_Id": "4d0090480b24b18890a27d0ecb10da8a" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector4ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"ac9e053c-4cda-42a4-be2e-b1261e151565\"\n },\n \"m_Name\": \"Base UV Mask\",\n \"m_DefaultReferenceName\": \"Vector4_BBB2EF8D\",\n \"m_OverrideReferenceName\": \"_uvBaseMask\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"x\": 1.0,\n \"y\": 0.0,\n \"z\": 0.0,\n \"w\": 0.0\n }\n}" + "m_Id": "7e6ad3903703a982bbac21a66daf72fe" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector4ShaderProperty" - }, - "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"8cdbfb43-feb7-4816-9cea-ca9952679ecb\"\n },\n \"m_Name\": \"Base UV Tiling and Offset\",\n \"m_DefaultReferenceName\": \"Vector4_84AAB3AE\",\n \"m_OverrideReferenceName\": \"_uvBaseST\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"x\": 1.0,\n \"y\": 1.0,\n \"z\": 0.0,\n \"w\": 0.0\n }\n}" + "m_Id": "caa41548ce1c7e8d84c2960d2167274f" } ], - "m_SerializedKeywords": [], - "m_SerializableNodes": [ + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"23c8b95f-e975-4526-b3b3-66356ea2f890\",\n \"m_GroupGuidSerialized\": \"bec272d2-0050-46d8-8dc5-0cd5ecce0fa7\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1377.9998779296875,\n \"y\": -463.00006103515627,\n \"width\": 175.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Ambient Occlusion Map\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"d5937b9c-e726-47e2-9096-c64bd42839d2\"\n}" + "m_Id": "7dfb5abb0d6f4715a57257a1139c3059" + } + ], + "m_Nodes": [ + { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.AddNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"83b7942b-e1d7-476c-9a0e-aa95c84f6881\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Add\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -589.0,\n \"y\": 1515.0,\n \"width\": 122.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "76ed0cdeae9b838bb6835de56d9bc13b" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1Node" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"4513c2c0-9c71-40c6-b0f8-175a0f1a0a9c\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Vector 1\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1032.0,\n \"y\": 1123.0,\n \"width\": 121.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"X\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"X\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.5,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_Value\": 0.0\n}" + "m_Id": "942443896e5a4e869e22e65b4442e715" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector2Node" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"9b975b4d-3ac0-4687-b237-87b3dd3af40c\",\n \"m_GroupGuidSerialized\": \"7e54d48a-d55e-4035-84b1-30f3e7c46cb0\",\n \"m_Name\": \"Vector 2\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -963.9999389648438,\n \"y\": 109.99999237060547,\n \"width\": 124.99999237060547,\n \"height\": 100.99999237060547\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"X\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"X\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Y\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Y\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_Value\": {\n \"x\": 0.0,\n \"y\": 0.0\n }\n}" + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"7793a86d-dc73-43a6-aac7-628f2daa52c5\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -55.0,\n \"y\": 100.0,\n \"width\": 116.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Alpha Cutoff\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"1c11679b-cbb6-4fa9-8f37-996c04d07707\"\n}" + "m_Id": "33d526f7424ba48298f8f47efe601b4b" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.MultiplyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"8aee729c-bcf2-47e6-aa83-f5075954aaa6\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -765.0,\n \"y\": 1321.0,\n \"width\": 122.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 2.0,\\n \\\"e01\\\": 2.0,\\n \\\"e02\\\": 2.0,\\n \\\"e03\\\": 2.0,\\n \\\"e10\\\": 2.0,\\n \\\"e11\\\": 2.0,\\n \\\"e12\\\": 2.0,\\n \\\"e13\\\": 2.0,\\n \\\"e20\\\": 2.0,\\n \\\"e21\\\": 2.0,\\n \\\"e22\\\": 2.0,\\n \\\"e23\\\": 2.0,\\n \\\"e30\\\": 2.0,\\n \\\"e31\\\": 2.0,\\n \\\"e32\\\": 2.0,\\n \\\"e33\\\": 2.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"94820487-a461-4cfe-92b3-440c32ffc199\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1032.0,\n \"y\": 1041.0,\n \"width\": 123.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Specular Color\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"b4a05d66-058e-4286-b129-93c8a70a29f0\"\n}" + "m_Id": "6c0853fe8df6f38182a5873895fdedc4" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"e48d4d08-d22f-4042-baaa-784c8a501cd7\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -96.0,\n \"y\": 175.0,\n \"width\": 157.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Alpha Cutoff Prepass\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"d91fd1a5-e079-4844-b874-c9c0ca592f79\"\n}" + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"90cad057-f900-46ee-9866-9e15f697fd48\",\n \"m_GroupGuidSerialized\": \"7e54d48a-d55e-4035-84b1-30f3e7c46cb0\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1192.9998779296875,\n \"y\": 67.0,\n \"width\": 136.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Smoothness Min\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"e4dc662e-3747-4770-96eb-43812b6540e3\"\n}" + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"c0447b12-862f-4d80-9c37-43d6046e38d7\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -98.0,\n \"y\": 326.0,\n \"width\": 162.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Alpha Cutoff Shadows\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"08ee1c25-529f-4fca-8392-271b44871553\"\n}" + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.MultiplyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"1d6e32fd-9b88-4000-bee4-f8d9d0aa052f\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -650.0,\n \"y\": 963.0,\n \"width\": 122.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 2.0,\\n \\\"e01\\\": 2.0,\\n \\\"e02\\\": 2.0,\\n \\\"e03\\\": 2.0,\\n \\\"e10\\\": 2.0,\\n \\\"e11\\\": 2.0,\\n \\\"e12\\\": 2.0,\\n \\\"e13\\\": 2.0,\\n \\\"e20\\\": 2.0,\\n \\\"e21\\\": 2.0,\\n \\\"e22\\\": 2.0,\\n \\\"e23\\\": 2.0,\\n \\\"e30\\\": 2.0,\\n \\\"e31\\\": 2.0,\\n \\\"e32\\\": 2.0,\\n \\\"e33\\\": 2.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "0dac8599ed051d809ee6b04c3f533f09" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.NormalStrengthNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"1b961f67-3ecd-4e7c-936a-f91f07fefb70\",\n \"m_GroupGuidSerialized\": \"7affdf5d-c5c7-4cfe-b4d5-32698b04eb10\",\n \"m_Name\": \"Normal Strength\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -636.0,\n \"y\": 392.99993896484377,\n \"width\": 161.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"In\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"In\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Strength\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Strength\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 1.0,\\n \\\"m_DefaultValue\\\": 1.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"202bea83-6421-4953-be44-9e0b96eec563\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1048.0,\n \"y\": 796.0,\n \"width\": 123.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Specular Color\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"b4a05d66-058e-4286-b129-93c8a70a29f0\"\n}" + "m_Id": "974ce3495784e68697652bbdedaa515f" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"adecd50c-45e6-4932-bfcf-877740f4429c\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -101.0,\n \"y\": 251.0,\n \"width\": 163.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Alpha Cutoff Postpass\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"2fbe22fb-2883-4e21-974b-0e58cf6fa5a8\"\n}" + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"cf377b36-6f1d-4850-af98-dbc84b3c7a09\",\n \"m_GroupGuidSerialized\": \"3a341254-a39e-4c14-a92b-ac351898d359\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -945.9998168945313,\n \"y\": -830.0,\n \"width\": 118.99999237060547,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Diffuse Color\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"cdb23723-972f-4d49-9f82-4ac5e80e2d1d\"\n}" + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.SplitNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"0dcdd156-4d20-4576-8528-86e4cbe2be30\",\n \"m_GroupGuidSerialized\": \"3a341254-a39e-4c14-a92b-ac351898d359\",\n \"m_Name\": \"Split\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -590.9998168945313,\n \"y\": -791.0,\n \"width\": 116.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"In\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"In\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"R\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"R\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"G\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"G\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"48bd176e-1fd7-4f0b-aa4e-9b9c00a36f32\",\n \"m_GroupGuidSerialized\": \"7affdf5d-c5c7-4cfe-b4d5-32698b04eb10\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1073.9998779296875,\n \"y\": 315.9999084472656,\n \"width\": 118.99999237060547,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Normal Map\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"f713fd50-191c-4103-85a2-925a51d5dd5b\"\n}" + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"3c8731e2-1f87-471e-a93d-9da703d68a36\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1001.0,\n \"y\": 1410.0,\n \"width\": 204.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Specular Shift Texture Intensity\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"66ded31f-2a1d-40c4-9c0c-c7faef0f5375\"\n}" + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.SampleTexture2DNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"f5ec7775-91a7-450b-aaf8-928686ade674\",\n \"m_GroupGuidSerialized\": \"7e54d48a-d55e-4035-84b1-30f3e7c46cb0\",\n \"m_Name\": \"Sample Texture 2D\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1037.9998779296875,\n \"y\": -84.00006103515625,\n \"width\": 198.0,\n \"height\": 182.99998474121095\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"RGBA\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"RGBA\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"R\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"R\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\n \\\"m_DisplayName\\\": \\\"G\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"G\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 6,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 7,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Texture\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Texture\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Texture\\\": {\\n \\\"m_SerializedTexture\\\": \\\"{\\\\\\\"texture\\\\\\\":{\\\\\\\"instanceID\\\\\\\":0}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"UV\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"UV\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ],\\n \\\"m_Channel\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.SamplerStateMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Sampler\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Sampler\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_TextureType\": 0,\n \"m_NormalMapSpace\": 0\n}" + "m_Id": "6628192f4725228184a28da67814b191" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"1839ed68-2985-4769-963f-0347e71b0827\",\n \"m_GroupGuidSerialized\": \"3a341254-a39e-4c14-a92b-ac351898d359\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1166.9998779296875,\n \"y\": -746.0,\n \"width\": 118.99999237060547,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Diffuse Map\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"6343a65d-92e9-4ea6-a610-b17eff7c3712\"\n}" + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.BranchNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"0d86d983-857c-48f3-a1f8-7f72eaf98eff\",\n \"m_GroupGuidSerialized\": \"bec272d2-0050-46d8-8dc5-0cd5ecce0fa7\",\n \"m_Name\": \"Branch\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1362.9998779296875,\n \"y\": -372.0,\n \"width\": 165.0,\n \"height\": 142.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.BooleanMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Predicate\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Predicate\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": false,\\n \\\"m_DefaultValue\\\": false\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"True\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"True\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0,\\n \\\"z\\\": 1.0,\\n \\\"w\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"False\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"False\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "d6204936eb0c778ba79957469938ffce" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"4ec343f2-e171-470f-970b-d8390475116f\",\n \"m_GroupGuidSerialized\": \"b5acb241-ee3f-47b6-95b7-29d6e6046e2d\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -647.0,\n \"y\": 2004.0,\n \"width\": 183.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Transmission Rim Intensity\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"f2493b6b-81f4-4433-8ed1-5e71d02b733d\"\n}" + "m_Id": "4cd67d20b3dd1382963087b08364fd9b" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.SampleTexture2DNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"573875b5-f528-4bc0-85bd-cdecad54bbfc\",\n \"m_GroupGuidSerialized\": \"7affdf5d-c5c7-4cfe-b4d5-32698b04eb10\",\n \"m_Name\": \"Sample Texture 2D\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -865.9998779296875,\n \"y\": 323.0,\n \"width\": 198.0,\n \"height\": 182.99998474121095\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"RGBA\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"RGBA\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"R\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"R\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\n \\\"m_DisplayName\\\": \\\"G\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"G\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 6,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 7,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Texture\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Texture\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Texture\\\": {\\n \\\"m_SerializedTexture\\\": \\\"{\\\\\\\"texture\\\\\\\":{\\\\\\\"instanceID\\\\\\\":0}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 3\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"UV\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"UV\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ],\\n \\\"m_Channel\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.SamplerStateMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Sampler\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Sampler\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_TextureType\": 1,\n \"m_NormalMapSpace\": 0\n}" + "m_Id": "8ad836f22bf91488a01151f840cf8766" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"11f32cb0-daed-46ad-a5f1-534f48ccb526\",\n \"m_GroupGuidSerialized\": \"7affdf5d-c5c7-4cfe-b4d5-32698b04eb10\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -834.9998168945313,\n \"y\": 509.9999694824219,\n \"width\": 157.99998474121095,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Normal Map Strength\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"45256b52-4919-4436-824f-6f9e813fe9b1\"\n}" + "m_Id": "99a201ca0a64c082ad04b50f33589bab" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.RemapNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"e4e815f0-4dde-4304-91d7-8f4489677819\",\n \"m_GroupGuidSerialized\": \"7e54d48a-d55e-4035-84b1-30f3e7c46cb0\",\n \"m_Name\": \"Remap\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -823.9998168945313,\n \"y\": 6.999929428100586,\n \"width\": 181.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"In\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"In\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": -1.0,\\n \\\"y\\\": -1.0,\\n \\\"z\\\": -1.0,\\n \\\"w\\\": -1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"In Min Max\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"InMinMax\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out Min Max\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"OutMinMax\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"b034288d-39d5-4e6c-ae40-5f28971d144f\",\n \"m_GroupGuidSerialized\": \"bec272d2-0050-46d8-8dc5-0cd5ecce0fa7\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -925.9998168945313,\n \"y\": -386.0,\n \"width\": 90.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"AO Min\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"33400aac-8162-4d1d-9d4b-243c04977272\"\n}" + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1Node" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"90fce812-fb34-4f2c-b821-bc6bcb129d27\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Vector 1\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1044.0,\n \"y\": 715.0,\n \"width\": 121.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"X\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"X\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 1.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_Value\": 0.0\n}" + "m_Id": "cf4759c0abed918d839e2e288300aeb0" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"1ab4f5ff-a1f1-4f6e-a1b2-bbd9e065ffd5\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -913.0,\n \"y\": 940.0,\n \"width\": 198.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Secondary Specular Multiplier\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"7bad42e8-0c76-4876-8271-807c4aeaf174\"\n}" + "m_Id": "5ac928109a9791869bd62a29fd9a5dfd" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.AddNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"57010cc2-d970-4608-b279-f004a099a322\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Add\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -589.0,\n \"y\": 1368.0,\n \"width\": 122.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "9251a286f0e1c983a73eb912051c4291" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.MultiplyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"a6913615-059a-4216-9347-6d33357de75d\",\n \"m_GroupGuidSerialized\": \"3a341254-a39e-4c14-a92b-ac351898d359\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -795.9998779296875,\n \"y\": -796.0,\n \"width\": 124.99999237060547,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 2.0,\\n \\\"e01\\\": 2.0,\\n \\\"e02\\\": 2.0,\\n \\\"e03\\\": 2.0,\\n \\\"e10\\\": 2.0,\\n \\\"e11\\\": 2.0,\\n \\\"e12\\\": 2.0,\\n \\\"e13\\\": 2.0,\\n \\\"e20\\\": 2.0,\\n \\\"e21\\\": 2.0,\\n \\\"e22\\\": 2.0,\\n \\\"e23\\\": 2.0,\\n \\\"e30\\\": 2.0,\\n \\\"e31\\\": 2.0,\\n \\\"e32\\\": 2.0,\\n \\\"e33\\\": 2.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "686bbf54cd40c1829f1e042219490c16" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector1Node" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"9be396bc-9377-455e-a08f-aa7d95c88c0c\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Vector 1\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1045.0,\n \"y\": 874.0,\n \"width\": 121.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"X\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"X\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.30000001192092898,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_Value\": 0.0\n}" + "m_Id": "990ac068686b8584a9f0e498315c4c6b" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"f3e19202-ebcb-49b8-88a1-7441748da12d\",\n \"m_GroupGuidSerialized\": \"bec272d2-0050-46d8-8dc5-0cd5ecce0fa7\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -920.9998168945313,\n \"y\": -312.00006103515627,\n \"width\": 91.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"AO Max\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"f7dfeb70-3e1c-4c38-9793-23ec535a1aa6\"\n}" + "m_Id": "7b26f104187a8987a649a27bf1682e3e" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.MultiplyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"357c9aec-1e95-436e-bf27-16cd7cb1bd51\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -682.0,\n \"y\": 722.0,\n \"width\": 122.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 2.0,\\n \\\"e01\\\": 2.0,\\n \\\"e02\\\": 2.0,\\n \\\"e03\\\": 2.0,\\n \\\"e10\\\": 2.0,\\n \\\"e11\\\": 2.0,\\n \\\"e12\\\": 2.0,\\n \\\"e13\\\": 2.0,\\n \\\"e20\\\": 2.0,\\n \\\"e21\\\": 2.0,\\n \\\"e22\\\": 2.0,\\n \\\"e23\\\": 2.0,\\n \\\"e30\\\": 2.0,\\n \\\"e31\\\": 2.0,\\n \\\"e32\\\": 2.0,\\n \\\"e33\\\": 2.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "29bd839213ea228c98c28cc282167a72" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"3c49e054-1e7d-4ebb-bc81-f63ca599755a\",\n \"m_GroupGuidSerialized\": \"bec272d2-0050-46d8-8dc5-0cd5ecce0fa7\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1616.9998779296875,\n \"y\": -390.0000305175781,\n \"width\": 236.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.BooleanMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Ambient Occlusion use lightmap UVs\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": false,\\n \\\"m_DefaultValue\\\": false\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"9e22e251-3c42-49bc-9403-4e38bab24977\"\n}" + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.LerpNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"6825fc92-2ef8-4153-85e2-10f950bd446c\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Lerp\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -837.0,\n \"y\": 778.0,\n \"width\": 122.0,\n \"height\": 142.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0,\\n \\\"z\\\": 1.0,\\n \\\"w\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0,\\n \\\"z\\\": 1.0,\\n \\\"w\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"T\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"T\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "eb8c3b33b47915829a3fa0f604bc056c" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.SampleTexture2DNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"5cc3bde4-c7b1-4290-8552-ca6d30f5502b\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Sample Texture 2D\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1242.0,\n \"y\": 1274.0,\n \"width\": 198.0,\n \"height\": 181.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"RGBA\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"RGBA\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"R\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"R\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\n \\\"m_DisplayName\\\": \\\"G\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"G\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 6,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 7,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Texture\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Texture\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Texture\\\": {\\n \\\"m_SerializedTexture\\\": \\\"{\\\\\\\"texture\\\\\\\":{\\\\\\\"instanceID\\\\\\\":0}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"UV\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"UV\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ],\\n \\\"m_Channel\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.SamplerStateMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Sampler\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Sampler\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_TextureType\": 0,\n \"m_NormalMapSpace\": 0\n}" + "m_Id": "b41d947f3439b385af4b28c78a8273d6" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.LerpNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"8295b80a-3b99-4a6e-ab32-2ad4fc39495d\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Lerp\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -849.0,\n \"y\": 1031.0,\n \"width\": 122.0,\n \"height\": 142.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0,\\n \\\"z\\\": 1.0,\\n \\\"w\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"T\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"T\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "e11f8d5b1e957585b6497bc5a53f7dc0" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.UVNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"3b6bac10-475b-41e3-bcab-831385e46c24\",\n \"m_GroupGuidSerialized\": \"bec272d2-0050-46d8-8dc5-0cd5ecce0fa7\",\n \"m_Name\": \"UV\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1589.9998779296875,\n \"y\": -313.0000305175781,\n \"width\": 198.0,\n \"height\": 131.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_OutputChannel\": 1\n}" + "m_Id": "533b9b9d2ff0a0898705d5962522997f" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"e9cee08f-73c4-4136-9c2a-53febadebb4d\",\n \"m_GroupGuidSerialized\": \"7e54d48a-d55e-4035-84b1-30f3e7c46cb0\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1191.9998779296875,\n \"y\": 143.0,\n \"width\": 137.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Smoothness Max\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"4005f9a0-1e7b-4422-9591-2d7900dc14a5\"\n}" + "m_Id": "dcb284e02529428e984891e5fb1ad226" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.SampleTexture2DNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"230d2e70-a113-4fd7-badb-d56d439bc3ac\",\n \"m_GroupGuidSerialized\": \"bec272d2-0050-46d8-8dc5-0cd5ecce0fa7\",\n \"m_Name\": \"Sample Texture 2D\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1165.9998779296875,\n \"y\": -442.0000305175781,\n \"width\": 198.0,\n \"height\": 182.99998474121095\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"RGBA\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"RGBA\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"R\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"R\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\n \\\"m_DisplayName\\\": \\\"G\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"G\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 6,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 7,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Texture\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Texture\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Texture\\\": {\\n \\\"m_SerializedTexture\\\": \\\"{\\\\\\\"texture\\\\\\\":{\\\\\\\"instanceID\\\\\\\":0}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"UV\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"UV\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ],\\n \\\"m_Channel\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.SamplerStateMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Sampler\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Sampler\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_TextureType\": 0,\n \"m_NormalMapSpace\": 0\n}" + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"8c1075a3-e20c-478b-a42b-6c446d19e5b7\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -808.0,\n \"y\": 1544.0,\n \"width\": 172.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Secondary Specular Shift\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"ee3a9099-a106-4e67-9881-37e1e2767167\"\n}" + "m_Id": "077b4adc0ad69880969cead861271088" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.AddNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"de1dc11c-3f0d-4a4b-8d47-c47b97f91526\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Add\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -930.0,\n \"y\": 1281.0,\n \"width\": 122.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": -0.5,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "820ef484d4e55783849213f3ffc6550c" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.SampleTexture2DNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"042dfd4a-1607-4068-afe5-c31811393e1a\",\n \"m_GroupGuidSerialized\": \"3a341254-a39e-4c14-a92b-ac351898d359\",\n \"m_Name\": \"Sample Texture 2D\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1021.9998168945313,\n \"y\": -746.0,\n \"width\": 198.0,\n \"height\": 182.99998474121095\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"RGBA\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"RGBA\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"R\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"R\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\n \\\"m_DisplayName\\\": \\\"G\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"G\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 6,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 7,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Texture\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Texture\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Texture\\\": {\\n \\\"m_SerializedTexture\\\": \\\"{\\\\\\\"texture\\\\\\\":{\\\\\\\"instanceID\\\\\\\":0}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"UV\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"UV\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ],\\n \\\"m_Channel\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.SamplerStateMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Sampler\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Sampler\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_TextureType\": 0,\n \"m_NormalMapSpace\": 0\n}" + "m_Id": "5f38d464c32e2e82828769e0b7986031" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.RemapNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"3fc97852-9831-4c6a-ad96-66834a76100d\",\n \"m_GroupGuidSerialized\": \"bec272d2-0050-46d8-8dc5-0cd5ecce0fa7\",\n \"m_Name\": \"Remap\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -651.9998168945313,\n \"y\": -441.0000305175781,\n \"width\": 181.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"In\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"In\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": -1.0,\\n \\\"y\\\": -1.0,\\n \\\"z\\\": -1.0,\\n \\\"w\\\": -1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"In Min Max\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"InMinMax\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out Min Max\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"OutMinMax\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"95eccb6f-c37e-4ad4-acd1-93cfcc166063\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -760.0,\n \"y\": 1448.0,\n \"width\": 119.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Specular Shift\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"f6b1080a-6719-4e29-8e2d-7479348c4ef3\"\n}" + "m_Id": "7b8eb92f3d1e8289b2d0a1d053d7860e" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"fbef7d3d-c1bc-4825-bd64-70c49bd94c9d\",\n \"m_GroupGuidSerialized\": \"7e54d48a-d55e-4035-84b1-30f3e7c46cb0\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1235.9998779296875,\n \"y\": -86.00003814697266,\n \"width\": 161.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Smoothness Map (R)\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"179767ac-b5e5-49ea-a32e-2546c617a112\"\n}" + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"905d3a79-cae4-4c16-a09f-46f7b34487a1\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -2339.0,\n \"y\": -72.0,\n \"width\": 122.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Base UV Mask\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"ac9e053c-4cda-42a4-be2e-b1261e151565\"\n}" + "m_Id": "43a41f7a42a9b487af906c32995abadc" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.MultiplyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"25d5b0ac-c1c1-4975-9ff6-a3c2249712b4\",\n \"m_GroupGuidSerialized\": \"7e54d48a-d55e-4035-84b1-30f3e7c46cb0\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -606.9998168945313,\n \"y\": 100.99993896484375,\n \"width\": 124.99999237060547,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.800000011920929,\\n \\\"e01\\\": 2.0,\\n \\\"e02\\\": 2.0,\\n \\\"e03\\\": 2.0,\\n \\\"e10\\\": 2.0,\\n \\\"e11\\\": 2.0,\\n \\\"e12\\\": 2.0,\\n \\\"e13\\\": 2.0,\\n \\\"e20\\\": 2.0,\\n \\\"e21\\\": 2.0,\\n \\\"e22\\\": 2.0,\\n \\\"e23\\\": 2.0,\\n \\\"e30\\\": 2.0,\\n \\\"e31\\\": 2.0,\\n \\\"e32\\\": 2.0,\\n \\\"e33\\\": 2.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "cdeaafac0a6bf883b715ceedbaa87121" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"1f679aa7-9d20-460b-ab3f-7b7c6ea464f6\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -2397.0,\n \"y\": 12.0,\n \"width\": 176.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Base UV Tiling and Offset\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"8cdbfb43-feb7-4816-9cea-ca9952679ecb\"\n}" + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.SubGraphNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"739fdd7b-6cc8-4494-be50-192d33aa6a65\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"SGR_uvCombine\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -2157.0,\n \"y\": -54.0,\n \"width\": 201.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": -1533382448,\\n \\\"m_DisplayName\\\": \\\"uvMask\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"_uvMask\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": -1319696916,\\n \\\"m_DisplayName\\\": \\\"uvST\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"_uvST\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Output 1\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Output1\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_SerializedSubGraph\": \"{\\n \\\"subGraph\\\": {\\n \\\"fileID\\\": 11400000,\\n \\\"guid\\\": \\\"e485c02b07de92f4299e12a405a846f1\\\",\\n \\\"type\\\": 3\\n }\\n}\",\n \"m_PropertyGuids\": [\n \"7eaf38f1-8035-488d-80b2-5a35598d3bac\",\n \"2b164c69-e541-49c1-ab61-7f7c65de9d44\"\n ],\n \"m_PropertyIds\": [\n -1533382448,\n -1319696916\n ]\n}" + "m_Id": "0858398b0628498aa76b94db0641ebd0" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"b5114652-5d7c-4678-b9a5-40ca01e882cc\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -862.0,\n \"y\": 690.0,\n \"width\": 145.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Specular Multiplier\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"30baad2a-79b4-4e7a-a0a0-359486015c37\"\n}" + "m_Id": "7bd15ce0207d5c8f8654c23540ed19a1" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"e4d4ee62-2e1c-458b-b395-b7a07ccc1292\",\n \"m_GroupGuidSerialized\": \"72d97e84-eb17-4e7a-9638-eebc7e914e15\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1452.0,\n \"y\": 1271.0,\n \"width\": 181.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Specular Shift Texture (R)\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"91b97227-7399-4cd6-9d23-d7f3396a4d2d\"\n}" + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" }, { - "typeInfo": { - "fullName": "UnityEditor.Rendering.HighDefinition.HairMasterNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Hair Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 110.0,\n \"y\": -169.0,\n \"width\": 200.0,\n \"height\": 365.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.PositionMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Vertex Position\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Position\\\",\\n \\\"m_StageCapability\\\": 1,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_Space\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.NormalMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 27,\\n \\\"m_DisplayName\\\": \\\"Vertex Normal\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Vertex Normal\\\",\\n \\\"m_StageCapability\\\": 1,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_Space\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.TangentMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 28,\\n \\\"m_DisplayName\\\": \\\"Vertex Tangent\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Vertex Tangent\\\",\\n \\\"m_StageCapability\\\": 1,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_Space\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"DiffuseColor\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Albedo\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0,\\n \\\"z\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_ColorMode\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.NormalMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Normal\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Normal\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_Space\\\": 3\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.NormalMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"BentNormal\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"BentNormal\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_Space\\\": 3\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Smoothness\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Smoothness\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 1.0,\\n \\\"m_DefaultValue\\\": 0.5,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 10,\\n \\\"m_DisplayName\\\": \\\"AmbientOcclusion\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Occlusion\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 1.0,\\n \\\"m_DefaultValue\\\": 1.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 7,\\n \\\"m_DisplayName\\\": \\\"Transmittance\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Transmittance\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.30000001192092898,\\n \\\"y\\\": 0.19500000774860383,\\n \\\"z\\\": 0.09000000357627869\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 8,\\n \\\"m_DisplayName\\\": \\\"RimTransmissionIntensity\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"RimTransmissionIntensity\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 1.0,\\n \\\"m_DefaultValue\\\": 0.20000000298023225,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\n \\\"m_DisplayName\\\": \\\"HairStrandDirection\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"HairStrandDirection\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": -1.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Alpha\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Alpha\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 1.0,\\n \\\"m_DefaultValue\\\": 1.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 13,\\n \\\"m_DisplayName\\\": \\\"AlphaClipThreshold\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"AlphaClipThreshold\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.5,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 14,\\n \\\"m_DisplayName\\\": \\\"AlphaClipThresholdDepthPrepass\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"AlphaClipThresholdDepthPrepass\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.5,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 15,\\n \\\"m_DisplayName\\\": \\\"AlphaClipThresholdDepthPostpass\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"AlphaClipThresholdDepthPostpass\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.5,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 23,\\n \\\"m_DisplayName\\\": \\\"AlphaClipThresholdShadow\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"AlphaClipThresholdShadow\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.5,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 18,\\n \\\"m_DisplayName\\\": \\\"SpecularTint\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"SpecularTint\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0,\\n \\\"z\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_ColorMode\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 19,\\n \\\"m_DisplayName\\\": \\\"SpecularShift\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"SpecularShift\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.20000000298023225,\\n \\\"m_DefaultValue\\\": 0.10000000149011612,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 20,\\n \\\"m_DisplayName\\\": \\\"SecondarySpecularTint\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"SecondarySpecularTint\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.5,\\n \\\"y\\\": 0.5,\\n \\\"z\\\": 0.5\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_ColorMode\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 21,\\n \\\"m_DisplayName\\\": \\\"SecondarySmoothness\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"SecondarySmoothness\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.5,\\n \\\"m_DefaultValue\\\": 0.5,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 22,\\n \\\"m_DisplayName\\\": \\\"SecondarySpecularShift\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"SecondarySpecularShift\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.5,\\n \\\"m_DefaultValue\\\": -0.10000000149011612,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.HairSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 1,\n \"m_AlphaMode\": 0,\n \"m_BlendPreserveSpecular\": false,\n \"m_TransparencyFog\": true,\n \"m_AlphaTest\": true,\n \"m_AlphaTestDepthPrepass\": true,\n \"m_AlphaTestDepthPostpass\": true,\n \"m_TransparentWritesMotionVec\": true,\n \"m_AlphaTestShadow\": true,\n \"m_BackThenFrontRendering\": true,\n \"m_SortPriority\": 0,\n \"m_DoubleSidedMode\": 1,\n \"m_MaterialType\": 0,\n \"m_ReceiveDecals\": true,\n \"m_ReceivesSSR\": true,\n \"m_AddPrecomputedVelocity\": false,\n \"m_UseLightFacingNormal\": false,\n \"m_SpecularAA\": false,\n \"m_SpecularAAScreenSpaceVariance\": 0.0,\n \"m_SpecularAAThreshold\": 0.0,\n \"m_SpecularOcclusionMode\": 1,\n \"m_overrideBakedGI\": false,\n \"m_depthOffset\": false,\n \"m_ZWrite\": false,\n \"m_transparentCullMode\": 2,\n \"m_ZTest\": 4\n}" + "m_Id": "fd310dc054986787aff026ff45009d36" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"e23458e7-c7d3-40f0-bfed-64cef5feb17e\",\n \"m_GroupGuidSerialized\": \"b5acb241-ee3f-47b6-95b7-29d6e6046e2d\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -776.0,\n \"y\": 1925.0,\n \"width\": 145.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Transmission Color\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"a186db1e-d420-4f52-83db-355818bb464f\"\n}" + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.Vector2Node" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"cd7579c1-9d10-4f46-8a56-f6dc53b85e71\",\n \"m_GroupGuidSerialized\": \"bec272d2-0050-46d8-8dc5-0cd5ecce0fa7\",\n \"m_Name\": \"Vector 2\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -784.9998779296875,\n \"y\": -376.0000305175781,\n \"width\": 124.99999237060547,\n \"height\": 100.99999237060547\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"X\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"X\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Y\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Y\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_Value\": {\n \"x\": 0.0,\n \"y\": 0.0\n }\n}" + "m_Id": "6b5a8728482fdc88a053d64055cccbec" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.PropertyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"4de6dd16-837c-4402-bd20-135eab696f32\",\n \"m_GroupGuidSerialized\": \"b5acb241-ee3f-47b6-95b7-29d6e6046e2d\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1040.0,\n \"y\": 1742.0,\n \"width\": 174.0,\n \"height\": 77.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Transmission Map (R)\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"2f5fe95c-42c7-4245-bb11-68c85f0c3261\"\n}" + "m_Id": "7b5535ca5efda08696a1878407637ef8" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.SampleTexture2DNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"82e4931e-a762-427d-afcb-861f882bd4b6\",\n \"m_GroupGuidSerialized\": \"b5acb241-ee3f-47b6-95b7-29d6e6046e2d\",\n \"m_Name\": \"Sample Texture 2D\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -827.0,\n \"y\": 1740.0,\n \"width\": 198.0,\n \"height\": 181.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"RGBA\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"RGBA\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0,\\n \\\"w\\\": 0.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"R\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"R\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\n \\\"m_DisplayName\\\": \\\"G\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"G\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 6,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 7,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Texture\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Texture\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Texture\\\": {\\n \\\"m_SerializedTexture\\\": \\\"{\\\\\\\"texture\\\\\\\":{\\\\\\\"instanceID\\\\\\\":0}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"UV\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"UV\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\"\\n ],\\n \\\"m_Channel\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.SamplerStateMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\n \\\"m_DisplayName\\\": \\\"Sampler\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Sampler\\\",\\n \\\"m_StageCapability\\\": 3\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_TextureType\": 0,\n \"m_NormalMapSpace\": 0\n}" + "m_Id": "c987092b64d7478f9742535dccc63e2b" }, { - "typeInfo": { - "fullName": "UnityEditor.ShaderGraph.MultiplyNode" - }, - "JSONnodeData": "{\n \"m_GuidSerialized\": \"f2465d45-6adf-4bb4-b925-25f0d9efbf5f\",\n \"m_GroupGuidSerialized\": \"b5acb241-ee3f-47b6-95b7-29d6e6046e2d\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -582.0,\n \"y\": 1814.0,\n \"width\": 122.0,\n \"height\": 118.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"A\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"A\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"B\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"B\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 2.0,\\n \\\"e01\\\": 2.0,\\n \\\"e02\\\": 2.0,\\n \\\"e03\\\": 2.0,\\n \\\"e10\\\": 2.0,\\n \\\"e11\\\": 2.0,\\n \\\"e12\\\": 2.0,\\n \\\"e13\\\": 2.0,\\n \\\"e20\\\": 2.0,\\n \\\"e21\\\": 2.0,\\n \\\"e22\\\": 2.0,\\n \\\"e23\\\": 2.0,\\n \\\"e30\\\": 2.0,\\n \\\"e31\\\": 2.0,\\n \\\"e32\\\": 2.0,\\n \\\"e33\\\": 2.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicValueMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"e00\\\": 0.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 0.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 0.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"e00\\\": 1.0,\\n \\\"e01\\\": 0.0,\\n \\\"e02\\\": 0.0,\\n \\\"e03\\\": 0.0,\\n \\\"e10\\\": 0.0,\\n \\\"e11\\\": 1.0,\\n \\\"e12\\\": 0.0,\\n \\\"e13\\\": 0.0,\\n \\\"e20\\\": 0.0,\\n \\\"e21\\\": 0.0,\\n \\\"e22\\\": 1.0,\\n \\\"e23\\\": 0.0,\\n \\\"e30\\\": 0.0,\\n \\\"e31\\\": 0.0,\\n \\\"e32\\\": 0.0,\\n \\\"e33\\\": 1.0\\n }\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + "m_Id": "ffbb6c85dbb24e61841222f70b31eda4" + }, + { + "m_Id": "d533f6de70a447c7acf757da6e848a1a" + }, + { + "m_Id": "2d0ea764a3e34f86b8d0eb6dff7578a8" + }, + { + "m_Id": "dfcf6e99fba047a6a6d093baff98453b" + }, + { + "m_Id": "1499856a8fbc453abea0dc11a7e7bee2" + }, + { + "m_Id": "6424afd2c3594419a8cdfca316b67e50" + }, + { + "m_Id": "1673802673cf4fa1b133165cc8df2e9f" + }, + { + "m_Id": "2169de16108b4f6cbc9f85e992776258" + }, + { + "m_Id": "a641acc269d84aec97c9dbb3659e7e2c" + }, + { + "m_Id": "3ded47cba46541e6a5552924da596359" + }, + { + "m_Id": "28ac435d131c4e9f8b7dcb83db80695a" + }, + { + "m_Id": "11875932970b4e7dbdf75aaa39c34bac" + }, + { + "m_Id": "eb3befb2afb84929b0a8254be809b6f9" + }, + { + "m_Id": "48e08d265ef94b1487e8c06e3345918e" + }, + { + "m_Id": "052645b483f7479c823908c9e698cc3d" + }, + { + "m_Id": "1021377e7060409ca8de54585aa892fa" + }, + { + "m_Id": "c83d18f4ced84cf5ad6869c3169b738e" + }, + { + "m_Id": "471dc67b4ed44444acea11760839e0f0" + }, + { + "m_Id": "7538ffc62d8444d085ddd9a7f6ce7334" + }, + { + "m_Id": "53e04a9c8cb14206b0e3579dadffc0f3" + }, + { + "m_Id": "8c517d90181248a497e0d57afb467b61" + }, + { + "m_Id": "daed7f18b1a94d3bae3f3c66d8f047ee" } ], - "m_Groups": [ + "m_GroupDatas": [ { - "m_GuidSerialized": "72d97e84-eb17-4e7a-9638-eebc7e914e15", - "m_Title": "Specular", - "m_Position": { - "x": -1298.0, - "y": 528.0 - } + "m_Id": "77583f03069d4b168f9c2606940afb4d" }, { - "m_GuidSerialized": "7e54d48a-d55e-4035-84b1-30f3e7c46cb0", - "m_Title": "Smoothness", - "m_Position": { - "x": -1345.9998779296875, - "y": -71.0 - } + "m_Id": "7392440cfab541e7a65b0c6812d3af91" }, { - "m_GuidSerialized": "bec272d2-0050-46d8-8dc5-0cd5ecce0fa7", - "m_Title": "Ambient Occlusion", - "m_Position": { - "x": -1242.000244140625, - "y": -347.0000305175781 - } + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" }, { - "m_GuidSerialized": "3a341254-a39e-4c14-a92b-ac351898d359", - "m_Title": "Diffuse", - "m_Position": { - "x": -1457.0001220703125, - "y": -703.0000610351563 - } + "m_Id": "5b6fc818d53f45deac5294b4f97b94db" }, { - "m_GuidSerialized": "7affdf5d-c5c7-4cfe-b4d5-32698b04eb10", - "m_Title": "Normal", - "m_Position": { - "x": -1337.9998779296875, - "y": 238.0 - } + "m_Id": "b215ccd2ae604201a7d3f9422899346a" }, { - "m_GuidSerialized": "b5acb241-ee3f-47b6-95b7-29d6e6046e2d", - "m_Title": "Transmission", - "m_Position": { - "x": 9.0, - "y": 24.0 - } + "m_Id": "0f4ae77856644b87978140db274d21d6" } ], - "m_StickyNotes": [], - "m_SerializableEdges": [ - { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" - }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"739fdd7b-6cc8-4494-be50-192d33aa6a65\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"042dfd4a-1607-4068-afe5-c31811393e1a\"\n }\n}" + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "077b4adc0ad69880969cead861271088" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "76ed0cdeae9b838bb6835de56d9bc13b" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"739fdd7b-6cc8-4494-be50-192d33aa6a65\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"573875b5-f528-4bc0-85bd-cdecad54bbfc\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"1839ed68-2985-4769-963f-0347e71b0827\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"042dfd4a-1607-4068-afe5-c31811393e1a\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"48bd176e-1fd7-4f0b-aa4e-9b9c00a36f32\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"573875b5-f528-4bc0-85bd-cdecad54bbfc\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "7b5535ca5efda08696a1878407637ef8" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"23c8b95f-e975-4526-b3b3-66356ea2f890\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"230d2e70-a113-4fd7-badb-d56d439bc3ac\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"7793a86d-dc73-43a6-aac7-628f2daa52c5\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 13,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"573875b5-f528-4bc0-85bd-cdecad54bbfc\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"1b961f67-3ecd-4e7c-936a-f91f07fefb70\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "0dac8599ed051d809ee6b04c3f533f09" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"11f32cb0-daed-46ad-a5f1-534f48ccb526\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"1b961f67-3ecd-4e7c-936a-f91f07fefb70\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "1021377e7060409ca8de54585aa892fa" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"042dfd4a-1607-4068-afe5-c31811393e1a\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"a6913615-059a-4216-9347-6d33357de75d\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "29bd839213ea228c98c28cc282167a72" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"cf377b36-6f1d-4850-af98-dbc84b3c7a09\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"a6913615-059a-4216-9347-6d33357de75d\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "48e08d265ef94b1487e8c06e3345918e" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 4 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"a6913615-059a-4216-9347-6d33357de75d\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "33d526f7424ba48298f8f47efe601b4b" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"1b961f67-3ecd-4e7c-936a-f91f07fefb70\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "28ac435d131c4e9f8b7dcb83db80695a" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"a6913615-059a-4216-9347-6d33357de75d\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"0dcdd156-4d20-4576-8528-86e4cbe2be30\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "43a41f7a42a9b487af906c32995abadc" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 4,\n \"m_NodeGUIDSerialized\": \"0dcdd156-4d20-4576-8528-86e4cbe2be30\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 12,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1533382448 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 3 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"3fc97852-9831-4c6a-ad96-66834a76100d\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 10,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "a641acc269d84aec97c9dbb3659e7e2c" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "4cd67d20b3dd1382963087b08364fd9b" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"9b975b4d-3ac0-4687-b237-87b3dd3af40c\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"e4e815f0-4dde-4304-91d7-8f4489677819\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "1673802673cf4fa1b133165cc8df2e9f" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "533b9b9d2ff0a0898705d5962522997f" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"90cad057-f900-46ee-9866-9e15f697fd48\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"9b975b4d-3ac0-4687-b237-87b3dd3af40c\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "5ac928109a9791869bd62a29fd9a5dfd" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e9cee08f-73c4-4136-9c2a-53febadebb4d\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"9b975b4d-3ac0-4687-b237-87b3dd3af40c\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "0dac8599ed051d809ee6b04c3f533f09" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e48d4d08-d22f-4042-baaa-784c8a501cd7\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 14,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"adecd50c-45e6-4932-bfcf-877740f4429c\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 15,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"202bea83-6421-4953-be44-9e0b96eec563\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"6825fc92-2ef8-4153-85e2-10f950bd446c\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 4 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"9be396bc-9377-455e-a08f-aa7d95c88c0c\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"6825fc92-2ef8-4153-85e2-10f950bd446c\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"90fce812-fb34-4f2c-b821-bc6bcb129d27\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"6825fc92-2ef8-4153-85e2-10f950bd446c\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"4513c2c0-9c71-40c6-b0f8-175a0f1a0a9c\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"8295b80a-3b99-4a6e-ab32-2ad4fc39495d\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "d533f6de70a447c7acf757da6e848a1a" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"a6913615-059a-4216-9347-6d33357de75d\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"8295b80a-3b99-4a6e-ab32-2ad4fc39495d\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "e11f8d5b1e957585b6497bc5a53f7dc0" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "6b5a8728482fdc88a053d64055cccbec" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"94820487-a461-4cfe-92b3-440c32ffc199\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"8295b80a-3b99-4a6e-ab32-2ad4fc39495d\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "7b5535ca5efda08696a1878407637ef8" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "6c0853fe8df6f38182a5873895fdedc4" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"8295b80a-3b99-4a6e-ab32-2ad4fc39495d\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"1d6e32fd-9b88-4000-bee4-f8d9d0aa052f\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "e11f8d5b1e957585b6497bc5a53f7dc0" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"1ab4f5ff-a1f1-4f6e-a1b2-bbd9e065ffd5\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"1d6e32fd-9b88-4000-bee4-f8d9d0aa052f\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1319696916 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "76ed0cdeae9b838bb6835de56d9bc13b" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"6825fc92-2ef8-4153-85e2-10f950bd446c\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"357c9aec-1e95-436e-bf27-16cd7cb1bd51\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "471dc67b4ed44444acea11760839e0f0" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"b5114652-5d7c-4678-b9a5-40ca01e882cc\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"357c9aec-1e95-436e-bf27-16cd7cb1bd51\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "7b26f104187a8987a649a27bf1682e3e" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"357c9aec-1e95-436e-bf27-16cd7cb1bd51\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 18,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "7b5535ca5efda08696a1878407637ef8" + }, + "m_SlotId": 4 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"1d6e32fd-9b88-4000-bee4-f8d9d0aa052f\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 20,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "c987092b64d7478f9742535dccc63e2b" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "7b8eb92f3d1e8289b2d0a1d053d7860e" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"cd7579c1-9d10-4f46-8a56-f6dc53b85e71\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"3fc97852-9831-4c6a-ad96-66834a76100d\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "7bd15ce0207d5c8f8654c23540ed19a1" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"b034288d-39d5-4e6c-ae40-5f28971d144f\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"cd7579c1-9d10-4f46-8a56-f6dc53b85e71\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "29bd839213ea228c98c28cc282167a72" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"f3e19202-ebcb-49b8-88a1-7441748da12d\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"cd7579c1-9d10-4f46-8a56-f6dc53b85e71\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"e4e815f0-4dde-4304-91d7-8f4489677819\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"25d5b0ac-c1c1-4975-9ff6-a3c2249712b4\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"25d5b0ac-c1c1-4975-9ff6-a3c2249712b4\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 21,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"c0447b12-862f-4d80-9c37-43d6046e38d7\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 23,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"1f679aa7-9d20-460b-ab3f-7b7c6ea464f6\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": -1319696916,\n \"m_NodeGUIDSerialized\": \"739fdd7b-6cc8-4494-be50-192d33aa6a65\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"905d3a79-cae4-4c16-a09f-46f7b34487a1\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": -1533382448,\n \"m_NodeGUIDSerialized\": \"739fdd7b-6cc8-4494-be50-192d33aa6a65\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "052645b483f7479c823908c9e698cc3d" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "942443896e5a4e869e22e65b4442e715" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"4ec343f2-e171-470f-970b-d8390475116f\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 8,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "e11f8d5b1e957585b6497bc5a53f7dc0" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "974ce3495784e68697652bbdedaa515f" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"e4e815f0-4dde-4304-91d7-8f4489677819\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 9,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "eb8c3b33b47915829a3fa0f604bc056c" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "990ac068686b8584a9f0e498315c4c6b" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e4d4ee62-2e1c-458b-b395-b7a07ccc1292\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"5cc3bde4-c7b1-4290-8552-ca6d30f5502b\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "eb8c3b33b47915829a3fa0f604bc056c" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "99a201ca0a64c082ad04b50f33589bab" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"739fdd7b-6cc8-4494-be50-192d33aa6a65\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"5cc3bde4-c7b1-4290-8552-ca6d30f5502b\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 4,\n \"m_NodeGUIDSerialized\": \"5cc3bde4-c7b1-4290-8552-ca6d30f5502b\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"de1dc11c-3f0d-4a4b-8d47-c47b97f91526\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "11875932970b4e7dbdf75aaa39c34bac" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"de1dc11c-3f0d-4a4b-8d47-c47b97f91526\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"8aee729c-bcf2-47e6-aa83-f5075954aaa6\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "76ed0cdeae9b838bb6835de56d9bc13b" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"3c8731e2-1f87-471e-a93d-9da703d68a36\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"8aee729c-bcf2-47e6-aa83-f5075954aaa6\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 3 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"8aee729c-bcf2-47e6-aa83-f5075954aaa6\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"57010cc2-d970-4608-b279-f004a099a322\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "2169de16108b4f6cbc9f85e992776258" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 3 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"95eccb6f-c37e-4ad4-acd1-93cfcc166063\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"57010cc2-d970-4608-b279-f004a099a322\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "cdeaafac0a6bf883b715ceedbaa87121" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 4 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"8c1075a3-e20c-478b-a42b-6c446d19e5b7\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"83b7942b-e1d7-476c-9a0e-aa95c84f6881\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "3ded47cba46541e6a5552924da596359" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"8aee729c-bcf2-47e6-aa83-f5075954aaa6\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"83b7942b-e1d7-476c-9a0e-aa95c84f6881\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"57010cc2-d970-4608-b279-f004a099a322\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 19,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "7538ffc62d8444d085ddd9a7f6ce7334" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"83b7942b-e1d7-476c-9a0e-aa95c84f6881\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 22,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 4 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 4,\n \"m_NodeGUIDSerialized\": \"230d2e70-a113-4fd7-badb-d56d439bc3ac\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"3fc97852-9831-4c6a-ad96-66834a76100d\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "c987092b64d7478f9742535dccc63e2b" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"739fdd7b-6cc8-4494-be50-192d33aa6a65\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"0d86d983-857c-48f3-a1f8-7f72eaf98eff\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "6424afd2c3594419a8cdfca316b67e50" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "cdeaafac0a6bf883b715ceedbaa87121" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"3b6bac10-475b-41e3-bcab-831385e46c24\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"0d86d983-857c-48f3-a1f8-7f72eaf98eff\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "c83d18f4ced84cf5ad6869c3169b738e" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "cf4759c0abed918d839e2e288300aeb0" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"0d86d983-857c-48f3-a1f8-7f72eaf98eff\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"230d2e70-a113-4fd7-badb-d56d439bc3ac\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "eb8c3b33b47915829a3fa0f604bc056c" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"3c49e054-1e7d-4ebb-bc81-f63ca599755a\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"0d86d983-857c-48f3-a1f8-7f72eaf98eff\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 3 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"fbef7d3d-c1bc-4825-bd64-70c49bd94c9d\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"f5ec7775-91a7-450b-aaf8-928686ade674\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"739fdd7b-6cc8-4494-be50-192d33aa6a65\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"f5ec7775-91a7-450b-aaf8-928686ade674\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "eb3befb2afb84929b0a8254be809b6f9" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 4,\n \"m_NodeGUIDSerialized\": \"f5ec7775-91a7-450b-aaf8-928686ade674\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e4e815f0-4dde-4304-91d7-8f4489677819\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "dcb284e02529428e984891e5fb1ad226" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"4de6dd16-837c-4402-bd20-135eab696f32\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"82e4931e-a762-427d-afcb-861f882bd4b6\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 2 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "e11f8d5b1e957585b6497bc5a53f7dc0" + }, + "m_SlotId": 3 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 4,\n \"m_NodeGUIDSerialized\": \"82e4931e-a762-427d-afcb-861f882bd4b6\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"f2465d45-6adf-4bb4-b925-25f0d9efbf5f\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "0dac8599ed051d809ee6b04c3f533f09" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 2 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e23458e7-c7d3-40f0-bfed-64cef5feb17e\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"f2465d45-6adf-4bb4-b925-25f0d9efbf5f\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "2d0ea764a3e34f86b8d0eb6dff7578a8" + }, + "m_SlotId": 0 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "eb8c3b33b47915829a3fa0f604bc056c" + }, + "m_SlotId": 3 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"f2465d45-6adf-4bb4-b925-25f0d9efbf5f\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 7,\n \"m_NodeGUIDSerialized\": \"ec7dbb82-1057-45e1-8532-60da36dc5672\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "29bd839213ea228c98c28cc282167a72" + }, + "m_SlotId": 1 + } }, { - "typeInfo": { - "fullName": "UnityEditor.Graphing.Edge" + "m_OutputSlot": { + "m_Node": { + "m_Id": "fd310dc054986787aff026ff45009d36" + }, + "m_SlotId": 0 }, - "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"739fdd7b-6cc8-4494-be50-192d33aa6a65\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"82e4931e-a762-427d-afcb-861f882bd4b6\"\n }\n}" + "m_InputSlot": { + "m_Node": { + "m_Id": "c987092b64d7478f9742535dccc63e2b" + }, + "m_SlotId": 1 + } } ], + "m_VertexContext": { + "m_Position": { + "x": 110.0, + "y": -169.0 + }, + "m_Blocks": [ + { + "m_Id": "ffbb6c85dbb24e61841222f70b31eda4" + }, + { + "m_Id": "53e04a9c8cb14206b0e3579dadffc0f3" + }, + { + "m_Id": "8c517d90181248a497e0d57afb467b61" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 110.0, + "y": 31.0 + }, + "m_Blocks": [ + { + "m_Id": "d533f6de70a447c7acf757da6e848a1a" + }, + { + "m_Id": "2d0ea764a3e34f86b8d0eb6dff7578a8" + }, + { + "m_Id": "dfcf6e99fba047a6a6d093baff98453b" + }, + { + "m_Id": "1499856a8fbc453abea0dc11a7e7bee2" + }, + { + "m_Id": "6424afd2c3594419a8cdfca316b67e50" + }, + { + "m_Id": "1673802673cf4fa1b133165cc8df2e9f" + }, + { + "m_Id": "2169de16108b4f6cbc9f85e992776258" + }, + { + "m_Id": "a641acc269d84aec97c9dbb3659e7e2c" + }, + { + "m_Id": "3ded47cba46541e6a5552924da596359" + }, + { + "m_Id": "28ac435d131c4e9f8b7dcb83db80695a" + }, + { + "m_Id": "11875932970b4e7dbdf75aaa39c34bac" + }, + { + "m_Id": "eb3befb2afb84929b0a8254be809b6f9" + }, + { + "m_Id": "48e08d265ef94b1487e8c06e3345918e" + }, + { + "m_Id": "052645b483f7479c823908c9e698cc3d" + }, + { + "m_Id": "1021377e7060409ca8de54585aa892fa" + }, + { + "m_Id": "c83d18f4ced84cf5ad6869c3169b738e" + }, + { + "m_Id": "471dc67b4ed44444acea11760839e0f0" + }, + { + "m_Id": "7538ffc62d8444d085ddd9a7f6ce7334" + }, + { + "m_Id": "daed7f18b1a94d3bae3f3c66d8f047ee" + } + ] + }, "m_PreviewData": { "serializedMesh": { "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", @@ -970,6 +1367,7917 @@ } }, "m_Path": "HDRPSamples", - "m_ConcretePrecision": 0, - "m_ActiveOutputNodeGuidSerialized": "ec7dbb82-1057-45e1-8532-60da36dc5672" -} \ No newline at end of file + "m_GraphPrecision": 0, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "45bd7d394c1c44b696948a682da29fbd" + } + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "016ae939cdbc7c83815f88544f15702b", + "m_Guid": { + "m_GuidSerialized": "45256b52-4919-4436-824f-6f9e813fe9b1" + }, + "m_Name": "Normal Map Strength", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_2B87C9F0", + "m_OverrideReferenceName": "_NormalScale", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 8.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "0280396e0fca118e8bd811b51a52d939", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "052645b483f7479c823908c9e698cc3d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.SpecularShift", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b14d565913f44478a665df457410b638" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.SpecularShift" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "05327e12b59bd185886f0d655de86628", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "077b4adc0ad69880969cead861271088", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -808.0, + "y": 1544.0, + "width": 172.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "475e57d84b6d4a8eb0dcdba4fc1941d7" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "26a7729007a6a788ae282ac72a384829" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "0858398b0628498aa76b94db0641ebd0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SGR_uvCombine", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2157.0, + "y": -54.0, + "width": 201.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "a6d2f8d93c070f8ea36456eeba1dbe79" + }, + { + "m_Id": "b091997e5dd0358f90a108ac01e23b34" + }, + { + "m_Id": "ed9c054016be518faf9cc2372fbd6915" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": 11400000,\n \"guid\": \"e485c02b07de92f4299e12a405a846f1\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "7eaf38f1-8035-488d-80b2-5a35598d3bac", + "2b164c69-e541-49c1-ab61-7f7c65de9d44" + ], + "m_PropertyIds": [ + -1533382448, + -1319696916 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "0865b2013ef4028d80ad57e4f818a36e", + "m_Id": 0, + "m_DisplayName": "Transmission Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "09de172d67c56088ab0c01bd8c7eac3f", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "0dac8599ed051d809ee6b04c3f533f09", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -650.0, + "y": 963.0, + "width": 122.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "bd723a746fd3048dbaed084a11e00d22" + }, + { + "m_Id": "3c40dab5e9a99d8e90402660511c0906" + }, + { + "m_Id": "89151f03b6d27f8fb805c0c5174fc11a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "0dbc29ef6ffa7d8cb6ab2776226e7718", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "0e0649de113e1f8cbfc23094ce76578d", + "m_Guid": { + "m_GuidSerialized": "4005f9a0-1e7b-4422-9591-2d7900dc14a5" + }, + "m_Name": "Smoothness Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_A659E432", + "m_OverrideReferenceName": "_SmoothnessRemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "0e1827168753d68fb19c65eef73a7c45", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "0e4d6f55bdae588f8addbe751d5fcff8", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "0f4ae77856644b87978140db274d21d6", + "m_Title": "Transmission", + "m_Position": { + "x": 9.0, + "y": 24.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1021377e7060409ca8de54585aa892fa", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.SecondarySpecularTint", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "36de542e60d9456badb085f493ff66ce" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.SecondarySpecularTint" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "11875932970b4e7dbdf75aaa39c34bac", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPrepass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "8e8261c84f7d4846948fd362ab6cf14e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPrepass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "1259346b00720b8385dc09ce35bbaf09", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "13a19a30f40767838720b6bc20dc0f96", + "m_Guid": { + "m_GuidSerialized": "f6b1080a-6719-4e29-8e2d-7479348c4ef3" + }, + "m_Name": "Specular Shift", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_2ED6936D", + "m_OverrideReferenceName": "_SpecularShift", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.125, + "m_FloatType": 1, + "m_RangeValues": { + "x": -0.5, + "y": 0.5 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "144c10eac7ad708f8c01e281f526a3c0", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1499856a8fbc453abea0dc11a7e7bee2", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.HairStrandDirection", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "6c5003bc727f4661b55bfbbbd2970ff8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.HairStrandDirection" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "14b012f13c19a78cadd30a711522abc0", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "15596cc2593d43d3bc7dedfad1ab6ba1", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1604f7677ebd5d849df5687fb5e50742", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1673802673cf4fa1b133165cc8df2e9f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.RimTransmissionIntensity", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "383808d009324477bf0c1404a22f7db4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.RimTransmissionIntensity" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "16beddedea97758c93c96bdb9ea2b322", + "m_Guid": { + "m_GuidSerialized": "179767ac-b5e5-49ea-a32e-2546c617a112" + }, + "m_Name": "Smoothness Map (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_189C8E90", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "176531b3e19b8686b38e0c9259252aee", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "176acbaef26e4893bd80508e713ab748", + "m_Id": 0, + "m_DisplayName": "Secondary Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SecondarySmoothness", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "1960479b41340083b65285a79683a509", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1aa04e00d5958c8e838a82ba3f1072fd", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1bcb65ec9d477a83afd32b95e9cdd258", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "1c9bb297962f0c82a0d1a739cab371e6", + "m_Group": { + "m_Id": "7392440cfab541e7a65b0c6812d3af91" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1192.9998779296875, + "y": 67.0, + "width": 136.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "e9d9af9c13491486b6a00c4fbd1c39b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "402d57acf7a6e28aa047a74f99430ce8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1ddf0b15faacd1838bfdd5378bc84909", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "1e89cfabb97f2e83b7216bc1a03514f7", + "m_Guid": { + "m_GuidSerialized": "30baad2a-79b4-4e7a-a0a0-359486015c37" + }, + "m_Name": "Specular Multiplier", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_DB18215D", + "m_OverrideReferenceName": "_SpecularMultiplier", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2169de16108b4f6cbc9f85e992776258", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "571f30014ad44fcca886927a3efbec3d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "236d9b8d136c718d9974f605510b28b6", + "m_Id": 0, + "m_DisplayName": "Normal Map Strength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "236f73c9e460cb8394c6c7f693633923", + "m_Id": 0, + "m_DisplayName": "Normal Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2371eb645bdf0789be466e3f4c8c8602", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "240dbbe9e073ba8fbbc7866bfe19006f", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2565fe9d8cf1df879902f85d51b227a1", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "2620a8e4de7c188e9a1a352425899905", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "26a7729007a6a788ae282ac72a384829", + "m_Guid": { + "m_GuidSerialized": "ee3a9099-a106-4e67-9881-37e1e2767167" + }, + "m_Name": "Secondary Specular Shift", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_80025A86", + "m_OverrideReferenceName": "_SecondarySpecularShift", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": -0.125, + "m_FloatType": 1, + "m_RangeValues": { + "x": -0.5, + "y": 0.5 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "28ac435d131c4e9f8b7dcb83db80695a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "712ce0f6684b4a24965ba0a6ff983071" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "29421cacf85da28f9121a0c263897c02", + "m_Guid": { + "m_GuidSerialized": "2f5fe95c-42c7-4245-bb11-68c85f0c3261" + }, + "m_Name": "Transmission Map (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_9D58E1D1", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "29bd839213ea228c98c28cc282167a72", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -682.0, + "y": 722.0, + "width": 122.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "bbf5010fd4e4568089019b3c049a08c0" + }, + { + "m_Id": "1259346b00720b8385dc09ce35bbaf09" + }, + { + "m_Id": "a86b2ee4ca97bb89bf847ac9a6703c5f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "2a061a10a33743f7bad980af05c1cca4", + "m_MaterialNeedsUpdateHash": 12719, + "m_SurfaceType": 1, + "m_RenderingPass": 4, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": true, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 1, + "m_DOTSInstancing": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 8 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2abeaa36c9f9818587c0c6d6c46dc78f", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "2b67d3cfa8ede686a5a5891675840aca", + "m_Group": { + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -2229.000244140625, + "y": -716.0, + "width": 157.0, + "height": 179.0 + } + }, + "m_Slots": [ + { + "m_Id": "2620a8e4de7c188e9a1a352425899905" + }, + { + "m_Id": "eb64f51ceae0e985b9a2d518888e7e38" + }, + { + "m_Id": "bdb36d10e8f5d9868a902112523885d3" + }, + { + "m_Id": "a4d19347cca2d08dbd28cee652fa9662" + }, + { + "m_Id": "3dd1686839cd4c8ea23a9e210822ed45" + }, + { + "m_Id": "b57e501619804b89b55a01c6914f1061" + }, + { + "m_Id": "7911580134b27285aea5011e176efc55" + }, + { + "m_Id": "92504468ba4f378f834ad4b5f33fbaf9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "2b9e6e492bd61c8a85beb3c304421742", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "2bec0390f4e34df7aeed1e739b91b136", + "m_Title": "Ambient Occlusion", + "m_Position": { + "x": -2709.999755859375, + "y": -811.9999389648438 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2d0ea764a3e34f86b8d0eb6dff7578a8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f05a5e9696214996ad74d2f5c804a68d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2e197e754975c58a94b53041782ead99", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Shadows", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "2f2dda15cd64628695a5e429bd783b18", + "m_Id": 0, + "m_DisplayName": "Smoothness Map (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "31273c8259a6778aa47649c66e22defa", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "33d526f7424ba48298f8f47efe601b4b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -55.0, + "y": 100.0, + "width": 116.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "91e02132de64ba8188337710a7ffc3e4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b9ff8d51f0055e8d92ba8e5fd06ee2f3" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "340b1f3554a53881b136398deed4da52", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "348fecfb4fb3a38db2bd198743f33083", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "354c780e278883888de190759d0b677c", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "368d458a8280cf8c9e2680f0bcd30923", + "m_Guid": { + "m_GuidSerialized": "b4a05d66-058e-4286-b129-93c8a70a29f0" + }, + "m_Name": "Specular Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Color_4A6C7251", + "m_OverrideReferenceName": "_SpecularColor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.6039215922355652, + "g": 0.3137255012989044, + "b": 0.0, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "36de542e60d9456badb085f493ff66ce", + "m_Id": 0, + "m_DisplayName": "Secondary Specular Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SecondarySpecularTint", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "36fd1c395265f284b4a33852caea20aa", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "383808d009324477bf0c1404a22f7db4", + "m_Id": 0, + "m_DisplayName": "Rim Transmission Intensity", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "RimTransmissionIntensity", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 0.20000000298023225, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "3956714c58cb9a88bf186adf5315d9e0", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "3b96fbbc5e6ed68198a59a2a3d43ab52", + "m_Group": { + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2684.999755859375, + "y": -679.9999389648438, + "width": 269.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "ae77e3144b96ce8fb1897a571d778e92" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a399c12028963188b1be13467fbed8d0" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3c40dab5e9a99d8e90402660511c0906", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3d239afea657458f89d6c65107f2aa06", + "m_Id": 0, + "m_DisplayName": "Smoothness Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "3d29306586360f87bd4e7b9ae811bfb5", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3dd1686839cd4c8ea23a9e210822ed45", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "3ded47cba46541e6a5552924da596359", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7be9283612f54a3bbc99c35b6b2971ca" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3e64307feed15f8cad4236a057acf4c8", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Postpass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3f79ba7357137587a04e6051a0d313b4", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "402d57acf7a6e28aa047a74f99430ce8", + "m_Guid": { + "m_GuidSerialized": "e4dc662e-3747-4770-96eb-43812b6540e3" + }, + "m_Name": "Smoothness Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4F7BB2EA", + "m_OverrideReferenceName": "_SmoothnessRemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "42e3d490fe6843628ad67d352d7b6d9c", + "m_Id": 0, + "m_DisplayName": "Bent Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BentNormal", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "433ac40aaba40288a2951408c4d772ee", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "43a41f7a42a9b487af906c32995abadc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2339.0, + "y": -72.0, + "width": 122.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "bb9ae3f0ca69bc89bcd4618fe24578fe" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "7e6ad3903703a982bbac21a66daf72fe" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "44eb2baae7244a869ce9cf82ea31a653", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "450e3ecb6d6aa089a80825c4acc0c74c", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDTarget", + "m_ObjectId": "45bd7d394c1c44b696948a682da29fbd", + "m_ActiveSubTarget": { + "m_Id": "728ce69604f04c9ebf3dc41f55a90c2d" + }, + "m_Datas": [ + { + "m_Id": "693ae003eabb4b6293de59fa5ce416f9" + }, + { + "m_Id": "4edacf1965af4c7e97889915db4880d8" + }, + { + "m_Id": "2a061a10a33743f7bad980af05c1cca4" + }, + { + "m_Id": "d8ca6bf110ae49cbb504f21cf316a8a8" + }, + { + "m_Id": "f5e0b2e6f4b8410baa2658c18cbdd098" + }, + { + "m_Id": "9a38dca5debe4f9c8ced0600480adacf" + }, + { + "m_Id": "c66bc8524a1642acb592709f1c81f2eb" + } + ], + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "471dc67b4ed44444acea11760839e0f0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.SecondarySpecularShift", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f44aa1b87240458e9293955c698cd5f0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.SecondarySpecularShift" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "475e57d84b6d4a8eb0dcdba4fc1941d7", + "m_Id": 0, + "m_DisplayName": "Secondary Specular Shift", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "48e08d265ef94b1487e8c06e3345918e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.SpecularTint", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9fd64667558e46d4a22f769a257d26fa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.SpecularTint" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4a2e31e5bdadeb8ba3525a11caade5fa", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "4be44d4bc359298a9985c1d86006f8fb", + "m_Group": { + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1715.0001220703125, + "y": -715.0, + "width": 185.9998779296875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "86a16f16f03dab80a00a66849fc57418" + }, + { + "m_Id": "aa8c1dcd926d098f8ae2e03e7c89e48e" + }, + { + "m_Id": "3d29306586360f87bd4e7b9ae811bfb5" + }, + { + "m_Id": "ce1c65ecd0d8c485bad482d92cd4207f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "4cd67d20b3dd1382963087b08364fd9b", + "m_Group": { + "m_Id": "0f4ae77856644b87978140db274d21d6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -647.0, + "y": 2004.0, + "width": 183.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "9975e15403726885a0712f48181ed31a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "4d0090480b24b18890a27d0ecb10da8a" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "4d0090480b24b18890a27d0ecb10da8a", + "m_Guid": { + "m_GuidSerialized": "f2493b6b-81f4-4433-8ed1-5e71d02b733d" + }, + "m_Name": "Transmission Rim Intensity", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_901E5FC2", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 2.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "4edacf1965af4c7e97889915db4880d8", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": false, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 1, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "4f9b5c65f95b4687931d9d1bbcac0a91", + "m_Guid": { + "m_GuidSerialized": "66ded31f-2a1d-40c4-9c0c-c7faef0f5375" + }, + "m_Name": "Specular Shift Texture Intensity", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_7D9AC3D3", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 3.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "501171e25405ea8aa7a0d5b5f3713087", + "m_Guid": { + "m_GuidSerialized": "d91fd1a5-e079-4844-b874-c9c0ca592f79" + }, + "m_Name": "Alpha Cutoff Prepass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_AD26FB16", + "m_OverrideReferenceName": "_AlphaCutoffPrepass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.8999999761581421, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "50556458863843898802643405572325", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "51f89bbfeb89fd8e8abd8c2da08380b6", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "533b20e3fe8405898a55f0a048a3ddaf", + "m_Id": 0, + "m_DisplayName": "Diffuse Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "533b9b9d2ff0a0898705d5962522997f", + "m_Group": { + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2657.999755859375, + "y": -602.9999389648438, + "width": 145.0, + "height": 129.0 + } + }, + "m_Slots": [ + { + "m_Id": "240dbbe9e073ba8fbbc7866bfe19006f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 1 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "53e04a9c8cb14206b0e3579dadffc0f3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "8fb00bfa3a254d6abeaf33e8808c3d8d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "565b18ce35d4f88c8fddae94b4729467", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Prepass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "568a2358a7136089af576545a75f65e7", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "571f30014ad44fcca886927a3efbec3d", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "57fa31585b35f18a8365063c5c300c72", + "m_Guid": { + "m_GuidSerialized": "f713fd50-191c-4103-85a2-925a51d5dd5b" + }, + "m_Name": "Normal Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_272FF350", + "m_OverrideReferenceName": "_NormalMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "59ed7da959ff1f84a470af10c5ac986a", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "5ac5e73a9d226e83a95831f499327f5d", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5ac928109a9791869bd62a29fd9a5dfd", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -913.0, + "y": 940.0, + "width": 198.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "abb8d5e4b66a548aa3abf6a3783a89f3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "62ee46de6bfcd384834d04eba69ebb01" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5b490fbd5e29ed89aa6a4d83b25a2009", + "m_Group": { + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2441.000244140625, + "y": -737.0, + "width": 207.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "433ac40aaba40288a2951408c4d772ee" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "693203d698e0f88aaedc60507b42f88a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "5b6fc818d53f45deac5294b4f97b94db", + "m_Title": "Diffuse", + "m_Position": { + "x": -1457.0001220703125, + "y": -703.0000610351563 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5c7f2dba5a3378818055e511404568fe", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "5f0d566e8086ca83a6e70f4e309c5c47", + "m_Id": 0, + "m_DisplayName": "Specular Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "5f38d464c32e2e82828769e0b7986031", + "m_Group": { + "m_Id": "5b6fc818d53f45deac5294b4f97b94db" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1021.9998168945313, + "y": -746.0, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "65c9308837466e8c95b0adac0199c4c1" + }, + { + "m_Id": "f534ee89ba597889981c1cd0f89566ad" + }, + { + "m_Id": "340b1f3554a53881b136398deed4da52" + }, + { + "m_Id": "6d83dd949117898385976df4af592436" + }, + { + "m_Id": "c1d28320e6e1e186a6f185a0d00723ea" + }, + { + "m_Id": "2b9e6e492bd61c8a85beb3c304421742" + }, + { + "m_Id": "86a7033bf32fde89a32671894f3faa27" + }, + { + "m_Id": "0dbc29ef6ffa7d8cb6ab2776226e7718" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "62ee46de6bfcd384834d04eba69ebb01", + "m_Guid": { + "m_GuidSerialized": "7bad42e8-0c76-4876-8271-807c4aeaf174" + }, + "m_Name": "Secondary Specular Multiplier", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_CB3E2EAA", + "m_OverrideReferenceName": "_SecondarySpecularMultiplier", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "6424afd2c3594419a8cdfca316b67e50", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Transmittance", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e3b40d8244184cb1b1412609863c5ddb" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Transmittance" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "647309fcbf93808f8e9587e1bb5d3017", + "m_Group": { + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1848.0001220703125, + "y": -650.0, + "width": 127.9998779296875, + "height": 101.0 + } + }, + "m_Slots": [ + { + "m_Id": "d604aeede7be8c81a89f3f9f7b316785" + }, + { + "m_Id": "c6251dcf7d883e8493c3ba4142a40eae" + }, + { + "m_Id": "44eb2baae7244a869ce9cf82ea31a653" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "64a9646b6bee1988b3dd246647f3a508", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "65c9308837466e8c95b0adac0199c4c1", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "65cb1c5a02e5d183bfc5ceb7aeab47b9", + "m_Id": 0, + "m_DisplayName": "AO Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "66162c4d0a284657b084463a20fdfa9c", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "6628192f4725228184a28da67814b191", + "m_Group": { + "m_Id": "7392440cfab541e7a65b0c6812d3af91" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1037.9998779296875, + "y": -84.00006103515625, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "3956714c58cb9a88bf186adf5315d9e0" + }, + { + "m_Id": "50556458863843898802643405572325" + }, + { + "m_Id": "a1ce52e42287c98ba224acde9ae460ba" + }, + { + "m_Id": "be2ab041555e4284b3ae78102b12445e" + }, + { + "m_Id": "b8ee043449f1fa8894ec494307b662e9" + }, + { + "m_Id": "0280396e0fca118e8bd811b51a52d939" + }, + { + "m_Id": "dd1870936d90fb81bc8ec730e1dcefdc" + }, + { + "m_Id": "a684ed327e7dac8092910d8f98cb958a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "683f7dc15bad9086b0599097c9f23308", + "m_Id": 0, + "m_DisplayName": "Transmission Map (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "686bbf54cd40c1829f1e042219490c16", + "m_Group": { + "m_Id": "5b6fc818d53f45deac5294b4f97b94db" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -795.9998779296875, + "y": -796.0, + "width": 124.99999237060547, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "1960479b41340083b65285a79683a509" + }, + { + "m_Id": "c7aaac29b313fb8ebbfcb4055bcbb86d" + }, + { + "m_Id": "f6270313d819ae8eb09b23f362e7578e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "693203d698e0f88aaedc60507b42f88a", + "m_Guid": { + "m_GuidSerialized": "d5937b9c-e726-47e2-9096-c64bd42839d2" + }, + "m_Name": "Ambient Occlusion Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_E48D0DF2", + "m_OverrideReferenceName": "_MaskMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "693ae003eabb4b6293de59fa5ce416f9", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": true, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": true, + "m_BackThenFrontRendering": true, + "m_TransparentDepthPrepass": true, + "m_TransparentDepthPostpass": true, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "6a5b1ea4a775ca87a7613bd5f29245ce", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "6b5a8728482fdc88a053d64055cccbec", + "m_Group": { + "m_Id": "0f4ae77856644b87978140db274d21d6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1040.0, + "y": 1742.0, + "width": 174.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "683f7dc15bad9086b0599097c9f23308" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "29421cacf85da28f9121a0c263897c02" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "6c0853fe8df6f38182a5873895fdedc4", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1032.0, + "y": 1041.0, + "width": 123.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "6ea96a19ded04f84a235a41bb338e3b3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "368d458a8280cf8c9e2680f0bcd30923" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "6c5003bc727f4661b55bfbbbd2970ff8", + "m_Id": 0, + "m_DisplayName": "Hair Strand Direction", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "HairStrandDirection", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "6d22c56dd00cb1888fafba3337bae59c", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6d83dd949117898385976df4af592436", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "6ea96a19ded04f84a235a41bb338e3b3", + "m_Id": 0, + "m_DisplayName": "Specular Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6eb14bdea8824c898b37443575572deb", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "6ff86797a9ac10818236680358bf476b", + "m_Guid": { + "m_GuidSerialized": "33400aac-8162-4d1d-9d4b-243c04977272" + }, + "m_Name": "AO Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_164AD3BD", + "m_OverrideReferenceName": "_AORemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "712ce0f6684b4a24965ba0a6ff983071", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7135e81ebc9cca808d6c1bf0f4757a19", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2397.0, + "y": 12.0, + "width": 176.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "8de4f0e928a2d8849f1ca35633e0086e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "caa41548ce1c7e8d84c2960d2167274f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairSubTarget", + "m_ObjectId": "728ce69604f04c9ebf3dc41f55a90c2d" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "7392440cfab541e7a65b0c6812d3af91", + "m_Title": "Smoothness", + "m_Position": { + "x": -1345.9998779296875, + "y": -71.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "73c8775d0ec54303a5fa1cccc08bfa5c", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "7538ffc62d8444d085ddd9a7f6ce7334", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdShadow", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "91c2e94338144635a9e93099de94c296" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdShadow" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "76ed0cdeae9b838bb6835de56d9bc13b", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -589.0, + "y": 1515.0, + "width": 122.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "af57bbde7fe52b879f5b9a6ef6ab3d62" + }, + { + "m_Id": "6d22c56dd00cb1888fafba3337bae59c" + }, + { + "m_Id": "31273c8259a6778aa47649c66e22defa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "77583f03069d4b168f9c2606940afb4d", + "m_Title": "Specular", + "m_Position": { + "x": -1298.0, + "y": 528.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7796b2ec1bc478829b13398bab417829", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "77b24a17f4d9ce888d0d645c8a3a18e5", + "m_Group": { + "m_Id": "5b6fc818d53f45deac5294b4f97b94db" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1166.9998779296875, + "y": -746.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "533b20e3fe8405898a55f0a048a3ddaf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "e1b12c8c0685d48fb559e1038df5f742" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7911580134b27285aea5011e176efc55", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7a1d915b646941fe95d6dd80037a7cb3", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7b122e5ad389c78e955d1a8d600c0649", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7b26f104187a8987a649a27bf1682e3e", + "m_Group": { + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1984.0001220703125, + "y": -586.0, + "width": 116.0, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "f6fe779f1a8d0f8599e6605b9d793fdf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "8d41ad9c690c7a839eb636901e8f379d" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "7b5535ca5efda08696a1878407637ef8", + "m_Group": { + "m_Id": "0f4ae77856644b87978140db274d21d6" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -827.0, + "y": 1740.0, + "width": 198.0, + "height": 181.0 + } + }, + "m_Slots": [ + { + "m_Id": "5ac5e73a9d226e83a95831f499327f5d" + }, + { + "m_Id": "1bcb65ec9d477a83afd32b95e9cdd258" + }, + { + "m_Id": "2565fe9d8cf1df879902f85d51b227a1" + }, + { + "m_Id": "ac46c53eeba00d80a93da7802711dfe4" + }, + { + "m_Id": "1604f7677ebd5d849df5687fb5e50742" + }, + { + "m_Id": "894d88be8fad178996f5b2df9cfbbd68" + }, + { + "m_Id": "64a9646b6bee1988b3dd246647f3a508" + }, + { + "m_Id": "f6bacfb361c37e818202f4f921bf58ed" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7b8eb92f3d1e8289b2d0a1d053d7860e", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -760.0, + "y": 1448.0, + "width": 119.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "9e63c093ee678a8a8ede962386cb5460" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "13a19a30f40767838720b6bc20dc0f96" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7bd15ce0207d5c8f8654c23540ed19a1", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -862.0, + "y": 690.0, + "width": 145.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "99bff8ef88086a87966b6bbc613f2077" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "1e89cfabb97f2e83b7216bc1a03514f7" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7be9283612f54a3bbc99c35b6b2971ca", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "7dfb5abb0d6f4715a57257a1139c3059", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "e1b12c8c0685d48fb559e1038df5f742" + }, + { + "m_Id": "aa5a2f964cf25980ab0164038acea9aa" + }, + { + "m_Id": "b9ff8d51f0055e8d92ba8e5fd06ee2f3" + }, + { + "m_Id": "501171e25405ea8aa7a0d5b5f3713087" + }, + { + "m_Id": "945a7e2b6d504c868770a8379a255466" + }, + { + "m_Id": "ccb32e665a00c889b12294ef9f3e966e" + }, + { + "m_Id": "693203d698e0f88aaedc60507b42f88a" + }, + { + "m_Id": "a399c12028963188b1be13467fbed8d0" + }, + { + "m_Id": "6ff86797a9ac10818236680358bf476b" + }, + { + "m_Id": "8d41ad9c690c7a839eb636901e8f379d" + }, + { + "m_Id": "16beddedea97758c93c96bdb9ea2b322" + }, + { + "m_Id": "402d57acf7a6e28aa047a74f99430ce8" + }, + { + "m_Id": "0e0649de113e1f8cbfc23094ce76578d" + }, + { + "m_Id": "f43dec3c47e914849cce041dedd60fa3" + }, + { + "m_Id": "4f9b5c65f95b4687931d9d1bbcac0a91" + }, + { + "m_Id": "368d458a8280cf8c9e2680f0bcd30923" + }, + { + "m_Id": "1e89cfabb97f2e83b7216bc1a03514f7" + }, + { + "m_Id": "13a19a30f40767838720b6bc20dc0f96" + }, + { + "m_Id": "62ee46de6bfcd384834d04eba69ebb01" + }, + { + "m_Id": "26a7729007a6a788ae282ac72a384829" + }, + { + "m_Id": "57fa31585b35f18a8365063c5c300c72" + }, + { + "m_Id": "016ae939cdbc7c83815f88544f15702b" + }, + { + "m_Id": "29421cacf85da28f9121a0c263897c02" + }, + { + "m_Id": "caaf1de3a5900386b892886989180df8" + }, + { + "m_Id": "4d0090480b24b18890a27d0ecb10da8a" + }, + { + "m_Id": "7e6ad3903703a982bbac21a66daf72fe" + }, + { + "m_Id": "caa41548ce1c7e8d84c2960d2167274f" + } + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "7e6ad3903703a982bbac21a66daf72fe", + "m_Guid": { + "m_GuidSerialized": "ac9e053c-4cda-42a4-be2e-b1261e151565" + }, + "m_Name": "Base UV Mask", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_BBB2EF8D", + "m_OverrideReferenceName": "_uvBaseMask", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7e79c240b1792d8d98427f672b23b3f5", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.5, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "7e989903b67f2d88805cd5533cbf1b58", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7ecf4ec3d845eb89a2ea57b521ca8faa", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1001.0, + "y": 1410.0, + "width": 204.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "f3139b7f81c5638f9f3ef81eefb4f54b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "4f9b5c65f95b4687931d9d1bbcac0a91" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "820ef484d4e55783849213f3ffc6550c", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -930.0, + "y": 1281.0, + "width": 122.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "09de172d67c56088ab0c01bd8c7eac3f" + }, + { + "m_Id": "cd4fb894fda2e280bf7c73c2dba7dd40" + }, + { + "m_Id": "b392c30da2ee518f9e37b248e67f6672" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a16f16f03dab80a00a66849fc57418", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a63ca605871b8a8395c2d33321eabc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "86a7033bf32fde89a32671894f3faa27", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "87673e95b900d48ea8dc8ac9b0fa4d79", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "89151f03b6d27f8fb805c0c5174fc11a", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "894d88be8fad178996f5b2df9cfbbd68", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "8ad836f22bf91488a01151f840cf8766", + "m_Group": { + "m_Id": "b215ccd2ae604201a7d3f9422899346a" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -865.9998779296875, + "y": 323.0, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "59ed7da959ff1f84a470af10c5ac986a" + }, + { + "m_Id": "176531b3e19b8686b38e0c9259252aee" + }, + { + "m_Id": "9e270c52f272de868f33637366dd69e2" + }, + { + "m_Id": "d5e1d4528a311e849b59ac342f46dad1" + }, + { + "m_Id": "6eb14bdea8824c898b37443575572deb" + }, + { + "m_Id": "c2eb32947e67fa8ea0a3f06d43de5ef8" + }, + { + "m_Id": "7b122e5ad389c78e955d1a8d600c0649" + }, + { + "m_Id": "7e989903b67f2d88805cd5533cbf1b58" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 1, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8b24fb7984fd1e86b1571bb5bf90faa1", + "m_Group": { + "m_Id": "7392440cfab541e7a65b0c6812d3af91" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1235.9998779296875, + "y": -86.00003814697266, + "width": 161.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "2f2dda15cd64628695a5e429bd783b18" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "16beddedea97758c93c96bdb9ea2b322" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "8c517d90181248a497e0d57afb467b61", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "73c8775d0ec54303a5fa1cccc08bfa5c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "8d41ad9c690c7a839eb636901e8f379d", + "m_Guid": { + "m_GuidSerialized": "f7dfeb70-3e1c-4c38-9793-23ec535a1aa6" + }, + "m_Name": "AO Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_FBDC704E", + "m_OverrideReferenceName": "_AORemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "8de4f0e928a2d8849f1ca35633e0086e", + "m_Id": 0, + "m_DisplayName": "Base UV Tiling and Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8e8261c84f7d4846948fd362ab6cf14e", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Prepass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPrepass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "8fb00bfa3a254d6abeaf33e8808c3d8d", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "90853359b4e7bb8b9312b5f784d3b4be", + "m_Group": { + "m_Id": "b215ccd2ae604201a7d3f9422899346a" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1073.9998779296875, + "y": 315.9999084472656, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "236f73c9e460cb8394c6c7f693633923" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "57fa31585b35f18a8365063c5c300c72" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "91848e9583b5198296103f526e3be1e6", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "9198df248acd2b88818c20a5f911228e", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "91c2e94338144635a9e93099de94c296", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Shadow", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdShadow", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "91e02132de64ba8188337710a7ffc3e4", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "92504468ba4f378f834ad4b5f33fbaf9", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "9251a286f0e1c983a73eb912051c4291", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -589.0, + "y": 1368.0, + "width": 122.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "354c780e278883888de190759d0b677c" + }, + { + "m_Id": "86a63ca605871b8a8395c2d33321eabc" + }, + { + "m_Id": "c2706657c5ed9a858ca5a80941ca7c37" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1Node", + "m_ObjectId": "942443896e5a4e869e22e65b4442e715", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Float", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1032.0, + "y": 1123.0, + "width": 121.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "7e79c240b1792d8d98427f672b23b3f5" + }, + { + "m_Id": "dd00c8625ca6a1859ea38f4218e11a94" + } + ], + "synonyms": [ + "Vector 1" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": 0.0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "945a7e2b6d504c868770a8379a255466", + "m_Guid": { + "m_GuidSerialized": "2fbe22fb-2883-4e21-974b-0e58cf6fa5a8" + }, + "m_Name": "Alpha Cutoff Postpass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4B895F81", + "m_OverrideReferenceName": "_AlphaCutoffPostpass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.20000000298023225, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "974ce3495784e68697652bbdedaa515f", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1048.0, + "y": 796.0, + "width": 123.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "5f0d566e8086ca83a6e70f4e309c5c47" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "368d458a8280cf8c9e2680f0bcd30923" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1Node", + "m_ObjectId": "990ac068686b8584a9f0e498315c4c6b", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Float", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1045.0, + "y": 874.0, + "width": 121.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "ca30dc0401d6888ab13bb26db893a6f4" + }, + { + "m_Id": "87673e95b900d48ea8dc8ac9b0fa4d79" + } + ], + "synonyms": [ + "Vector 1" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": 0.0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9975e15403726885a0712f48181ed31a", + "m_Id": 0, + "m_DisplayName": "Transmission Rim Intensity", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "99a201ca0a64c082ad04b50f33589bab", + "m_Group": { + "m_Id": "b215ccd2ae604201a7d3f9422899346a" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -834.9998168945313, + "y": 509.9999694824219, + "width": 157.99998474121095, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "236d9b8d136c718d9974f605510b28b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "016ae939cdbc7c83815f88544f15702b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "99bff8ef88086a87966b6bbc613f2077", + "m_Id": 0, + "m_DisplayName": "Specular Multiplier", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "9a38dca5debe4f9c8ced0600480adacf", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": true, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 0, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9a474beedf33ee8ba0abd17e767ba739", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -96.0, + "y": 175.0, + "width": 157.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "565b18ce35d4f88c8fddae94b4729467" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "501171e25405ea8aa7a0d5b5f3713087" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "9b824dc1cd2c7088b802e3b5c40e21fb", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -765.0, + "y": 1321.0, + "width": 122.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "c02b546bf752f08ca1a3b01417b0fd97" + }, + { + "m_Id": "3f79ba7357137587a04e6051a0d313b4" + }, + { + "m_Id": "ef8bf4d259d4fb8ba52d5e34bb08edf5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "9cdb0052e240a38a8da7f0afdfd664c0", + "m_Group": { + "m_Id": "7392440cfab541e7a65b0c6812d3af91" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -823.9998168945313, + "y": 6.999929428100586, + "width": 181.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "d6f36d8cdd25bc84a3ec8866932cc344" + }, + { + "m_Id": "eea7b5afae50d789a7c8e2c7bb397a73" + }, + { + "m_Id": "fcd1884afc9fd087bc0a999b1f291827" + }, + { + "m_Id": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9e270c52f272de868f33637366dd69e2", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9e63c093ee678a8a8ede962386cb5460", + "m_Id": 0, + "m_DisplayName": "Specular Shift", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "9fd64667558e46d4a22f769a257d26fa", + "m_Id": 0, + "m_DisplayName": "Specular Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SpecularTint", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a1ce52e42287c98ba224acde9ae460ba", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "a23e238449fe1f8083c8cb7190bf3f13", + "m_Group": { + "m_Id": "5b6fc818d53f45deac5294b4f97b94db" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -590.9998168945313, + "y": -791.0, + "width": 116.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "450e3ecb6d6aa089a80825c4acc0c74c" + }, + { + "m_Id": "a2c8b51fa5091083805db5d1505d0c0c" + }, + { + "m_Id": "f9f54bc74c5eaf89888138923426ed14" + }, + { + "m_Id": "2371eb645bdf0789be466e3f4c8c8602" + }, + { + "m_Id": "4a2e31e5bdadeb8ba3525a11caade5fa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a2c8b51fa5091083805db5d1505d0c0c", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a2f03dba7cc93881bd7edfc48fca1c41", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "a399c12028963188b1be13467fbed8d0", + "m_Guid": { + "m_GuidSerialized": "9e22e251-3c42-49bc-9403-4e38bab24977" + }, + "m_Name": "Ambient Occlusion use lightmap UVs", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Boolean_F987B642", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a4d19347cca2d08dbd28cee652fa9662", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a641acc269d84aec97c9dbb3659e7e2c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7a1d915b646941fe95d6dd80037a7cb3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "a684ed327e7dac8092910d8f98cb958a", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a6d2f8d93c070f8ea36456eeba1dbe79", + "m_Id": -1533382448, + "m_DisplayName": "uvMask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvMask", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a86b2ee4ca97bb89bf847ac9a6703c5f", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "aa5a2f964cf25980ab0164038acea9aa", + "m_Guid": { + "m_GuidSerialized": "cdb23723-972f-4d49-9f82-4ac5e80e2d1d" + }, + "m_Name": "Diffuse Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Color_22DC9E2D", + "m_OverrideReferenceName": "_BaseColor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.6430000066757202, + "g": 0.4775882661342621, + "b": 0.3594370186328888, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "aa8c1dcd926d098f8ae2e03e7c89e48e", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "abb8d5e4b66a548aa3abf6a3783a89f3", + "m_Id": 0, + "m_DisplayName": "Secondary Specular Multiplier", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ac46c53eeba00d80a93da7802711dfe4", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "ae77e3144b96ce8fb1897a571d778e92", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion use lightmap UVs", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "aea42b6e88350189aaf5b1883905f4e5", + "m_Group": { + "m_Id": "5b6fc818d53f45deac5294b4f97b94db" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -945.9998168945313, + "y": -830.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "e11d69393def7780bbc8627b1ef61969" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "aa5a2f964cf25980ab0164038acea9aa" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "af57bbde7fe52b879f5b9a6ef6ab3d62", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b091997e5dd0358f90a108ac01e23b34", + "m_Id": -1319696916, + "m_DisplayName": "uvST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvST", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b14d565913f44478a665df457410b638", + "m_Id": 0, + "m_DisplayName": "Specular Shift", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SpecularShift", + "m_StageCapability": 2, + "m_Value": 0.20000000298023225, + "m_DefaultValue": 0.10000000149011612, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b1dbc96cf13ee28d9d722f739bd0e349", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -98.0, + "y": 326.0, + "width": 162.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "2e197e754975c58a94b53041782ead99" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "ccb32e665a00c889b12294ef9f3e966e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "b215ccd2ae604201a7d3f9422899346a", + "m_Title": "Normal", + "m_Position": { + "x": -1337.9998779296875, + "y": 238.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "b27abc57c8e84886aaee2448a139a9e9", + "m_Group": { + "m_Id": "7392440cfab541e7a65b0c6812d3af91" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -963.9999389648438, + "y": 109.99999237060547, + "width": 124.99999237060547, + "height": 100.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "b6d251f6dfaf348591c32b52051ce15b" + }, + { + "m_Id": "1aa04e00d5958c8e838a82ba3f1072fd" + }, + { + "m_Id": "6a5b1ea4a775ca87a7613bd5f29245ce" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b31ebbf23ef3078bab248c1ccc3d90a6", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b392c30da2ee518f9e37b248e67f6672", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "b41d947f3439b385af4b28c78a8273d6", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1242.0, + "y": 1274.0, + "width": 198.0, + "height": 181.0 + } + }, + "m_Slots": [ + { + "m_Id": "bd5750773a87e18cb74bbb99402aa22c" + }, + { + "m_Id": "f2a852dd8efe0787843b125f8785b8eb" + }, + { + "m_Id": "bc90e8e5ced965859c0ea26885d0b60f" + }, + { + "m_Id": "7796b2ec1bc478829b13398bab417829" + }, + { + "m_Id": "51f89bbfeb89fd8e8abd8c2da08380b6" + }, + { + "m_Id": "b7dec426f089a780bc0521baaf578975" + }, + { + "m_Id": "91848e9583b5198296103f526e3be1e6" + }, + { + "m_Id": "348fecfb4fb3a38db2bd198743f33083" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b57e501619804b89b55a01c6914f1061", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b6d251f6dfaf348591c32b52051ce15b", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b7dec426f089a780bc0521baaf578975", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b7fe07e54d8f4087b9741af36701889c", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b80c882de846c681b366247d7775cd9a", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b8ee043449f1fa8894ec494307b662e9", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "b9ff8d51f0055e8d92ba8e5fd06ee2f3", + "m_Guid": { + "m_GuidSerialized": "1c11679b-cbb6-4fa9-8f37-996c04d07707" + }, + "m_Name": "Alpha Cutoff", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_15C6E93B", + "m_OverrideReferenceName": "AlphaCutoff", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ba041d2509c0348fb84fa5316721dc66", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bb9ae3f0ca69bc89bcd4618fe24578fe", + "m_Id": 0, + "m_DisplayName": "Base UV Mask", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "bbe6de55f42a49469c5b80c56949e633", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bbf5010fd4e4568089019b3c049a08c0", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bc90e8e5ced965859c0ea26885d0b60f", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bd5750773a87e18cb74bbb99402aa22c", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bd723a746fd3048dbaed084a11e00d22", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bdb36d10e8f5d9868a902112523885d3", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "be2ab041555e4284b3ae78102b12445e", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c02b546bf752f08ca1a3b01417b0fd97", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c1d28320e6e1e186a6f185a0d00723ea", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c2706657c5ed9a858ca5a80941ca7c37", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "c2eb32947e67fa8ea0a3f06d43de5ef8", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c6251dcf7d883e8493c3ba4142a40eae", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "c66bc8524a1642acb592709f1c81f2eb", + "m_MaterialNeedsUpdateHash": 0, + "m_SurfaceType": 0, + "m_RenderingPass": 1, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 0, + "m_DOTSInstancing": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c7aaac29b313fb8ebbfcb4055bcbb86d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "c83d18f4ced84cf5ad6869c3169b738e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.SecondarySmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "176acbaef26e4893bd80508e713ab748" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.SecondarySmoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "c987092b64d7478f9742535dccc63e2b", + "m_Group": { + "m_Id": "0f4ae77856644b87978140db274d21d6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -582.0, + "y": 1814.0, + "width": 122.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "2abeaa36c9f9818587c0c6d6c46dc78f" + }, + { + "m_Id": "0e4d6f55bdae588f8addbe751d5fcff8" + }, + { + "m_Id": "0e1827168753d68fb19c65eef73a7c45" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ca30dc0401d6888ab13bb26db893a6f4", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.30000001192092898, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "caa41548ce1c7e8d84c2960d2167274f", + "m_Guid": { + "m_GuidSerialized": "8cdbfb43-feb7-4816-9cea-ca9952679ecb" + }, + "m_Name": "Base UV Tiling and Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_84AAB3AE", + "m_OverrideReferenceName": "_uvBaseST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "caaf1de3a5900386b892886989180df8", + "m_Guid": { + "m_GuidSerialized": "a186db1e-d420-4f52-83db-355818bb464f" + }, + "m_Name": "Transmission Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Color_6FC6C3A4", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.30000001192092898, + "g": 0.19499999284744264, + "b": 0.09000000357627869, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "ccb32e665a00c889b12294ef9f3e966e", + "m_Guid": { + "m_GuidSerialized": "08ee1c25-529f-4fca-8392-271b44871553" + }, + "m_Name": "Alpha Cutoff Shadows", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_CAFF147E", + "m_OverrideReferenceName": "_AlphaCutoffShadows", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cd4fb894fda2e280bf7c73c2dba7dd40", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": -0.5, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "cdc63087ae339f8b99568d20bf75b4ec", + "m_Id": 0, + "m_DisplayName": "Specular Shift Texture (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "cdeaafac0a6bf883b715ceedbaa87121", + "m_Group": { + "m_Id": "7392440cfab541e7a65b0c6812d3af91" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -606.9998168945313, + "y": 100.99993896484375, + "width": 124.99999237060547, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "d023da33043f1f88ad97e7a2b3ced8fd" + }, + { + "m_Id": "e85ac5d550f471889cc0e09123ab4dbb" + }, + { + "m_Id": "ba041d2509c0348fb84fa5316721dc66" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ce1c65ecd0d8c485bad482d92cd4207f", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1Node", + "m_ObjectId": "cf4759c0abed918d839e2e288300aeb0", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Float", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1044.0, + "y": 715.0, + "width": 121.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "efe69712f304388b84a939258adab91a" + }, + { + "m_Id": "144c10eac7ad708f8c01e281f526a3c0" + } + ], + "synonyms": [ + "Vector 1" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": 0.0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d023da33043f1f88ad97e7a2b3ced8fd", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d4834395e858ef8aa81f53d5ccdd7ce7", + "m_Group": { + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1989.000244140625, + "y": -660.0, + "width": 113.0001220703125, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "65cb1c5a02e5d183bfc5ceb7aeab47b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "6ff86797a9ac10818236680358bf476b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d533f6de70a447c7acf757da6e848a1a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "bbe6de55f42a49469c5b80c56949e633" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d5e1d4528a311e849b59ac342f46dad1", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d604aeede7be8c81a89f3f9f7b316785", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "d6204936eb0c778ba79957469938ffce", + "m_Group": { + "m_Id": "2bec0390f4e34df7aeed1e739b91b136" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2426.000244140625, + "y": -646.0, + "width": 172.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "9198df248acd2b88818c20a5f911228e" + }, + { + "m_Id": "5c7f2dba5a3378818055e511404568fe" + }, + { + "m_Id": "dd24ba99be67fd8fb31bd72b0321c4fc" + }, + { + "m_Id": "05327e12b59bd185886f0d655de86628" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d6f36d8cdd25bc84a3ec8866932cc344", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d74b599d4b91928c975ba4419d541d44", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairData", + "m_ObjectId": "d8ca6bf110ae49cbb504f21cf316a8a8", + "m_MaterialType": 0, + "m_ScatteringMode": 0, + "m_UseLightFacingNormal": false, + "m_UseRoughenedAzimuthalScattering": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "daed7f18b1a94d3bae3f3c66d8f047ee", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "15596cc2593d43d3bc7dedfad1ab6ba1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc71dafd015c0b8fbd4cf8eda6b04650", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -101.0, + "y": 251.0, + "width": 163.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "3e64307feed15f8cad4236a057acf4c8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "945a7e2b6d504c868770a8379a255466" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc9305a3fb26de8581d475dd3a59fbe8", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1452.0, + "y": 1271.0, + "width": 181.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "cdc63087ae339f8b99568d20bf75b4ec" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f43dec3c47e914849cce041dedd60fa3" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dcb284e02529428e984891e5fb1ad226", + "m_Group": { + "m_Id": "7392440cfab541e7a65b0c6812d3af91" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1191.9998779296875, + "y": 143.0, + "width": 137.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "3d239afea657458f89d6c65107f2aa06" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0e0649de113e1f8cbfc23094ce76578d" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "dd00c8625ca6a1859ea38f4218e11a94", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "dd1870936d90fb81bc8ec730e1dcefdc", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "dd24ba99be67fd8fb31bd72b0321c4fc", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "dfcf6e99fba047a6a6d093baff98453b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BentNormal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "42e3d490fe6843628ad67d352d7b6d9c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BentNormal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e11d69393def7780bbc8627b1ef61969", + "m_Id": 0, + "m_DisplayName": "Diffuse Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "e11f8d5b1e957585b6497bc5a53f7dc0", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -849.0, + "y": 1031.0, + "width": 122.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "36fd1c395265f284b4a33852caea20aa" + }, + { + "m_Id": "568a2358a7136089af576545a75f65e7" + }, + { + "m_Id": "a2f03dba7cc93881bd7edfc48fca1c41" + }, + { + "m_Id": "1ddf0b15faacd1838bfdd5378bc84909" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "e1b12c8c0685d48fb559e1038df5f742", + "m_Guid": { + "m_GuidSerialized": "6343a65d-92e9-4ea6-a610-b17eff7c3712" + }, + "m_Name": "Diffuse Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_1DA0BB85", + "m_OverrideReferenceName": "_BaseColorMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "e3b40d8244184cb1b1412609863c5ddb", + "m_Id": 0, + "m_DisplayName": "Transmittance", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Transmittance", + "m_StageCapability": 2, + "m_Value": { + "x": 0.30000001192092898, + "y": 0.19500000774860383, + "z": 0.09000000357627869 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalStrengthNode", + "m_ObjectId": "e7fea26afb72bc83a7767f135cc064aa", + "m_Group": { + "m_Id": "b215ccd2ae604201a7d3f9422899346a" + }, + "m_Name": "Normal Strength", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -636.0, + "y": 392.99993896484377, + "width": 161.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "14b012f13c19a78cadd30a711522abc0" + }, + { + "m_Id": "f93fdf97edd1dd85bfc3ba4170b91351" + }, + { + "m_Id": "ee2289d2e61e8e8ebd8ffc90d07ba380" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "e85ac5d550f471889cc0e09123ab4dbb", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.800000011920929, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e9941f225ef7452dac56988918325aae", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Postpass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPostpass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e9d9af9c13491486b6a00c4fbd1c39b9", + "m_Id": 0, + "m_DisplayName": "Smoothness Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "eb3befb2afb84929b0a8254be809b6f9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPostpass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e9941f225ef7452dac56988918325aae" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPostpass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "eb64f51ceae0e985b9a2d518888e7e38", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "eb8c3b33b47915829a3fa0f604bc056c", + "m_Group": { + "m_Id": "77583f03069d4b168f9c2606940afb4d" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -837.0, + "y": 778.0, + "width": 122.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "b80c882de846c681b366247d7775cd9a" + }, + { + "m_Id": "b7fe07e54d8f4087b9741af36701889c" + }, + { + "m_Id": "b31ebbf23ef3078bab248c1ccc3d90a6" + }, + { + "m_Id": "d74b599d4b91928c975ba4419d541d44" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ed9c054016be518faf9cc2372fbd6915", + "m_Id": 1, + "m_DisplayName": "Output 1", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Output1", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "ee2289d2e61e8e8ebd8ffc90d07ba380", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "eea7b5afae50d789a7c8e2c7bb397a73", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ef8bf4d259d4fb8ba52d5e34bb08edf5", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "efe69712f304388b84a939258adab91a", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "f05a5e9696214996ad74d2f5c804a68d", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f2a852dd8efe0787843b125f8785b8eb", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f3139b7f81c5638f9f3ef81eefb4f54b", + "m_Id": 0, + "m_DisplayName": "Specular Shift Texture Intensity", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "f43dec3c47e914849cce041dedd60fa3", + "m_Guid": { + "m_GuidSerialized": "91b97227-7399-4cd6-9d23-d7f3396a4d2d" + }, + "m_Name": "Specular Shift Texture (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_6C0DA6CC", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f44aa1b87240458e9293955c698cd5f0", + "m_Id": 0, + "m_DisplayName": "Secondary Specular Shift", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SecondarySpecularShift", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": -0.10000000149011612, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f534ee89ba597889981c1cd0f89566ad", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "f5e0b2e6f4b8410baa2658c18cbdd098", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": false, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": false, + "m_BackThenFrontRendering": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f6270313d819ae8eb09b23f362e7578e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "f6bacfb361c37e818202f4f921bf58ed", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f6fe779f1a8d0f8599e6605b9d793fdf", + "m_Id": 0, + "m_DisplayName": "AO Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f93fdf97edd1dd85bfc3ba4170b91351", + "m_Id": 1, + "m_DisplayName": "Strength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Strength", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9f54bc74c5eaf89888138923426ed14", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "fcd1884afc9fd087bc0a999b1f291827", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "fd310dc054986787aff026ff45009d36", + "m_Group": { + "m_Id": "0f4ae77856644b87978140db274d21d6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -776.0, + "y": 1925.0, + "width": 145.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "0865b2013ef4028d80ad57e4f818a36e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "caaf1de3a5900386b892886989180df8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "ffbb6c85dbb24e61841222f70b31eda4", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "66162c4d0a284657b084463a20fdfa9c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph new file mode 100644 index 00000000000..7ec298c0c65 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph @@ -0,0 +1,6428 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "ba4b5529a59a475aa65637b55f84d1ed", + "m_Properties": [ + { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + }, + { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + }, + { + "m_Id": "427966ec1fded689943d180f391e68c5" + }, + { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + }, + { + "m_Id": "d77184bb68602a87a21066eb88527731" + }, + { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + }, + { + "m_Id": "179f8f51376c088aaf94836698ac8220" + }, + { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + }, + { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + }, + { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + }, + { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + }, + { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + }, + { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + }, + { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + }, + { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + }, + { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + }, + { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + }, + { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + }, + { + "m_Id": "226d0088ad363282a5742f217833b48e" + }, + { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f55453ccdc2c4306a5f9d39ff0237186" + } + ], + "m_Nodes": [ + { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" + }, + { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + { + "m_Id": "33d526f7424ba48298f8f47efe601b4b" + }, + { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + { + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" + }, + { + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" + }, + { + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" + }, + { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + { + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" + }, + { + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" + }, + { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + { + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" + }, + { + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" + }, + { + "m_Id": "6628192f4725228184a28da67814b191" + }, + { + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" + }, + { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + { + "m_Id": "99a201ca0a64c082ad04b50f33589bab" + }, + { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + { + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" + }, + { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + { + "m_Id": "7b26f104187a8987a649a27bf1682e3e" + }, + { + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" + }, + { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + { + "m_Id": "533b9b9d2ff0a0898705d5962522997f" + }, + { + "m_Id": "dcb284e02529428e984891e5fb1ad226" + }, + { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + { + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" + }, + { + "m_Id": "43a41f7a42a9b487af906c32995abadc" + }, + { + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" + }, + { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + { + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" + }, + { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + { + "m_Id": "343bdea30d074ae8ada2b5753fb67baf" + }, + { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + { + "m_Id": "4d889de587fa45e9a282082e13cc8970" + }, + { + "m_Id": "2c16e07788c1416d80f89c2611f8b98a" + }, + { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + { + "m_Id": "f9469208c3a047c8ba590663d472be9d" + }, + { + "m_Id": "9dc2bfa03db44301ad94343ad1abd06e" + }, + { + "m_Id": "07c67cc90490470fb9a60030a0d5d717" + }, + { + "m_Id": "fffb46fc91204972998523af40633b0f" + }, + { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + { + "m_Id": "edfdef5f3ad944ae99de6eb746229ae6" + }, + { + "m_Id": "48e77cac8746488daad50e482d2c3de9" + } + ], + "m_GroupDatas": [ + { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "33d526f7424ba48298f8f47efe601b4b" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "43a41f7a42a9b487af906c32995abadc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1533382448 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "533b9b9d2ff0a0898705d5962522997f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1319696916 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7b26f104187a8987a649a27bf1682e3e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "99a201ca0a64c082ad04b50f33589bab" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dcb284e02529428e984891e5fb1ad226" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "edfdef5f3ad944ae99de6eb746229ae6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 110.0, + "y": -169.0 + }, + "m_Blocks": [ + { + "m_Id": "343bdea30d074ae8ada2b5753fb67baf" + }, + { + "m_Id": "f9469208c3a047c8ba590663d472be9d" + }, + { + "m_Id": "9dc2bfa03db44301ad94343ad1abd06e" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 110.0, + "y": 31.0 + }, + "m_Blocks": [ + { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + { + "m_Id": "4d889de587fa45e9a282082e13cc8970" + }, + { + "m_Id": "2c16e07788c1416d80f89c2611f8b98a" + }, + { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + { + "m_Id": "07c67cc90490470fb9a60030a0d5d717" + }, + { + "m_Id": "fffb46fc91204972998523af40633b0f" + }, + { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + { + "m_Id": "48e77cac8746488daad50e482d2c3de9" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "HDRPSamples", + "m_GraphPrecision": 0, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "8f325a30dd2a4515af1f028912b6f70e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "005fd5aaba054304adbf564a8279747e", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "0280396e0fca118e8bd811b51a52d939", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "0308ee630bd24310b1f66165863140fd", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "05327e12b59bd185886f0d655de86628", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "07c67cc90490470fb9a60030a0d5d717", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 128.99998474121095, + "y": 599.0000610351563, + "width": 199.99998474121095, + "height": 41.0 + } + }, + "m_Slots": [ + { + "m_Id": "8d4c7998d3ea469188313f32fd5bcd33" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "0858398b0628498aa76b94db0641ebd0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SGR_uvCombine", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2058.000244140625, + "y": 149.00003051757813, + "width": 189.0001220703125, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "a6d2f8d93c070f8ea36456eeba1dbe79" + }, + { + "m_Id": "b091997e5dd0358f90a108ac01e23b34" + }, + { + "m_Id": "ed9c054016be518faf9cc2372fbd6915" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": 11400000,\n \"guid\": \"e485c02b07de92f4299e12a405a846f1\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "7eaf38f1-8035-488d-80b2-5a35598d3bac", + "2b164c69-e541-49c1-ab61-7f7c65de9d44" + ], + "m_PropertyIds": [ + -1533382448, + -1319696916 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "090e2558a73d4577ad326b8c7c48b642", + "m_Id": 0, + "m_DisplayName": "Radial Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "RadialSmoothness", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "09de172d67c56088ab0c01bd8c7eac3f", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "0ac5bf5847aabd8cb2d384d6666fe60b", + "m_Guid": { + "m_GuidSerialized": "4005f9a0-1e7b-4422-9591-2d7900dc14a5" + }, + "m_Name": "Smoothness Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_A659E432", + "m_OverrideReferenceName": "_SmoothnessRemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "0dbc29ef6ffa7d8cb6ab2776226e7718", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "1256f23312cc46b59365214f65948a61", + "m_Title": "Ambient Occlusion", + "m_Position": { + "x": -1242.000244140625, + "y": -347.0000305175781 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1425366fc04241fb9f3b78af2049ee13", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "14b012f13c19a78cadd30a711522abc0", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "14db0ed0236c41738ba41db83871b1e8", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Prepass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPrepass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "14ed3d9577a24d448cf12554150ecccb", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPostpass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "519b5dc3ba5e47139dc635b812781052" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPostpass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "15f1cda72ce66782bb5877573ceab864", + "m_Guid": { + "m_GuidSerialized": "f713fd50-191c-4103-85a2-925a51d5dd5b" + }, + "m_Name": "Normal Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_272FF350", + "m_OverrideReferenceName": "_NormalMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "175f0193daaf4506ae7a09423b09b819", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "0308ee630bd24310b1f66165863140fd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "176531b3e19b8686b38e0c9259252aee", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "179f8f51376c088aaf94836698ac8220", + "m_Guid": { + "m_GuidSerialized": "d5937b9c-e726-47e2-9096-c64bd42839d2" + }, + "m_Name": "Ambient Occlusion Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_E48D0DF2", + "m_OverrideReferenceName": "_MaskMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "1960479b41340083b65285a79683a509", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1aa04e00d5958c8e838a82ba3f1072fd", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "1c9bb297962f0c82a0d1a739cab371e6", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1025.0, + "y": 64.00000762939453, + "width": 161.99993896484376, + "height": 33.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "e9d9af9c13491486b6a00c4fbd1c39b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1f7eca786bed4788ac8341455af633d5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ab0dfa88aaaf47708507acf54125f8b3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "226d0088ad363282a5742f217833b48e", + "m_Guid": { + "m_GuidSerialized": "8cdbfb43-feb7-4816-9cea-ca9952679ecb" + }, + "m_Name": "Base UV Tiling and Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_84AAB3AE", + "m_OverrideReferenceName": "_uvBaseST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "236d9b8d136c718d9974f605510b28b6", + "m_Id": 0, + "m_DisplayName": "Normal Map Strength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "236f73c9e460cb8394c6c7f693633923", + "m_Id": 0, + "m_DisplayName": "Normal Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2371eb645bdf0789be466e3f4c8c8602", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "240dbbe9e073ba8fbbc7866bfe19006f", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "2620a8e4de7c188e9a1a352425899905", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "2b67d3cfa8ede686a5a5891675840aca", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1165.9998779296875, + "y": -442.0000305175781, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "2620a8e4de7c188e9a1a352425899905" + }, + { + "m_Id": "eb64f51ceae0e985b9a2d518888e7e38" + }, + { + "m_Id": "bdb36d10e8f5d9868a902112523885d3" + }, + { + "m_Id": "a4d19347cca2d08dbd28cee652fa9662" + }, + { + "m_Id": "3dd1686839cd4c8ea23a9e210822ed45" + }, + { + "m_Id": "b57e501619804b89b55a01c6914f1061" + }, + { + "m_Id": "7911580134b27285aea5011e176efc55" + }, + { + "m_Id": "92504468ba4f378f834ad4b5f33fbaf9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "2b9e6e492bd61c8a85beb3c304421742", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2c16e07788c1416d80f89c2611f8b98a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.HairStrandDirection", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "af12385c82644c1bb54ee97c98449804" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.HairStrandDirection" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2dd33c5afb374d9aa3f15b58321e0f2f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPrepass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "14db0ed0236c41738ba41db83871b1e8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPrepass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2e197e754975c58a94b53041782ead99", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Shadows", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "2ea9c83800e54883a65a85d0be4f537f", + "m_Guid": { + "m_GuidSerialized": "e4dc662e-3747-4770-96eb-43812b6540e3" + }, + "m_Name": "Smoothness Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4F7BB2EA", + "m_OverrideReferenceName": "_SmoothnessRemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "2f2dda15cd64628695a5e429bd783b18", + "m_Id": 0, + "m_DisplayName": "Smoothness Map (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "33d526f7424ba48298f8f47efe601b4b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -86.00001525878906, + "y": 365.0000305175781, + "width": 141.00001525878907, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "91e02132de64ba8188337710a7ffc3e4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "427966ec1fded689943d180f391e68c5" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "33ff9e47cf9b4883af237446e1274285", + "m_Title": "Diffuse", + "m_Position": { + "x": -1457.0001220703125, + "y": -703.0000610351563 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "340b1f3554a53881b136398deed4da52", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "343bdea30d074ae8ada2b5753fb67baf", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e45e0dd4a288445d990250bd6c1d46b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "348fecfb4fb3a38db2bd198743f33083", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "354c780e278883888de190759d0b677c", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "3789ef8d67264f3db1f22b522f1c36a5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cad70c769fa144abbc8aece598c97044" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "3956714c58cb9a88bf186adf5315d9e0", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "3b96fbbc5e6ed68198a59a2a3d43ab52", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1616.9998779296875, + "y": -390.0000305175781, + "width": 236.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "ae77e3144b96ce8fb1897a571d778e92" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "3c2bc1a9a5054043b94470701f8ac5e1", + "m_MaterialNeedsUpdateHash": 0, + "m_SurfaceType": 0, + "m_RenderingPass": 1, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 0, + "m_DOTSInstancing": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3d239afea657458f89d6c65107f2aa06", + "m_Id": 0, + "m_DisplayName": "Smoothness Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "3d29306586360f87bd4e7b9ae811bfb5", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3dd1686839cd4c8ea23a9e210822ed45", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3e64307feed15f8cad4236a057acf4c8", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Postpass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3f79ba7357137587a04e6051a0d313b4", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "427966ec1fded689943d180f391e68c5", + "m_Guid": { + "m_GuidSerialized": "1c11679b-cbb6-4fa9-8f37-996c04d07707" + }, + "m_Name": "Alpha Cutoff", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_15C6E93B", + "m_OverrideReferenceName": "AlphaCutoff", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "433ac40aaba40288a2951408c4d772ee", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "43a41f7a42a9b487af906c32995abadc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2240.000244140625, + "y": 173.00001525878907, + "width": 153.0, + "height": 34.00004577636719 + } + }, + "m_Slots": [ + { + "m_Id": "bb9ae3f0ca69bc89bcd4618fe24578fe" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "44eb2baae7244a869ce9cf82ea31a653", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "450e3ecb6d6aa089a80825c4acc0c74c", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "48e77cac8746488daad50e482d2c3de9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.RadialSmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "090e2558a73d4577ad326b8c7c48b642" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.RadialSmoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4a2e31e5bdadeb8ba3525a11caade5fa", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "4be44d4bc359298a9985c1d86006f8fb", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -651.9998168945313, + "y": -441.0000305175781, + "width": 181.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "86a16f16f03dab80a00a66849fc57418" + }, + { + "m_Id": "aa8c1dcd926d098f8ae2e03e7c89e48e" + }, + { + "m_Id": "3d29306586360f87bd4e7b9ae811bfb5" + }, + { + "m_Id": "ce1c65ecd0d8c485bad482d92cd4207f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "4d889de587fa45e9a282082e13cc8970", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BentNormal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "97f4eac589c948c6b38f803164d3bbd2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BentNormal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "50556458863843898802643405572325", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "519b5dc3ba5e47139dc635b812781052", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Postpass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPostpass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "51f89bbfeb89fd8e8abd8c2da08380b6", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "533b20e3fe8405898a55f0a048a3ddaf", + "m_Id": 0, + "m_DisplayName": "Diffuse Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "533b9b9d2ff0a0898705d5962522997f", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1589.9998779296875, + "y": -313.0000305175781, + "width": 198.0, + "height": 131.0 + } + }, + "m_Slots": [ + { + "m_Id": "240dbbe9e073ba8fbbc7866bfe19006f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 1 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "5403de39fff83a858f3897c561e7b8d8", + "m_Guid": { + "m_GuidSerialized": "d91fd1a5-e079-4844-b874-c9c0ca592f79" + }, + "m_Name": "Alpha Cutoff Prepass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_AD26FB16", + "m_OverrideReferenceName": "_AlphaCutoffPrepass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.8999999761581421, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "54c2c9fab03b8986a419a8f4d38cc9b4", + "m_Guid": { + "m_GuidSerialized": "08ee1c25-529f-4fca-8392-271b44871553" + }, + "m_Name": "Alpha Cutoff Shadows", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_CAFF147E", + "m_OverrideReferenceName": "_AlphaCutoffShadows", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "565b18ce35d4f88c8fddae94b4729467", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Prepass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5726522506e2465ba8fd69530096fb72", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "59ed7da959ff1f84a470af10c5ac986a", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5b490fbd5e29ed89aa6a4d83b25a2009", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1377.9998779296875, + "y": -463.00006103515627, + "width": 175.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "433ac40aaba40288a2951408c4d772ee" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "179f8f51376c088aaf94836698ac8220" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5c7f2dba5a3378818055e511404568fe", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5cf0167f642345bf87669ade69eb753f", + "m_Id": 0, + "m_DisplayName": "Primary Reflection Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "PrimaryReflectionSmoothness", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "5f38d464c32e2e82828769e0b7986031", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1021.9998168945313, + "y": -746.0, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "65c9308837466e8c95b0adac0199c4c1" + }, + { + "m_Id": "f534ee89ba597889981c1cd0f89566ad" + }, + { + "m_Id": "340b1f3554a53881b136398deed4da52" + }, + { + "m_Id": "6d83dd949117898385976df4af592436" + }, + { + "m_Id": "c1d28320e6e1e186a6f185a0d00723ea" + }, + { + "m_Id": "2b9e6e492bd61c8a85beb3c304421742" + }, + { + "m_Id": "86a7033bf32fde89a32671894f3faa27" + }, + { + "m_Id": "0dbc29ef6ffa7d8cb6ab2776226e7718" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "60b90383c40e4824b4bbcec1f9014ab6", + "m_Title": "Normal", + "m_Position": { + "x": -1093.000244140625, + "y": 241.99996948242188 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "647309fcbf93808f8e9587e1bb5d3017", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -784.9998779296875, + "y": -376.0000305175781, + "width": 124.99999237060547, + "height": 100.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "d604aeede7be8c81a89f3f9f7b316785" + }, + { + "m_Id": "c6251dcf7d883e8493c3ba4142a40eae" + }, + { + "m_Id": "44eb2baae7244a869ce9cf82ea31a653" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "65c9308837466e8c95b0adac0199c4c1", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "65cb1c5a02e5d183bfc5ceb7aeab47b9", + "m_Id": 0, + "m_DisplayName": "AO Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "6628192f4725228184a28da67814b191", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -870.0001220703125, + "y": -87.00003814697266, + "width": 157.0001220703125, + "height": 178.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "3956714c58cb9a88bf186adf5315d9e0" + }, + { + "m_Id": "50556458863843898802643405572325" + }, + { + "m_Id": "a1ce52e42287c98ba224acde9ae460ba" + }, + { + "m_Id": "be2ab041555e4284b3ae78102b12445e" + }, + { + "m_Id": "b8ee043449f1fa8894ec494307b662e9" + }, + { + "m_Id": "0280396e0fca118e8bd811b51a52d939" + }, + { + "m_Id": "dd1870936d90fb81bc8ec730e1dcefdc" + }, + { + "m_Id": "a684ed327e7dac8092910d8f98cb958a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "686bbf54cd40c1829f1e042219490c16", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -795.9998779296875, + "y": -796.0, + "width": 124.99999237060547, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "1960479b41340083b65285a79683a509" + }, + { + "m_Id": "c7aaac29b313fb8ebbfcb4055bcbb86d" + }, + { + "m_Id": "f6270313d819ae8eb09b23f362e7578e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "6a5b1ea4a775ca87a7613bd5f29245ce", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6d83dd949117898385976df4af592436", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6eb14bdea8824c898b37443575572deb", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7135e81ebc9cca808d6c1bf0f4757a19", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2298.000244140625, + "y": 215.0000457763672, + "width": 211.0, + "height": 33.999908447265628 + } + }, + "m_Slots": [ + { + "m_Id": "8de4f0e928a2d8849f1ca35633e0086e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "226d0088ad363282a5742f217833b48e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7796b2ec1bc478829b13398bab417829", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "77b24a17f4d9ce888d0d645c8a3a18e5", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1166.9998779296875, + "y": -746.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "533b20e3fe8405898a55f0a048a3ddaf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "78479c8d6abe4634abf777821e1eea54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.CuticleAngle", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ddc68b917a884852ade19f0e1a11f6a5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.CuticleAngle" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "78bc3b99a581dd88acad23f34e26f942", + "m_Guid": { + "m_GuidSerialized": "6343a65d-92e9-4ea6-a610-b17eff7c3712" + }, + "m_Name": "Diffuse Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_1DA0BB85", + "m_OverrideReferenceName": "_BaseColorMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7911580134b27285aea5011e176efc55", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7b122e5ad389c78e955d1a8d600c0649", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7b26f104187a8987a649a27bf1682e3e", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -920.9998168945313, + "y": -312.00006103515627, + "width": 91.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "f6fe779f1a8d0f8599e6605b9d793fdf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "7c176772d8494e69a1e6e71caf3824c8", + "m_Guid": { + "m_GuidSerialized": "6f1ce988-5e87-4df7-a6bd-ed36e081c857" + }, + "m_Name": "Cuticle Tilt", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Cuticle Tilt", + "m_DefaultReferenceName": "_Cuticle_Tilt", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.125, + "m_FloatType": 1, + "m_RangeValues": { + "x": -0.5, + "y": 0.5 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "7dff3059b4b242759d1c81ad9c86927f", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "7e989903b67f2d88805cd5533cbf1b58", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7ecf4ec3d845eb89a2ea57b521ca8faa", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1078.0, + "y": 800.0000610351563, + "width": 239.99993896484376, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "f3139b7f81c5638f9f3ef81eefb4f54b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "820ef484d4e55783849213f3ffc6550c", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -958.0000610351563, + "y": 661.0000610351563, + "width": 126.00006103515625, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "09de172d67c56088ab0c01bd8c7eac3f" + }, + { + "m_Id": "cd4fb894fda2e280bf7c73c2dba7dd40" + }, + { + "m_Id": "b392c30da2ee518f9e37b248e67f6672" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a16f16f03dab80a00a66849fc57418", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a63ca605871b8a8395c2d33321eabc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "86a7033bf32fde89a32671894f3faa27", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "87788c13afe3128a8737b5d4498527ab", + "m_Guid": { + "m_GuidSerialized": "33400aac-8162-4d1d-9d4b-243c04977272" + }, + "m_Name": "AO Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_164AD3BD", + "m_OverrideReferenceName": "_AORemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "87c6de5a78a54a79923f7129c2fc0f70", + "m_Title": "Cuticle Angle", + "m_Position": { + "x": -1580.0, + "y": 567.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "8ad836f22bf91488a01151f840cf8766", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -860.0000610351563, + "y": 307.99993896484377, + "width": 180.99993896484376, + "height": 179.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "59ed7da959ff1f84a470af10c5ac986a" + }, + { + "m_Id": "176531b3e19b8686b38e0c9259252aee" + }, + { + "m_Id": "9e270c52f272de868f33637366dd69e2" + }, + { + "m_Id": "d5e1d4528a311e849b59ac342f46dad1" + }, + { + "m_Id": "6eb14bdea8824c898b37443575572deb" + }, + { + "m_Id": "c2eb32947e67fa8ea0a3f06d43de5ef8" + }, + { + "m_Id": "7b122e5ad389c78e955d1a8d600c0649" + }, + { + "m_Id": "7e989903b67f2d88805cd5533cbf1b58" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 1, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8b24fb7984fd1e86b1571bb5bf90faa1", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1068.0001220703125, + "y": -89.00005340576172, + "width": 193.0, + "height": 34.00007247924805 + } + }, + "m_Slots": [ + { + "m_Id": "2f2dda15cd64628695a5e429bd783b18" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "8bd09d48b70f4915b6bec74d49bf6362", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": true, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 0, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "8d4c7998d3ea469188313f32fd5bcd33", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "8de4f0e928a2d8849f1ca35633e0086e", + "m_Id": 0, + "m_DisplayName": "Base UV Tiling and Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairSubTarget", + "m_ObjectId": "8e390779bd944f90817742d777ed7c63" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDTarget", + "m_ObjectId": "8f325a30dd2a4515af1f028912b6f70e", + "m_ActiveSubTarget": { + "m_Id": "8e390779bd944f90817742d777ed7c63" + }, + "m_Datas": [ + { + "m_Id": "ad2567a30e4541b8b5ef7d4714d5a0e9" + }, + { + "m_Id": "c6dad4c67be84c8180af0558b93ee6eb" + }, + { + "m_Id": "ce6a30e827984b21b01ef697317d0934" + }, + { + "m_Id": "d30f1aa1a02847c89af2bab89f780e13" + }, + { + "m_Id": "9a306ec58a5f4b1897e7d3ef28907dd8" + }, + { + "m_Id": "8bd09d48b70f4915b6bec74d49bf6362" + }, + { + "m_Id": "3c2bc1a9a5054043b94470701f8ac5e1" + } + ], + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "90853359b4e7bb8b9312b5f784d3b4be", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1068.0001220703125, + "y": 301.00006103515627, + "width": 147.0, + "height": 33.999908447265628 + } + }, + "m_Slots": [ + { + "m_Id": "236f73c9e460cb8394c6c7f693633923" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "91848e9583b5198296103f526e3be1e6", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "9198df248acd2b88818c20a5f911228e", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "91e02132de64ba8188337710a7ffc3e4", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "92504468ba4f378f834ad4b5f33fbaf9", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "9251a286f0e1c983a73eb912051c4291", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -580.0001220703125, + "y": 625.9999389648438, + "width": 125.9998779296875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "354c780e278883888de190759d0b677c" + }, + { + "m_Id": "86a63ca605871b8a8395c2d33321eabc" + }, + { + "m_Id": "c2706657c5ed9a858ca5a80941ca7c37" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "95b97349851241ec8d6bf8bccd0cdf41", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "97f4eac589c948c6b38f803164d3bbd2", + "m_Id": 0, + "m_DisplayName": "Bent Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BentNormal", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "99a201ca0a64c082ad04b50f33589bab", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -829.0001831054688, + "y": 494.9998779296875, + "width": 187.00018310546876, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "236d9b8d136c718d9974f605510b28b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "9a306ec58a5f4b1897e7d3ef28907dd8", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": false, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": false, + "m_BackThenFrontRendering": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9a474beedf33ee8ba0abd17e767ba739", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -131.00001525878907, + "y": 398.9999694824219, + "width": 186.00001525878907, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "565b18ce35d4f88c8fddae94b4729467" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "9a7263d78d61fc8099fd01358336b0af", + "m_Guid": { + "m_GuidSerialized": "9e22e251-3c42-49bc-9403-4e38bab24977" + }, + "m_Name": "Ambient Occlusion use lightmap UVs", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Boolean_F987B642", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "9b824dc1cd2c7088b802e3b5c40e21fb", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -793.0000610351563, + "y": 701.0, + "width": 126.0, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "c02b546bf752f08ca1a3b01417b0fd97" + }, + { + "m_Id": "3f79ba7357137587a04e6051a0d313b4" + }, + { + "m_Id": "ef8bf4d259d4fb8ba52d5e34bb08edf5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9c145c8195e14fac89847d119fefa84b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5726522506e2465ba8fd69530096fb72" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "9cdb0052e240a38a8da7f0afdfd664c0", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -656.0001220703125, + "y": 4.000010013580322, + "width": 186.0001220703125, + "height": 117.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "d6f36d8cdd25bc84a3ec8866932cc344" + }, + { + "m_Id": "eea7b5afae50d789a7c8e2c7bb397a73" + }, + { + "m_Id": "fcd1884afc9fd087bc0a999b1f291827" + }, + { + "m_Id": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "9cec744ea596404bb4a84da7c6007853", + "m_Title": "Smoothness", + "m_Position": { + "x": -1093.000244140625, + "y": -148.00003051757813 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "9d49b97bf90bc3808de132718c7b159e", + "m_Guid": { + "m_GuidSerialized": "66ded31f-2a1d-40c4-9c0c-c7faef0f5375" + }, + "m_Name": "Cuticle Tilt Texture Intensity", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_7D9AC3D3", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 3.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9dc2bfa03db44301ad94343ad1abd06e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7dff3059b4b242759d1c81ad9c86927f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9e270c52f272de868f33637366dd69e2", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a1ce52e42287c98ba224acde9ae460ba", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "a23e238449fe1f8083c8cb7190bf3f13", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -590.9998168945313, + "y": -791.0, + "width": 116.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "450e3ecb6d6aa089a80825c4acc0c74c" + }, + { + "m_Id": "a2c8b51fa5091083805db5d1505d0c0c" + }, + { + "m_Id": "f9f54bc74c5eaf89888138923426ed14" + }, + { + "m_Id": "2371eb645bdf0789be466e3f4c8c8602" + }, + { + "m_Id": "4a2e31e5bdadeb8ba3525a11caade5fa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "a28b550795132e88a28002a11edcbfdd", + "m_Guid": { + "m_GuidSerialized": "91b97227-7399-4cd6-9d23-d7f3396a4d2d" + }, + "m_Name": "Cuticle Tilt Texture (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_6C0DA6CC", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a2c8b51fa5091083805db5d1505d0c0c", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a4d19347cca2d08dbd28cee652fa9662", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "a684ed327e7dac8092910d8f98cb958a", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a6d2f8d93c070f8ea36456eeba1dbe79", + "m_Id": -1533382448, + "m_DisplayName": "uvMask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvMask", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "aa8c1dcd926d098f8ae2e03e7c89e48e", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ab0dfa88aaaf47708507acf54125f8b3", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "ad2567a30e4541b8b5ef7d4714d5a0e9", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": true, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": true, + "m_BackThenFrontRendering": true, + "m_TransparentDepthPrepass": true, + "m_TransparentDepthPostpass": true, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "ad712e421bdc2b858f94bf5ee650e74a", + "m_Guid": { + "m_GuidSerialized": "cdb23723-972f-4d49-9f82-4ac5e80e2d1d" + }, + "m_Name": "Diffuse Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Color_22DC9E2D", + "m_OverrideReferenceName": "_BaseColor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.6430000066757202, + "g": 0.4775882661342621, + "b": 0.3594370186328888, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "ae77e3144b96ce8fb1897a571d778e92", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion use lightmap UVs", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "aea42b6e88350189aaf5b1883905f4e5", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -945.9998168945313, + "y": -830.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "e11d69393def7780bbc8627b1ef61969" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "af12385c82644c1bb54ee97c98449804", + "m_Id": 0, + "m_DisplayName": "Hair Strand Direction", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "HairStrandDirection", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b091997e5dd0358f90a108ac01e23b34", + "m_Id": -1319696916, + "m_DisplayName": "uvST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvST", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "b0b092120dffbc8881293027cf951bfa", + "m_Guid": { + "m_GuidSerialized": "45256b52-4919-4436-824f-6f9e813fe9b1" + }, + "m_Name": "Normal Map Strength", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_2B87C9F0", + "m_OverrideReferenceName": "_NormalScale", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 8.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b1dbc96cf13ee28d9d722f739bd0e349", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -137.00003051757813, + "y": 467.0, + "width": 192.00003051757813, + "height": 34.000030517578128 + } + }, + "m_Slots": [ + { + "m_Id": "2e197e754975c58a94b53041782ead99" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "b27abc57c8e84886aaee2448a139a9e9", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -796.0001220703125, + "y": 106.99996948242188, + "width": 128.00006103515626, + "height": 100.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "b6d251f6dfaf348591c32b52051ce15b" + }, + { + "m_Id": "1aa04e00d5958c8e838a82ba3f1072fd" + }, + { + "m_Id": "6a5b1ea4a775ca87a7613bd5f29245ce" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b392c30da2ee518f9e37b248e67f6672", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "b41d947f3439b385af4b28c78a8273d6", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1270.0, + "y": 655.0, + "width": 157.0, + "height": 179.0 + } + }, + "m_Slots": [ + { + "m_Id": "bd5750773a87e18cb74bbb99402aa22c" + }, + { + "m_Id": "f2a852dd8efe0787843b125f8785b8eb" + }, + { + "m_Id": "bc90e8e5ced965859c0ea26885d0b60f" + }, + { + "m_Id": "7796b2ec1bc478829b13398bab417829" + }, + { + "m_Id": "51f89bbfeb89fd8e8abd8c2da08380b6" + }, + { + "m_Id": "b7dec426f089a780bc0521baaf578975" + }, + { + "m_Id": "91848e9583b5198296103f526e3be1e6" + }, + { + "m_Id": "348fecfb4fb3a38db2bd198743f33083" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b57e501619804b89b55a01c6914f1061", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b6d251f6dfaf348591c32b52051ce15b", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b7dec426f089a780bc0521baaf578975", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b8ee043449f1fa8894ec494307b662e9", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bb9ae3f0ca69bc89bcd4618fe24578fe", + "m_Id": 0, + "m_DisplayName": "Base UV Mask", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bc90e8e5ced965859c0ea26885d0b60f", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bd5750773a87e18cb74bbb99402aa22c", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bdb36d10e8f5d9868a902112523885d3", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "be2ab041555e4284b3ae78102b12445e", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c02b546bf752f08ca1a3b01417b0fd97", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c1d28320e6e1e186a6f185a0d00723ea", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c2706657c5ed9a858ca5a80941ca7c37", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "c2eb32947e67fa8ea0a3f06d43de5ef8", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c6251dcf7d883e8493c3ba4142a40eae", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "c6dad4c67be84c8180af0558b93ee6eb", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": false, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 1, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c7aaac29b313fb8ebbfcb4055bcbb86d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cad70c769fa144abbc8aece598c97044", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cafab10338384e2c8f9abf0be8484db9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1425366fc04241fb9f3b78af2049ee13" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cd4fb894fda2e280bf7c73c2dba7dd40", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": -0.5, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "cdc63087ae339f8b99568d20bf75b4ec", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt Texture (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ce1c65ecd0d8c485bad482d92cd4207f", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "ce6a30e827984b21b01ef697317d0934", + "m_MaterialNeedsUpdateHash": 12719, + "m_SurfaceType": 1, + "m_RenderingPass": 4, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": true, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 1, + "m_DOTSInstancing": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 9 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairData", + "m_ObjectId": "d30f1aa1a02847c89af2bab89f780e13", + "m_MaterialType": 1, + "m_ScatteringMode": 0, + "m_UseLightFacingNormal": false, + "m_UseRoughenedAzimuthalScattering": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d4834395e858ef8aa81f53d5ccdd7ce7", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -925.9998168945313, + "y": -386.0, + "width": 90.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "65cb1c5a02e5d183bfc5ceb7aeab47b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d5e1d4528a311e849b59ac342f46dad1", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d604aeede7be8c81a89f3f9f7b316785", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "d6204936eb0c778ba79957469938ffce", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1362.9998779296875, + "y": -372.0, + "width": 165.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "9198df248acd2b88818c20a5f911228e" + }, + { + "m_Id": "5c7f2dba5a3378818055e511404568fe" + }, + { + "m_Id": "dd24ba99be67fd8fb31bd72b0321c4fc" + }, + { + "m_Id": "05327e12b59bd185886f0d655de86628" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d6f36d8cdd25bc84a3ec8866932cc344", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "d77184bb68602a87a21066eb88527731", + "m_Guid": { + "m_GuidSerialized": "2fbe22fb-2883-4e21-974b-0e58cf6fa5a8" + }, + "m_Name": "Alpha Cutoff Postpass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4B895F81", + "m_OverrideReferenceName": "_AlphaCutoffPostpass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.20000000298023225, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc71dafd015c0b8fbd4cf8eda6b04650", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -137.00003051757813, + "y": 433.0000305175781, + "width": 192.00003051757813, + "height": 33.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "3e64307feed15f8cad4236a057acf4c8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d77184bb68602a87a21066eb88527731" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc9305a3fb26de8581d475dd3a59fbe8", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1555.0, + "y": 654.0, + "width": 218.0001220703125, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "cdc63087ae339f8b99568d20bf75b4ec" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dcb284e02529428e984891e5fb1ad226", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1024.0001220703125, + "y": 139.99993896484376, + "width": 165.0001220703125, + "height": 34.00007629394531 + } + }, + "m_Slots": [ + { + "m_Id": "3d239afea657458f89d6c65107f2aa06" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "dd1870936d90fb81bc8ec730e1dcefdc", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "dd24ba99be67fd8fb31bd72b0321c4fc", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ddc68b917a884852ade19f0e1a11f6a5", + "m_Id": 0, + "m_DisplayName": "Cuticle Angle", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "CuticleAngle", + "m_StageCapability": 2, + "m_Value": 3.0, + "m_DefaultValue": 3.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ddf62ee7d5534c008dc868db6ce30944", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e017d9a832a643c5b827aa92818f0161", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "005fd5aaba054304adbf564a8279747e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e11d69393def7780bbc8627b1ef61969", + "m_Id": 0, + "m_DisplayName": "Diffuse Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "e45e0dd4a288445d990250bd6c1d46b6", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "e5f61fab2dc4308f947bab38abc57baf", + "m_Guid": { + "m_GuidSerialized": "f7dfeb70-3e1c-4c38-9793-23ec535a1aa6" + }, + "m_Name": "AO Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_FBDC704E", + "m_OverrideReferenceName": "_AORemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalStrengthNode", + "m_ObjectId": "e7fea26afb72bc83a7767f135cc064aa", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Normal Strength", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -630.0001220703125, + "y": 377.9999084472656, + "width": 166.00015258789063, + "height": 117.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "14b012f13c19a78cadd30a711522abc0" + }, + { + "m_Id": "f93fdf97edd1dd85bfc3ba4170b91351" + }, + { + "m_Id": "ee2289d2e61e8e8ebd8ffc90d07ba380" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e9d9af9c13491486b6a00c4fbd1c39b9", + "m_Id": 0, + "m_DisplayName": "Smoothness Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "eb64f51ceae0e985b9a2d518888e7e38", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "ec7608b7aa994ec788ccc5ee3e343092", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdShadow", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f9b3522313754ad2a1989d5c82ba301c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdShadow" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ed9c054016be518faf9cc2372fbd6915", + "m_Id": 1, + "m_DisplayName": "Output 1", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Output1", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "edfdef5f3ad944ae99de6eb746229ae6", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -846.0001220703125, + "y": 860.9999389648438, + "width": 148.00006103515626, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "ddf62ee7d5534c008dc868db6ce30944" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "ee2289d2e61e8e8ebd8ffc90d07ba380", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "eea7b5afae50d789a7c8e2c7bb397a73", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ef8bf4d259d4fb8ba52d5e34bb08edf5", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f2a852dd8efe0787843b125f8785b8eb", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f3139b7f81c5638f9f3ef81eefb4f54b", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt Texture Intensity", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f534ee89ba597889981c1cd0f89566ad", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f55453ccdc2c4306a5f9d39ff0237186", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + }, + { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + }, + { + "m_Id": "427966ec1fded689943d180f391e68c5" + }, + { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + }, + { + "m_Id": "d77184bb68602a87a21066eb88527731" + }, + { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + }, + { + "m_Id": "179f8f51376c088aaf94836698ac8220" + }, + { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + }, + { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + }, + { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + }, + { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + }, + { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + }, + { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + }, + { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + }, + { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + }, + { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + }, + { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + }, + { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + }, + { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + }, + { + "m_Id": "226d0088ad363282a5742f217833b48e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f6270313d819ae8eb09b23f362e7578e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "f6b5ba98fc42e2808adc619221f62a58", + "m_Guid": { + "m_GuidSerialized": "ac9e053c-4cda-42a4-be2e-b1261e151565" + }, + "m_Name": "Base UV Mask", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_BBB2EF8D", + "m_OverrideReferenceName": "_uvBaseMask", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f6fe779f1a8d0f8599e6605b9d793fdf", + "m_Id": 0, + "m_DisplayName": "AO Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f93fdf97edd1dd85bfc3ba4170b91351", + "m_Id": 1, + "m_DisplayName": "Strength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Strength", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f9469208c3a047c8ba590663d472be9d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "95b97349851241ec8d6bf8bccd0cdf41" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9b3522313754ad2a1989d5c82ba301c", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Shadow", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdShadow", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9f54bc74c5eaf89888138923426ed14", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "fcd1884afc9fd087bc0a999b1f291827", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "fec923cefdaaac89ad009fba47d1e58f", + "m_Guid": { + "m_GuidSerialized": "179767ac-b5e5-49ea-a32e-2546c617a112" + }, + "m_Name": "Smoothness Map (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_189C8E90", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "fffb46fc91204972998523af40633b0f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.PrimaryReflectionSmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5cf0167f642345bf87669ade69eb753f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.PrimaryReflectionSmoothness" +} + diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph.meta new file mode 100644 index 00000000000..41e99531bd9 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0d22ba2f967dac046b0a4059e70f7648 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph new file mode 100644 index 00000000000..a9a83c76fcb --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph @@ -0,0 +1,6428 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "ba4b5529a59a475aa65637b55f84d1ed", + "m_Properties": [ + { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + }, + { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + }, + { + "m_Id": "427966ec1fded689943d180f391e68c5" + }, + { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + }, + { + "m_Id": "d77184bb68602a87a21066eb88527731" + }, + { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + }, + { + "m_Id": "179f8f51376c088aaf94836698ac8220" + }, + { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + }, + { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + }, + { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + }, + { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + }, + { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + }, + { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + }, + { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + }, + { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + }, + { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + }, + { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + }, + { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + }, + { + "m_Id": "226d0088ad363282a5742f217833b48e" + }, + { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f55453ccdc2c4306a5f9d39ff0237186" + } + ], + "m_Nodes": [ + { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" + }, + { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + { + "m_Id": "33d526f7424ba48298f8f47efe601b4b" + }, + { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + { + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" + }, + { + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" + }, + { + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" + }, + { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + { + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" + }, + { + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" + }, + { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + { + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" + }, + { + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" + }, + { + "m_Id": "6628192f4725228184a28da67814b191" + }, + { + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" + }, + { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + { + "m_Id": "99a201ca0a64c082ad04b50f33589bab" + }, + { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + { + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" + }, + { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + { + "m_Id": "7b26f104187a8987a649a27bf1682e3e" + }, + { + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" + }, + { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + { + "m_Id": "533b9b9d2ff0a0898705d5962522997f" + }, + { + "m_Id": "dcb284e02529428e984891e5fb1ad226" + }, + { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + { + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" + }, + { + "m_Id": "43a41f7a42a9b487af906c32995abadc" + }, + { + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" + }, + { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + { + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" + }, + { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + { + "m_Id": "343bdea30d074ae8ada2b5753fb67baf" + }, + { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + { + "m_Id": "4d889de587fa45e9a282082e13cc8970" + }, + { + "m_Id": "2c16e07788c1416d80f89c2611f8b98a" + }, + { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + { + "m_Id": "f9469208c3a047c8ba590663d472be9d" + }, + { + "m_Id": "9dc2bfa03db44301ad94343ad1abd06e" + }, + { + "m_Id": "07c67cc90490470fb9a60030a0d5d717" + }, + { + "m_Id": "fffb46fc91204972998523af40633b0f" + }, + { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + { + "m_Id": "edfdef5f3ad944ae99de6eb746229ae6" + }, + { + "m_Id": "1a7e8a41e75f4bd7b1e272765068afae" + } + ], + "m_GroupDatas": [ + { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "33d526f7424ba48298f8f47efe601b4b" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "43a41f7a42a9b487af906c32995abadc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1533382448 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "533b9b9d2ff0a0898705d5962522997f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1319696916 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7b26f104187a8987a649a27bf1682e3e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "99a201ca0a64c082ad04b50f33589bab" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dcb284e02529428e984891e5fb1ad226" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "edfdef5f3ad944ae99de6eb746229ae6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 110.0, + "y": -169.0 + }, + "m_Blocks": [ + { + "m_Id": "343bdea30d074ae8ada2b5753fb67baf" + }, + { + "m_Id": "f9469208c3a047c8ba590663d472be9d" + }, + { + "m_Id": "9dc2bfa03db44301ad94343ad1abd06e" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 110.0, + "y": 31.0 + }, + "m_Blocks": [ + { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + { + "m_Id": "4d889de587fa45e9a282082e13cc8970" + }, + { + "m_Id": "2c16e07788c1416d80f89c2611f8b98a" + }, + { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + { + "m_Id": "07c67cc90490470fb9a60030a0d5d717" + }, + { + "m_Id": "fffb46fc91204972998523af40633b0f" + }, + { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + { + "m_Id": "1a7e8a41e75f4bd7b1e272765068afae" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "HDRPSamples", + "m_GraphPrecision": 0, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "8f325a30dd2a4515af1f028912b6f70e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "005fd5aaba054304adbf564a8279747e", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "0280396e0fca118e8bd811b51a52d939", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "0308ee630bd24310b1f66165863140fd", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "05327e12b59bd185886f0d655de86628", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "07c67cc90490470fb9a60030a0d5d717", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 128.99998474121095, + "y": 599.0000610351563, + "width": 199.99998474121095, + "height": 41.0 + } + }, + "m_Slots": [ + { + "m_Id": "8d4c7998d3ea469188313f32fd5bcd33" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "0858398b0628498aa76b94db0641ebd0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SGR_uvCombine", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2058.000244140625, + "y": 149.00003051757813, + "width": 189.0001220703125, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "a6d2f8d93c070f8ea36456eeba1dbe79" + }, + { + "m_Id": "b091997e5dd0358f90a108ac01e23b34" + }, + { + "m_Id": "ed9c054016be518faf9cc2372fbd6915" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": 11400000,\n \"guid\": \"e485c02b07de92f4299e12a405a846f1\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "7eaf38f1-8035-488d-80b2-5a35598d3bac", + "2b164c69-e541-49c1-ab61-7f7c65de9d44" + ], + "m_PropertyIds": [ + -1533382448, + -1319696916 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "09de172d67c56088ab0c01bd8c7eac3f", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "0ac5bf5847aabd8cb2d384d6666fe60b", + "m_Guid": { + "m_GuidSerialized": "4005f9a0-1e7b-4422-9591-2d7900dc14a5" + }, + "m_Name": "Smoothness Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_A659E432", + "m_OverrideReferenceName": "_SmoothnessRemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "0dbc29ef6ffa7d8cb6ab2776226e7718", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "1256f23312cc46b59365214f65948a61", + "m_Title": "Ambient Occlusion", + "m_Position": { + "x": -1242.000244140625, + "y": -347.0000305175781 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1425366fc04241fb9f3b78af2049ee13", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "14b012f13c19a78cadd30a711522abc0", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "14db0ed0236c41738ba41db83871b1e8", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Prepass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPrepass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "14ed3d9577a24d448cf12554150ecccb", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPostpass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "519b5dc3ba5e47139dc635b812781052" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPostpass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "15f1cda72ce66782bb5877573ceab864", + "m_Guid": { + "m_GuidSerialized": "f713fd50-191c-4103-85a2-925a51d5dd5b" + }, + "m_Name": "Normal Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_272FF350", + "m_OverrideReferenceName": "_NormalMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "175f0193daaf4506ae7a09423b09b819", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "0308ee630bd24310b1f66165863140fd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "176531b3e19b8686b38e0c9259252aee", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "179f8f51376c088aaf94836698ac8220", + "m_Guid": { + "m_GuidSerialized": "d5937b9c-e726-47e2-9096-c64bd42839d2" + }, + "m_Name": "Ambient Occlusion Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_E48D0DF2", + "m_OverrideReferenceName": "_MaskMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "1960479b41340083b65285a79683a509", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1a7e8a41e75f4bd7b1e272765068afae", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.RadialSmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "74b5679fe43e45c0ad3e31bfdd560546" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.RadialSmoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1aa04e00d5958c8e838a82ba3f1072fd", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "1c9bb297962f0c82a0d1a739cab371e6", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1025.0, + "y": 64.00000762939453, + "width": 161.99993896484376, + "height": 33.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "e9d9af9c13491486b6a00c4fbd1c39b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1f7eca786bed4788ac8341455af633d5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ab0dfa88aaaf47708507acf54125f8b3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "226d0088ad363282a5742f217833b48e", + "m_Guid": { + "m_GuidSerialized": "8cdbfb43-feb7-4816-9cea-ca9952679ecb" + }, + "m_Name": "Base UV Tiling and Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_84AAB3AE", + "m_OverrideReferenceName": "_uvBaseST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "236d9b8d136c718d9974f605510b28b6", + "m_Id": 0, + "m_DisplayName": "Normal Map Strength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "236f73c9e460cb8394c6c7f693633923", + "m_Id": 0, + "m_DisplayName": "Normal Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2371eb645bdf0789be466e3f4c8c8602", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "240dbbe9e073ba8fbbc7866bfe19006f", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "2620a8e4de7c188e9a1a352425899905", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "2b67d3cfa8ede686a5a5891675840aca", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1165.9998779296875, + "y": -442.0000305175781, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "2620a8e4de7c188e9a1a352425899905" + }, + { + "m_Id": "eb64f51ceae0e985b9a2d518888e7e38" + }, + { + "m_Id": "bdb36d10e8f5d9868a902112523885d3" + }, + { + "m_Id": "a4d19347cca2d08dbd28cee652fa9662" + }, + { + "m_Id": "3dd1686839cd4c8ea23a9e210822ed45" + }, + { + "m_Id": "b57e501619804b89b55a01c6914f1061" + }, + { + "m_Id": "7911580134b27285aea5011e176efc55" + }, + { + "m_Id": "92504468ba4f378f834ad4b5f33fbaf9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "2b9e6e492bd61c8a85beb3c304421742", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2c16e07788c1416d80f89c2611f8b98a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.HairStrandDirection", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "af12385c82644c1bb54ee97c98449804" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.HairStrandDirection" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2dd33c5afb374d9aa3f15b58321e0f2f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPrepass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "14db0ed0236c41738ba41db83871b1e8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPrepass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2e197e754975c58a94b53041782ead99", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Shadows", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "2ea9c83800e54883a65a85d0be4f537f", + "m_Guid": { + "m_GuidSerialized": "e4dc662e-3747-4770-96eb-43812b6540e3" + }, + "m_Name": "Smoothness Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4F7BB2EA", + "m_OverrideReferenceName": "_SmoothnessRemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "2f2dda15cd64628695a5e429bd783b18", + "m_Id": 0, + "m_DisplayName": "Smoothness Map (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "33d526f7424ba48298f8f47efe601b4b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -86.00001525878906, + "y": 365.0000305175781, + "width": 141.00001525878907, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "91e02132de64ba8188337710a7ffc3e4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "427966ec1fded689943d180f391e68c5" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "33ff9e47cf9b4883af237446e1274285", + "m_Title": "Diffuse", + "m_Position": { + "x": -1457.0001220703125, + "y": -703.0000610351563 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "340b1f3554a53881b136398deed4da52", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "343bdea30d074ae8ada2b5753fb67baf", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e45e0dd4a288445d990250bd6c1d46b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "348fecfb4fb3a38db2bd198743f33083", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "354c780e278883888de190759d0b677c", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "3789ef8d67264f3db1f22b522f1c36a5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cad70c769fa144abbc8aece598c97044" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "3956714c58cb9a88bf186adf5315d9e0", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "3b96fbbc5e6ed68198a59a2a3d43ab52", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1616.9998779296875, + "y": -390.0000305175781, + "width": 236.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "ae77e3144b96ce8fb1897a571d778e92" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "3c2bc1a9a5054043b94470701f8ac5e1", + "m_MaterialNeedsUpdateHash": 0, + "m_SurfaceType": 0, + "m_RenderingPass": 1, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 0, + "m_DOTSInstancing": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3d239afea657458f89d6c65107f2aa06", + "m_Id": 0, + "m_DisplayName": "Smoothness Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "3d29306586360f87bd4e7b9ae811bfb5", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3dd1686839cd4c8ea23a9e210822ed45", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3e64307feed15f8cad4236a057acf4c8", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Postpass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3f79ba7357137587a04e6051a0d313b4", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "427966ec1fded689943d180f391e68c5", + "m_Guid": { + "m_GuidSerialized": "1c11679b-cbb6-4fa9-8f37-996c04d07707" + }, + "m_Name": "Alpha Cutoff", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_15C6E93B", + "m_OverrideReferenceName": "AlphaCutoff", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "433ac40aaba40288a2951408c4d772ee", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "43a41f7a42a9b487af906c32995abadc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2240.000244140625, + "y": 173.00001525878907, + "width": 153.0, + "height": 34.00004577636719 + } + }, + "m_Slots": [ + { + "m_Id": "bb9ae3f0ca69bc89bcd4618fe24578fe" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "44eb2baae7244a869ce9cf82ea31a653", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "450e3ecb6d6aa089a80825c4acc0c74c", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4a2e31e5bdadeb8ba3525a11caade5fa", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "4be44d4bc359298a9985c1d86006f8fb", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -651.9998168945313, + "y": -441.0000305175781, + "width": 181.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "86a16f16f03dab80a00a66849fc57418" + }, + { + "m_Id": "aa8c1dcd926d098f8ae2e03e7c89e48e" + }, + { + "m_Id": "3d29306586360f87bd4e7b9ae811bfb5" + }, + { + "m_Id": "ce1c65ecd0d8c485bad482d92cd4207f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "4d889de587fa45e9a282082e13cc8970", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BentNormal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "97f4eac589c948c6b38f803164d3bbd2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BentNormal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "50556458863843898802643405572325", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "519b5dc3ba5e47139dc635b812781052", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Postpass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPostpass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "51f89bbfeb89fd8e8abd8c2da08380b6", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "533b20e3fe8405898a55f0a048a3ddaf", + "m_Id": 0, + "m_DisplayName": "Diffuse Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "533b9b9d2ff0a0898705d5962522997f", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1589.9998779296875, + "y": -313.0000305175781, + "width": 198.0, + "height": 131.0 + } + }, + "m_Slots": [ + { + "m_Id": "240dbbe9e073ba8fbbc7866bfe19006f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 1 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "5403de39fff83a858f3897c561e7b8d8", + "m_Guid": { + "m_GuidSerialized": "d91fd1a5-e079-4844-b874-c9c0ca592f79" + }, + "m_Name": "Alpha Cutoff Prepass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_AD26FB16", + "m_OverrideReferenceName": "_AlphaCutoffPrepass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.8999999761581421, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "54c2c9fab03b8986a419a8f4d38cc9b4", + "m_Guid": { + "m_GuidSerialized": "08ee1c25-529f-4fca-8392-271b44871553" + }, + "m_Name": "Alpha Cutoff Shadows", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_CAFF147E", + "m_OverrideReferenceName": "_AlphaCutoffShadows", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "565b18ce35d4f88c8fddae94b4729467", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Prepass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5726522506e2465ba8fd69530096fb72", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "59ed7da959ff1f84a470af10c5ac986a", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5b490fbd5e29ed89aa6a4d83b25a2009", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1377.9998779296875, + "y": -463.00006103515627, + "width": 175.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "433ac40aaba40288a2951408c4d772ee" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "179f8f51376c088aaf94836698ac8220" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5c7f2dba5a3378818055e511404568fe", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5cf0167f642345bf87669ade69eb753f", + "m_Id": 0, + "m_DisplayName": "Primary Reflection Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "PrimaryReflectionSmoothness", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "5f38d464c32e2e82828769e0b7986031", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1021.9998168945313, + "y": -746.0, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "65c9308837466e8c95b0adac0199c4c1" + }, + { + "m_Id": "f534ee89ba597889981c1cd0f89566ad" + }, + { + "m_Id": "340b1f3554a53881b136398deed4da52" + }, + { + "m_Id": "6d83dd949117898385976df4af592436" + }, + { + "m_Id": "c1d28320e6e1e186a6f185a0d00723ea" + }, + { + "m_Id": "2b9e6e492bd61c8a85beb3c304421742" + }, + { + "m_Id": "86a7033bf32fde89a32671894f3faa27" + }, + { + "m_Id": "0dbc29ef6ffa7d8cb6ab2776226e7718" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "60b90383c40e4824b4bbcec1f9014ab6", + "m_Title": "Normal", + "m_Position": { + "x": -1093.000244140625, + "y": 241.99996948242188 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "647309fcbf93808f8e9587e1bb5d3017", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -784.9998779296875, + "y": -376.0000305175781, + "width": 124.99999237060547, + "height": 100.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "d604aeede7be8c81a89f3f9f7b316785" + }, + { + "m_Id": "c6251dcf7d883e8493c3ba4142a40eae" + }, + { + "m_Id": "44eb2baae7244a869ce9cf82ea31a653" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "65c9308837466e8c95b0adac0199c4c1", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "65cb1c5a02e5d183bfc5ceb7aeab47b9", + "m_Id": 0, + "m_DisplayName": "AO Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "6628192f4725228184a28da67814b191", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -870.0001220703125, + "y": -87.00003814697266, + "width": 157.0001220703125, + "height": 178.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "3956714c58cb9a88bf186adf5315d9e0" + }, + { + "m_Id": "50556458863843898802643405572325" + }, + { + "m_Id": "a1ce52e42287c98ba224acde9ae460ba" + }, + { + "m_Id": "be2ab041555e4284b3ae78102b12445e" + }, + { + "m_Id": "b8ee043449f1fa8894ec494307b662e9" + }, + { + "m_Id": "0280396e0fca118e8bd811b51a52d939" + }, + { + "m_Id": "dd1870936d90fb81bc8ec730e1dcefdc" + }, + { + "m_Id": "a684ed327e7dac8092910d8f98cb958a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "686bbf54cd40c1829f1e042219490c16", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -795.9998779296875, + "y": -796.0, + "width": 124.99999237060547, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "1960479b41340083b65285a79683a509" + }, + { + "m_Id": "c7aaac29b313fb8ebbfcb4055bcbb86d" + }, + { + "m_Id": "f6270313d819ae8eb09b23f362e7578e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "6a5b1ea4a775ca87a7613bd5f29245ce", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6d83dd949117898385976df4af592436", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6eb14bdea8824c898b37443575572deb", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7135e81ebc9cca808d6c1bf0f4757a19", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2298.000244140625, + "y": 215.0000457763672, + "width": 211.0, + "height": 33.999908447265628 + } + }, + "m_Slots": [ + { + "m_Id": "8de4f0e928a2d8849f1ca35633e0086e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "226d0088ad363282a5742f217833b48e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "74b5679fe43e45c0ad3e31bfdd560546", + "m_Id": 0, + "m_DisplayName": "Radial Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "RadialSmoothness", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7796b2ec1bc478829b13398bab417829", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "77b24a17f4d9ce888d0d645c8a3a18e5", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1166.9998779296875, + "y": -746.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "533b20e3fe8405898a55f0a048a3ddaf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "78479c8d6abe4634abf777821e1eea54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.CuticleAngle", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ddc68b917a884852ade19f0e1a11f6a5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.CuticleAngle" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "78bc3b99a581dd88acad23f34e26f942", + "m_Guid": { + "m_GuidSerialized": "6343a65d-92e9-4ea6-a610-b17eff7c3712" + }, + "m_Name": "Diffuse Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_1DA0BB85", + "m_OverrideReferenceName": "_BaseColorMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7911580134b27285aea5011e176efc55", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7b122e5ad389c78e955d1a8d600c0649", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7b26f104187a8987a649a27bf1682e3e", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -920.9998168945313, + "y": -312.00006103515627, + "width": 91.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "f6fe779f1a8d0f8599e6605b9d793fdf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "7c176772d8494e69a1e6e71caf3824c8", + "m_Guid": { + "m_GuidSerialized": "6f1ce988-5e87-4df7-a6bd-ed36e081c857" + }, + "m_Name": "Cuticle Tilt", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Cuticle Tilt", + "m_DefaultReferenceName": "_Cuticle_Tilt", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.125, + "m_FloatType": 1, + "m_RangeValues": { + "x": -0.5, + "y": 0.5 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "7dff3059b4b242759d1c81ad9c86927f", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "7e989903b67f2d88805cd5533cbf1b58", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7ecf4ec3d845eb89a2ea57b521ca8faa", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1078.0, + "y": 800.0000610351563, + "width": 239.99993896484376, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "f3139b7f81c5638f9f3ef81eefb4f54b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "820ef484d4e55783849213f3ffc6550c", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -958.0000610351563, + "y": 661.0000610351563, + "width": 126.00006103515625, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "09de172d67c56088ab0c01bd8c7eac3f" + }, + { + "m_Id": "cd4fb894fda2e280bf7c73c2dba7dd40" + }, + { + "m_Id": "b392c30da2ee518f9e37b248e67f6672" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a16f16f03dab80a00a66849fc57418", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a63ca605871b8a8395c2d33321eabc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "86a7033bf32fde89a32671894f3faa27", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "87788c13afe3128a8737b5d4498527ab", + "m_Guid": { + "m_GuidSerialized": "33400aac-8162-4d1d-9d4b-243c04977272" + }, + "m_Name": "AO Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_164AD3BD", + "m_OverrideReferenceName": "_AORemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "87c6de5a78a54a79923f7129c2fc0f70", + "m_Title": "Cuticle Angle", + "m_Position": { + "x": -1580.0, + "y": 567.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "8ad836f22bf91488a01151f840cf8766", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -860.0000610351563, + "y": 307.99993896484377, + "width": 180.99993896484376, + "height": 179.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "59ed7da959ff1f84a470af10c5ac986a" + }, + { + "m_Id": "176531b3e19b8686b38e0c9259252aee" + }, + { + "m_Id": "9e270c52f272de868f33637366dd69e2" + }, + { + "m_Id": "d5e1d4528a311e849b59ac342f46dad1" + }, + { + "m_Id": "6eb14bdea8824c898b37443575572deb" + }, + { + "m_Id": "c2eb32947e67fa8ea0a3f06d43de5ef8" + }, + { + "m_Id": "7b122e5ad389c78e955d1a8d600c0649" + }, + { + "m_Id": "7e989903b67f2d88805cd5533cbf1b58" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 1, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8b24fb7984fd1e86b1571bb5bf90faa1", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1068.0001220703125, + "y": -89.00005340576172, + "width": 193.0, + "height": 34.00007247924805 + } + }, + "m_Slots": [ + { + "m_Id": "2f2dda15cd64628695a5e429bd783b18" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "8bd09d48b70f4915b6bec74d49bf6362", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": true, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 0, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "8d4c7998d3ea469188313f32fd5bcd33", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "8de4f0e928a2d8849f1ca35633e0086e", + "m_Id": 0, + "m_DisplayName": "Base UV Tiling and Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairSubTarget", + "m_ObjectId": "8e390779bd944f90817742d777ed7c63" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDTarget", + "m_ObjectId": "8f325a30dd2a4515af1f028912b6f70e", + "m_ActiveSubTarget": { + "m_Id": "8e390779bd944f90817742d777ed7c63" + }, + "m_Datas": [ + { + "m_Id": "ad2567a30e4541b8b5ef7d4714d5a0e9" + }, + { + "m_Id": "c6dad4c67be84c8180af0558b93ee6eb" + }, + { + "m_Id": "ce6a30e827984b21b01ef697317d0934" + }, + { + "m_Id": "d30f1aa1a02847c89af2bab89f780e13" + }, + { + "m_Id": "9a306ec58a5f4b1897e7d3ef28907dd8" + }, + { + "m_Id": "8bd09d48b70f4915b6bec74d49bf6362" + }, + { + "m_Id": "3c2bc1a9a5054043b94470701f8ac5e1" + } + ], + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "90853359b4e7bb8b9312b5f784d3b4be", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1068.0001220703125, + "y": 301.00006103515627, + "width": 147.0, + "height": 33.999908447265628 + } + }, + "m_Slots": [ + { + "m_Id": "236f73c9e460cb8394c6c7f693633923" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "91848e9583b5198296103f526e3be1e6", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "9198df248acd2b88818c20a5f911228e", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "91e02132de64ba8188337710a7ffc3e4", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "92504468ba4f378f834ad4b5f33fbaf9", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "9251a286f0e1c983a73eb912051c4291", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -580.0001220703125, + "y": 625.9999389648438, + "width": 125.9998779296875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "354c780e278883888de190759d0b677c" + }, + { + "m_Id": "86a63ca605871b8a8395c2d33321eabc" + }, + { + "m_Id": "c2706657c5ed9a858ca5a80941ca7c37" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "95b97349851241ec8d6bf8bccd0cdf41", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "97f4eac589c948c6b38f803164d3bbd2", + "m_Id": 0, + "m_DisplayName": "Bent Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BentNormal", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "99a201ca0a64c082ad04b50f33589bab", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -829.0001831054688, + "y": 494.9998779296875, + "width": 187.00018310546876, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "236d9b8d136c718d9974f605510b28b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "9a306ec58a5f4b1897e7d3ef28907dd8", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": false, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": false, + "m_BackThenFrontRendering": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9a474beedf33ee8ba0abd17e767ba739", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -131.00001525878907, + "y": 398.9999694824219, + "width": 186.00001525878907, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "565b18ce35d4f88c8fddae94b4729467" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "9a7263d78d61fc8099fd01358336b0af", + "m_Guid": { + "m_GuidSerialized": "9e22e251-3c42-49bc-9403-4e38bab24977" + }, + "m_Name": "Ambient Occlusion use lightmap UVs", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Boolean_F987B642", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "9b824dc1cd2c7088b802e3b5c40e21fb", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -793.0000610351563, + "y": 701.0, + "width": 126.0, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "c02b546bf752f08ca1a3b01417b0fd97" + }, + { + "m_Id": "3f79ba7357137587a04e6051a0d313b4" + }, + { + "m_Id": "ef8bf4d259d4fb8ba52d5e34bb08edf5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9c145c8195e14fac89847d119fefa84b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5726522506e2465ba8fd69530096fb72" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "9cdb0052e240a38a8da7f0afdfd664c0", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -656.0001220703125, + "y": 4.000010013580322, + "width": 186.0001220703125, + "height": 117.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "d6f36d8cdd25bc84a3ec8866932cc344" + }, + { + "m_Id": "eea7b5afae50d789a7c8e2c7bb397a73" + }, + { + "m_Id": "fcd1884afc9fd087bc0a999b1f291827" + }, + { + "m_Id": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "9cec744ea596404bb4a84da7c6007853", + "m_Title": "Smoothness", + "m_Position": { + "x": -1093.000244140625, + "y": -148.00003051757813 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "9d49b97bf90bc3808de132718c7b159e", + "m_Guid": { + "m_GuidSerialized": "66ded31f-2a1d-40c4-9c0c-c7faef0f5375" + }, + "m_Name": "Cuticle Tilt Texture Intensity", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_7D9AC3D3", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 3.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9dc2bfa03db44301ad94343ad1abd06e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7dff3059b4b242759d1c81ad9c86927f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9e270c52f272de868f33637366dd69e2", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a1ce52e42287c98ba224acde9ae460ba", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "a23e238449fe1f8083c8cb7190bf3f13", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -590.9998168945313, + "y": -791.0, + "width": 116.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "450e3ecb6d6aa089a80825c4acc0c74c" + }, + { + "m_Id": "a2c8b51fa5091083805db5d1505d0c0c" + }, + { + "m_Id": "f9f54bc74c5eaf89888138923426ed14" + }, + { + "m_Id": "2371eb645bdf0789be466e3f4c8c8602" + }, + { + "m_Id": "4a2e31e5bdadeb8ba3525a11caade5fa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "a28b550795132e88a28002a11edcbfdd", + "m_Guid": { + "m_GuidSerialized": "91b97227-7399-4cd6-9d23-d7f3396a4d2d" + }, + "m_Name": "Cuticle Tilt Texture (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_6C0DA6CC", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a2c8b51fa5091083805db5d1505d0c0c", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a4d19347cca2d08dbd28cee652fa9662", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "a684ed327e7dac8092910d8f98cb958a", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a6d2f8d93c070f8ea36456eeba1dbe79", + "m_Id": -1533382448, + "m_DisplayName": "uvMask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvMask", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "aa8c1dcd926d098f8ae2e03e7c89e48e", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ab0dfa88aaaf47708507acf54125f8b3", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "ad2567a30e4541b8b5ef7d4714d5a0e9", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": true, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": true, + "m_BackThenFrontRendering": true, + "m_TransparentDepthPrepass": true, + "m_TransparentDepthPostpass": true, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "ad712e421bdc2b858f94bf5ee650e74a", + "m_Guid": { + "m_GuidSerialized": "cdb23723-972f-4d49-9f82-4ac5e80e2d1d" + }, + "m_Name": "Diffuse Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Color_22DC9E2D", + "m_OverrideReferenceName": "_BaseColor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.6430000066757202, + "g": 0.4775882661342621, + "b": 0.3594370186328888, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "ae77e3144b96ce8fb1897a571d778e92", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion use lightmap UVs", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "aea42b6e88350189aaf5b1883905f4e5", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -945.9998168945313, + "y": -830.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "e11d69393def7780bbc8627b1ef61969" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "af12385c82644c1bb54ee97c98449804", + "m_Id": 0, + "m_DisplayName": "Hair Strand Direction", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "HairStrandDirection", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b091997e5dd0358f90a108ac01e23b34", + "m_Id": -1319696916, + "m_DisplayName": "uvST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvST", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "b0b092120dffbc8881293027cf951bfa", + "m_Guid": { + "m_GuidSerialized": "45256b52-4919-4436-824f-6f9e813fe9b1" + }, + "m_Name": "Normal Map Strength", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_2B87C9F0", + "m_OverrideReferenceName": "_NormalScale", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 8.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b1dbc96cf13ee28d9d722f739bd0e349", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -137.00003051757813, + "y": 467.0, + "width": 192.00003051757813, + "height": 34.000030517578128 + } + }, + "m_Slots": [ + { + "m_Id": "2e197e754975c58a94b53041782ead99" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "b27abc57c8e84886aaee2448a139a9e9", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -796.0001220703125, + "y": 106.99996948242188, + "width": 128.00006103515626, + "height": 100.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "b6d251f6dfaf348591c32b52051ce15b" + }, + { + "m_Id": "1aa04e00d5958c8e838a82ba3f1072fd" + }, + { + "m_Id": "6a5b1ea4a775ca87a7613bd5f29245ce" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b392c30da2ee518f9e37b248e67f6672", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "b41d947f3439b385af4b28c78a8273d6", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1270.0, + "y": 655.0, + "width": 157.0, + "height": 179.0 + } + }, + "m_Slots": [ + { + "m_Id": "bd5750773a87e18cb74bbb99402aa22c" + }, + { + "m_Id": "f2a852dd8efe0787843b125f8785b8eb" + }, + { + "m_Id": "bc90e8e5ced965859c0ea26885d0b60f" + }, + { + "m_Id": "7796b2ec1bc478829b13398bab417829" + }, + { + "m_Id": "51f89bbfeb89fd8e8abd8c2da08380b6" + }, + { + "m_Id": "b7dec426f089a780bc0521baaf578975" + }, + { + "m_Id": "91848e9583b5198296103f526e3be1e6" + }, + { + "m_Id": "348fecfb4fb3a38db2bd198743f33083" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b57e501619804b89b55a01c6914f1061", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b6d251f6dfaf348591c32b52051ce15b", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b7dec426f089a780bc0521baaf578975", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b8ee043449f1fa8894ec494307b662e9", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bb9ae3f0ca69bc89bcd4618fe24578fe", + "m_Id": 0, + "m_DisplayName": "Base UV Mask", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bc90e8e5ced965859c0ea26885d0b60f", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bd5750773a87e18cb74bbb99402aa22c", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bdb36d10e8f5d9868a902112523885d3", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "be2ab041555e4284b3ae78102b12445e", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c02b546bf752f08ca1a3b01417b0fd97", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c1d28320e6e1e186a6f185a0d00723ea", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c2706657c5ed9a858ca5a80941ca7c37", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "c2eb32947e67fa8ea0a3f06d43de5ef8", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c6251dcf7d883e8493c3ba4142a40eae", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "c6dad4c67be84c8180af0558b93ee6eb", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": false, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 1, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c7aaac29b313fb8ebbfcb4055bcbb86d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cad70c769fa144abbc8aece598c97044", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cafab10338384e2c8f9abf0be8484db9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1425366fc04241fb9f3b78af2049ee13" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cd4fb894fda2e280bf7c73c2dba7dd40", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": -0.5, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "cdc63087ae339f8b99568d20bf75b4ec", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt Texture (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ce1c65ecd0d8c485bad482d92cd4207f", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "ce6a30e827984b21b01ef697317d0934", + "m_MaterialNeedsUpdateHash": 12719, + "m_SurfaceType": 1, + "m_RenderingPass": 4, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": true, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 1, + "m_DOTSInstancing": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 9 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairData", + "m_ObjectId": "d30f1aa1a02847c89af2bab89f780e13", + "m_MaterialType": 1, + "m_ScatteringMode": 0, + "m_UseLightFacingNormal": true, + "m_UseRoughenedAzimuthalScattering": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d4834395e858ef8aa81f53d5ccdd7ce7", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -925.9998168945313, + "y": -386.0, + "width": 90.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "65cb1c5a02e5d183bfc5ceb7aeab47b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d5e1d4528a311e849b59ac342f46dad1", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d604aeede7be8c81a89f3f9f7b316785", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "d6204936eb0c778ba79957469938ffce", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1362.9998779296875, + "y": -372.0, + "width": 165.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "9198df248acd2b88818c20a5f911228e" + }, + { + "m_Id": "5c7f2dba5a3378818055e511404568fe" + }, + { + "m_Id": "dd24ba99be67fd8fb31bd72b0321c4fc" + }, + { + "m_Id": "05327e12b59bd185886f0d655de86628" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d6f36d8cdd25bc84a3ec8866932cc344", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "d77184bb68602a87a21066eb88527731", + "m_Guid": { + "m_GuidSerialized": "2fbe22fb-2883-4e21-974b-0e58cf6fa5a8" + }, + "m_Name": "Alpha Cutoff Postpass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4B895F81", + "m_OverrideReferenceName": "_AlphaCutoffPostpass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.20000000298023225, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc71dafd015c0b8fbd4cf8eda6b04650", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -137.00003051757813, + "y": 433.0000305175781, + "width": 192.00003051757813, + "height": 33.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "3e64307feed15f8cad4236a057acf4c8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d77184bb68602a87a21066eb88527731" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc9305a3fb26de8581d475dd3a59fbe8", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1555.0, + "y": 654.0, + "width": 218.0001220703125, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "cdc63087ae339f8b99568d20bf75b4ec" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dcb284e02529428e984891e5fb1ad226", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1024.0001220703125, + "y": 139.99993896484376, + "width": 165.0001220703125, + "height": 34.00007629394531 + } + }, + "m_Slots": [ + { + "m_Id": "3d239afea657458f89d6c65107f2aa06" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "dd1870936d90fb81bc8ec730e1dcefdc", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "dd24ba99be67fd8fb31bd72b0321c4fc", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ddc68b917a884852ade19f0e1a11f6a5", + "m_Id": 0, + "m_DisplayName": "Cuticle Angle", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "CuticleAngle", + "m_StageCapability": 2, + "m_Value": 3.0, + "m_DefaultValue": 3.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ddf62ee7d5534c008dc868db6ce30944", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e017d9a832a643c5b827aa92818f0161", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "005fd5aaba054304adbf564a8279747e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e11d69393def7780bbc8627b1ef61969", + "m_Id": 0, + "m_DisplayName": "Diffuse Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "e45e0dd4a288445d990250bd6c1d46b6", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "e5f61fab2dc4308f947bab38abc57baf", + "m_Guid": { + "m_GuidSerialized": "f7dfeb70-3e1c-4c38-9793-23ec535a1aa6" + }, + "m_Name": "AO Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_FBDC704E", + "m_OverrideReferenceName": "_AORemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalStrengthNode", + "m_ObjectId": "e7fea26afb72bc83a7767f135cc064aa", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Normal Strength", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -630.0001220703125, + "y": 377.9999084472656, + "width": 166.00015258789063, + "height": 117.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "14b012f13c19a78cadd30a711522abc0" + }, + { + "m_Id": "f93fdf97edd1dd85bfc3ba4170b91351" + }, + { + "m_Id": "ee2289d2e61e8e8ebd8ffc90d07ba380" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e9d9af9c13491486b6a00c4fbd1c39b9", + "m_Id": 0, + "m_DisplayName": "Smoothness Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "eb64f51ceae0e985b9a2d518888e7e38", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "ec7608b7aa994ec788ccc5ee3e343092", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdShadow", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f9b3522313754ad2a1989d5c82ba301c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdShadow" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ed9c054016be518faf9cc2372fbd6915", + "m_Id": 1, + "m_DisplayName": "Output 1", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Output1", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "edfdef5f3ad944ae99de6eb746229ae6", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -846.0001220703125, + "y": 860.9999389648438, + "width": 148.00006103515626, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "ddf62ee7d5534c008dc868db6ce30944" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "ee2289d2e61e8e8ebd8ffc90d07ba380", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "eea7b5afae50d789a7c8e2c7bb397a73", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ef8bf4d259d4fb8ba52d5e34bb08edf5", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f2a852dd8efe0787843b125f8785b8eb", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f3139b7f81c5638f9f3ef81eefb4f54b", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt Texture Intensity", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f534ee89ba597889981c1cd0f89566ad", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f55453ccdc2c4306a5f9d39ff0237186", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + }, + { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + }, + { + "m_Id": "427966ec1fded689943d180f391e68c5" + }, + { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + }, + { + "m_Id": "d77184bb68602a87a21066eb88527731" + }, + { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + }, + { + "m_Id": "179f8f51376c088aaf94836698ac8220" + }, + { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + }, + { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + }, + { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + }, + { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + }, + { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + }, + { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + }, + { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + }, + { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + }, + { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + }, + { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + }, + { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + }, + { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + }, + { + "m_Id": "226d0088ad363282a5742f217833b48e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f6270313d819ae8eb09b23f362e7578e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "f6b5ba98fc42e2808adc619221f62a58", + "m_Guid": { + "m_GuidSerialized": "ac9e053c-4cda-42a4-be2e-b1261e151565" + }, + "m_Name": "Base UV Mask", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_BBB2EF8D", + "m_OverrideReferenceName": "_uvBaseMask", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f6fe779f1a8d0f8599e6605b9d793fdf", + "m_Id": 0, + "m_DisplayName": "AO Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f93fdf97edd1dd85bfc3ba4170b91351", + "m_Id": 1, + "m_DisplayName": "Strength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Strength", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f9469208c3a047c8ba590663d472be9d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "95b97349851241ec8d6bf8bccd0cdf41" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9b3522313754ad2a1989d5c82ba301c", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Shadow", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdShadow", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9f54bc74c5eaf89888138923426ed14", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "fcd1884afc9fd087bc0a999b1f291827", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "fec923cefdaaac89ad009fba47d1e58f", + "m_Guid": { + "m_GuidSerialized": "179767ac-b5e5-49ea-a32e-2546c617a112" + }, + "m_Name": "Smoothness Map (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_189C8E90", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "fffb46fc91204972998523af40633b0f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.PrimaryReflectionSmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5cf0167f642345bf87669ade69eb753f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.PrimaryReflectionSmoothness" +} + diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph.meta new file mode 100644 index 00000000000..1f37a70d1b7 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 84386fd8e1506df4fb7fb982c2ed9ec2 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph new file mode 100644 index 00000000000..314abff4cbc --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph @@ -0,0 +1,6428 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "ba4b5529a59a475aa65637b55f84d1ed", + "m_Properties": [ + { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + }, + { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + }, + { + "m_Id": "427966ec1fded689943d180f391e68c5" + }, + { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + }, + { + "m_Id": "d77184bb68602a87a21066eb88527731" + }, + { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + }, + { + "m_Id": "179f8f51376c088aaf94836698ac8220" + }, + { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + }, + { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + }, + { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + }, + { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + }, + { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + }, + { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + }, + { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + }, + { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + }, + { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + }, + { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + }, + { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + }, + { + "m_Id": "226d0088ad363282a5742f217833b48e" + }, + { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f55453ccdc2c4306a5f9d39ff0237186" + } + ], + "m_Nodes": [ + { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" + }, + { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + { + "m_Id": "33d526f7424ba48298f8f47efe601b4b" + }, + { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + { + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" + }, + { + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" + }, + { + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" + }, + { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + { + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" + }, + { + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" + }, + { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + { + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" + }, + { + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" + }, + { + "m_Id": "6628192f4725228184a28da67814b191" + }, + { + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" + }, + { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + { + "m_Id": "99a201ca0a64c082ad04b50f33589bab" + }, + { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + { + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" + }, + { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + { + "m_Id": "7b26f104187a8987a649a27bf1682e3e" + }, + { + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" + }, + { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + { + "m_Id": "533b9b9d2ff0a0898705d5962522997f" + }, + { + "m_Id": "dcb284e02529428e984891e5fb1ad226" + }, + { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + { + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" + }, + { + "m_Id": "43a41f7a42a9b487af906c32995abadc" + }, + { + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" + }, + { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + { + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" + }, + { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + { + "m_Id": "343bdea30d074ae8ada2b5753fb67baf" + }, + { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + { + "m_Id": "4d889de587fa45e9a282082e13cc8970" + }, + { + "m_Id": "2c16e07788c1416d80f89c2611f8b98a" + }, + { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + { + "m_Id": "f9469208c3a047c8ba590663d472be9d" + }, + { + "m_Id": "9dc2bfa03db44301ad94343ad1abd06e" + }, + { + "m_Id": "07c67cc90490470fb9a60030a0d5d717" + }, + { + "m_Id": "fffb46fc91204972998523af40633b0f" + }, + { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + { + "m_Id": "edfdef5f3ad944ae99de6eb746229ae6" + }, + { + "m_Id": "42bccbb94abc43358423e54539955eec" + } + ], + "m_GroupDatas": [ + { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "33d526f7424ba48298f8f47efe601b4b" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "43a41f7a42a9b487af906c32995abadc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1533382448 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "533b9b9d2ff0a0898705d5962522997f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1319696916 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7b26f104187a8987a649a27bf1682e3e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "99a201ca0a64c082ad04b50f33589bab" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dcb284e02529428e984891e5fb1ad226" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "edfdef5f3ad944ae99de6eb746229ae6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 110.0, + "y": -169.0 + }, + "m_Blocks": [ + { + "m_Id": "343bdea30d074ae8ada2b5753fb67baf" + }, + { + "m_Id": "f9469208c3a047c8ba590663d472be9d" + }, + { + "m_Id": "9dc2bfa03db44301ad94343ad1abd06e" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 110.0, + "y": 31.0 + }, + "m_Blocks": [ + { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + { + "m_Id": "4d889de587fa45e9a282082e13cc8970" + }, + { + "m_Id": "2c16e07788c1416d80f89c2611f8b98a" + }, + { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + { + "m_Id": "07c67cc90490470fb9a60030a0d5d717" + }, + { + "m_Id": "fffb46fc91204972998523af40633b0f" + }, + { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + { + "m_Id": "42bccbb94abc43358423e54539955eec" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "HDRPSamples", + "m_GraphPrecision": 0, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "8f325a30dd2a4515af1f028912b6f70e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "005fd5aaba054304adbf564a8279747e", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "0280396e0fca118e8bd811b51a52d939", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "0308ee630bd24310b1f66165863140fd", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "05327e12b59bd185886f0d655de86628", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "07c67cc90490470fb9a60030a0d5d717", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 128.99998474121095, + "y": 599.0000610351563, + "width": 199.99998474121095, + "height": 41.0 + } + }, + "m_Slots": [ + { + "m_Id": "8d4c7998d3ea469188313f32fd5bcd33" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "0858398b0628498aa76b94db0641ebd0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SGR_uvCombine", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2058.000244140625, + "y": 149.00003051757813, + "width": 189.0001220703125, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "a6d2f8d93c070f8ea36456eeba1dbe79" + }, + { + "m_Id": "b091997e5dd0358f90a108ac01e23b34" + }, + { + "m_Id": "ed9c054016be518faf9cc2372fbd6915" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": 11400000,\n \"guid\": \"e485c02b07de92f4299e12a405a846f1\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "7eaf38f1-8035-488d-80b2-5a35598d3bac", + "2b164c69-e541-49c1-ab61-7f7c65de9d44" + ], + "m_PropertyIds": [ + -1533382448, + -1319696916 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "09de172d67c56088ab0c01bd8c7eac3f", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "0ac5bf5847aabd8cb2d384d6666fe60b", + "m_Guid": { + "m_GuidSerialized": "4005f9a0-1e7b-4422-9591-2d7900dc14a5" + }, + "m_Name": "Smoothness Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_A659E432", + "m_OverrideReferenceName": "_SmoothnessRemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "0dbc29ef6ffa7d8cb6ab2776226e7718", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "1256f23312cc46b59365214f65948a61", + "m_Title": "Ambient Occlusion", + "m_Position": { + "x": -1242.000244140625, + "y": -347.0000305175781 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1425366fc04241fb9f3b78af2049ee13", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "14b012f13c19a78cadd30a711522abc0", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "14db0ed0236c41738ba41db83871b1e8", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Prepass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPrepass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "14ed3d9577a24d448cf12554150ecccb", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPostpass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "519b5dc3ba5e47139dc635b812781052" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPostpass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "15f1cda72ce66782bb5877573ceab864", + "m_Guid": { + "m_GuidSerialized": "f713fd50-191c-4103-85a2-925a51d5dd5b" + }, + "m_Name": "Normal Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_272FF350", + "m_OverrideReferenceName": "_NormalMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "175f0193daaf4506ae7a09423b09b819", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "0308ee630bd24310b1f66165863140fd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "176531b3e19b8686b38e0c9259252aee", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "179f8f51376c088aaf94836698ac8220", + "m_Guid": { + "m_GuidSerialized": "d5937b9c-e726-47e2-9096-c64bd42839d2" + }, + "m_Name": "Ambient Occlusion Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_E48D0DF2", + "m_OverrideReferenceName": "_MaskMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "1960479b41340083b65285a79683a509", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1aa04e00d5958c8e838a82ba3f1072fd", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "1c9bb297962f0c82a0d1a739cab371e6", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1025.0, + "y": 64.00000762939453, + "width": 161.99993896484376, + "height": 33.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "e9d9af9c13491486b6a00c4fbd1c39b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1f7eca786bed4788ac8341455af633d5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ab0dfa88aaaf47708507acf54125f8b3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "226d0088ad363282a5742f217833b48e", + "m_Guid": { + "m_GuidSerialized": "8cdbfb43-feb7-4816-9cea-ca9952679ecb" + }, + "m_Name": "Base UV Tiling and Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_84AAB3AE", + "m_OverrideReferenceName": "_uvBaseST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "236d9b8d136c718d9974f605510b28b6", + "m_Id": 0, + "m_DisplayName": "Normal Map Strength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "236f73c9e460cb8394c6c7f693633923", + "m_Id": 0, + "m_DisplayName": "Normal Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2371eb645bdf0789be466e3f4c8c8602", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "240dbbe9e073ba8fbbc7866bfe19006f", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "2620a8e4de7c188e9a1a352425899905", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "2b67d3cfa8ede686a5a5891675840aca", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1165.9998779296875, + "y": -442.0000305175781, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "2620a8e4de7c188e9a1a352425899905" + }, + { + "m_Id": "eb64f51ceae0e985b9a2d518888e7e38" + }, + { + "m_Id": "bdb36d10e8f5d9868a902112523885d3" + }, + { + "m_Id": "a4d19347cca2d08dbd28cee652fa9662" + }, + { + "m_Id": "3dd1686839cd4c8ea23a9e210822ed45" + }, + { + "m_Id": "b57e501619804b89b55a01c6914f1061" + }, + { + "m_Id": "7911580134b27285aea5011e176efc55" + }, + { + "m_Id": "92504468ba4f378f834ad4b5f33fbaf9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "2b9e6e492bd61c8a85beb3c304421742", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2c16e07788c1416d80f89c2611f8b98a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.HairStrandDirection", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "af12385c82644c1bb54ee97c98449804" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.HairStrandDirection" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2dd33c5afb374d9aa3f15b58321e0f2f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPrepass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "14db0ed0236c41738ba41db83871b1e8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPrepass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2e197e754975c58a94b53041782ead99", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Shadows", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "2ea9c83800e54883a65a85d0be4f537f", + "m_Guid": { + "m_GuidSerialized": "e4dc662e-3747-4770-96eb-43812b6540e3" + }, + "m_Name": "Smoothness Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4F7BB2EA", + "m_OverrideReferenceName": "_SmoothnessRemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "2f2dda15cd64628695a5e429bd783b18", + "m_Id": 0, + "m_DisplayName": "Smoothness Map (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "33d526f7424ba48298f8f47efe601b4b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -86.00001525878906, + "y": 365.0000305175781, + "width": 141.00001525878907, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "91e02132de64ba8188337710a7ffc3e4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "427966ec1fded689943d180f391e68c5" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "33ff9e47cf9b4883af237446e1274285", + "m_Title": "Diffuse", + "m_Position": { + "x": -1457.0001220703125, + "y": -703.0000610351563 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "340b1f3554a53881b136398deed4da52", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "343bdea30d074ae8ada2b5753fb67baf", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e45e0dd4a288445d990250bd6c1d46b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "348fecfb4fb3a38db2bd198743f33083", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "354c780e278883888de190759d0b677c", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "3789ef8d67264f3db1f22b522f1c36a5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cad70c769fa144abbc8aece598c97044" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "3956714c58cb9a88bf186adf5315d9e0", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "3b96fbbc5e6ed68198a59a2a3d43ab52", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1616.9998779296875, + "y": -390.0000305175781, + "width": 236.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "ae77e3144b96ce8fb1897a571d778e92" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "3c2bc1a9a5054043b94470701f8ac5e1", + "m_MaterialNeedsUpdateHash": 0, + "m_SurfaceType": 0, + "m_RenderingPass": 1, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 0, + "m_DOTSInstancing": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3d239afea657458f89d6c65107f2aa06", + "m_Id": 0, + "m_DisplayName": "Smoothness Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "3d29306586360f87bd4e7b9ae811bfb5", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3dd1686839cd4c8ea23a9e210822ed45", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3e64307feed15f8cad4236a057acf4c8", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Postpass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3f79ba7357137587a04e6051a0d313b4", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "427966ec1fded689943d180f391e68c5", + "m_Guid": { + "m_GuidSerialized": "1c11679b-cbb6-4fa9-8f37-996c04d07707" + }, + "m_Name": "Alpha Cutoff", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_15C6E93B", + "m_OverrideReferenceName": "AlphaCutoff", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "42bccbb94abc43358423e54539955eec", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.RadialSmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b8f59ab920504f1ea1dfac6ed67360e6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.RadialSmoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "433ac40aaba40288a2951408c4d772ee", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "43a41f7a42a9b487af906c32995abadc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2240.000244140625, + "y": 173.00001525878907, + "width": 153.0, + "height": 34.00004577636719 + } + }, + "m_Slots": [ + { + "m_Id": "bb9ae3f0ca69bc89bcd4618fe24578fe" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "44eb2baae7244a869ce9cf82ea31a653", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "450e3ecb6d6aa089a80825c4acc0c74c", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4a2e31e5bdadeb8ba3525a11caade5fa", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "4be44d4bc359298a9985c1d86006f8fb", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -651.9998168945313, + "y": -441.0000305175781, + "width": 181.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "86a16f16f03dab80a00a66849fc57418" + }, + { + "m_Id": "aa8c1dcd926d098f8ae2e03e7c89e48e" + }, + { + "m_Id": "3d29306586360f87bd4e7b9ae811bfb5" + }, + { + "m_Id": "ce1c65ecd0d8c485bad482d92cd4207f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "4d889de587fa45e9a282082e13cc8970", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BentNormal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "97f4eac589c948c6b38f803164d3bbd2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BentNormal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "50556458863843898802643405572325", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "519b5dc3ba5e47139dc635b812781052", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Postpass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPostpass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "51f89bbfeb89fd8e8abd8c2da08380b6", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "533b20e3fe8405898a55f0a048a3ddaf", + "m_Id": 0, + "m_DisplayName": "Diffuse Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "533b9b9d2ff0a0898705d5962522997f", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1589.9998779296875, + "y": -313.0000305175781, + "width": 198.0, + "height": 131.0 + } + }, + "m_Slots": [ + { + "m_Id": "240dbbe9e073ba8fbbc7866bfe19006f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 1 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "5403de39fff83a858f3897c561e7b8d8", + "m_Guid": { + "m_GuidSerialized": "d91fd1a5-e079-4844-b874-c9c0ca592f79" + }, + "m_Name": "Alpha Cutoff Prepass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_AD26FB16", + "m_OverrideReferenceName": "_AlphaCutoffPrepass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.8999999761581421, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "54c2c9fab03b8986a419a8f4d38cc9b4", + "m_Guid": { + "m_GuidSerialized": "08ee1c25-529f-4fca-8392-271b44871553" + }, + "m_Name": "Alpha Cutoff Shadows", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_CAFF147E", + "m_OverrideReferenceName": "_AlphaCutoffShadows", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "565b18ce35d4f88c8fddae94b4729467", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Prepass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5726522506e2465ba8fd69530096fb72", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "59ed7da959ff1f84a470af10c5ac986a", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5b490fbd5e29ed89aa6a4d83b25a2009", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1377.9998779296875, + "y": -463.00006103515627, + "width": 175.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "433ac40aaba40288a2951408c4d772ee" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "179f8f51376c088aaf94836698ac8220" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5c7f2dba5a3378818055e511404568fe", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5cf0167f642345bf87669ade69eb753f", + "m_Id": 0, + "m_DisplayName": "Primary Reflection Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "PrimaryReflectionSmoothness", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "5f38d464c32e2e82828769e0b7986031", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1021.9998168945313, + "y": -746.0, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "65c9308837466e8c95b0adac0199c4c1" + }, + { + "m_Id": "f534ee89ba597889981c1cd0f89566ad" + }, + { + "m_Id": "340b1f3554a53881b136398deed4da52" + }, + { + "m_Id": "6d83dd949117898385976df4af592436" + }, + { + "m_Id": "c1d28320e6e1e186a6f185a0d00723ea" + }, + { + "m_Id": "2b9e6e492bd61c8a85beb3c304421742" + }, + { + "m_Id": "86a7033bf32fde89a32671894f3faa27" + }, + { + "m_Id": "0dbc29ef6ffa7d8cb6ab2776226e7718" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "60b90383c40e4824b4bbcec1f9014ab6", + "m_Title": "Normal", + "m_Position": { + "x": -1093.000244140625, + "y": 241.99996948242188 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "647309fcbf93808f8e9587e1bb5d3017", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -784.9998779296875, + "y": -376.0000305175781, + "width": 124.99999237060547, + "height": 100.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "d604aeede7be8c81a89f3f9f7b316785" + }, + { + "m_Id": "c6251dcf7d883e8493c3ba4142a40eae" + }, + { + "m_Id": "44eb2baae7244a869ce9cf82ea31a653" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "65c9308837466e8c95b0adac0199c4c1", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "65cb1c5a02e5d183bfc5ceb7aeab47b9", + "m_Id": 0, + "m_DisplayName": "AO Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "6628192f4725228184a28da67814b191", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -870.0001220703125, + "y": -87.00003814697266, + "width": 157.0001220703125, + "height": 178.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "3956714c58cb9a88bf186adf5315d9e0" + }, + { + "m_Id": "50556458863843898802643405572325" + }, + { + "m_Id": "a1ce52e42287c98ba224acde9ae460ba" + }, + { + "m_Id": "be2ab041555e4284b3ae78102b12445e" + }, + { + "m_Id": "b8ee043449f1fa8894ec494307b662e9" + }, + { + "m_Id": "0280396e0fca118e8bd811b51a52d939" + }, + { + "m_Id": "dd1870936d90fb81bc8ec730e1dcefdc" + }, + { + "m_Id": "a684ed327e7dac8092910d8f98cb958a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "686bbf54cd40c1829f1e042219490c16", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -795.9998779296875, + "y": -796.0, + "width": 124.99999237060547, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "1960479b41340083b65285a79683a509" + }, + { + "m_Id": "c7aaac29b313fb8ebbfcb4055bcbb86d" + }, + { + "m_Id": "f6270313d819ae8eb09b23f362e7578e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "6a5b1ea4a775ca87a7613bd5f29245ce", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6d83dd949117898385976df4af592436", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6eb14bdea8824c898b37443575572deb", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7135e81ebc9cca808d6c1bf0f4757a19", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2298.000244140625, + "y": 215.0000457763672, + "width": 211.0, + "height": 33.999908447265628 + } + }, + "m_Slots": [ + { + "m_Id": "8de4f0e928a2d8849f1ca35633e0086e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "226d0088ad363282a5742f217833b48e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7796b2ec1bc478829b13398bab417829", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "77b24a17f4d9ce888d0d645c8a3a18e5", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1166.9998779296875, + "y": -746.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "533b20e3fe8405898a55f0a048a3ddaf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "78479c8d6abe4634abf777821e1eea54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.CuticleAngle", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ddc68b917a884852ade19f0e1a11f6a5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.CuticleAngle" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "78bc3b99a581dd88acad23f34e26f942", + "m_Guid": { + "m_GuidSerialized": "6343a65d-92e9-4ea6-a610-b17eff7c3712" + }, + "m_Name": "Diffuse Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_1DA0BB85", + "m_OverrideReferenceName": "_BaseColorMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7911580134b27285aea5011e176efc55", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7b122e5ad389c78e955d1a8d600c0649", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7b26f104187a8987a649a27bf1682e3e", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -920.9998168945313, + "y": -312.00006103515627, + "width": 91.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "f6fe779f1a8d0f8599e6605b9d793fdf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "7c176772d8494e69a1e6e71caf3824c8", + "m_Guid": { + "m_GuidSerialized": "6f1ce988-5e87-4df7-a6bd-ed36e081c857" + }, + "m_Name": "Cuticle Tilt", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Cuticle Tilt", + "m_DefaultReferenceName": "_Cuticle_Tilt", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.125, + "m_FloatType": 1, + "m_RangeValues": { + "x": -0.5, + "y": 0.5 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "7dff3059b4b242759d1c81ad9c86927f", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "7e989903b67f2d88805cd5533cbf1b58", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7ecf4ec3d845eb89a2ea57b521ca8faa", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1078.0, + "y": 800.0000610351563, + "width": 239.99993896484376, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "f3139b7f81c5638f9f3ef81eefb4f54b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "820ef484d4e55783849213f3ffc6550c", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -958.0000610351563, + "y": 661.0000610351563, + "width": 126.00006103515625, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "09de172d67c56088ab0c01bd8c7eac3f" + }, + { + "m_Id": "cd4fb894fda2e280bf7c73c2dba7dd40" + }, + { + "m_Id": "b392c30da2ee518f9e37b248e67f6672" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a16f16f03dab80a00a66849fc57418", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a63ca605871b8a8395c2d33321eabc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "86a7033bf32fde89a32671894f3faa27", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "87788c13afe3128a8737b5d4498527ab", + "m_Guid": { + "m_GuidSerialized": "33400aac-8162-4d1d-9d4b-243c04977272" + }, + "m_Name": "AO Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_164AD3BD", + "m_OverrideReferenceName": "_AORemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "87c6de5a78a54a79923f7129c2fc0f70", + "m_Title": "Cuticle Angle", + "m_Position": { + "x": -1580.0, + "y": 567.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "8ad836f22bf91488a01151f840cf8766", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -860.0000610351563, + "y": 307.99993896484377, + "width": 180.99993896484376, + "height": 179.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "59ed7da959ff1f84a470af10c5ac986a" + }, + { + "m_Id": "176531b3e19b8686b38e0c9259252aee" + }, + { + "m_Id": "9e270c52f272de868f33637366dd69e2" + }, + { + "m_Id": "d5e1d4528a311e849b59ac342f46dad1" + }, + { + "m_Id": "6eb14bdea8824c898b37443575572deb" + }, + { + "m_Id": "c2eb32947e67fa8ea0a3f06d43de5ef8" + }, + { + "m_Id": "7b122e5ad389c78e955d1a8d600c0649" + }, + { + "m_Id": "7e989903b67f2d88805cd5533cbf1b58" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 1, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8b24fb7984fd1e86b1571bb5bf90faa1", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1068.0001220703125, + "y": -89.00005340576172, + "width": 193.0, + "height": 34.00007247924805 + } + }, + "m_Slots": [ + { + "m_Id": "2f2dda15cd64628695a5e429bd783b18" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "8bd09d48b70f4915b6bec74d49bf6362", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": true, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 0, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "8d4c7998d3ea469188313f32fd5bcd33", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "8de4f0e928a2d8849f1ca35633e0086e", + "m_Id": 0, + "m_DisplayName": "Base UV Tiling and Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairSubTarget", + "m_ObjectId": "8e390779bd944f90817742d777ed7c63" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDTarget", + "m_ObjectId": "8f325a30dd2a4515af1f028912b6f70e", + "m_ActiveSubTarget": { + "m_Id": "8e390779bd944f90817742d777ed7c63" + }, + "m_Datas": [ + { + "m_Id": "ad2567a30e4541b8b5ef7d4714d5a0e9" + }, + { + "m_Id": "c6dad4c67be84c8180af0558b93ee6eb" + }, + { + "m_Id": "ce6a30e827984b21b01ef697317d0934" + }, + { + "m_Id": "d30f1aa1a02847c89af2bab89f780e13" + }, + { + "m_Id": "9a306ec58a5f4b1897e7d3ef28907dd8" + }, + { + "m_Id": "8bd09d48b70f4915b6bec74d49bf6362" + }, + { + "m_Id": "3c2bc1a9a5054043b94470701f8ac5e1" + } + ], + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "90853359b4e7bb8b9312b5f784d3b4be", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1068.0001220703125, + "y": 301.00006103515627, + "width": 147.0, + "height": 33.999908447265628 + } + }, + "m_Slots": [ + { + "m_Id": "236f73c9e460cb8394c6c7f693633923" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "91848e9583b5198296103f526e3be1e6", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "9198df248acd2b88818c20a5f911228e", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "91e02132de64ba8188337710a7ffc3e4", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "92504468ba4f378f834ad4b5f33fbaf9", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "9251a286f0e1c983a73eb912051c4291", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -580.0001220703125, + "y": 625.9999389648438, + "width": 125.9998779296875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "354c780e278883888de190759d0b677c" + }, + { + "m_Id": "86a63ca605871b8a8395c2d33321eabc" + }, + { + "m_Id": "c2706657c5ed9a858ca5a80941ca7c37" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "95b97349851241ec8d6bf8bccd0cdf41", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "97f4eac589c948c6b38f803164d3bbd2", + "m_Id": 0, + "m_DisplayName": "Bent Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BentNormal", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "99a201ca0a64c082ad04b50f33589bab", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -829.0001831054688, + "y": 494.9998779296875, + "width": 187.00018310546876, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "236d9b8d136c718d9974f605510b28b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "9a306ec58a5f4b1897e7d3ef28907dd8", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": false, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": false, + "m_BackThenFrontRendering": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9a474beedf33ee8ba0abd17e767ba739", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -131.00001525878907, + "y": 398.9999694824219, + "width": 186.00001525878907, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "565b18ce35d4f88c8fddae94b4729467" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "9a7263d78d61fc8099fd01358336b0af", + "m_Guid": { + "m_GuidSerialized": "9e22e251-3c42-49bc-9403-4e38bab24977" + }, + "m_Name": "Ambient Occlusion use lightmap UVs", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Boolean_F987B642", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "9b824dc1cd2c7088b802e3b5c40e21fb", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -793.0000610351563, + "y": 701.0, + "width": 126.0, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "c02b546bf752f08ca1a3b01417b0fd97" + }, + { + "m_Id": "3f79ba7357137587a04e6051a0d313b4" + }, + { + "m_Id": "ef8bf4d259d4fb8ba52d5e34bb08edf5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9c145c8195e14fac89847d119fefa84b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5726522506e2465ba8fd69530096fb72" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "9cdb0052e240a38a8da7f0afdfd664c0", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -656.0001220703125, + "y": 4.000010013580322, + "width": 186.0001220703125, + "height": 117.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "d6f36d8cdd25bc84a3ec8866932cc344" + }, + { + "m_Id": "eea7b5afae50d789a7c8e2c7bb397a73" + }, + { + "m_Id": "fcd1884afc9fd087bc0a999b1f291827" + }, + { + "m_Id": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "9cec744ea596404bb4a84da7c6007853", + "m_Title": "Smoothness", + "m_Position": { + "x": -1093.000244140625, + "y": -148.00003051757813 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "9d49b97bf90bc3808de132718c7b159e", + "m_Guid": { + "m_GuidSerialized": "66ded31f-2a1d-40c4-9c0c-c7faef0f5375" + }, + "m_Name": "Cuticle Tilt Texture Intensity", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_7D9AC3D3", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 3.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9dc2bfa03db44301ad94343ad1abd06e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7dff3059b4b242759d1c81ad9c86927f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9e270c52f272de868f33637366dd69e2", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a1ce52e42287c98ba224acde9ae460ba", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "a23e238449fe1f8083c8cb7190bf3f13", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -590.9998168945313, + "y": -791.0, + "width": 116.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "450e3ecb6d6aa089a80825c4acc0c74c" + }, + { + "m_Id": "a2c8b51fa5091083805db5d1505d0c0c" + }, + { + "m_Id": "f9f54bc74c5eaf89888138923426ed14" + }, + { + "m_Id": "2371eb645bdf0789be466e3f4c8c8602" + }, + { + "m_Id": "4a2e31e5bdadeb8ba3525a11caade5fa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "a28b550795132e88a28002a11edcbfdd", + "m_Guid": { + "m_GuidSerialized": "91b97227-7399-4cd6-9d23-d7f3396a4d2d" + }, + "m_Name": "Cuticle Tilt Texture (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_6C0DA6CC", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a2c8b51fa5091083805db5d1505d0c0c", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a4d19347cca2d08dbd28cee652fa9662", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "a684ed327e7dac8092910d8f98cb958a", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a6d2f8d93c070f8ea36456eeba1dbe79", + "m_Id": -1533382448, + "m_DisplayName": "uvMask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvMask", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "aa8c1dcd926d098f8ae2e03e7c89e48e", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ab0dfa88aaaf47708507acf54125f8b3", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "ad2567a30e4541b8b5ef7d4714d5a0e9", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": true, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": true, + "m_BackThenFrontRendering": true, + "m_TransparentDepthPrepass": true, + "m_TransparentDepthPostpass": true, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "ad712e421bdc2b858f94bf5ee650e74a", + "m_Guid": { + "m_GuidSerialized": "cdb23723-972f-4d49-9f82-4ac5e80e2d1d" + }, + "m_Name": "Diffuse Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Color_22DC9E2D", + "m_OverrideReferenceName": "_BaseColor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.6430000066757202, + "g": 0.4775882661342621, + "b": 0.3594370186328888, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "ae77e3144b96ce8fb1897a571d778e92", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion use lightmap UVs", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "aea42b6e88350189aaf5b1883905f4e5", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -945.9998168945313, + "y": -830.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "e11d69393def7780bbc8627b1ef61969" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "af12385c82644c1bb54ee97c98449804", + "m_Id": 0, + "m_DisplayName": "Hair Strand Direction", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "HairStrandDirection", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b091997e5dd0358f90a108ac01e23b34", + "m_Id": -1319696916, + "m_DisplayName": "uvST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvST", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "b0b092120dffbc8881293027cf951bfa", + "m_Guid": { + "m_GuidSerialized": "45256b52-4919-4436-824f-6f9e813fe9b1" + }, + "m_Name": "Normal Map Strength", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_2B87C9F0", + "m_OverrideReferenceName": "_NormalScale", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 8.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b1dbc96cf13ee28d9d722f739bd0e349", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -137.00003051757813, + "y": 467.0, + "width": 192.00003051757813, + "height": 34.000030517578128 + } + }, + "m_Slots": [ + { + "m_Id": "2e197e754975c58a94b53041782ead99" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "b27abc57c8e84886aaee2448a139a9e9", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -796.0001220703125, + "y": 106.99996948242188, + "width": 128.00006103515626, + "height": 100.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "b6d251f6dfaf348591c32b52051ce15b" + }, + { + "m_Id": "1aa04e00d5958c8e838a82ba3f1072fd" + }, + { + "m_Id": "6a5b1ea4a775ca87a7613bd5f29245ce" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b392c30da2ee518f9e37b248e67f6672", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "b41d947f3439b385af4b28c78a8273d6", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1270.0, + "y": 655.0, + "width": 157.0, + "height": 179.0 + } + }, + "m_Slots": [ + { + "m_Id": "bd5750773a87e18cb74bbb99402aa22c" + }, + { + "m_Id": "f2a852dd8efe0787843b125f8785b8eb" + }, + { + "m_Id": "bc90e8e5ced965859c0ea26885d0b60f" + }, + { + "m_Id": "7796b2ec1bc478829b13398bab417829" + }, + { + "m_Id": "51f89bbfeb89fd8e8abd8c2da08380b6" + }, + { + "m_Id": "b7dec426f089a780bc0521baaf578975" + }, + { + "m_Id": "91848e9583b5198296103f526e3be1e6" + }, + { + "m_Id": "348fecfb4fb3a38db2bd198743f33083" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b57e501619804b89b55a01c6914f1061", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b6d251f6dfaf348591c32b52051ce15b", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b7dec426f089a780bc0521baaf578975", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b8ee043449f1fa8894ec494307b662e9", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b8f59ab920504f1ea1dfac6ed67360e6", + "m_Id": 0, + "m_DisplayName": "Radial Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "RadialSmoothness", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bb9ae3f0ca69bc89bcd4618fe24578fe", + "m_Id": 0, + "m_DisplayName": "Base UV Mask", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bc90e8e5ced965859c0ea26885d0b60f", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bd5750773a87e18cb74bbb99402aa22c", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bdb36d10e8f5d9868a902112523885d3", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "be2ab041555e4284b3ae78102b12445e", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c02b546bf752f08ca1a3b01417b0fd97", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c1d28320e6e1e186a6f185a0d00723ea", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c2706657c5ed9a858ca5a80941ca7c37", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "c2eb32947e67fa8ea0a3f06d43de5ef8", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c6251dcf7d883e8493c3ba4142a40eae", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "c6dad4c67be84c8180af0558b93ee6eb", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": false, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 1, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c7aaac29b313fb8ebbfcb4055bcbb86d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cad70c769fa144abbc8aece598c97044", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cafab10338384e2c8f9abf0be8484db9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1425366fc04241fb9f3b78af2049ee13" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cd4fb894fda2e280bf7c73c2dba7dd40", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": -0.5, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "cdc63087ae339f8b99568d20bf75b4ec", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt Texture (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ce1c65ecd0d8c485bad482d92cd4207f", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "ce6a30e827984b21b01ef697317d0934", + "m_MaterialNeedsUpdateHash": 12719, + "m_SurfaceType": 1, + "m_RenderingPass": 4, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": true, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 1, + "m_DOTSInstancing": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 9 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairData", + "m_ObjectId": "d30f1aa1a02847c89af2bab89f780e13", + "m_MaterialType": 1, + "m_ScatteringMode": 0, + "m_UseLightFacingNormal": false, + "m_UseRoughenedAzimuthalScattering": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d4834395e858ef8aa81f53d5ccdd7ce7", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -925.9998168945313, + "y": -386.0, + "width": 90.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "65cb1c5a02e5d183bfc5ceb7aeab47b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d5e1d4528a311e849b59ac342f46dad1", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d604aeede7be8c81a89f3f9f7b316785", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "d6204936eb0c778ba79957469938ffce", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1362.9998779296875, + "y": -372.0, + "width": 165.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "9198df248acd2b88818c20a5f911228e" + }, + { + "m_Id": "5c7f2dba5a3378818055e511404568fe" + }, + { + "m_Id": "dd24ba99be67fd8fb31bd72b0321c4fc" + }, + { + "m_Id": "05327e12b59bd185886f0d655de86628" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d6f36d8cdd25bc84a3ec8866932cc344", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "d77184bb68602a87a21066eb88527731", + "m_Guid": { + "m_GuidSerialized": "2fbe22fb-2883-4e21-974b-0e58cf6fa5a8" + }, + "m_Name": "Alpha Cutoff Postpass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4B895F81", + "m_OverrideReferenceName": "_AlphaCutoffPostpass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.20000000298023225, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc71dafd015c0b8fbd4cf8eda6b04650", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -137.00003051757813, + "y": 433.0000305175781, + "width": 192.00003051757813, + "height": 33.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "3e64307feed15f8cad4236a057acf4c8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d77184bb68602a87a21066eb88527731" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc9305a3fb26de8581d475dd3a59fbe8", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1555.0, + "y": 654.0, + "width": 218.0001220703125, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "cdc63087ae339f8b99568d20bf75b4ec" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dcb284e02529428e984891e5fb1ad226", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1024.0001220703125, + "y": 139.99993896484376, + "width": 165.0001220703125, + "height": 34.00007629394531 + } + }, + "m_Slots": [ + { + "m_Id": "3d239afea657458f89d6c65107f2aa06" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "dd1870936d90fb81bc8ec730e1dcefdc", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "dd24ba99be67fd8fb31bd72b0321c4fc", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ddc68b917a884852ade19f0e1a11f6a5", + "m_Id": 0, + "m_DisplayName": "Cuticle Angle", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "CuticleAngle", + "m_StageCapability": 2, + "m_Value": 3.0, + "m_DefaultValue": 3.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ddf62ee7d5534c008dc868db6ce30944", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e017d9a832a643c5b827aa92818f0161", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "005fd5aaba054304adbf564a8279747e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e11d69393def7780bbc8627b1ef61969", + "m_Id": 0, + "m_DisplayName": "Diffuse Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "e45e0dd4a288445d990250bd6c1d46b6", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "e5f61fab2dc4308f947bab38abc57baf", + "m_Guid": { + "m_GuidSerialized": "f7dfeb70-3e1c-4c38-9793-23ec535a1aa6" + }, + "m_Name": "AO Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_FBDC704E", + "m_OverrideReferenceName": "_AORemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalStrengthNode", + "m_ObjectId": "e7fea26afb72bc83a7767f135cc064aa", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Normal Strength", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -630.0001220703125, + "y": 377.9999084472656, + "width": 166.00015258789063, + "height": 117.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "14b012f13c19a78cadd30a711522abc0" + }, + { + "m_Id": "f93fdf97edd1dd85bfc3ba4170b91351" + }, + { + "m_Id": "ee2289d2e61e8e8ebd8ffc90d07ba380" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e9d9af9c13491486b6a00c4fbd1c39b9", + "m_Id": 0, + "m_DisplayName": "Smoothness Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "eb64f51ceae0e985b9a2d518888e7e38", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "ec7608b7aa994ec788ccc5ee3e343092", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdShadow", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f9b3522313754ad2a1989d5c82ba301c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdShadow" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ed9c054016be518faf9cc2372fbd6915", + "m_Id": 1, + "m_DisplayName": "Output 1", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Output1", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "edfdef5f3ad944ae99de6eb746229ae6", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -846.0001220703125, + "y": 860.9999389648438, + "width": 148.00006103515626, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "ddf62ee7d5534c008dc868db6ce30944" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "ee2289d2e61e8e8ebd8ffc90d07ba380", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "eea7b5afae50d789a7c8e2c7bb397a73", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ef8bf4d259d4fb8ba52d5e34bb08edf5", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f2a852dd8efe0787843b125f8785b8eb", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f3139b7f81c5638f9f3ef81eefb4f54b", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt Texture Intensity", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f534ee89ba597889981c1cd0f89566ad", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f55453ccdc2c4306a5f9d39ff0237186", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + }, + { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + }, + { + "m_Id": "427966ec1fded689943d180f391e68c5" + }, + { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + }, + { + "m_Id": "d77184bb68602a87a21066eb88527731" + }, + { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + }, + { + "m_Id": "179f8f51376c088aaf94836698ac8220" + }, + { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + }, + { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + }, + { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + }, + { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + }, + { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + }, + { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + }, + { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + }, + { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + }, + { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + }, + { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + }, + { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + }, + { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + }, + { + "m_Id": "226d0088ad363282a5742f217833b48e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f6270313d819ae8eb09b23f362e7578e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "f6b5ba98fc42e2808adc619221f62a58", + "m_Guid": { + "m_GuidSerialized": "ac9e053c-4cda-42a4-be2e-b1261e151565" + }, + "m_Name": "Base UV Mask", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_BBB2EF8D", + "m_OverrideReferenceName": "_uvBaseMask", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f6fe779f1a8d0f8599e6605b9d793fdf", + "m_Id": 0, + "m_DisplayName": "AO Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f93fdf97edd1dd85bfc3ba4170b91351", + "m_Id": 1, + "m_DisplayName": "Strength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Strength", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f9469208c3a047c8ba590663d472be9d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "95b97349851241ec8d6bf8bccd0cdf41" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9b3522313754ad2a1989d5c82ba301c", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Shadow", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdShadow", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9f54bc74c5eaf89888138923426ed14", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "fcd1884afc9fd087bc0a999b1f291827", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "fec923cefdaaac89ad009fba47d1e58f", + "m_Guid": { + "m_GuidSerialized": "179767ac-b5e5-49ea-a32e-2546c617a112" + }, + "m_Name": "Smoothness Map (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_189C8E90", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "fffb46fc91204972998523af40633b0f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.PrimaryReflectionSmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5cf0167f642345bf87669ade69eb753f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.PrimaryReflectionSmoothness" +} + diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph.meta new file mode 100644 index 00000000000..6bb6328cd41 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8954d5af27115924d918342722041882 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraphSettings.lighting b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraphSettings.lighting new file mode 100644 index 00000000000..043b1b5c2e7 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraphSettings.lighting @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: 1401_HairGraphSettings + serializedVersion: 3 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_BakeResolution: 10 + m_Padding: 2 + m_TextureCompression: 0 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 0 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 4 + m_PVRMinBounces: 4 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraphSettings.lighting.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraphSettings.lighting.meta new file mode 100644 index 00000000000..97f3208b99c --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraphSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0da6b29ee2c0b2244985ffce66a03e82 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png index 6dee344c882..d113acab98d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:663b29fe7e4ca6d3ca3d36ab663cbb46fdf528adbacf32fdd63c05a5282b9053 -size 252648 +oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 +size 119958 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png index 4baea4785a6..d113acab98d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a625c1488f93ec94f2094afa713f48afdc3a218697d2b512a4ccd8aea1fa6e8a -size 260118 +oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 +size 119958 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png index 1919f6cfa22..d113acab98d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2fbe206e3e7d6ed46d58bf6f913c73f86e2099c02737bd84ffa5df18c1dd938 -size 258958 +oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 +size 119958 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png index c49254806b6..d113acab98d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39d9119767cc71a5738c9a784fb000fc37ef012ada770b75e7c32b4c1ed5046d -size 258941 +oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 +size 119958 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png index 6dee344c882..d113acab98d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:663b29fe7e4ca6d3ca3d36ab663cbb46fdf528adbacf32fdd63c05a5282b9053 -size 252648 +oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 +size 119958 From 59ece8248248d95520150220fa3f6bb6b6841c47 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 29 Jun 2021 11:28:35 -0400 Subject: [PATCH 32/73] Update some reference images for Vulkan/Metal due to some shadow cascade discrepancy --- .../Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png | 4 ++-- .../Linear/OSXEditor/Metal/None/1401_HairGraph.png | 4 ++-- .../Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png index d113acab98d..c060075f7ca 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 -size 119958 +oid sha256:8370429c82adb1486c4d27c0b12199b2f93c40a7cf574c6c53e64b53e8ba40ad +size 118276 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png index d113acab98d..a20fc8ba0f2 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 -size 119958 +oid sha256:ee9bb54d67253543343df89825fb1f3b0bb3e78a0d0abd4c988502c742068795 +size 120267 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png index d113acab98d..c060075f7ca 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 -size 119958 +oid sha256:8370429c82adb1486c4d27c0b12199b2f93c40a7cf574c6c53e64b53e8ba40ad +size 118276 From 362bb2c7c991dc60b6b623bf21c8eacd73ced6ce Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 30 Jun 2021 12:44:51 -0400 Subject: [PATCH 33/73] Remove the primary reflection smooth parameter. --- .../Editor/Material/Hair/ShaderGraph/HairSubTarget.cs | 1 - .../Editor/Material/ShaderGraph/HDBlockFields.cs | 2 -- .../Runtime/Material/Hair/Hair.cs | 2 -- .../Runtime/Material/Hair/Hair.cs.hlsl | 7 +------ .../Runtime/Material/Hair/Hair.hlsl | 8 +------- 5 files changed, 2 insertions(+), 18 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 04b78d8b8a6..acaf09df9ec 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -102,7 +102,6 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) else { context.AddBlock(HDBlockFields.SurfaceDescription.RadialSmoothness, hairData.useRoughenedAzimuthalScattering); - context.AddBlock(HDBlockFields.SurfaceDescription.PrimaryReflectionSmoothness); context.AddBlock(HDBlockFields.SurfaceDescription.CuticleAngle); // TODO: Refraction Index diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index 6f9c4550067..fd6187b8b07 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -125,8 +125,6 @@ public struct SurfaceDescription new FloatControl(-0.1f), ShaderStage.Fragment); public static BlockFieldDescriptor RadialSmoothness = new BlockFieldDescriptor(SurfaceDescription.name, "RadialSmoothness", "Radial Smoothness", "SURFACEDESCRIPTION_RADIALSMOOTHNESS", new FloatControl(0.5f), ShaderStage.Fragment); - public static BlockFieldDescriptor PrimaryReflectionSmoothness = new BlockFieldDescriptor(SurfaceDescription.name, "PrimaryReflectionSmoothness", "Primary Reflection Smoothness", "SURFACEDESCRIPTION_PRIMARYREFLECTIONSMOOTHNESS", - new FloatControl(1f), ShaderStage.Fragment); public static BlockFieldDescriptor CuticleAngle = new BlockFieldDescriptor(SurfaceDescription.name, "CuticleAngle", "Cuticle Angle", "SURFACEDESCRIPTION_CUTICLEANGLE", new FloatControl(3f), ShaderStage.Fragment); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 9efad607f05..2ea032479f0 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -75,8 +75,6 @@ public struct SurfaceData // Marschner [SurfaceDataAttributes("Azimuthal Roughness")] public float perceptualRadialSmoothness; - [SurfaceDataAttributes("Primary Reflection Roughness")] - public float primaryReflectionSmoothness; [SurfaceDataAttributes("Cuticle Angle")] public float cuticleAngle; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index e14ed36e09f..cfaa6818697 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -31,8 +31,7 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_SPECULAR_SHIFT (1415) #define DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_SHIFT (1416) #define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1417) -#define DEBUGVIEW_HAIR_SURFACEDATA_PRIMARY_REFLECTION_ROUGHNESS (1418) -#define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1419) +#define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1418) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -92,7 +91,6 @@ struct SurfaceData float specularShift; float secondarySpecularShift; float perceptualRadialSmoothness; - float primaryReflectionSmoothness; float cuticleAngle; }; @@ -198,9 +196,6 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f case DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS: result = surfacedata.perceptualRadialSmoothness.xxx; break; - case DEBUGVIEW_HAIR_SURFACEDATA_PRIMARY_REFLECTION_ROUGHNESS: - result = surfacedata.primaryReflectionSmoothness.xxx; - break; case DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE: result = surfacedata.cuticleAngle.xxx; break; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 104cd1447d5..1e39fbf7e76 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -234,7 +234,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) // Longitudinal Roughness const float roughnessL = PerceptualRoughnessToRoughness(bsdfData.perceptualRoughness); - bsdfData.roughnessR = roughnessL * PerceptualSmoothnessToPerceptualRoughness(surfaceData.primaryReflectionSmoothness); + bsdfData.roughnessR = roughnessL; bsdfData.roughnessTT = roughnessL * 0.5; bsdfData.roughnessTRT = roughnessL * 2.0; @@ -695,12 +695,6 @@ DirectLighting EvaluateBSDF_Directional(LightLoopContext lightLoopContext, DirectionalLightData lightData, BSDFData bsdfData, BuiltinData builtinData) { - // if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) - // { - // // For now, write it to the BSDFData - // bsdfData.lightPathLength = EvaluateStrandCount(-lightData.forward, posInput.positionWS);; - // } - return ShadeSurface_Directional(lightLoopContext, posInput, builtinData, preLightData, lightData, bsdfData, V); } From 1f6c443adaf8bcf1ac3494d24378ac2d8617dde0 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 6 Jul 2021 12:34:00 -0400 Subject: [PATCH 34/73] Roughness clamping for longitudinal scattering --- .../Runtime/Material/Hair/Hair.hlsl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 1e39fbf7e76..ece91d61d65 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -352,6 +352,10 @@ void ClampRoughness(inout PreLightData preLightData, inout BSDFData bsdfData, fl { bsdfData.perceptualRoughness = max(RoughnessToPerceptualRoughness(minRoughness), bsdfData.perceptualRoughness); bsdfData.secondaryPerceptualRoughness = max(RoughnessToPerceptualRoughness(minRoughness), bsdfData.secondaryPerceptualRoughness); + + bsdfData.roughnessR = max(minRoughness, bsdfData.roughnessR); + bsdfData.roughnessTT = max(minRoughness, bsdfData.roughnessTT); + bsdfData.roughnessTRT = max(minRoughness, bsdfData.roughnessTRT); } // This function is call to precompute heavy calculation before lightloop From 37d45b0892a523b8eec08a3db4b975fdbf6af27b Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 6 Jul 2021 12:54:15 -0400 Subject: [PATCH 35/73] Rename Use Light Facing Normal to Geometry Mode (Cards, Strands) --- .../Editor/Material/Hair/ShaderGraph/HairData.cs | 15 +++++++++++---- .../Hair/ShaderGraph/HairPropertyBlocks.cs | 11 +++++------ .../Hair/ShaderGraph/HairSubTarget.Migration.cs | 2 +- .../Material/Hair/ShaderGraph/HairSubTarget.cs | 2 +- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs index 797502efc50..ee91c5a128d 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs @@ -12,6 +12,12 @@ public enum MaterialType Marschner } + public enum GeometryMode + { + Cards, + Strands + } + public enum ScatteringMode { Approximate, @@ -36,11 +42,12 @@ public ScatteringMode scatteringMode } [SerializeField] - bool m_UseLightFacingNormal = false; - public bool useLightFacingNormal + GeometryMode m_GeometryMode; + + public GeometryMode geometryMode { - get => m_UseLightFacingNormal; - set => m_UseLightFacingNormal = value; + get => m_GeometryMode; + set => m_GeometryMode = value; } [SerializeField] diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 0109cea8928..ec620ee6e43 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -27,7 +27,6 @@ public HairSurfaceOptionPropertyBlock(SurfaceOptionPropertyBlock.Features featur protected override void CreatePropertyGUI() { - // TODO: Un-hide me when Marschner BSDF is available. AddProperty(Styles.materialType, () => hairData.materialType, (newValue) => hairData.materialType = newValue); base.CreatePropertyGUI(); @@ -38,9 +37,9 @@ class HairAdvancedOptionsPropertyBlock : AdvancedOptionsPropertyBlock { class Styles { - public static GUIContent useLightFacingNormal = new GUIContent("Use Light Facing Normal", "TODO"); - public static GUIContent useRoughenedAzimuthalScattering = new GUIContent("Allow Radial Smoothness", ""); - public static GUIContent scatteringMode = new GUIContent("Scattering Mode", ""); + public static GUIContent geometryMode = new GUIContent("Geometry Mode", "TODO"); + public static GUIContent scatteringMode = new GUIContent("Scattering Mode", "TODO"); + public static GUIContent useRoughenedAzimuthalScattering = new GUIContent("Allow Radial Smoothness", "TODO"); } HairData hairData; @@ -52,12 +51,12 @@ protected override void CreatePropertyGUI() base.CreatePropertyGUI(); // Hair specific properties GUI - AddProperty(Styles.useLightFacingNormal, () => hairData.useLightFacingNormal, (newValue) => hairData.useLightFacingNormal = newValue); + AddProperty(Styles.geometryMode, () => hairData.geometryMode, (newValue) => hairData.geometryMode = newValue); if (hairData.materialType == HairData.MaterialType.Marschner) { - AddProperty(Styles.useRoughenedAzimuthalScattering, () => hairData.useRoughenedAzimuthalScattering, (newValue) => hairData.useRoughenedAzimuthalScattering = newValue); AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); + AddProperty(Styles.useRoughenedAzimuthalScattering, () => hairData.useRoughenedAzimuthalScattering, (newValue) => hairData.useRoughenedAzimuthalScattering = newValue); } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.Migration.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.Migration.cs index 572fe7112f1..01a64e30e84 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.Migration.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.Migration.cs @@ -57,7 +57,7 @@ public bool TryUpgradeFromMasterNode(IMasterNode1 masterNode, out Dictionary Date: Tue, 6 Jul 2021 18:18:17 -0400 Subject: [PATCH 36/73] Documentation - First Pass --- .../Documentation~/master-stack-hair.md | 5 ++++- .../snippets/shader-graph-blocks/cuticle-angle.md | 6 ++++++ .../snippets/shader-graph-blocks/smoothness-radial.md | 6 ++++++ .../advanced-options/allow-radial-smoothness.md | 4 ++++ .../shader-properties/advanced-options/geometry-type.md | 4 ++++ 5 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md create mode 100644 com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md create mode 100644 com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md create mode 100644 com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/geometry-type.md diff --git a/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md b/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md index 6495cd21188..0f901b9f18f 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md @@ -75,10 +75,12 @@ When you create a new Hair Master Stack, the Fragment Context contains the follo [!include[](snippets/shader-graph-blocks/transmittance.md)] [!include[](snippets/shader-graph-blocks/rim-transmission-intensity.md)] [!include[](snippets/shader-graph-blocks/smoothness.md)] +[!include[](snippets/shader-graph-blocks/smoothness-radial.md)] [!include[](snippets/shader-graph-blocks/ambient-occlusion.md)] [!include[](snippets/shader-graph-blocks/alpha.md)] [!include[](snippets/shader-graph-blocks/specular-tint.md)] [!include[](snippets/shader-graph-blocks/specular-shift.md)] +[!include[](snippets/shader-graph-blocks/cuticle-angle.md)] [!include[](snippets/shader-graph-blocks/secondary-specular-tint.md)] [!include[](snippets/shader-graph-blocks/secondary-specular-shift.md)] [!include[](snippets/shader-graph-blocks/emission.md)] @@ -154,5 +156,6 @@ Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add [!include[](snippets/shader-properties/advanced-options/override-baked-gi.md)] [!include[](snippets/shader-properties/advanced-options/support-lod-crossfade.md)] [!include[](snippets/shader-properties/advanced-options/add-precomputed-velocity.md)] -[!include[](snippets/shader-properties/advanced-options/use-light-facing-normal.md)] +[!include[](snippets/shader-properties/advanced-options/geometry-type.md)] +[!include[](snippets/shader-properties/advanced-options/allow-radial-smoothness.md)] diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md new file mode 100644 index 00000000000..810e14438db --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md @@ -0,0 +1,6 @@ + +**Smoothness** +The angle in degrees at which the scales on a hair fiber are tilted from the strand direction. (for human hair, typically between 2 to 3 degrees). Use this property to “shift” the highlight.. +None +3 + diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md new file mode 100644 index 00000000000..40373944a1e --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md @@ -0,0 +1,6 @@ + +**Smoothness** +Controls the internal scattering of the light paths and absorption that occurs within the hair fiber. “Allow Radial Smoothness” must be enabled on the hair target to use this property. +None +0.5 + diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md new file mode 100644 index 00000000000..3137ccfccaa --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md @@ -0,0 +1,4 @@ + +**Allow Radial Smoothness** +Adds a secondary **Radial Smoothness** block to the target, controlling the internal scattering of the light paths and absorption that occurs within the fiber. Enabling this option comes at a slight performance cost to the shader; when disabled, it will fall back to an approximation of the internal scattering. + diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/geometry-type.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/geometry-type.md new file mode 100644 index 00000000000..d6aed14bd3f --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/geometry-type.md @@ -0,0 +1,4 @@ + +**Geometry Type** +Indicates the type of geometry being used to represent the hair, allowing the shading model to make informed approximations. Note that switching between these two types will produce slightly differing results, due to how the underling shading model approximates the hair fiber. The options are:
• **Cards**: Representation by hair "cards"; a projection of hair fibers onto a drastically simplified proxy geometry.
• **Strands**: Representation by screen-aligned ribbons, or tubes; an explicit representation of a hair fiber. + From f1343e4ecceaf61be54289d0063d466c061d86cb Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 6 Jul 2021 18:18:39 -0400 Subject: [PATCH 37/73] Rename Geometry Mode -> Geometry Type --- .../Editor/Material/Hair/ShaderGraph/HairData.cs | 10 +++++----- .../Material/Hair/ShaderGraph/HairPropertyBlocks.cs | 6 ++++-- .../Hair/ShaderGraph/HairSubTarget.Migration.cs | 2 +- .../Editor/Material/Hair/ShaderGraph/HairSubTarget.cs | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs index ee91c5a128d..f1dd48d7cc3 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs @@ -12,7 +12,7 @@ public enum MaterialType Marschner } - public enum GeometryMode + public enum GeometryType { Cards, Strands @@ -42,12 +42,12 @@ public ScatteringMode scatteringMode } [SerializeField] - GeometryMode m_GeometryMode; + GeometryType m_GeometryType; - public GeometryMode geometryMode + public GeometryType geometryType { - get => m_GeometryMode; - set => m_GeometryMode = value; + get => m_GeometryType; + set => m_GeometryType = value; } [SerializeField] diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index ec620ee6e43..136e1c625ea 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -37,7 +37,7 @@ class HairAdvancedOptionsPropertyBlock : AdvancedOptionsPropertyBlock { class Styles { - public static GUIContent geometryMode = new GUIContent("Geometry Mode", "TODO"); + public static GUIContent geometryType = new GUIContent("Geometry Type", "TODO"); public static GUIContent scatteringMode = new GUIContent("Scattering Mode", "TODO"); public static GUIContent useRoughenedAzimuthalScattering = new GUIContent("Allow Radial Smoothness", "TODO"); } @@ -51,11 +51,13 @@ protected override void CreatePropertyGUI() base.CreatePropertyGUI(); // Hair specific properties GUI - AddProperty(Styles.geometryMode, () => hairData.geometryMode, (newValue) => hairData.geometryMode = newValue); + AddProperty(Styles.geometryType, () => hairData.geometryType, (newValue) => hairData.geometryType = newValue); if (hairData.materialType == HairData.MaterialType.Marschner) { + // Note: Un-hide me when the improved multiple scattering approximation is available. AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); + AddProperty(Styles.useRoughenedAzimuthalScattering, () => hairData.useRoughenedAzimuthalScattering, (newValue) => hairData.useRoughenedAzimuthalScattering = newValue); } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.Migration.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.Migration.cs index 01a64e30e84..37ef7325be0 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.Migration.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.Migration.cs @@ -57,7 +57,7 @@ public bool TryUpgradeFromMasterNode(IMasterNode1 masterNode, out Dictionary Date: Wed, 7 Jul 2021 10:44:57 -0400 Subject: [PATCH 38/73] Tooltips - Also hide the Scattering Mode until the improved approximation is merged. --- .../Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 136e1c625ea..2759039f386 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -37,9 +37,9 @@ class HairAdvancedOptionsPropertyBlock : AdvancedOptionsPropertyBlock { class Styles { - public static GUIContent geometryType = new GUIContent("Geometry Type", "TODO"); + public static GUIContent geometryType = new GUIContent("Geometry Type", "Indicates the type of geometry being used to represent the hair, allowing the shading model to make informed approximations."); public static GUIContent scatteringMode = new GUIContent("Scattering Mode", "TODO"); - public static GUIContent useRoughenedAzimuthalScattering = new GUIContent("Allow Radial Smoothness", "TODO"); + public static GUIContent useRoughenedAzimuthalScattering = new GUIContent("Allow Radial Smoothness", "Adds a Radial Smoothness block to the target, controlling the internal scattering of the light paths and absorption that occurs within the fiber."); } HairData hairData; @@ -56,7 +56,7 @@ protected override void CreatePropertyGUI() if (hairData.materialType == HairData.MaterialType.Marschner) { // Note: Un-hide me when the improved multiple scattering approximation is available. - AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); + // AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); AddProperty(Styles.useRoughenedAzimuthalScattering, () => hairData.useRoughenedAzimuthalScattering, (newValue) => hairData.useRoughenedAzimuthalScattering = newValue); } From 10b2f8f789a5018298f6a383bd1187a4715cf54c Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 7 Jul 2021 15:20:34 -0400 Subject: [PATCH 39/73] Un-hide the scattering mode. --- .../Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 2759039f386..49905a7dfe1 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -55,9 +55,7 @@ protected override void CreatePropertyGUI() if (hairData.materialType == HairData.MaterialType.Marschner) { - // Note: Un-hide me when the improved multiple scattering approximation is available. - // AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); - + AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); AddProperty(Styles.useRoughenedAzimuthalScattering, () => hairData.useRoughenedAzimuthalScattering, (newValue) => hairData.useRoughenedAzimuthalScattering = newValue); } } From dfadcff1fcbb65cf4994bb2f1cc253ec586955e9 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 15 Jul 2021 12:21:45 -0400 Subject: [PATCH 40/73] Initial commit dual scattering preintegration and global scattering computation --- .../Runtime/Material/Hair/Hair.cs | 53 ++++ .../Runtime/Material/Hair/Hair.hlsl | 46 ++- .../Runtime/Material/Hair/HairScattering.hlsl | 143 ++++++++-- .../Hair/PreIntegratedFiberScattering.compute | 127 +++++++++ .../PreIntegratedFiberScattering.compute.meta | 8 + .../HDRenderPipelineRuntimeResources.cs | 6 +- .../HDRenderPipelineRuntimeResources.asset | 265 ++++++------------ 7 files changed, 441 insertions(+), 207 deletions(-) create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute.meta diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 2ea032479f0..e44a6ba7e8e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -1,3 +1,5 @@ +using System; +using UnityEngine.Experimental.Rendering; using UnityEngine.Rendering.HighDefinition.Attributes; namespace UnityEngine.Rendering.HighDefinition @@ -151,6 +153,21 @@ public struct BSDFData private Texture2D m_PreIntegratedAzimuthalScatteringLUT; + // X - Roughness + // Y - Theta + // Z - Absorption + private ComputeShader m_PreIntegratedFiberScatteringCS; + private RenderTexture m_PreIntegratedFiberScatteringLUT; + private const int m_DimTheta = 64; + private const int m_DimBeta = 64; + private const int m_DimAbsorption = 64; + private bool m_PreIntegratedFiberScatteringIsInit; + + // NOTE: Since we re-use Hair.hlsl for both the BSDF pre-integration and at runtime, we need to maintain these two different binding + // names to avoid compiler complaining. + public static readonly int _PreIntegratedHairFiberScatteringUAV = Shader.PropertyToID("_PreIntegratedHairFiberScatteringUAV"); + public static readonly int _PreIntegratedHairFiberScattering = Shader.PropertyToID("_PreIntegratedHairFiberScattering"); + public Hair() {} public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntimeResources defaultResources) @@ -159,17 +176,46 @@ public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntim LTCAreaLight.instance.Build(); m_PreIntegratedAzimuthalScatteringLUT = defaultResources.textures.preintegratedAzimuthalScattering; + + // Initialize the dual scattering LUT. + m_PreIntegratedFiberScatteringLUT = new RenderTexture(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16_SFloat) + { + dimension = TextureDimension.Tex3D, + volumeDepth = m_DimAbsorption, + enableRandomWrite = true, + hideFlags = HideFlags.HideAndDontSave, + filterMode = FilterMode.Point, + wrapMode = TextureWrapMode.Clamp, + name = CoreUtils.GetRenderTargetAutoName(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16_SFloat, "PreIntegratedFiberScattering") + }; + m_PreIntegratedFiberScatteringLUT.Create(); + + m_PreIntegratedFiberScatteringCS = defaultResources.shaders.preIntegratedFiberScatteringCS; } public override void Cleanup() { PreIntegratedFGD.instance.Cleanup(PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse); LTCAreaLight.instance.Cleanup(); + + CoreUtils.Destroy(m_PreIntegratedFiberScatteringLUT); + m_PreIntegratedFiberScatteringLUT = null; } public override void RenderInit(CommandBuffer cmd) { PreIntegratedFGD.instance.RenderInit(PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse, cmd); + + if (m_PreIntegratedFiberScatteringIsInit || m_PreIntegratedFiberScatteringCS == null) + return; + + // Preintegration of the dual scattering LUT. + { + cmd.SetComputeTextureParam(m_PreIntegratedFiberScatteringCS, 0, _PreIntegratedHairFiberScatteringUAV, m_PreIntegratedFiberScatteringLUT); + cmd.DispatchCompute(m_PreIntegratedFiberScatteringCS, 0, HDUtils.DivRoundUp(m_DimTheta, 8), HDUtils.DivRoundUp(m_DimBeta, 8), HDUtils.DivRoundUp(m_DimAbsorption, 8)); + } + + m_PreIntegratedFiberScatteringIsInit = true; } public override void Bind(CommandBuffer cmd) @@ -179,6 +225,13 @@ public override void Bind(CommandBuffer cmd) if (m_PreIntegratedAzimuthalScatteringLUT != null) cmd.SetGlobalTexture(HDShaderIDs._PreIntegratedAzimuthalScattering, m_PreIntegratedAzimuthalScatteringLUT); + + + if (m_PreIntegratedFiberScatteringLUT == null) + { + throw new Exception("Pre-Integrated Hair Fiber LUT not available!"); + } + cmd.SetGlobalTexture(_PreIntegratedHairFiberScattering, m_PreIntegratedFiberScatteringLUT); } } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index ece91d61d65..b3406ce1391 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -6,6 +6,7 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/SubsurfaceScattering/SubsurfaceScattering.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/NormalBuffer.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/VolumeRendering.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl" //----------------------------------------------------------------------------- // Texture and constant buffer declaration @@ -25,9 +26,15 @@ // #define HAIR_DISPLAY_REFERENCE_BSDF // #define HAIR_DISPLAY_REFERENCE_IBL +#if _USE_DENSITY_VOLUME_SCATTERING +// Temp +#define LIGHT_EVALUATION_NO_SHADOWS +#endif + // An extra material feature flag we utilize to compile two different versions of BSDF evaluation (one with transmission lobe // for analytic lights, one without transmission lobe for environment light). -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 16) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 16) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING (1 << 17) //----------------------------------------------------------------------------- // Helper functions/variable specific to this material @@ -244,7 +251,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) #else // Need to provide some sensible default in case of no roughened azimuthal scattering, since currently our // absorption is dependent on it. - bsdfData.roughnessRadial = 0.5; + bsdfData.roughnessRadial = 0.3; #endif // Absorption @@ -328,7 +335,7 @@ struct PreLightData // Scattering #if _USE_DENSITY_VOLUME_SCATTERING - + HairScatteringData scatteringData; #endif // IBL @@ -425,6 +432,12 @@ PreLightData GetPreLightData(float3 V, PositionInputs posInput, inout BSDFData b // Construct a right-handed view-dependent orthogonal basis around the normal preLightData.orthoBasisViewNormal = GetOrthoBasisViewNormal(V, N, preLightData.NdotV); +#if _USE_DENSITY_VOLUME_SCATTERING + // We initialize this to zero in this case, as it is actually evaluated per-light. + // (Also, we can't specify struct in BSDFData which is why we define it in PreLightData). + ZERO_INITIALIZE(HairScatteringData, preLightData.scatteringData); +#endif + return preLightData; } @@ -596,7 +609,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Various terms reused between lobe evaluation. float M, D = 0; - float3 A, F, T, S = 0; + float3 A, F, Tr, S = 0; // Solve the first three lobes (R, TT, TRT). @@ -628,8 +641,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Note: H = ~0.55 seems to be more suitable for this lobe's attenuation, but H = 0 allows us to simplify more of the math at the cost of slightly more error. // Plot: https://www.desmos.com/calculator/pum8esu6ot F = F_Schlick(bsdfData.fresnel0, cosThetaD); - T = exp(-4 * mu); - A = Sq(1 - F) * T; + Tr = exp(-4 * mu); + A = Sq(1 - F) * Tr; S += M * A * D; } @@ -649,8 +662,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Attenutation (Simplified for H = √3/2) F = F_Schlick(bsdfData.fresnel0, cosThetaD * 0.5); - T = exp(-2 * mu * (1 + cos(2 * FastASin(HAIR_H_TRT / etaPrime)))); - A = Sq(1 - F) * F * Sq(T); + Tr = exp(-2 * mu * (1 + cos(2 * FastASin(HAIR_H_TRT / etaPrime)))); + A = Sq(1 - F) * F * Sq(Tr); S += M * A * D; } @@ -662,7 +675,11 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Multiple Scattering #if _USE_DENSITY_VOLUME_SCATTERING - cbsdf.diffR = 0; + if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING)) + { + // Debug Dual Scattering + cbsdf.specR = preLightData.scatteringData.globalScattering; + } #else #if _USE_LIGHT_FACING_NORMAL // See "Analytic Tangent Irradiance Environment Maps for Anisotropic Surfaces". @@ -688,7 +705,6 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialEvaluation.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl" -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl" //----------------------------------------------------------------------------- // EvaluateBSDF_Directional @@ -711,6 +727,16 @@ DirectLighting EvaluateBSDF_Punctual(LightLoopContext lightLoopContext, float3 V, PositionInputs posInput, PreLightData preLightData, LightData lightData, BSDFData bsdfData, BuiltinData builtinData) { +#if _USE_DENSITY_VOLUME_SCATTERING + // TODO: Move this whole block into the shader surface, or perhaps a callback. + // Currently we have to recompute the light vectors twice like this. + float3 L; + float4 distances; // {d, d^2, 1/d, d_proj} + GetPunctualLightVectors(posInput.positionWS, lightData, L, distances); + + preLightData.scatteringData = EvaluateMultipleScattering(bsdfData, V, L, posInput.positionWS); +#endif + return ShadeSurface_Punctual(lightLoopContext, posInput, builtinData, preLightData, lightData, bsdfData, V); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl index 0784eed08c2..7685bbca4e4 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl @@ -4,31 +4,136 @@ // #include "Packages/com.unity.demoteam.hair/Runtime/HairSimComputeVolumeUtility.hlsl" #endif +#define STRAND_DIAMETER_MILLIMETERS 0.02 +#define STRAND_DIAMETER_METERS (STRAND_DIAMETER_MILLIMETERS * METERS_PER_MILLIMETER) + +TEXTURE3D(_PreIntegratedHairFiberScattering); + +struct HairScatteringData +{ + float strandCount; + + float3 averageScatteringFront; + float3 averageScatteringBack; + + float3 globalScattering; + float3 localScattering; +}; + +float ScatteringSpreadGaussian(float x, float v) +{ + return rcp(sqrt(TWO_PI * v)) * exp(-Sq(x) / (2 * v)); +} + float EvaluateStrandCount(float3 L, float3 P) { #if _USE_DENSITY_VOLUME_SCATTERING // Trace against the density field in the light ray direction. -// const float3 worldPos = GetAbsolutePositionWS(P); -// const float3 worldDir = L; -// -// const int numStepsWithinCell = 10; -// const int numSteps = _VolumeCells.x * numStepsWithinCell; -// -// VolumeTraceState trace = VolumeTraceBegin(worldPos, worldDir, 0.5, numStepsWithinCell); -// -// float density = 0; -// -// for (int i = 0; i != numSteps; i++) -// { -// if (VolumeTraceStep(trace)) -// { -// density += VolumeSampleScalar(_VolumeDensity, trace.uvw); -// } -// } -// -// return saturate(density); + const float3 worldPos = GetAbsolutePositionWS(P); + const float3 worldDir = L; + + const int numStepsWithinCell = 10; + const int numSteps = _VolumeCells.x * numStepsWithinCell; + + VolumeTraceState trace = VolumeTraceBegin(worldPos, worldDir, 0.5, numStepsWithinCell); + + float strandCountApprox = 0; + + for (int i = 0; i != numSteps; i++) + { + if (VolumeTraceStep(trace)) + { + float cellDensity = VolumeSampleScalar(_VolumeDensity, trace.uvw); + + // TODO: Strand Count + strandCountApprox += cellDensity; + } + } + + return strandCountApprox; #else // TODO return 1; #endif } + +HairScatteringData SampleAverageScattering(float3 diffuseColor, float perceptualRoughness, float sinThetaI) +{ + HairScatteringData scatteringData; + ZERO_INITIALIZE(HairScatteringData, scatteringData); + + // Prepare the sampling coordinate. + float X = PerceptualRoughnessToPerceptualSmoothness(perceptualRoughness); + float Y = abs(sinThetaI); + float3 Z = clamp((diffuseColor), 0.01, 0.99); // Need to clamp the absorption a bit due to artifacts at these boundaries. + + // Sample the LUT for each color channel (wavelength). + // Note that we parameterize by diffuse color, not absorption, to fit in [0, 1]. + float2 R = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.r), 0).xy; + float2 G = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.g), 0).xy; + float2 B = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.b), 0).xy; + + scatteringData.averageScatteringFront = float3(R.x, G.x, B.x); + scatteringData.averageScatteringBack = float3(R.y, G.y, B.y); + + return scatteringData; +} + +HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float3 L, float3 P) +{ + float3 T = bsdfData.hairStrandDirectionWS; + + // The dot product of an incident direction with the strand direction gives the sine + // of the angle between the incident direction and the normal plane. + float sinThetaI = dot(T, L); + + // TEMP: Extra angle derivation. + float thetaH, cosThetaD; + { + float sinThetaR = dot(T, V); + + float thetaI = FastASin(sinThetaI); + float thetaR = FastASin(sinThetaR); + thetaH = (thetaI + thetaR) * 0.5; + + cosThetaD = cos((thetaR - thetaI) * 0.5); + } + + // Sample the average front and back scattering. + HairScatteringData scatteringData = SampleAverageScattering(bsdfData.diffuseColor, bsdfData.perceptualRoughness, sinThetaI); + + // Fetch the number of hair fibers between the shading point x and the light. + scatteringData.strandCount = EvaluateStrandCount(L, P); + + // Solve for multiple scattering in a volume of hair fibers with concepts from: + // "Dual Scattering Approximation for Fast Multiple Scattering in Hair" (Zinke et. al) + // "Efficient Implementation of the Dual Scattering Model in RenderMan" (Sadeghi et. al) + // "A BSSRDF Model for Efficient Rendering of Fur with Global Illumination" (Yan et. al) + + // Global scattering. + { + // Following the observation of Zinke et. al., density factor (ratio of occlusion of the shading point by neighboring strands) + // can be approximated with this constant to match most path traced references. + const float densityFactorFront = 0.7; + + // By assuming that all hair strands between the shading point and the light are oriented the same, we can avoid evaluating the average + // scattering at every intersection, and instead approximate the transmittance like so. This is suitable for long, straighter hair, but + // have a greater error for curlier hair styles. + float3 forwardTransmittance = densityFactorFront * pow(scatteringData.averageScatteringFront, scatteringData.strandCount); + + // We make a similar approximation for computation of the accumulated variance, by assuming strands all have the same roughness. + // Since we only evaluate front scattering for global scattering, where TT is the dominant lobe, we accumulate that roughness. + float sigmaF = bsdfData.roughnessTT * scatteringData.strandCount; + + float forwardSpread = ScatteringSpreadGaussian(thetaH, sigmaF) * rcp(PI * cosThetaD); + + scatteringData.globalScattering = forwardTransmittance * forwardSpread; + } + + // Local scattering, + { + scatteringData.localScattering = 0; + } + + return scatteringData; +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute new file mode 100644 index 00000000000..0885114405b --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute @@ -0,0 +1,127 @@ +#pragma kernel Main + +// This define is required for invoking BSDF. +#define HAS_LIGHTLOOP + +#define DIM 64 +#define SPHERE_SAMPLES 128 +#define DPHI radians(2) + +// HDRP generic includes +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStencilUsage.cs.hlsl" + +SurfaceData ConfigureFiberSurface(float diffuseColor, float perceptualSmoothness) +{ + SurfaceData surfaceData; + ZERO_INITIALIZE(SurfaceData, surfaceData); + + // Our fiber scattering function is the Marschner-based BSDF. + surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER; + + // Skip the scattering component of the BCSDF as we are pre-integrating from the single-scattered reflectance. + surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING; + + // Here we factor by Diffuse Color, which will be converted to Absorption in ConvertSurfaceDataToBSDFData. + // Note, this LUT is parameterized by single color channel / wavelength, to reduce the dimensionality. This means to + // compute the average forward and backward scattering for a given absorption, the LUT must be sampled three times. + surfaceData.diffuseColor = diffuseColor.xxx; + + // Smoothness (Longitudinal Roughness) + surfaceData.perceptualSmoothness = perceptualSmoothness; + + // Radial Smoothness (Azimuthal Roughness). + surfaceData.perceptualRadialSmoothness = 0.3; + + // Cuticle Angle + surfaceData.cuticleAngle = 3; + + // The theoretical fiber points in the Z-up direction. + surfaceData.hairStrandDirectionWS = float3(0, 0, 1); + + return surfaceData; +} + +// Parameterization: +// X - Perceptual Smoothness +// Y - Theta +// Z - Diffuse Color (single channel) +RWTexture3D _PreIntegratedHairFiberScatteringUAV; + +// Pre-integrate the average attenuation on the front and back hemisphere on a hair fiber. +// Ref: Equation 6 & 12 in "Dual Scattering Approximation for Fast Multiple Scattering in Hair" +// ----------------------------------------------------------------- + +[numthreads(8, 8, 8)] +void Main (uint3 dispatchThreadID : SV_DispatchThreadID) +{ + // Convert the dispatch coordinates to the generation space [0,1]. + float3 UVW = float3(((float3)dispatchThreadID + 0.5) / DIM); + + // Configure a theoretical hair fiber to evaluate the average attenuation. + SurfaceData surfaceData = ConfigureFiberSurface(UVW.z, UVW.x); + + // Use the conversion from the surface data to compute all of the per-lobe bsdf information. + BSDFData bsdfData = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceData); + + // Need to clamp the roughness manually since we invoke the BSDF manually. + // Without it, we get some artifacting in the LUT. + bsdfData.roughnessR = max(0.05, bsdfData.roughnessR); + bsdfData.roughnessTT = max(0.05, bsdfData.roughnessTT); + bsdfData.roughnessTRT = max(0.05, bsdfData.roughnessTRT); + + // Unused in this case. + PreLightData preLightData; + ZERO_INITIALIZE(PreLightData, preLightData); + + // Configure the initial incident theta direction. + float sinThetaI = UVW.y; + float cosThetaI = sqrt(saturate(1 - Sq(sinThetaI))); + + // Instead of integrating over the front and back hemispheres separately, we instead uniformly sample the sphere and + // sort the average energy as front or back scattering depending on the random direction's orientation. + + float2 A = 0; + uint2 C = 0; + + for (uint w = 0; w < SPHERE_SAMPLES; w++) + { + float2 U = Hammersley2d(w, SPHERE_SAMPLES); + float3 V = SampleSphereUniform(U.x, U.y); + + // Integrate over all incident phi. + for (float phi = -HALF_PI; phi < HALF_PI; phi += DPHI) + { + // Places a light on the back scattering hemisphere (due to the constriction of phi to the -pi/2 to pi/2 range). + float3 L = SphericalToCartesian(phi, cosThetaI); + + // Invoke the fiber scattering function. + CBSDF cbsdf = EvaluateBSDF(V, L, preLightData, bsdfData); + const float Fs = cbsdf.specR.x; + + // Sort the energy based on which hemisphere the outgoing direction was measured from. + // Doing this effectively simplifies the complex longitudinal scattering lobes into one + // forward (TT dominant) and one backward (R / TRT dominant) lobe. The theoretical fiber + // is facing Z-up, the incident light is on the back hemisphere; thus, outgoing directions + // in the front hemisphere must be negative in the X direction. + if (V.x < 0) + { + // Contribute to the average forward scattering. + A.x += Fs / INV_FOUR_PI; C.x++; + } + else + { + // Contribute to the average backward scattering. + A.y += Fs / INV_FOUR_PI; C.y++; + } + } + } + + _PreIntegratedHairFiberScatteringUAV[dispatchThreadID] = INV_PI * (A / float2(C) * 0.5); +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute.meta new file mode 100644 index 00000000000..64ddd9481b5 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4a087c9d074552c48aeb85184d56312e +ComputeShaderImporter: + externalObjects: {} + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs index e6a971f2b55..e805fc8b379 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs @@ -172,12 +172,14 @@ public sealed class ShaderResources public Shader preIntegratedFGD_GGXDisneyDiffusePS; [Reload("Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_CharlieFabricLambert.shader")] public Shader preIntegratedFGD_CharlieFabricLambertPS; - [Reload("Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader")] - public Shader preIntegratedFGD_MarschnerPS; [Reload("Runtime/Material/AxF/PreIntegratedFGD_Ward.shader")] public Shader preIntegratedFGD_WardPS; [Reload("Runtime/Material/AxF/PreIntegratedFGD_CookTorrance.shader")] public Shader preIntegratedFGD_CookTorrancePS; + [Reload("Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader")] + public Shader preIntegratedFGD_MarschnerPS; + [Reload("Runtime/Material/Hair/PreIntegratedFiberScattering.compute")] + public ComputeShader preIntegratedFiberScatteringCS; // Utilities / Core [Reload("Runtime/Core/CoreResources/EncodeBC6H.compute")] diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset index 7ad502a6daa..6de174577e8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset @@ -14,204 +14,130 @@ MonoBehaviour: m_EditorClassIdentifier: shaders: defaultPS: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} - debugDisplayLatlongPS: {fileID: 4800000, guid: c1d1d149a043a5349ba367da6c2051ba, - type: 3} - debugViewMaterialGBufferPS: {fileID: 4800000, guid: 439949ea1bfa91b4ba0d04269fcde33d, - type: 3} + debugDisplayLatlongPS: {fileID: 4800000, guid: c1d1d149a043a5349ba367da6c2051ba, type: 3} + debugViewMaterialGBufferPS: {fileID: 4800000, guid: 439949ea1bfa91b4ba0d04269fcde33d, type: 3} debugViewTilesPS: {fileID: 4800000, guid: c7c2bd17b06ceb4468e14081aaf1b96f, type: 3} debugFullScreenPS: {fileID: 4800000, guid: e874aca2df8300a488258738c31f85cf, type: 3} - debugColorPickerPS: {fileID: 4800000, guid: 8137b807709e178498f22ed710864bb0, - type: 3} + debugColorPickerPS: {fileID: 4800000, guid: 8137b807709e178498f22ed710864bb0, type: 3} debugExposurePS: {fileID: 4800000, guid: 0ef322534f047a34c96d29419d56d17a, type: 3} - debugLightVolumePS: {fileID: 4800000, guid: 8e706c0e71fcec34a8f5c9713e5e2943, - type: 3} - debugLightVolumeCS: {fileID: 7200000, guid: f5d5d21faef5cf445ac2c5d8ff9c4184, - type: 3} + debugLightVolumePS: {fileID: 4800000, guid: 8e706c0e71fcec34a8f5c9713e5e2943, type: 3} + debugLightVolumeCS: {fileID: 7200000, guid: f5d5d21faef5cf445ac2c5d8ff9c4184, type: 3} debugBlitQuad: {fileID: 4800000, guid: cf5ca5b6ef18b3f429ed707ee9ceac9f, type: 3} - debugViewVirtualTexturingBlit: {fileID: 4800000, guid: 55d195396b03b804eb78c92d468e3c8e, - type: 3} + debugViewVirtualTexturingBlit: {fileID: 4800000, guid: 55d195396b03b804eb78c92d468e3c8e, type: 3} materialError: {fileID: 4800000, guid: 79a966a5200a456188dec0d48d805614, type: 3} - probeVolumeDebugShader: {fileID: 4800000, guid: 3b21275fd12d65f49babb5286f040f2d, - type: 3} + probeVolumeDebugShader: {fileID: 4800000, guid: 3b21275fd12d65f49babb5286f040f2d, type: 3} deferredPS: {fileID: 4800000, guid: 00dd221e34a6ab349a1196b0f2fab693, type: 3} colorPyramidPS: {fileID: 4800000, guid: 2fcfb8d92f45e4549b3f0bad5d0654bf, type: 3} depthPyramidCS: {fileID: 7200000, guid: 64a553bb564274041906f78ffba955e4, type: 3} maxZCS: {fileID: 7200000, guid: e95abf8c7230c344595f41c4dd5ff517, type: 3} copyChannelCS: {fileID: 7200000, guid: a4d45eda75e8e474dbe24a31f741f3b4, type: 3} - screenSpaceReflectionsCS: {fileID: 7200000, guid: d1de9ac7d9016204da289affe9677942, - type: 3} + screenSpaceReflectionsCS: {fileID: 7200000, guid: d1de9ac7d9016204da289affe9677942, type: 3} applyDistortionPS: {fileID: 4800000, guid: 02ae56f4306413c4a96dcf005cde1971, type: 3} - clearDispatchIndirectCS: {fileID: 7200000, guid: fc1f553acb80a6446a32d33e403d0656, - type: 3} + clearDispatchIndirectCS: {fileID: 7200000, guid: fc1f553acb80a6446a32d33e403d0656, type: 3} clearLightListsCS: {fileID: 7200000, guid: 743eb3491795b9545955695d591195a1, type: 3} - buildDispatchIndirectCS: {fileID: 7200000, guid: 4eb1b418be7044c40bb5200496c50f14, - type: 3} + buildDispatchIndirectCS: {fileID: 7200000, guid: 4eb1b418be7044c40bb5200496c50f14, type: 3} buildScreenAABBCS: {fileID: 7200000, guid: 728dce960f8a9c44bbc3abb3b851d8f6, type: 3} - buildPerTileLightListCS: {fileID: 7200000, guid: 65af3444cbf4b3747a4dead7ee00cfee, - type: 3} - buildPerBigTileLightListCS: {fileID: 7200000, guid: 5ee1f9d6e09abe045b2f5e0b784b9072, - type: 3} - buildPerVoxelLightListCS: {fileID: 7200000, guid: 0bb1b7e0ddcd5c44baf3ddc7456eb196, - type: 3} - lightListClusterClearAtomicIndexCS: {fileID: 7200000, guid: 1e3472a94b14a334a93230bbc700d7b2, - type: 3} - buildMaterialFlagsCS: {fileID: 7200000, guid: fb3eda953cd6e634e877fb777be2cd08, - type: 3} + buildPerTileLightListCS: {fileID: 7200000, guid: 65af3444cbf4b3747a4dead7ee00cfee, type: 3} + buildPerBigTileLightListCS: {fileID: 7200000, guid: 5ee1f9d6e09abe045b2f5e0b784b9072, type: 3} + buildPerVoxelLightListCS: {fileID: 7200000, guid: 0bb1b7e0ddcd5c44baf3ddc7456eb196, type: 3} + lightListClusterClearAtomicIndexCS: {fileID: 7200000, guid: 1e3472a94b14a334a93230bbc700d7b2, type: 3} + buildMaterialFlagsCS: {fileID: 7200000, guid: fb3eda953cd6e634e877fb777be2cd08, type: 3} deferredCS: {fileID: 7200000, guid: 0b64f79746d2daf4198eaf6eab9af259, type: 3} contactShadowCS: {fileID: 7200000, guid: 3e6900e06dc185a4380af4dacb4db0a4, type: 3} - volumeVoxelizationCS: {fileID: 7200000, guid: c20b371db720da244b73830ec74a343a, - type: 3} - volumetricLightingCS: {fileID: 7200000, guid: b4901a10df2d1e24282725e9fbc77c97, - type: 3} - volumetricLightingFilteringCS: {fileID: 7200000, guid: ef9a910d0ec6ebb41ae3f5c7a69daf46, - type: 3} + volumeVoxelizationCS: {fileID: 7200000, guid: c20b371db720da244b73830ec74a343a, type: 3} + volumetricLightingCS: {fileID: 7200000, guid: b4901a10df2d1e24282725e9fbc77c97, type: 3} + volumetricLightingFilteringCS: {fileID: 7200000, guid: ef9a910d0ec6ebb41ae3f5c7a69daf46, type: 3} deferredTilePS: {fileID: 4800000, guid: dedaf4ea0d134ca4aad1d95a558c46e5, type: 3} - screenSpaceShadowPS: {fileID: 4800000, guid: bfa43a48695613b4ea19c58858ae1a61, - type: 3} - subsurfaceScatteringCS: {fileID: 7200000, guid: b06a7993621def248addd55d0fe931b1, - type: 3} + screenSpaceShadowPS: {fileID: 4800000, guid: bfa43a48695613b4ea19c58858ae1a61, type: 3} + subsurfaceScatteringCS: {fileID: 7200000, guid: b06a7993621def248addd55d0fe931b1, type: 3} combineLightingPS: {fileID: 4800000, guid: 2e37131331fbdca449b1a2bc47a639ca, type: 3} - debugLocalVolumetricFogAtlasPS: {fileID: 4800000, guid: 8371b763f09c7304889c22aa97ebdfd2, - type: 3} - cameraMotionVectorsPS: {fileID: 4800000, guid: 035941b63024d1943af48811c1db20d9, - type: 3} - clearStencilBufferPS: {fileID: 4800000, guid: 8ea49ef16606acd489439e676ab84040, - type: 3} - copyStencilBufferPS: {fileID: 4800000, guid: 3d1574f1cdfa0ce4995f9bc79ed7f8ec, - type: 3} + debugLocalVolumetricFogAtlasPS: {fileID: 4800000, guid: 8371b763f09c7304889c22aa97ebdfd2, type: 3} + cameraMotionVectorsPS: {fileID: 4800000, guid: 035941b63024d1943af48811c1db20d9, type: 3} + clearStencilBufferPS: {fileID: 4800000, guid: 8ea49ef16606acd489439e676ab84040, type: 3} + copyStencilBufferPS: {fileID: 4800000, guid: 3d1574f1cdfa0ce4995f9bc79ed7f8ec, type: 3} copyDepthBufferPS: {fileID: 4800000, guid: 42dfcc8fe803ece4096c58630689982f, type: 3} blitPS: {fileID: 4800000, guid: e22fc1942c664490980b8793dd4a163d, type: 3} - blitColorAndDepthPS: {fileID: 4800000, guid: b22ad378c678348729d3a3f981b9f270, - type: 3} + blitColorAndDepthPS: {fileID: 4800000, guid: b22ad378c678348729d3a3f981b9f270, type: 3} downsampleDepthPS: {fileID: 4800000, guid: 67d6171b0acc6554aad48c845ec7e67f, type: 3} - upsampleTransparentPS: {fileID: 4800000, guid: 2ad7ce40f0dbaf64dadef1f58d8524d3, - type: 3} + upsampleTransparentPS: {fileID: 4800000, guid: 2ad7ce40f0dbaf64dadef1f58d8524d3, type: 3} resolveStencilCS: {fileID: 7200000, guid: 65b89cac5f286b043a31bf8041776ee7, type: 3} blitCubemapPS: {fileID: 4800000, guid: d05913e251bed7a4992c921c62e1b647, type: 3} - buildProbabilityTablesCS: {fileID: 7200000, guid: b9f26cf340afe9145a699753531b2a4c, - type: 3} - computeGgxIblSampleDataCS: {fileID: 7200000, guid: 764a24bb47ef5ba4781d9ae82ca07445, - type: 3} + buildProbabilityTablesCS: {fileID: 7200000, guid: b9f26cf340afe9145a699753531b2a4c, type: 3} + computeGgxIblSampleDataCS: {fileID: 7200000, guid: 764a24bb47ef5ba4781d9ae82ca07445, type: 3} GGXConvolvePS: {fileID: 4800000, guid: 123ed592ad5c2494b8aed301fd609e7b, type: 3} charlieConvolvePS: {fileID: 4800000, guid: 5685fd17e71045e4ca9fefca38a7c177, type: 3} - opaqueAtmosphericScatteringPS: {fileID: 4800000, guid: 32f724728cf19904291226f239ec16f0, - type: 3} + opaqueAtmosphericScatteringPS: {fileID: 4800000, guid: 32f724728cf19904291226f239ec16f0, type: 3} hdriSkyPS: {fileID: 4800000, guid: 9bd32a6ece529fd4f9408b8d7e00c10d, type: 3} - integrateHdriSkyPS: {fileID: 4800000, guid: 48db2705cf2856d4e893eb30a6892d1b, - type: 3} + integrateHdriSkyPS: {fileID: 4800000, guid: 48db2705cf2856d4e893eb30a6892d1b, type: 3} skyboxCubemapPS: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} gradientSkyPS: {fileID: 4800000, guid: 2b5d4f1b26f03dc4a873b093e0c4adb1, type: 3} - ambientProbeConvolutionCS: {fileID: 7200000, guid: 6d048f7b1bd45e840b4e79ec92639fa8, - type: 3} - groundIrradiancePrecomputationCS: {fileID: 7200000, guid: eb6ae6f326207ee4d987a3e5adddf63a, - type: 3} - inScatteredRadiancePrecomputationCS: {fileID: 7200000, guid: 70c69d514688f8545855680760d77418, - type: 3} - physicallyBasedSkyPS: {fileID: 4800000, guid: a06934a4863e778498be65d8f865b7a4, - type: 3} - planarReflectionFilteringCS: {fileID: 7200000, guid: 9f3f8a01b8caaaa4595591dc96d43dd2, - type: 3} + ambientProbeConvolutionCS: {fileID: 7200000, guid: 6d048f7b1bd45e840b4e79ec92639fa8, type: 3} + groundIrradiancePrecomputationCS: {fileID: 7200000, guid: eb6ae6f326207ee4d987a3e5adddf63a, type: 3} + inScatteredRadiancePrecomputationCS: {fileID: 7200000, guid: 70c69d514688f8545855680760d77418, type: 3} + physicallyBasedSkyPS: {fileID: 4800000, guid: a06934a4863e778498be65d8f865b7a4, type: 3} + planarReflectionFilteringCS: {fileID: 7200000, guid: 9f3f8a01b8caaaa4595591dc96d43dd2, type: 3} cloudLayerPS: {fileID: 4800000, guid: 001a47fa123e95a4bba13ecb0442d944, type: 3} - bakeCloudTextureCS: {fileID: 7200000, guid: 09a7f6850ee9fb4439e5ebd632127da5, - type: 3} - bakeCloudShadowsCS: {fileID: 7200000, guid: 3e7317e0800c066448ee07a3e47f102b, - type: 3} - volumetricCloudsCS: {fileID: 7200000, guid: f911a8577fa9a4546a6b255bcf888baf, - type: 3} - volumetricCloudMapGeneratorCS: {fileID: 7200000, guid: 6b22771f0aa98744cb09f455a5a818cb, - type: 3} - volumetricCloudsCombinePS: {fileID: 4800000, guid: 12f1a69ddf916f042ae6ce8a994506f3, - type: 3} - preIntegratedFGD_GGXDisneyDiffusePS: {fileID: 4800000, guid: 123f13d52852ef547b2962de4bd9eaad, - type: 3} - preIntegratedFGD_CharlieFabricLambertPS: {fileID: 4800000, guid: 3b3bf235775cf8b4baae7f3306787ab0, - type: 3} - preIntegratedFGD_MarschnerPS: {fileID: 4800000, guid: 31f36caf0a5e7f848a1b5328b6ad3eb8, - type: 3} - preIntegratedFGD_WardPS: {fileID: 4800000, guid: d279c46a545b0af4f9f0c4fa82cd489e, - type: 3} - preIntegratedFGD_CookTorrancePS: {fileID: 4800000, guid: a6402c19b020b4a4fb7073aaa2e26aba, - type: 3} - preIntegratedAzimuthalScatteringPS: {fileID: 4800000, guid: 26ad8e15a8a298e42bc4d11aff5f9c67, - type: 3} + bakeCloudTextureCS: {fileID: 7200000, guid: 09a7f6850ee9fb4439e5ebd632127da5, type: 3} + bakeCloudShadowsCS: {fileID: 7200000, guid: 3e7317e0800c066448ee07a3e47f102b, type: 3} + volumetricCloudsCS: {fileID: 7200000, guid: f911a8577fa9a4546a6b255bcf888baf, type: 3} + volumetricCloudMapGeneratorCS: {fileID: 7200000, guid: 6b22771f0aa98744cb09f455a5a818cb, type: 3} + volumetricCloudsCombinePS: {fileID: 4800000, guid: 12f1a69ddf916f042ae6ce8a994506f3, type: 3} + preIntegratedFGD_GGXDisneyDiffusePS: {fileID: 4800000, guid: 123f13d52852ef547b2962de4bd9eaad, type: 3} + preIntegratedFGD_CharlieFabricLambertPS: {fileID: 4800000, guid: 3b3bf235775cf8b4baae7f3306787ab0, type: 3} + preIntegratedFGD_WardPS: {fileID: 4800000, guid: d279c46a545b0af4f9f0c4fa82cd489e, type: 3} + preIntegratedFGD_CookTorrancePS: {fileID: 4800000, guid: a6402c19b020b4a4fb7073aaa2e26aba, type: 3} + preIntegratedFGD_MarschnerPS: {fileID: 4800000, guid: 31f36caf0a5e7f848a1b5328b6ad3eb8, type: 3} + preIntegratedFiberScatteringCS: {fileID: 7200000, guid: 4a087c9d074552c48aeb85184d56312e, type: 3} encodeBC6HCS: {fileID: 7200000, guid: aa922d239de60304f964e24488559eeb, type: 3} cubeToPanoPS: {fileID: 4800000, guid: 595434cc3b6405246b6cd3086d0b6f7d, type: 3} - blitCubeTextureFacePS: {fileID: 4800000, guid: d850d0a2481878d4bbf17e5126b04163, - type: 3} - filterAreaLightCookiesPS: {fileID: 4800000, guid: c243aac96dda5fa40bed693ed5ba02c4, - type: 3} - clearUIntTextureCS: {fileID: 7200000, guid: d067ad4b88af51c498875426894aef76, - type: 3} + blitCubeTextureFacePS: {fileID: 4800000, guid: d850d0a2481878d4bbf17e5126b04163, type: 3} + filterAreaLightCookiesPS: {fileID: 4800000, guid: c243aac96dda5fa40bed693ed5ba02c4, type: 3} + clearUIntTextureCS: {fileID: 7200000, guid: d067ad4b88af51c498875426894aef76, type: 3} customPassUtils: {fileID: 4800000, guid: 7e3722d0388000848acb25fd3cc8c088, type: 3} - customPassRenderersUtils: {fileID: 4800000, guid: cef5ba33ee5063d4c8b495d2292e394d, - type: 3} + customPassRenderersUtils: {fileID: 4800000, guid: cef5ba33ee5063d4c8b495d2292e394d, type: 3} texture3DAtlasCS: {fileID: 7200000, guid: 81522e314a83afd4a8ed43bd00757051, type: 3} xrMirrorViewPS: {fileID: 4800000, guid: e6255f98cf405eb45ab6f9006cf11e1f, type: 3} xrOcclusionMeshPS: {fileID: 4800000, guid: 46a45b32bb110604fb36216b63bcdb81, type: 3} shadowClearPS: {fileID: 4800000, guid: e3cab24f27741f44d8af1e94d006267c, type: 3} evsmBlurCS: {fileID: 7200000, guid: fb36979473602464fa32deacb9630c08, type: 3} - debugHDShadowMapPS: {fileID: 4800000, guid: 93d40cc9a6e13994f86f576a624efa18, - type: 3} + debugHDShadowMapPS: {fileID: 4800000, guid: 93d40cc9a6e13994f86f576a624efa18, type: 3} momentShadowsCS: {fileID: 7200000, guid: 4dea53e2ff15ed0448817c2aa4246e53, type: 3} shadowBlitPS: {fileID: 4800000, guid: ca059f1af4587a24b9a9eed3b66cff0f, type: 3} - decalNormalBufferPS: {fileID: 4800000, guid: fd532bf1795188c4daaa66ea798b8b0a, - type: 3} + decalNormalBufferPS: {fileID: 4800000, guid: fd532bf1795188c4daaa66ea798b8b0a, type: 3} GTAOCS: {fileID: 7200000, guid: 6710b06492bd58c4bb8aec0fdc1fced3, type: 3} - GTAOSpatialDenoiseCS: {fileID: 7200000, guid: 2cb33c21587d12b4388d7866ab6c65f6, - type: 3} - GTAOTemporalDenoiseCS: {fileID: 7200000, guid: 31e0ca4c210f97c468037d11a5b832bb, - type: 3} + GTAOSpatialDenoiseCS: {fileID: 7200000, guid: 2cb33c21587d12b4388d7866ab6c65f6, type: 3} + GTAOTemporalDenoiseCS: {fileID: 7200000, guid: 31e0ca4c210f97c468037d11a5b832bb, type: 3} GTAOCopyHistoryCS: {fileID: 7200000, guid: 7f43be57ffd12ff469d4fc175c00c4b4, type: 3} - GTAOBlurAndUpsample: {fileID: 7200000, guid: 9eb1abde882538a4ea46fa23e49ab9fa, - type: 3} - screenSpaceGlobalIlluminationCS: {fileID: 7200000, guid: 96170a954eb538b40a5ff369552c3629, - type: 3} + GTAOBlurAndUpsample: {fileID: 7200000, guid: 9eb1abde882538a4ea46fa23e49ab9fa, type: 3} + screenSpaceGlobalIlluminationCS: {fileID: 7200000, guid: 96170a954eb538b40a5ff369552c3629, type: 3} depthValuesPS: {fileID: 4800000, guid: 6e6a4a3dbb788234594aa74f2d6aeb6f, type: 3} colorResolvePS: {fileID: 4800000, guid: dd7047092f3c82b40b3a07868f9c4de2, type: 3} - resolveMotionVecPS: {fileID: 4800000, guid: ea18ca9826385e943979c46cf98968cc, - type: 3} + resolveMotionVecPS: {fileID: 4800000, guid: ea18ca9826385e943979c46cf98968cc, type: 3} copyAlphaCS: {fileID: 7200000, guid: c2c7eb6611725264187721ef9df0354b, type: 3} nanKillerCS: {fileID: 7200000, guid: 83982f199acf927499576a99abc9bea9, type: 3} exposureCS: {fileID: 7200000, guid: 976d7bce54fae534fb9ec67e9c18570c, type: 3} - histogramExposureCS: {fileID: 7200000, guid: 222da48299136f34b8e3fb75ae9f8ac7, - type: 3} + histogramExposureCS: {fileID: 7200000, guid: 222da48299136f34b8e3fb75ae9f8ac7, type: 3} applyExposureCS: {fileID: 7200000, guid: 1a6fea1dc099b984d8f2b27d504dc096, type: 3} - debugImageHistogramCS: {fileID: 7200000, guid: 52cc17ef5a5ffc443a5c142f9b745a85, - type: 3} + debugImageHistogramCS: {fileID: 7200000, guid: 52cc17ef5a5ffc443a5c142f9b745a85, type: 3} uberPostCS: {fileID: 7200000, guid: f1bf52f7c71bffd4f91e6cd90d12a4f7, type: 3} lutBuilder3DCS: {fileID: 7200000, guid: 37f2b1b0ecd6f1c439e4c1b4f2fdb524, type: 3} - depthOfFieldKernelCS: {fileID: 7200000, guid: 7869415cc3e4eaa4d82ac21a752a2780, - type: 3} + depthOfFieldKernelCS: {fileID: 7200000, guid: 7869415cc3e4eaa4d82ac21a752a2780, type: 3} depthOfFieldCoCCS: {fileID: 7200000, guid: 048b235b54fbfaa4d80ec85ea847d4f8, type: 3} - depthOfFieldCoCReprojectCS: {fileID: 7200000, guid: 4980decaa3878d6448569489f5fc7931, - type: 3} - depthOfFieldDilateCS: {fileID: 7200000, guid: 1c93af4338c0c1b42b92464992eebc10, - type: 3} + depthOfFieldCoCReprojectCS: {fileID: 7200000, guid: 4980decaa3878d6448569489f5fc7931, type: 3} + depthOfFieldDilateCS: {fileID: 7200000, guid: 1c93af4338c0c1b42b92464992eebc10, type: 3} depthOfFieldMipCS: {fileID: 7200000, guid: d3ef53de069ded64e8377cba6eb951fa, type: 3} - depthOfFieldMipSafeCS: {fileID: 7200000, guid: 2d24ee7b2c804d947a5c371c12ed46bd, - type: 3} - depthOfFieldPrefilterCS: {fileID: 7200000, guid: f2b89d19910854346b792fe7177ce634, - type: 3} - depthOfFieldTileMaxCS: {fileID: 7200000, guid: 84f84585ea8a7a849bea4a581adb93a7, - type: 3} - depthOfFieldGatherCS: {fileID: 7200000, guid: 486be52dddc4e054fb10a7b9b78788c2, - type: 3} - depthOfFieldCombineCS: {fileID: 7200000, guid: c8049ca85c4c7d047ba28f34d800c663, - type: 3} - depthOfFieldPreCombineFarCS: {fileID: 7200000, guid: 3b4a2acd03d1ce2438d93c325d588735, - type: 3} - depthOfFieldClearIndirectArgsCS: {fileID: 7200000, guid: 69905045e1d0a65458b205d6ab55502b, - type: 3} - paniniProjectionCS: {fileID: 7200000, guid: 0ddbf72c8fbb6e44b983f470c8384ef6, - type: 3} - motionBlurMotionVecPrepCS: {fileID: 7200000, guid: ed9438fa777911d48933402087203b15, - type: 3} - motionBlurGenTileCS: {fileID: 7200000, guid: 336e1fdbb3a1b8647b06208415f87804, - type: 3} - motionBlurMergeTileCS: {fileID: 7200000, guid: cd14ddf849edeed43b0e3ccf66023038, - type: 3} - motionBlurNeighborhoodTileCS: {fileID: 7200000, guid: 5ea9865df3e53b448856785b88f8e7b9, - type: 3} + depthOfFieldMipSafeCS: {fileID: 7200000, guid: 2d24ee7b2c804d947a5c371c12ed46bd, type: 3} + depthOfFieldPrefilterCS: {fileID: 7200000, guid: f2b89d19910854346b792fe7177ce634, type: 3} + depthOfFieldTileMaxCS: {fileID: 7200000, guid: 84f84585ea8a7a849bea4a581adb93a7, type: 3} + depthOfFieldGatherCS: {fileID: 7200000, guid: 486be52dddc4e054fb10a7b9b78788c2, type: 3} + depthOfFieldCombineCS: {fileID: 7200000, guid: c8049ca85c4c7d047ba28f34d800c663, type: 3} + depthOfFieldPreCombineFarCS: {fileID: 7200000, guid: 3b4a2acd03d1ce2438d93c325d588735, type: 3} + depthOfFieldClearIndirectArgsCS: {fileID: 7200000, guid: 69905045e1d0a65458b205d6ab55502b, type: 3} + paniniProjectionCS: {fileID: 7200000, guid: 0ddbf72c8fbb6e44b983f470c8384ef6, type: 3} + motionBlurMotionVecPrepCS: {fileID: 7200000, guid: ed9438fa777911d48933402087203b15, type: 3} + motionBlurGenTileCS: {fileID: 7200000, guid: 336e1fdbb3a1b8647b06208415f87804, type: 3} + motionBlurMergeTileCS: {fileID: 7200000, guid: cd14ddf849edeed43b0e3ccf66023038, type: 3} + motionBlurNeighborhoodTileCS: {fileID: 7200000, guid: 5ea9865df3e53b448856785b88f8e7b9, type: 3} motionBlurCS: {fileID: 7200000, guid: 2af5c49c7865edb4b823826970ec176a, type: 3} bloomPrefilterCS: {fileID: 7200000, guid: 243b24008041aaa4a91800690f63c684, type: 3} bloomBlurCS: {fileID: 7200000, guid: 133a68380d324de4ea8d3ff8657b02d8, type: 3} @@ -220,27 +146,21 @@ MonoBehaviour: finalPassPS: {fileID: 4800000, guid: 5ac9ef0c50282754b93c7692488e7ee7, type: 3} clearBlackPS: {fileID: 4800000, guid: 3330c1503ea8c6d4d9408df3f64227eb, type: 3} SMAAPS: {fileID: 4800000, guid: 9655f4aa89a469c49aceaceabf9bc77b, type: 3} - temporalAntialiasingPS: {fileID: 4800000, guid: 3dd9fd928fdb83743b1f27d15df22179, - type: 3} + temporalAntialiasingPS: {fileID: 4800000, guid: 3dd9fd928fdb83743b1f27d15df22179, type: 3} upsampleSceneCS: {fileID: 7200000, guid: 51e13c18f34ea1d4183edb912e98cbf7, type: 3} - lensFlareDataDrivenPS: {fileID: 4800000, guid: 85330b3de0cfebc4ba78b2d61b1a2899, - type: 3} - dofCircleOfConfusion: {fileID: 7200000, guid: 75332b7b315c80d4babe506820aa0bfd, - type: 3} + lensFlareDataDrivenPS: {fileID: 4800000, guid: 85330b3de0cfebc4ba78b2d61b1a2899, type: 3} + dofCircleOfConfusion: {fileID: 7200000, guid: 75332b7b315c80d4babe506820aa0bfd, type: 3} dofGatherCS: {fileID: 7200000, guid: 1e6b16a7970a1494db74b1d3d007d1cc, type: 3} dofCoCMinMaxCS: {fileID: 7200000, guid: c70dd492c3d2fe94589d6ca8d4e37915, type: 3} dofMinMaxDilateCS: {fileID: 7200000, guid: 757a3f81b35177b44b2b178909b49172, type: 3} - contrastAdaptiveSharpenCS: {fileID: 7200000, guid: 560896aec2f412c48995be35551a4ac6, - type: 3} - VTFeedbackDownsample: {fileID: 7200000, guid: 32d963548086c2c439aeb23a93e9a00a, - type: 3} + contrastAdaptiveSharpenCS: {fileID: 7200000, guid: 560896aec2f412c48995be35551a4ac6, type: 3} + VTFeedbackDownsample: {fileID: 7200000, guid: 32d963548086c2c439aeb23a93e9a00a, type: 3} accumulationCS: {fileID: 7200000, guid: ed80add7a217efa468d137d6f7c668f3, type: 3} alphaInjectionPS: {fileID: 4800000, guid: 4edd96259a5e8b44c90479928f0cd11e, type: 3} chromaKeyingPS: {fileID: 4800000, guid: 49feb6b111e82ec4eb6d3d08e4b6903e, type: 3} customClearPS: {fileID: 4800000, guid: 9cef3686fa32c8840947ed99b561195c, type: 3} ssGIDenoiserCS: {fileID: 7200000, guid: a435d803bc32d0845ba1a713b7a1c8b1, type: 3} - bilateralUpsampleCS: {fileID: 7200000, guid: 68e831c555284d741b985e05369f0e63, - type: 3} + bilateralUpsampleCS: {fileID: 7200000, guid: 68e831c555284d741b985e05369f0e63, type: 3} textures: debugFontTex: {fileID: 2800000, guid: a3ad2df0e49aaa341a3b3a80f93b3f66, type: 3} colorGradient: {fileID: 2800000, guid: 4ea52e665573c1644bf05dd9b11fd2a4, type: 3} @@ -311,23 +231,18 @@ MonoBehaviour: - {fileID: 2800000, guid: 7641a2b116fafd64d9c3d6459fdfe801, type: 3} - {fileID: 2800000, guid: c6a5e40e6746fef4fa486e8f620ee8d4, type: 3} - {fileID: 2800000, guid: fd4189357c6dfb94fa2d36afbce72086, type: 3} - owenScrambledRGBATex: {fileID: 2800000, guid: b0fe077c1ee7d80428f3d8dfa28a027d, - type: 3} - owenScrambled256Tex: {fileID: 2800000, guid: 2a205358e67aa9e4a94a128ac9362f4e, - type: 3} + owenScrambledRGBATex: {fileID: 2800000, guid: b0fe077c1ee7d80428f3d8dfa28a027d, type: 3} + owenScrambled256Tex: {fileID: 2800000, guid: 2a205358e67aa9e4a94a128ac9362f4e, type: 3} scramblingTex: {fileID: 2800000, guid: bf25cd6288e2c8d43854a61a8496a830, type: 3} rankingTile1SPP: {fileID: 2800000, guid: f2fe0251f704c4c478a8063775cffedb, type: 3} - scramblingTile1SPP: {fileID: 2800000, guid: 6185473f62ad3e74da4acac5d482917a, - type: 3} + scramblingTile1SPP: {fileID: 2800000, guid: 6185473f62ad3e74da4acac5d482917a, type: 3} rankingTile8SPP: {fileID: 2800000, guid: af4bd638a4b3eb14781e6441adcdfbb9, type: 3} - scramblingTile8SPP: {fileID: 2800000, guid: 152f8b933250a7b448fc2d4d301b9944, - type: 3} + scramblingTile8SPP: {fileID: 2800000, guid: 152f8b933250a7b448fc2d4d301b9944, type: 3} rankingTile256SPP: {fileID: 2800000, guid: 1e604a266c415cd46b36d97cd9220aa8, type: 3} - scramblingTile256SPP: {fileID: 2800000, guid: 882fb55d7b3e7c94598a318df9376e32, - type: 3} + scramblingTile256SPP: {fileID: 2800000, guid: 882fb55d7b3e7c94598a318df9376e32, type: 3} + preintegratedAzimuthalScattering: {fileID: 2800000, guid: 4f022cc0bdd8db4428a8faae60acb3dc, type: 3} cloudLutRainAO: {fileID: 2800000, guid: e0bcfddf26ed5584ba3d8b94d3200114, type: 3} - worleyNoise128RGBA: {fileID: 11700000, guid: 1fe54a721d0e2504e89f121c723404a8, - type: 3} + worleyNoise128RGBA: {fileID: 11700000, guid: 1fe54a721d0e2504e89f121c723404a8, type: 3} worleyNoise32RGB: {fileID: 11700000, guid: ec156c314a242914dbb706f73ad78cf2, type: 3} filmGrainTex: - {fileID: 2800000, guid: 284a1ac236869fa4eacf377d73c7dff8, type: 3} @@ -345,10 +260,8 @@ MonoBehaviour: defaultHDRISky: {fileID: 8900000, guid: 8253d41e6e8b11a4cbe77a4f8f82934d, type: 3} defaultCloudMap: {fileID: 2800000, guid: 57a33fc2476a01644865bfde5f06e2f4, type: 3} assets: - defaultDiffusionProfile: {fileID: 11400000, guid: 2b7005ba3a4d8474b8cdc34141ad766e, - type: 2} - emissiveCylinderMesh: {fileID: 2534964839176971238, guid: accb6d90f0d50fe4ca0f68159b4323de, - type: 3} + defaultDiffusionProfile: {fileID: 11400000, guid: 2b7005ba3a4d8474b8cdc34141ad766e, type: 2} + emissiveCylinderMesh: {fileID: 2534964839176971238, guid: accb6d90f0d50fe4ca0f68159b4323de, type: 3} emissiveQuadMesh: {fileID: 4300000, guid: 1d5a8595286f94f4bb54171d49f473c3, type: 3} sphereMesh: {fileID: 4300000, guid: 9e0af751bc36ea146940ba245193e28c, type: 3} m_Version: 4 From 3ec63994effe924dbf3d0fa2c0a4a7d8916d9247 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 15 Jul 2021 13:03:11 -0400 Subject: [PATCH 41/73] Compute the average backscattering attenuation --- .../Runtime/Material/Hair/HairScattering.hlsl | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl index 7685bbca4e4..73d9e57c8e3 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl @@ -130,9 +130,39 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float scatteringData.globalScattering = forwardTransmittance * forwardSpread; } - // Local scattering, + // Local scattering. { - scatteringData.localScattering = 0; + // Similarly to front scattering, this same density coefficient is suggested for matching most path traced references. + const float densityFactorBack = 0.7; + + // Compute the average backscattering attenuation, the attenuation in the neighborhood of x. + // Here we only model the first and third backscattering event, as the following are negligible. + + // Ex. of a single backward scattering event. Where L is the incident light, V is the camera, (F) is a fiber cross-section + // with a forward scattering event, and (B) is a fiber cross section with a backward scattering event. + // + // V <--------------- + // | + // (F) <--- ... ---> (B) + // L -------------->| + + float3 af1 = scatteringData.averageScatteringFront; + float3 af2 = Sq(af1); + float3 afI = 1 - af2; + + float3 ab1 = scatteringData.averageScatteringBack; + float3 ab2 = Sq(ab1); + float3 ab3 = ab2 * ab1 + + // Solve eq. 11, 13, & 14, analytic solutions to the potential infinite permutations of backward scattering + // in a volume of fibers (for one and three backward scatters). + float3 A1 = (ab1 * af2) / afI; + float3 A3 = (ab3 * af2) / pow(afI, 3); + float3 AB = A1 + A3; + + // TODO: Average backscattering spread + + scatteringData.localScattering = AB; } return scatteringData; From 36a530d0b98d1ec25fc6e7ba328906b61e7ecd57 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 15 Jul 2021 17:23:58 -0400 Subject: [PATCH 42/73] Add the local scattering term. --- .../Runtime/Material/Hair/HairScattering.hlsl | 151 ++++++++++++++---- 1 file changed, 121 insertions(+), 30 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl index 73d9e57c8e3..e07667fbca1 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl @@ -16,6 +16,10 @@ struct HairScatteringData float3 averageScatteringFront; float3 averageScatteringBack; + // 0: Front, 1: Back + float3 averageVariance[2]; + float3 averageShift[2]; + float3 globalScattering; float3 localScattering; }; @@ -50,13 +54,14 @@ float EvaluateStrandCount(float3 L, float3 P) } } - return strandCountApprox; + return strandCountApprox * 0.1; #else // TODO return 1; #endif } +// TODO: Maybe collapse all of this into one scattering data gather. HairScatteringData SampleAverageScattering(float3 diffuseColor, float perceptualRoughness, float sinThetaI) { HairScatteringData scatteringData; @@ -79,6 +84,54 @@ HairScatteringData SampleAverageScattering(float3 diffuseColor, float perceptual return scatteringData; } +void ComputeAverageScatteringVariance(BSDFData bsdfData, inout HairScatteringData scatteringData) +{ + const float3 beta = float3( + bsdfData.roughnessR, + bsdfData.roughnessTT, + bsdfData.roughnessTRT + ); + + // Here we should be deriving the average variance with the per-component (R, TT, TRT) + // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. + + // Front scattering (Disney Eq. 15) + { + const float3 af = scatteringData.averageScatteringFront; + scatteringData.averageVariance[0] = dot(beta, af) / (af.r + af.g + af.b); + } + + // Back scattering (Disney Eq. 16) + { + const float3 ab = scatteringData.averageScatteringBack; + scatteringData.averageVariance[0] = dot(beta, ab) / (ab.r + ab.g + ab.b); + } +} + +void ComputeAverageScatteringShift(BSDFData bsdfData, inout HairScatteringData scatteringData) +{ + const float3 shift = float3( + bsdfData.cuticleAngleR, + bsdfData.cuticleAngleTT, + bsdfData.cuticleAngleTRT + ); + + // Here we should be deriving the average shift with the per-component (R, TT, TRT) + // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. + + // Front scattering (Disney Eq. 13) + { + const float3 af = scatteringData.averageScatteringFront; + scatteringData.averageShift[0] = dot(shift, af) / (af.r + af.g + af.b); + } + + // Back scattering (Disney Eq. 14) + { + const float3 ab = scatteringData.averageScatteringBack; + scatteringData.averageShift[1] = dot(shift, ab) / (ab.r + ab.g + ab.b); + } +} + HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float3 L, float3 P) { float3 T = bsdfData.hairStrandDirectionWS; @@ -87,21 +140,25 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float // of the angle between the incident direction and the normal plane. float sinThetaI = dot(T, L); - // TEMP: Extra angle derivation. - float thetaH, cosThetaD; + // TEMP: Extra angle derivation, this is redundant work as we already do this for the same light on the BSDF evaluation. + float thetaH, thetaD; { float sinThetaR = dot(T, V); float thetaI = FastASin(sinThetaI); float thetaR = FastASin(sinThetaR); - thetaH = (thetaI + thetaR) * 0.5; - cosThetaD = cos((thetaR - thetaI) * 0.5); + thetaH = (thetaI + thetaR) * 0.5; + thetaD = (thetaR - thetaI) * 0.5; } // Sample the average front and back scattering. + // TODO: Gather everything at once. HairScatteringData scatteringData = SampleAverageScattering(bsdfData.diffuseColor, bsdfData.perceptualRoughness, sinThetaI); + ComputeAverageScatteringVariance(bsdfData, scatteringData); + ComputeAverageScatteringShift (bsdfData, scatteringData); + // Fetch the number of hair fibers between the shading point x and the light. scatteringData.strandCount = EvaluateStrandCount(L, P); @@ -114,26 +171,42 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float { // Following the observation of Zinke et. al., density factor (ratio of occlusion of the shading point by neighboring strands) // can be approximated with this constant to match most path traced references. - const float densityFactorFront = 0.7; + const float df = 0.7; - // By assuming that all hair strands between the shading point and the light are oriented the same, we can avoid evaluating the average - // scattering at every intersection, and instead approximate the transmittance like so. This is suitable for long, straighter hair, but - // have a greater error for curlier hair styles. - float3 forwardTransmittance = densityFactorFront * pow(scatteringData.averageScatteringFront, scatteringData.strandCount); + // Pre-define some shorthand for the symbols. . + const float n = scatteringData.strandCount; + const float3 Bf = scatteringData.averageVariance[0]; - // We make a similar approximation for computation of the accumulated variance, by assuming strands all have the same roughness. - // Since we only evaluate front scattering for global scattering, where TT is the dominant lobe, we accumulate that roughness. - float sigmaF = bsdfData.roughnessTT * scatteringData.strandCount; + // Approximate the transmittance by assuming that all hair strands between the shading point and the light are + // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). + float3 Tf = df * pow(scatteringData.averageScatteringFront, n); - float forwardSpread = ScatteringSpreadGaussian(thetaH, sigmaF) * rcp(PI * cosThetaD); + // Approximate the accumulated variance, by assuming strands all have the same average roughness. ( Eq. 7 Disney ) + float3 sigmaF = Sq(Bf) * n; - scatteringData.globalScattering = forwardTransmittance * forwardSpread; + // Computes the forward scattering spread ( Eq. 7 ). + float3 Sf = float3( ScatteringSpreadGaussian(thetaH, sigmaF.r), + ScatteringSpreadGaussian(thetaH, sigmaF.g), + ScatteringSpreadGaussian(thetaH, sigmaF.b)) * rcp(PI * cos(thetaD)); + + // Resolve the final global scattering term ( Eq. 4 ). + scatteringData.globalScattering = Tf * Sf; } // Local scattering. { // Similarly to front scattering, this same density coefficient is suggested for matching most path traced references. - const float densityFactorBack = 0.7; + const float db = 0.7; + + // Pre-define some shorthand for the symbols. + const float3 af = scatteringData.averageScatteringFront; + const float3 ab = scatteringData.averageScatteringBack; + const float3 sf = scatteringData.averageShift[0]; + const float3 sb = scatteringData.averageShift[1]; + const float3 Bf = scatteringData.averageVariance[0]; + const float3 Bb = scatteringData.averageVariance[1]; + const float3 Bf2 = Sq(Bf); + const float3 Bb2 = Sq(Bb); // Compute the average backscattering attenuation, the attenuation in the neighborhood of x. // Here we only model the first and third backscattering event, as the following are negligible. @@ -146,23 +219,41 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float // (F) <--- ... ---> (B) // L -------------->| - float3 af1 = scatteringData.averageScatteringFront; + float3 af1 = af; float3 af2 = Sq(af1); - float3 afI = 1 - af2; - float3 ab1 = scatteringData.averageScatteringBack; - float3 ab2 = Sq(ab1); - float3 ab3 = ab2 * ab1 + float3 afI1 = 1 - af2; + float3 afI2 = Sq(afI1); + float3 afI3 = afI2 * afI1; - // Solve eq. 11, 13, & 14, analytic solutions to the potential infinite permutations of backward scattering - // in a volume of fibers (for one and three backward scatters). - float3 A1 = (ab1 * af2) / afI; - float3 A3 = (ab3 * af2) / pow(afI, 3); - float3 AB = A1 + A3; - - // TODO: Average backscattering spread - - scatteringData.localScattering = AB; + float3 ab1 = ab; + float3 ab2 = Sq(ab1); + float3 ab3 = ab2 * ab1; + + // Analytic solutions to the potential infinite permutations of backward scattering + // in a volume of fibers for one and three backward scatters ( Eq. 11, 13, & 14 ). + float3 A1 = (ab1 * af2) / afI1; + float3 A3 = (ab3 * af2) / afI2; + float3 Ab = A1 + A3; + + // Computes the average longitudinal shift ( Eq. 16 ). + float3 shiftB = 1 - (2 * ab2 / afI2); + float3 shiftF = ((2 * afI2) + (4 * af2 * ab2)) / afI3; + float3 deltaB = (sb * shiftB) + (sf * shiftF); + + // Compute the average back scattering standard deviation ( Eq. 17 ). + float3 sigmaB = (1 + db * af2); + sigmaB *= (ab * sqrt((2 * Bf2) + Bb2)) + (ab3 * sqrt((2 * Bf2) + Bb2)); + sigmaB /= ab + (ab3 * ((2 * Bf) + (3 * Bb))); + sigmaB = Sq(sigmaB); + + // Computes the average back scattering spread ( Eq. 15 ). + float3 Sb = float3( ScatteringSpreadGaussian(thetaH - deltaB, sigmaB.r), + ScatteringSpreadGaussian(thetaH - deltaB, sigmaB.g), + ScatteringSpreadGaussian(thetaH - deltaB, sigmaB.b)) * rcp(PI * cos(thetaD)); + + // Resolve the overall local scattering term ( Eq. 9 & 10 ). + scatteringData.localScattering = db * (2 * Ab * Sb) / cos(thetaD); } return scatteringData; From cf046ed3286e592b2f5e51818f72fbf353e1ce73 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 26 Jul 2021 09:33:45 -0400 Subject: [PATCH 43/73] Organize the dual scattering term computation --- .../Runtime/Material/Hair/Hair.hlsl | 18 +- .../Runtime/Material/Hair/HairScattering.hlsl | 168 +++++++++--------- 2 files changed, 94 insertions(+), 92 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index b3406ce1391..cbfddb1f64c 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -240,10 +240,10 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) bsdfData.cuticleAngleTRT = cuticleAngle * 3.0 * 0.5; // Longitudinal Roughness - const float roughnessL = PerceptualRoughnessToRoughness(bsdfData.perceptualRoughness); - bsdfData.roughnessR = roughnessL; - bsdfData.roughnessTT = roughnessL * 0.5; - bsdfData.roughnessTRT = roughnessL * 2.0; + const float roughnessL = bsdfData.perceptualRoughness; + bsdfData.roughnessR = PerceptualRoughnessToRoughness(roughnessL); + bsdfData.roughnessTT = PerceptualRoughnessToRoughness(roughnessL * 0.5); + bsdfData.roughnessTRT = PerceptualRoughnessToRoughness(roughnessL * 2.0); // Azimuthal Roughness #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING @@ -520,7 +520,7 @@ void GetMarschnerAngle(float3 T, float3 V, float3 L, // Projection onto the normal plane, and since phi is the relative angle, we take the cosine in this projection. float3 LProj = L - sinThetaI * T; float3 VProj = V - sinThetaR * T; - cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj)); + cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj) + 0.0001); } CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) @@ -677,8 +677,12 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #if _USE_DENSITY_VOLUME_SCATTERING if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING)) { - // Debug Dual Scattering - cbsdf.specR = preLightData.scatteringData.globalScattering; + // Debug Dual Scattering Components + // cbsdf.specR = preLightData.scatteringData.globalScattering; + // cbsdf.specR = preLightData.scatteringData.localScattering; + + // Nan + cbsdf.specR = max(cbsdf.specR, 0); } #else #if _USE_LIGHT_FACING_NORMAL diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl index e07667fbca1..94a1d07d0a9 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl @@ -9,14 +9,14 @@ TEXTURE3D(_PreIntegratedHairFiberScattering); +#define FRONT 0 +#define BACK 1 + struct HairScatteringData { float strandCount; - float3 averageScatteringFront; - float3 averageScatteringBack; - - // 0: Front, 1: Back + float3 averageScattering[2]; float3 averageVariance[2]; float3 averageShift[2]; @@ -26,7 +26,7 @@ struct HairScatteringData float ScatteringSpreadGaussian(float x, float v) { - return rcp(sqrt(TWO_PI * v)) * exp(-Sq(x) / (2 * v)); + return rsqrt(TWO_PI * v) * exp(-Sq(x) / (2 * v)); } float EvaluateStrandCount(float3 L, float3 P) @@ -62,74 +62,77 @@ float EvaluateStrandCount(float3 L, float3 P) } // TODO: Maybe collapse all of this into one scattering data gather. -HairScatteringData SampleAverageScattering(float3 diffuseColor, float perceptualRoughness, float sinThetaI) +HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) { HairScatteringData scatteringData; ZERO_INITIALIZE(HairScatteringData, scatteringData); - // Prepare the sampling coordinate. - float X = PerceptualRoughnessToPerceptualSmoothness(perceptualRoughness); - float Y = abs(sinThetaI); - float3 Z = clamp((diffuseColor), 0.01, 0.99); // Need to clamp the absorption a bit due to artifacts at these boundaries. - - // Sample the LUT for each color channel (wavelength). - // Note that we parameterize by diffuse color, not absorption, to fit in [0, 1]. - float2 R = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.r), 0).xy; - float2 G = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.g), 0).xy; - float2 B = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.b), 0).xy; - - scatteringData.averageScatteringFront = float3(R.x, G.x, B.x); - scatteringData.averageScatteringBack = float3(R.y, G.y, B.y); + // 1) Sample the average scattering. + { + // Prepare the sampling coordinate. + float X = PerceptualRoughnessToPerceptualSmoothness(bsdfData.perceptualRoughness); + float Y = abs(sinThetaI); + float3 Z = clamp((bsdfData.diffuseColor), 0.01, 0.99); // Need to clamp the absorption a bit due to artifacts at these boundaries. + + // Sample the LUT for each color channel (wavelength). + // Note that we parameterize by diffuse color, not absorption, to fit in [0, 1]. + float2 R = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.r), 0).xy; + float2 G = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.g), 0).xy; + float2 B = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.b), 0).xy; + + scatteringData.averageScattering[FRONT] = float3(R.x, G.x, B.x); + scatteringData.averageScattering[BACK] = float3(R.y, G.y, B.y); + } - return scatteringData; -} + // 2) Compute the average scattering variance + { + const float3 beta = float3( + bsdfData.roughnessR, + bsdfData.roughnessTT, + bsdfData.roughnessTRT + ); -void ComputeAverageScatteringVariance(BSDFData bsdfData, inout HairScatteringData scatteringData) -{ - const float3 beta = float3( - bsdfData.roughnessR, - bsdfData.roughnessTT, - bsdfData.roughnessTRT - ); + // Here we should be deriving the average variance with the per-component (R, TT, TRT) + // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. - // Here we should be deriving the average variance with the per-component (R, TT, TRT) - // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. + // Front scattering (Disney Eq. 15) + { + const float3 af = scatteringData.averageScattering[FRONT]; + scatteringData.averageVariance[FRONT] = dot(beta, af) / (af.r + af.g + af.b); + } - // Front scattering (Disney Eq. 15) - { - const float3 af = scatteringData.averageScatteringFront; - scatteringData.averageVariance[0] = dot(beta, af) / (af.r + af.g + af.b); + // Back scattering (Disney Eq. 16) + { + const float3 ab = scatteringData.averageScattering[BACK]; + scatteringData.averageVariance[BACK] = dot(beta, ab) / (ab.r + ab.g + ab.b); + } } - // Back scattering (Disney Eq. 16) + // 3) Compute the average scattering shift { - const float3 ab = scatteringData.averageScatteringBack; - scatteringData.averageVariance[0] = dot(beta, ab) / (ab.r + ab.g + ab.b); - } -} + const float3 shift = float3( + bsdfData.cuticleAngleR, + bsdfData.cuticleAngleTT, + bsdfData.cuticleAngleTRT + ); -void ComputeAverageScatteringShift(BSDFData bsdfData, inout HairScatteringData scatteringData) -{ - const float3 shift = float3( - bsdfData.cuticleAngleR, - bsdfData.cuticleAngleTT, - bsdfData.cuticleAngleTRT - ); + // Here we should be deriving the average shift with the per-component (R, TT, TRT) + // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. - // Here we should be deriving the average shift with the per-component (R, TT, TRT) - // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. + // Front scattering (Disney Eq. 13) + { + const float3 af = scatteringData.averageScattering[FRONT]; + scatteringData.averageShift[FRONT] = dot(shift, af) / (af.r + af.g + af.b); + } - // Front scattering (Disney Eq. 13) - { - const float3 af = scatteringData.averageScatteringFront; - scatteringData.averageShift[0] = dot(shift, af) / (af.r + af.g + af.b); + // Back scattering (Disney Eq. 14) + { + const float3 ab = scatteringData.averageScattering[BACK]; + scatteringData.averageShift[BACK] = dot(shift, ab) / (ab.r + ab.g + ab.b); + } } - // Back scattering (Disney Eq. 14) - { - const float3 ab = scatteringData.averageScatteringBack; - scatteringData.averageShift[1] = dot(shift, ab) / (ab.r + ab.g + ab.b); - } + return scatteringData; } HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float3 L, float3 P) @@ -152,12 +155,8 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float thetaD = (thetaR - thetaI) * 0.5; } - // Sample the average front and back scattering. - // TODO: Gather everything at once. - HairScatteringData scatteringData = SampleAverageScattering(bsdfData.diffuseColor, bsdfData.perceptualRoughness, sinThetaI); - - ComputeAverageScatteringVariance(bsdfData, scatteringData); - ComputeAverageScatteringShift (bsdfData, scatteringData); + // Fetch the various preintegrated data. + HairScatteringData scatteringData = GetHairScatteringData(bsdfData, sinThetaI); // Fetch the number of hair fibers between the shading point x and the light. scatteringData.strandCount = EvaluateStrandCount(L, P); @@ -167,22 +166,29 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float // "Efficient Implementation of the Dual Scattering Model in RenderMan" (Sadeghi et. al) // "A BSSRDF Model for Efficient Rendering of Fur with Global Illumination" (Yan et. al) + // Pre-define some shorthand for the symbols. + const float n = scatteringData.strandCount; + const float3 af = scatteringData.averageScattering[FRONT]; + const float3 ab = scatteringData.averageScattering[BACK]; + const float3 sf = scatteringData.averageShift[FRONT]; + const float3 sb = scatteringData.averageShift[BACK]; + const float3 Bf = scatteringData.averageVariance[FRONT]; + const float3 Bb = scatteringData.averageVariance[BACK]; + const float3 Bf2 = Sq(Bf); + const float3 Bb2 = Sq(Bb); + // Global scattering. { // Following the observation of Zinke et. al., density factor (ratio of occlusion of the shading point by neighboring strands) // can be approximated with this constant to match most path traced references. const float df = 0.7; - // Pre-define some shorthand for the symbols. . - const float n = scatteringData.strandCount; - const float3 Bf = scatteringData.averageVariance[0]; - // Approximate the transmittance by assuming that all hair strands between the shading point and the light are // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). - float3 Tf = df * pow(scatteringData.averageScatteringFront, n); + float3 Tf = df * pow(af, n); // Approximate the accumulated variance, by assuming strands all have the same average roughness. ( Eq. 7 Disney ) - float3 sigmaF = Sq(Bf) * n; + float3 sigmaF = Bf2 * n; // Computes the forward scattering spread ( Eq. 7 ). float3 Sf = float3( ScatteringSpreadGaussian(thetaH, sigmaF.r), @@ -198,16 +204,6 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float // Similarly to front scattering, this same density coefficient is suggested for matching most path traced references. const float db = 0.7; - // Pre-define some shorthand for the symbols. - const float3 af = scatteringData.averageScatteringFront; - const float3 ab = scatteringData.averageScatteringBack; - const float3 sf = scatteringData.averageShift[0]; - const float3 sb = scatteringData.averageShift[1]; - const float3 Bf = scatteringData.averageVariance[0]; - const float3 Bb = scatteringData.averageVariance[1]; - const float3 Bf2 = Sq(Bf); - const float3 Bb2 = Sq(Bb); - // Compute the average backscattering attenuation, the attenuation in the neighborhood of x. // Here we only model the first and third backscattering event, as the following are negligible. @@ -233,11 +229,11 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float // Analytic solutions to the potential infinite permutations of backward scattering // in a volume of fibers for one and three backward scatters ( Eq. 11, 13, & 14 ). float3 A1 = (ab1 * af2) / afI1; - float3 A3 = (ab3 * af2) / afI2; + float3 A3 = (ab3 * af2) / afI3; float3 Ab = A1 + A3; // Computes the average longitudinal shift ( Eq. 16 ). - float3 shiftB = 1 - (2 * ab2 / afI2); + float3 shiftB = 1 - ((2 * ab2) / afI2); float3 shiftF = ((2 * afI2) + (4 * af2 * ab2)) / afI3; float3 deltaB = (sb * shiftB) + (sf * shiftF); @@ -248,12 +244,14 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float sigmaB = Sq(sigmaB); // Computes the average back scattering spread ( Eq. 15 ). - float3 Sb = float3( ScatteringSpreadGaussian(thetaH - deltaB, sigmaB.r), - ScatteringSpreadGaussian(thetaH - deltaB, sigmaB.g), - ScatteringSpreadGaussian(thetaH - deltaB, sigmaB.b)) * rcp(PI * cos(thetaD)); + float3 Sb = float3( ScatteringSpreadGaussian(thetaH - deltaB.r, sigmaB.r), + ScatteringSpreadGaussian(thetaH - deltaB.g, sigmaB.g), + ScatteringSpreadGaussian(thetaH - deltaB.b, sigmaB.b)); // Resolve the overall local scattering term ( Eq. 9 & 10 ). - scatteringData.localScattering = db * (2 * Ab * Sb) / cos(thetaD); + scatteringData.localScattering = 2 * Ab * Sb; + scatteringData.localScattering /= cos(thetaD); + scatteringData.localScattering *= db; } return scatteringData; From 1ca7fe1288b2e26b466d26bc335f019a7498f416 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 30 Jul 2021 13:21:46 -0400 Subject: [PATCH 44/73] Refactor dual scattering to better integrate with the light loop, add directional support, add hair volume shadow bias --- .../Runtime/Lighting/LightLoop/LightLoop.hlsl | 13 ++- .../Lighting/LightLoop/LightLoopDef.hlsl | 7 ++ .../Runtime/Lighting/Lighting.hlsl | 2 + .../Runtime/Lighting/MultipleScattering.meta | 8 ++ .../MultipleScattering.hlsl | 79 +++++++++++++++++ .../MultipleScattering.hlsl.meta | 7 ++ .../Runtime/Lighting/SurfaceShading.hlsl | 29 +++++++ .../Runtime/Material/Hair/Hair.cs | 3 + .../Runtime/Material/Hair/Hair.cs.hlsl | 10 +++ .../Runtime/Material/Hair/Hair.hlsl | 45 +++------- .../Material/Hair/MultipleScattering.meta | 3 + .../HairMultipleScattering.hlsl} | 87 +++++-------------- .../HairMultipleScattering.hlsl.meta} | 0 ...rMultipleScatteringPreIntegration.compute} | 6 +- ...ipleScatteringPreIntegration.compute.meta} | 0 .../Runtime/Material/Lit/LitProperties.hlsl | 11 +-- .../HDRenderPipelineRuntimeResources.cs | 2 +- 17 files changed, 206 insertions(+), 106 deletions(-) create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering.meta create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta create mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering.meta rename com.unity.render-pipelines.high-definition/Runtime/Material/Hair/{HairScattering.hlsl => MultipleScattering/HairMultipleScattering.hlsl} (76%) rename com.unity.render-pipelines.high-definition/Runtime/Material/Hair/{HairScattering.hlsl.meta => MultipleScattering/HairMultipleScattering.hlsl.meta} (100%) rename com.unity.render-pipelines.high-definition/Runtime/Material/Hair/{PreIntegratedFiberScattering.compute => MultipleScattering/HairMultipleScatteringPreIntegration.compute} (94%) rename com.unity.render-pipelines.high-definition/Runtime/Material/Hair/{PreIntegratedFiberScattering.compute.meta => MultipleScattering/HairMultipleScatteringPreIntegration.compute.meta} (100%) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index 08c6c497cd8..81b8ad79128 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -200,6 +200,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS context.shadowContext = InitShadowContext(); context.shadowValue = 1; context.sampleReflection = 0; + ZERO_INITIALIZE(MultipleScatteringData, context.scatteringData); // With XR single-pass and camera-relative: offset position to do lighting computations from the combined center view (original camera matrix). // This is required because there is only one list of lights generated on the CPU. Shadows are also generated once and shared between the instanced views. @@ -232,8 +233,18 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS IsNonZeroBSDF(V, L, preLightData, bsdfData) && !ShouldEvaluateThickObjectTransmission(V, L, preLightData, bsdfData, light.shadowIndex)) { + float3 shadowProxyPositionWS = posInput.positionWS; + +#ifdef LIGHT_EVALUATES_MULTIPLE_SCATTERING + // Since we evaluate the sun light early in this case for shadows (as well as for biasing the shadow), we cache the result in the context. + context.scatteringData = EvaluateMultipleScattering_Light(posInput, L); + + // ...and adjusts the sampled shadow position (if necessary). + EvaluateMultipleScattering_ShadowProxy(context.scatteringData, shadowProxyPositionWS); +#endif + context.shadowValue = GetDirectionalShadowAttenuation(context.shadowContext, - posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), + posInput.positionSS, shadowProxyPositionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L); } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl index 254a65cd632..49f9aea88ee 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl @@ -12,6 +12,10 @@ struct HDShadowContext { float unused; }; #endif +#ifndef HAVE_MULTIPLE_SCATTERING_DATA +struct MultipleScatteringData { float unused; }; +#endif + // LightLoopContext is not visible from Material (user should not use these properties in Material file) // It allow the lightloop to have transmit sampling information (do we use atlas, or texture array etc...) struct LightLoopContext @@ -23,6 +27,9 @@ struct LightLoopContext uint contactShadow; // a bit mask of 24 bits that tell if the pixel is in a contact shadow or not real contactShadowFade; // combined fade factor of all contact shadows SHADOW_TYPE shadowValue; // Stores the value of the cascade shadow map + + // Stores the multiple scattering data for the sun light. + MultipleScatteringData scatteringData; }; // LightLoopOutput is the output of the LightLoop fuction call. diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl index c26a83c8517..3b997ba4c16 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl @@ -10,4 +10,6 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/HDShadow.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl" + #endif // UNITY_LIGHTING_INCLUDED diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering.meta new file mode 100644 index 00000000000..6e40da560aa --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43d9a714307c3dd41a238efd4dd06abb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl new file mode 100644 index 00000000000..fc1d74d2c83 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl @@ -0,0 +1,79 @@ +// TODO: It is currently tricky to move this tracing util from the package as we then have a conflicting/redefinition +// issue from the "HairVert" custom node. The solution may need to be a secondary cbuffer for general binding. +// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimData.hlsl" +// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimComputeVolumeUtility.hlsl" + +float3 VolumeUVWToWorld(float3 uvw) +{ + float3 positionWS = (uvw * (_VolumeWorldMax - _VolumeWorldMin)) + _VolumeWorldMin; + return positionWS; +} + +// Currently the only routine we support for gathering multiple scattering information is by tracing a density volume. +#define MULTIPLE_SCATTERING_DENSITY_VOLUME 1 + +// Inform LightLoopDefs.hlsl that we have a multiple scattering struct define. +#define HAVE_MULTIPLE_SCATTERING_DATA + +struct MultipleScatteringData +{ + float fiberCount; + +#if MULTIPLE_SCATTERING_DENSITY_VOLUME + float3 shadowProxyPositionRWS; +#endif +}; + +MultipleScatteringData EvaluateMultipleScattering_Light(PositionInputs posInputs, float3 L) +{ + MultipleScatteringData data; + ZERO_INITIALIZE(MultipleScatteringData, data); + +#if MULTIPLE_SCATTERING_DENSITY_VOLUME + // Trace against the density field in the shadow ray direction. + const float3 positionWS = GetAbsolutePositionWS(posInputs.positionWS); + const float3 directionWS = L; + + const int numStepsWithinCell = 10; + const int numSteps = _VolumeCells.x * numStepsWithinCell; + + VolumeTraceState trace = VolumeTraceBegin(positionWS, directionWS, 0.5, numStepsWithinCell); + + // Track the outermost edge coordinate. + float3 shadowProxyCoord = trace.uvw; + + for (int i = 0; i != numSteps; i++) + { + if (VolumeTraceStep(trace)) + { + float cellDensitySampled = VolumeSampleScalar(_VolumeDensity, trace.uvw); + + // TODO: Better strand count approximation. + data.fiberCount += cellDensitySampled; + + if (any(cellDensitySampled)) + { + // While tracing, track the outermost coordinate in the shadow ray direction. + // This will be used to override the shadow test to handle self-occlusion between strands. + shadowProxyCoord = trace.uvw; + } + } + } + + // Transform the outermost coordinate into terms of camera relative world space. + float3 shadowProxyPositionWS = VolumeUVWToWorld(shadowProxyCoord); + data.shadowProxyPositionRWS = GetCameraRelativePositionWS(shadowProxyPositionWS); +#else + // TODO: More optimal routine (ie Deep Opacity Maps). +#endif + + return data; +} + +void EvaluateMultipleScattering_ShadowProxy(MultipleScatteringData scatteringData, inout float3 positionWS) +{ +#if MULTIPLE_SCATTERING_DENSITY_VOLUME + // Modify the shadow sample position to be the edge of the density volume toward the light. + positionWS = scatteringData.shadowProxyPositionRWS; +#endif +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta new file mode 100644 index 00000000000..e97d9ffcade --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4ad238498a9cf924489ff520fd98d3ba +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl index 1619f52dbf2..162d46312a1 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl @@ -92,6 +92,26 @@ DirectLighting ShadeSurface_Directional(LightLoopContext lightLoopContext, else #endif { +#ifdef LIGHT_EVALUATES_MULTIPLE_SCATTERING + MultipleScatteringData scatteringData; + + if ((light.shadowIndex >= 0) && (light.shadowDimmer > 0)) + { + // If the sun light shadows are already evaluated, then scattering data is too. + scatteringData = lightLoopContext.scatteringData; + } + else + { + scatteringData = EvaluateMultipleScattering_Light(posInput, L); + } + + // Due to self-occlusion from shadows within the scattering volume, we call this to modify the sampled position for shadows. + EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); + + // Fill the BSDF data with the approximated multiple scattering terms for this light. + EvaluateMultipleScattering_Material(V, L, scatteringData, bsdfData); +#endif + SHADOW_TYPE shadow = EvaluateShadow_Directional(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData)); float NdotL = dot(bsdfData.normalWS, L); // No microshadowing when facing away from light (use for thin transmission as well) shadow *= NdotL >= 0.0 ? ComputeMicroShadowing(GetAmbientOcclusionForMicroShadowing(bsdfData), NdotL, _MicroShadowOpacity) : 1.0; @@ -175,6 +195,15 @@ DirectLighting ShadeSurface_Punctual(LightLoopContext lightLoopContext, else #endif { +#ifdef LIGHT_EVALUATES_MULTIPLE_SCATTERING + MultipleScatteringData scatteringData = EvaluateMultipleScattering_Light(posInput, L); + + // Due to self-occlusion from shadows within the a volume, we call this to modify the sampled position for shadows. + EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); + + // Fill the BSDF data with the approximated multiple scattering terms for this light. + EvaluateMultipleScattering_Material(V, L, scatteringData, bsdfData); +#endif // This code works for both surface reflection and thin object transmission. SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances); lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index e44a6ba7e8e..5334d8e94db 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -144,6 +144,9 @@ public struct BSDFData public float roughnessTRT; public float roughnessRadial; + + public Vector3 globalScattering; + public Vector3 localScattering; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index cfaa6818697..af2ac2767a4 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -70,6 +70,8 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT (1481) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) +#define DEBUGVIEW_HAIR_BSDFDATA_GLOBAL_SCATTERING (1484) +#define DEBUGVIEW_HAIR_BSDFDATA_LOCAL_SCATTERING (1485) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -130,6 +132,8 @@ struct BSDFData float roughnessTT; float roughnessTRT; float roughnessRadial; + float3 globalScattering; + float3 localScattering; }; // @@ -312,6 +316,12 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL: result = bsdfdata.roughnessRadial.xxx; break; + case DEBUGVIEW_HAIR_BSDFDATA_GLOBAL_SCATTERING: + result = bsdfdata.globalScattering; + break; + case DEBUGVIEW_HAIR_BSDFDATA_LOCAL_SCATTERING: + result = bsdfdata.localScattering; + break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index cbfddb1f64c..f427a70c780 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -6,7 +6,6 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/SubsurfaceScattering/SubsurfaceScattering.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/NormalBuffer.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/VolumeRendering.hlsl" -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl" //----------------------------------------------------------------------------- // Texture and constant buffer declaration @@ -26,15 +25,12 @@ // #define HAIR_DISPLAY_REFERENCE_BSDF // #define HAIR_DISPLAY_REFERENCE_IBL -#if _USE_DENSITY_VOLUME_SCATTERING -// Temp -#define LIGHT_EVALUATION_NO_SHADOWS -#endif - // An extra material feature flag we utilize to compile two different versions of BSDF evaluation (one with transmission lobe // for analytic lights, one without transmission lobe for environment light). -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 16) -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING (1 << 17) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R (1 << 16) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 17) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT (1 << 18) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING (1 << 19) //----------------------------------------------------------------------------- // Helper functions/variable specific to this material @@ -333,11 +329,6 @@ struct PreLightData { float NdotV; // Could be negative due to normal mapping, use ClampNdotV() - // Scattering -#if _USE_DENSITY_VOLUME_SCATTERING - HairScatteringData scatteringData; -#endif - // IBL float3 iblR; // Reflected specular direction, used for IBL in EvaluateBSDF_Env() float iblPerceptualRoughness; @@ -432,12 +423,6 @@ PreLightData GetPreLightData(float3 V, PositionInputs posInput, inout BSDFData b // Construct a right-handed view-dependent orthogonal basis around the normal preLightData.orthoBasisViewNormal = GetOrthoBasisViewNormal(V, N, preLightData.NdotV); -#if _USE_DENSITY_VOLUME_SCATTERING - // We initialize this to zero in this case, as it is actually evaluated per-light. - // (Also, we can't specify struct in BSDFData which is why we define it in PreLightData). - ZERO_INITIALIZE(HairScatteringData, preLightData.scatteringData); -#endif - return preLightData; } @@ -614,6 +599,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Solve the first three lobes (R, TT, TRT). // R + if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R)) { M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleR, bsdfData.roughnessR); @@ -648,6 +634,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD } // TRT + if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT)) { M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTRT, bsdfData.roughnessTRT); @@ -670,7 +657,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Transmission event is built into the model. // Some stubborn NaNs have cropped up due to the angle optimization, we suppress them here with a max for now. - cbsdf.specR = max(S, 0); + cbsdf.specR = max(S , 0); #endif // Multiple Scattering @@ -678,8 +665,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING)) { // Debug Dual Scattering Components - // cbsdf.specR = preLightData.scatteringData.globalScattering; - // cbsdf.specR = preLightData.scatteringData.localScattering; + cbsdf.specR += bsdfData.localScattering; + cbsdf.specR *= bsdfData.globalScattering; // Nan cbsdf.specR = max(cbsdf.specR, 0); @@ -704,6 +691,10 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Surface shading (all light types) below //----------------------------------------------------------------------------- +#ifdef _USE_DENSITY_VOLUME_SCATTERING +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl" +#endif //_USE_DENSITY_VOLUME_SCATTERING + // Hair used precomputed transmittance, no thick transmittance required #define MATERIAL_INCLUDE_PRECOMPUTED_TRANSMISSION #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl" @@ -731,16 +722,6 @@ DirectLighting EvaluateBSDF_Punctual(LightLoopContext lightLoopContext, float3 V, PositionInputs posInput, PreLightData preLightData, LightData lightData, BSDFData bsdfData, BuiltinData builtinData) { -#if _USE_DENSITY_VOLUME_SCATTERING - // TODO: Move this whole block into the shader surface, or perhaps a callback. - // Currently we have to recompute the light vectors twice like this. - float3 L; - float4 distances; // {d, d^2, 1/d, d_proj} - GetPunctualLightVectors(posInput.positionWS, lightData, L, distances); - - preLightData.scatteringData = EvaluateMultipleScattering(bsdfData, V, L, posInput.positionWS); -#endif - return ShadeSurface_Punctual(lightLoopContext, posInput, builtinData, preLightData, lightData, bsdfData, V); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering.meta new file mode 100644 index 00000000000..bb2c462d395 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b19983fcee6344119127ac5e62d5dda3 +timeCreated: 1627589632 \ No newline at end of file diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl similarity index 76% rename from com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl rename to com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index 94a1d07d0a9..aaaca3e92fc 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -1,8 +1,5 @@ -#if _USE_DENSITY_VOLUME_SCATTERING -// NOTE: Temporary package dependency. We should move all of this to somewhere in HDRP -// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimData.hlsl" -// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimComputeVolumeUtility.hlsl" -#endif +// Inform the lightloop and evaluation to perform the necesarry tracing work and invoke the hair dual scattering implementation. +#define LIGHT_EVALUATES_MULTIPLE_SCATTERING #define STRAND_DIAMETER_MILLIMETERS 0.02 #define STRAND_DIAMETER_METERS (STRAND_DIAMETER_MILLIMETERS * METERS_PER_MILLIMETER) @@ -14,14 +11,10 @@ TEXTURE3D(_PreIntegratedHairFiberScattering); struct HairScatteringData { - float strandCount; - - float3 averageScattering[2]; - float3 averageVariance[2]; - float3 averageShift[2]; - - float3 globalScattering; - float3 localScattering; + // 0: Front Hemisphere, 1: Back Hemisphere + float3 averageScattering [2]; + float3 averageVariance [2]; + float3 averageShift [2]; }; float ScatteringSpreadGaussian(float x, float v) @@ -29,39 +22,8 @@ float ScatteringSpreadGaussian(float x, float v) return rsqrt(TWO_PI * v) * exp(-Sq(x) / (2 * v)); } -float EvaluateStrandCount(float3 L, float3 P) -{ -#if _USE_DENSITY_VOLUME_SCATTERING - // Trace against the density field in the light ray direction. - const float3 worldPos = GetAbsolutePositionWS(P); - const float3 worldDir = L; - - const int numStepsWithinCell = 10; - const int numSteps = _VolumeCells.x * numStepsWithinCell; - - VolumeTraceState trace = VolumeTraceBegin(worldPos, worldDir, 0.5, numStepsWithinCell); - - float strandCountApprox = 0; - - for (int i = 0; i != numSteps; i++) - { - if (VolumeTraceStep(trace)) - { - float cellDensity = VolumeSampleScalar(_VolumeDensity, trace.uvw); - - // TODO: Strand Count - strandCountApprox += cellDensity; - } - } - - return strandCountApprox * 0.1; -#else - // TODO - return 1; -#endif -} - -// TODO: Maybe collapse all of this into one scattering data gather. +// TODO: Currently the dual scattering approximation is assuming to be used for hair fibers, but it can be used for other +// fiber materials (ie Fabric). It would be good to eventually generalize this and move it out of hair material evaluation. HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) { HairScatteringData scatteringData; @@ -135,7 +97,7 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) return scatteringData; } -HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float3 L, float3 P) +void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringData lightScatteringData, inout BSDFData bsdfData) { float3 T = bsdfData.hairStrandDirectionWS; @@ -156,10 +118,7 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float } // Fetch the various preintegrated data. - HairScatteringData scatteringData = GetHairScatteringData(bsdfData, sinThetaI); - - // Fetch the number of hair fibers between the shading point x and the light. - scatteringData.strandCount = EvaluateStrandCount(L, P); + HairScatteringData hairScatteringData = GetHairScatteringData(bsdfData, sinThetaI); // Solve for multiple scattering in a volume of hair fibers with concepts from: // "Dual Scattering Approximation for Fast Multiple Scattering in Hair" (Zinke et. al) @@ -167,13 +126,13 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float // "A BSSRDF Model for Efficient Rendering of Fur with Global Illumination" (Yan et. al) // Pre-define some shorthand for the symbols. - const float n = scatteringData.strandCount; - const float3 af = scatteringData.averageScattering[FRONT]; - const float3 ab = scatteringData.averageScattering[BACK]; - const float3 sf = scatteringData.averageShift[FRONT]; - const float3 sb = scatteringData.averageShift[BACK]; - const float3 Bf = scatteringData.averageVariance[FRONT]; - const float3 Bb = scatteringData.averageVariance[BACK]; + const float n = lightScatteringData.fiberCount; + const float3 af = hairScatteringData.averageScattering[FRONT]; + const float3 ab = hairScatteringData.averageScattering[BACK]; + const float3 sf = hairScatteringData.averageShift[FRONT]; + const float3 sb = hairScatteringData.averageShift[BACK]; + const float3 Bf = hairScatteringData.averageVariance[FRONT]; + const float3 Bb = hairScatteringData.averageVariance[BACK]; const float3 Bf2 = Sq(Bf); const float3 Bb2 = Sq(Bb); @@ -187,7 +146,7 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). float3 Tf = df * pow(af, n); - // Approximate the accumulated variance, by assuming strands all have the same average roughness. ( Eq. 7 Disney ) + // Approximate the accumulated variance, by assuming strands all have the same average roughness and inclination. ( Eq. 7 Disney ) float3 sigmaF = Bf2 * n; // Computes the forward scattering spread ( Eq. 7 ). @@ -196,7 +155,7 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float ScatteringSpreadGaussian(thetaH, sigmaF.b)) * rcp(PI * cos(thetaD)); // Resolve the final global scattering term ( Eq. 4 ). - scatteringData.globalScattering = Tf * Sf; + bsdfData.globalScattering = Tf * Sf; } // Local scattering. @@ -249,10 +208,8 @@ HairScatteringData EvaluateMultipleScattering(BSDFData bsdfData, float3 V, float ScatteringSpreadGaussian(thetaH - deltaB.b, sigmaB.b)); // Resolve the overall local scattering term ( Eq. 9 & 10 ). - scatteringData.localScattering = 2 * Ab * Sb; - scatteringData.localScattering /= cos(thetaD); - scatteringData.localScattering *= db; + bsdfData.localScattering = 2 * Ab * Sb; + bsdfData.localScattering /= cos(thetaD); + bsdfData.localScattering *= db; } - - return scatteringData; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl.meta similarity index 100% rename from com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta rename to com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl.meta diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute similarity index 94% rename from com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute rename to com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute index 0885114405b..deab9d3a201 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute @@ -26,6 +26,9 @@ SurfaceData ConfigureFiberSurface(float diffuseColor, float perceptualSmoothness surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER; // Skip the scattering component of the BCSDF as we are pre-integrating from the single-scattered reflectance. + // surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R; + // surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT; + // surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT; surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING; // Here we factor by Diffuse Color, which will be converted to Absorption in ConvertSurfaceDataToBSDFData. @@ -82,7 +85,6 @@ void Main (uint3 dispatchThreadID : SV_DispatchThreadID) // Configure the initial incident theta direction. float sinThetaI = UVW.y; - float cosThetaI = sqrt(saturate(1 - Sq(sinThetaI))); // Instead of integrating over the front and back hemispheres separately, we instead uniformly sample the sphere and // sort the average energy as front or back scattering depending on the random direction's orientation. @@ -99,7 +101,7 @@ void Main (uint3 dispatchThreadID : SV_DispatchThreadID) for (float phi = -HALF_PI; phi < HALF_PI; phi += DPHI) { // Places a light on the back scattering hemisphere (due to the constriction of phi to the -pi/2 to pi/2 range). - float3 L = SphericalToCartesian(phi, cosThetaI); + float3 L = SphericalToCartesian(phi, sinThetaI); // Invoke the fiber scattering function. CBSDF cbsdf = EvaluateBSDF(V, L, preLightData, bsdfData); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute.meta similarity index 100% rename from com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedFiberScattering.compute.meta rename to com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute.meta diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitProperties.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitProperties.hlsl index d20882376c4..2dcd0ca8a2d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitProperties.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitProperties.hlsl @@ -142,11 +142,12 @@ float4 _UVMappingMaskEmissive; float4 _InvPrimScale; // Only XY are used // Wind -float _InitialBend; -float _Stiffness; -float _Drag; -float _ShiverDrag; -float _ShiverDirectionality; +// TEMP: Hide this as the generic name conflicts with hair package. +// float _InitialBend; +// float _Stiffness; +// float _Drag; +// float _ShiverDrag; +// float _ShiverDirectionality; // Specular AA float _EnableGeometricSpecularAA; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs index e805fc8b379..32f6f70eb1a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineRuntimeResources.cs @@ -178,7 +178,7 @@ public sealed class ShaderResources public Shader preIntegratedFGD_CookTorrancePS; [Reload("Runtime/Material/PreIntegratedFGD/PreIntegratedFGD_Marschner.shader")] public Shader preIntegratedFGD_MarschnerPS; - [Reload("Runtime/Material/Hair/PreIntegratedFiberScattering.compute")] + [Reload("Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute")] public ComputeShader preIntegratedFiberScatteringCS; // Utilities / Core From c8ceb675e7f5e27d13f19c63353356d73526ee38 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Tue, 3 Aug 2021 08:59:24 -0400 Subject: [PATCH 45/73] Progress on average scattering preintegration for the DS scatter bcsdf --- .../ShaderGraph/Templates/ShaderPass.template | 1 + .../Runtime/Material/Hair/Hair.cs | 49 +++++- .../Runtime/Material/Hair/Hair.cs.hlsl | 20 ++- .../Runtime/Material/Hair/Hair.hlsl | 39 ++++- .../HairMultipleScattering.hlsl | 142 +++++++++--------- ...irMultipleScatteringPreIntegration.compute | 78 +++++++++- 6 files changed, 242 insertions(+), 87 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/ShaderPass.template b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/ShaderPass.template index 72ebdd8e23f..b52e239986b 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/ShaderPass.template +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/ShaderPass.template @@ -19,6 +19,7 @@ Pass // Pragmas $splice(PassPragmas) + #pragma enable_d3d11_debug_symbols // Keywords $splice(PassKeywords) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 5334d8e94db..f7fe6109c83 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -145,7 +145,10 @@ public struct BSDFData public float roughnessRadial; - public Vector3 globalScattering; + // Dual scattering + public float directFraction; + public Vector3 forwardTransmittance; + public Vector3 forwardVariance; public Vector3 localScattering; }; @@ -166,11 +169,20 @@ public struct BSDFData private const int m_DimAbsorption = 64; private bool m_PreIntegratedFiberScatteringIsInit; + // X - Roughness + // Y - Theta + // Z - Absorption + private RenderTexture m_PreIntegratedFiberAverageScatteringLUT; + private bool m_PreIntegratedFiberAverageScatteringIsInit; + // NOTE: Since we re-use Hair.hlsl for both the BSDF pre-integration and at runtime, we need to maintain these two different binding // names to avoid compiler complaining. public static readonly int _PreIntegratedHairFiberScatteringUAV = Shader.PropertyToID("_PreIntegratedHairFiberScatteringUAV"); public static readonly int _PreIntegratedHairFiberScattering = Shader.PropertyToID("_PreIntegratedHairFiberScattering"); + public static readonly int _PreIntegratedAverageHairFiberScatteringUAV = Shader.PropertyToID("_PreIntegratedAverageHairFiberScatteringUAV"); + public static readonly int _PreIntegratedAverageHairFiberScattering = Shader.PropertyToID("_PreIntegratedAverageHairFiberScattering"); + public Hair() {} public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntimeResources defaultResources) @@ -193,6 +205,18 @@ public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntim }; m_PreIntegratedFiberScatteringLUT.Create(); + m_PreIntegratedFiberAverageScatteringLUT = new RenderTexture(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16B16A16_SFloat) + { + dimension = TextureDimension.Tex3D, + volumeDepth = m_DimAbsorption, + enableRandomWrite = true, + hideFlags = HideFlags.HideAndDontSave, + filterMode = FilterMode.Point, + wrapMode = TextureWrapMode.Clamp, + name = CoreUtils.GetRenderTargetAutoName(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16B16A16_SFloat, "PreIntegratedAverageFiberScattering") + }; + m_PreIntegratedFiberAverageScatteringLUT.Create(); + m_PreIntegratedFiberScatteringCS = defaultResources.shaders.preIntegratedFiberScatteringCS; } @@ -203,22 +227,34 @@ public override void Cleanup() CoreUtils.Destroy(m_PreIntegratedFiberScatteringLUT); m_PreIntegratedFiberScatteringLUT = null; + + CoreUtils.Destroy(m_PreIntegratedFiberAverageScatteringLUT); + m_PreIntegratedFiberAverageScatteringLUT = null; } public override void RenderInit(CommandBuffer cmd) { PreIntegratedFGD.instance.RenderInit(PreIntegratedFGD.FGDIndex.FGD_GGXAndDisneyDiffuse, cmd); - if (m_PreIntegratedFiberScatteringIsInit || m_PreIntegratedFiberScatteringCS == null) + if (m_PreIntegratedFiberScatteringCS == null) return; // Preintegration of the dual scattering LUT. + if (!m_PreIntegratedFiberScatteringIsInit) { cmd.SetComputeTextureParam(m_PreIntegratedFiberScatteringCS, 0, _PreIntegratedHairFiberScatteringUAV, m_PreIntegratedFiberScatteringLUT); cmd.DispatchCompute(m_PreIntegratedFiberScatteringCS, 0, HDUtils.DivRoundUp(m_DimTheta, 8), HDUtils.DivRoundUp(m_DimBeta, 8), HDUtils.DivRoundUp(m_DimAbsorption, 8)); + + m_PreIntegratedFiberScatteringIsInit = true; } - m_PreIntegratedFiberScatteringIsInit = true; + if (!m_PreIntegratedFiberAverageScatteringIsInit) + { + cmd.SetComputeTextureParam(m_PreIntegratedFiberScatteringCS, 1, _PreIntegratedAverageHairFiberScatteringUAV, m_PreIntegratedFiberAverageScatteringLUT); + cmd.DispatchCompute(m_PreIntegratedFiberScatteringCS, 1, HDUtils.DivRoundUp(m_DimTheta, 8), HDUtils.DivRoundUp(m_DimBeta, 8), HDUtils.DivRoundUp(m_DimAbsorption, 8)); + + m_PreIntegratedFiberAverageScatteringIsInit = true; + } } public override void Bind(CommandBuffer cmd) @@ -229,12 +265,17 @@ public override void Bind(CommandBuffer cmd) if (m_PreIntegratedAzimuthalScatteringLUT != null) cmd.SetGlobalTexture(HDShaderIDs._PreIntegratedAzimuthalScattering, m_PreIntegratedAzimuthalScatteringLUT); - if (m_PreIntegratedFiberScatteringLUT == null) { throw new Exception("Pre-Integrated Hair Fiber LUT not available!"); } cmd.SetGlobalTexture(_PreIntegratedHairFiberScattering, m_PreIntegratedFiberScatteringLUT); + + if (m_PreIntegratedFiberAverageScatteringLUT == null) + { + throw new Exception("Pre-Integrated Hair Fiber LUT not available!"); + } + cmd.SetGlobalTexture(_PreIntegratedAverageHairFiberScattering, m_PreIntegratedFiberAverageScatteringLUT); } } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index af2ac2767a4..60eeb863c9b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -70,8 +70,10 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT (1481) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) -#define DEBUGVIEW_HAIR_BSDFDATA_GLOBAL_SCATTERING (1484) -#define DEBUGVIEW_HAIR_BSDFDATA_LOCAL_SCATTERING (1485) +#define DEBUGVIEW_HAIR_BSDFDATA_DIRECT_FRACTION (1484) +#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_TRANSMITTANCE (1485) +#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_VARIANCE (1486) +#define DEBUGVIEW_HAIR_BSDFDATA_LOCAL_SCATTERING (1487) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -132,7 +134,9 @@ struct BSDFData float roughnessTT; float roughnessTRT; float roughnessRadial; - float3 globalScattering; + float directFraction; + float3 forwardTransmittance; + float3 forwardVariance; float3 localScattering; }; @@ -316,8 +320,14 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL: result = bsdfdata.roughnessRadial.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_GLOBAL_SCATTERING: - result = bsdfdata.globalScattering; + case DEBUGVIEW_HAIR_BSDFDATA_DIRECT_FRACTION: + result = bsdfdata.directFraction.xxx; + break; + case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_TRANSMITTANCE: + result = bsdfdata.forwardTransmittance; + break; + case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_VARIANCE: + result = bsdfdata.forwardVariance; break; case DEBUGVIEW_HAIR_BSDFDATA_LOCAL_SCATTERING: result = bsdfdata.localScattering; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index f427a70c780..4da5cf10cd8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -48,6 +48,14 @@ real D_LongitudinalScatteringGaussian(real theta, real beta) return rcp(beta * sqrtTwoPi) * exp(-0.5 * v * v); } +real3 D_LongitudinalScatteringGaussian(real3 theta, real3 beta) +{ + real3 v = theta / beta; + + const real sqrtTwoPi = 2.50662827463100050241; + return rcp(beta * sqrtTwoPi) * exp(-0.5 * v * v); +} + float ModifiedRefractionIndex(float cosThetaD) { // Original derivation of modified refraction index for arbitrary IOR. @@ -664,11 +672,34 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #if _USE_DENSITY_VOLUME_SCATTERING if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING)) { - // Debug Dual Scattering Components - cbsdf.specR += bsdfData.localScattering; - cbsdf.specR *= bsdfData.globalScattering; + const float directFraction = 0; + + const float3 fsDirect = cbsdf.specR; + const float3 fsBack = bsdfData.localScattering; + + // Compute the scattered bsdf + const float3 beta = float3( + bsdfData.roughnessR, + bsdfData.roughnessTT, + bsdfData.roughnessTRT + ); + + const float3 shift = float3( + bsdfData.cuticleAngleR, + bsdfData.cuticleAngleTT, + bsdfData.cuticleAngleTRT + ); + + const float3 MG = D_LongitudinalScatteringGaussian(thetaH - shift, beta + bsdfData.forwardVariance); + const float3 fsScatter = 0.2; + + const float3 Tf = bsdfData.forwardTransmittance; + + // Resolve the dual scattering approximation. + const float3 Fdirect = bsdfData.directFraction * (fsDirect + fsBack); + const float3 Fscatter = Tf * 0.7 * (fsScatter + PI * fsBack); - // Nan + cbsdf.specR = (Fdirect + Fscatter); cbsdf.specR = max(cbsdf.specR, 0); } #else diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index aaaca3e92fc..b145d86b74a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -4,6 +4,8 @@ #define STRAND_DIAMETER_MILLIMETERS 0.02 #define STRAND_DIAMETER_METERS (STRAND_DIAMETER_MILLIMETERS * METERS_PER_MILLIMETER) +#define DIRECT_ILLUMINATION_THRESHOLD 0.25 + TEXTURE3D(_PreIntegratedHairFiberScattering); #define FRONT 0 @@ -17,7 +19,7 @@ struct HairScatteringData float3 averageShift [2]; }; -float ScatteringSpreadGaussian(float x, float v) +float3 ScatteringSpreadGaussian(float3 x, float3 v) { return rsqrt(TWO_PI * v) * exp(-Sq(x) / (2 * v)); } @@ -42,8 +44,8 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) float2 G = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.g), 0).xy; float2 B = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.b), 0).xy; - scatteringData.averageScattering[FRONT] = float3(R.x, G.x, B.x); - scatteringData.averageScattering[BACK] = float3(R.y, G.y, B.y); + scatteringData.averageScattering[FRONT] = abs(float3(R.x, G.x, B.x)); + scatteringData.averageScattering[BACK] = abs(float3(R.y, G.y, B.y)); } // 2) Compute the average scattering variance @@ -137,79 +139,79 @@ void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringD const float3 Bb2 = Sq(Bb); // Global scattering. - { - // Following the observation of Zinke et. al., density factor (ratio of occlusion of the shading point by neighboring strands) - // can be approximated with this constant to match most path traced references. - const float df = 0.7; + // ----------------------------------------------------------------------------------- + // Following the observation of Zinke et. al., density factor (ratio of occlusion of the shading point by neighboring strands) + // can be approximated with this constant to match most path traced references. + const float df = 0.7; + if (n > DIRECT_ILLUMINATION_THRESHOLD) + { // Approximate the transmittance by assuming that all hair strands between the shading point and the light are // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). - float3 Tf = df * pow(af, n); + bsdfData.forwardTransmittance = df * pow(af, n); // Approximate the accumulated variance, by assuming strands all have the same average roughness and inclination. ( Eq. 7 Disney ) - float3 sigmaF = Bf2 * n; - - // Computes the forward scattering spread ( Eq. 7 ). - float3 Sf = float3( ScatteringSpreadGaussian(thetaH, sigmaF.r), - ScatteringSpreadGaussian(thetaH, sigmaF.g), - ScatteringSpreadGaussian(thetaH, sigmaF.b)) * rcp(PI * cos(thetaD)); - - // Resolve the final global scattering term ( Eq. 4 ). - bsdfData.globalScattering = Tf * Sf; + bsdfData.forwardVariance = Bf2 * n; } - - // Local scattering. + else { - // Similarly to front scattering, this same density coefficient is suggested for matching most path traced references. - const float db = 0.7; - - // Compute the average backscattering attenuation, the attenuation in the neighborhood of x. - // Here we only model the first and third backscattering event, as the following are negligible. - - // Ex. of a single backward scattering event. Where L is the incident light, V is the camera, (F) is a fiber cross-section - // with a forward scattering event, and (B) is a fiber cross section with a backward scattering event. - // - // V <--------------- - // | - // (F) <--- ... ---> (B) - // L -------------->| - - float3 af1 = af; - float3 af2 = Sq(af1); - - float3 afI1 = 1 - af2; - float3 afI2 = Sq(afI1); - float3 afI3 = afI2 * afI1; - - float3 ab1 = ab; - float3 ab2 = Sq(ab1); - float3 ab3 = ab2 * ab1; - - // Analytic solutions to the potential infinite permutations of backward scattering - // in a volume of fibers for one and three backward scatters ( Eq. 11, 13, & 14 ). - float3 A1 = (ab1 * af2) / afI1; - float3 A3 = (ab3 * af2) / afI3; - float3 Ab = A1 + A3; - - // Computes the average longitudinal shift ( Eq. 16 ). - float3 shiftB = 1 - ((2 * ab2) / afI2); - float3 shiftF = ((2 * afI2) + (4 * af2 * ab2)) / afI3; - float3 deltaB = (sb * shiftB) + (sf * shiftF); - - // Compute the average back scattering standard deviation ( Eq. 17 ). - float3 sigmaB = (1 + db * af2); - sigmaB *= (ab * sqrt((2 * Bf2) + Bb2)) + (ab3 * sqrt((2 * Bf2) + Bb2)); - sigmaB /= ab + (ab3 * ((2 * Bf) + (3 * Bb))); - sigmaB = Sq(sigmaB); - - // Computes the average back scattering spread ( Eq. 15 ). - float3 Sb = float3( ScatteringSpreadGaussian(thetaH - deltaB.r, sigmaB.r), - ScatteringSpreadGaussian(thetaH - deltaB.g, sigmaB.g), - ScatteringSpreadGaussian(thetaH - deltaB.b, sigmaB.b)); - - // Resolve the overall local scattering term ( Eq. 9 & 10 ). - bsdfData.localScattering = 2 * Ab * Sb; - bsdfData.localScattering /= cos(thetaD); - bsdfData.localScattering *= db; + // If directly illuminated (no intersecting strands). + bsdfData.forwardTransmittance = 1; + bsdfData.forwardVariance = 0; } + + // Local scattering. + // ------------------------------------------------------------------------------------ + + // Similarly to front scattering, this same density coefficient is suggested for matching most path traced references. + const float db = 0.7; + + // Compute the average backscattering attenuation, the attenuation in the neighborhood of x. + // Here we only model the first and third backscattering event, as the following are negligible. + + // Ex. of a single backward scattering event. Where L is the incident light, V is the camera, (F) is a fiber cross-section + // with a forward scattering event, and (B) is a fiber cross section with a backward scattering event. + // + // V <--------------- + // | + // (F) <--- ... ---> (B) + // L -------------->| + + float3 af1 = af; + float3 af2 = Sq(af1); + + float3 afI1 = 1 - af2; + float3 afI2 = Sq(afI1); + float3 afI3 = afI2 * afI1; + + float3 ab1 = ab; + float3 ab2 = Sq(ab1); + float3 ab3 = ab2 * ab1; + + // Analytic solutions to the potential infinite permutations of backward scattering + // in a volume of fibers for one and three backward scatters ( Eq. 11, 13, & 14 ). + float3 A1 = (ab1 * af2) / afI1; + float3 A3 = (ab3 * af2) / afI3; + float3 Ab = A1 + A3; + + // Computes the average longitudinal shift ( Eq. 16 ). + float3 shiftB = 1 - ((2 * ab2) / afI2); + float3 shiftF = ((2 * afI2) + (4 * af2 * ab2)) / afI3; + float3 deltaB = (sb * shiftB) + (sf * shiftF); + + // Compute the average back scattering standard deviation ( Eq. 17 ). + float3 sigmaB = (1 + db * af2); + sigmaB *= (ab * sqrt((2 * Bf2) + Bb2)) + (ab3 * sqrt((2 * Bf2) + Bb2)); + sigmaB /= ab + (ab3 * ((2 * Bf) + (3 * Bb))); + sigmaB = Sq(sigmaB); + + // Computes the average back scattering spread ( Eq. 15 ). + float3 Sb = ScatteringSpreadGaussian(thetaH - deltaB, sigmaB + bsdfData.forwardVariance); + + // Resolve the overall local scattering term ( Eq. 9 & 10 ). + bsdfData.localScattering = 2 * Ab * Sb; + bsdfData.localScattering /= cos(thetaD); + bsdfData.localScattering *= db; + + bsdfData.directFraction = n < DIRECT_ILLUMINATION_THRESHOLD ? 1 : 0; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute index deab9d3a201..bd98a586c68 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute @@ -1,4 +1,5 @@ #pragma kernel Main +#pragma kernel PreIntegrateAzimuthalScattering // This define is required for invoking BSDF. #define HAS_LIGHTLOOP @@ -17,7 +18,7 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStencilUsage.cs.hlsl" -SurfaceData ConfigureFiberSurface(float diffuseColor, float perceptualSmoothness) +SurfaceData ConfigureFiberSurface(float diffuseColor, float perceptualSmoothness, uint flags = 0) { SurfaceData surfaceData; ZERO_INITIALIZE(SurfaceData, surfaceData); @@ -26,11 +27,11 @@ SurfaceData ConfigureFiberSurface(float diffuseColor, float perceptualSmoothness surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER; // Skip the scattering component of the BCSDF as we are pre-integrating from the single-scattered reflectance. - // surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R; - // surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT; - // surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT; surfaceData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING; + // Setup any extra flags + surfaceData.materialFeatures |= flags; + // Here we factor by Diffuse Color, which will be converted to Absorption in ConvertSurfaceDataToBSDFData. // Note, this LUT is parameterized by single color channel / wavelength, to reduce the dimensionality. This means to // compute the average forward and backward scattering for a given absorption, the LUT must be sampled three times. @@ -127,3 +128,72 @@ void Main (uint3 dispatchThreadID : SV_DispatchThreadID) _PreIntegratedHairFiberScatteringUAV[dispatchThreadID] = INV_PI * (A / float2(C) * 0.5); } + +// Pre-integrate the average azimuthal scattering on the front scattering semi-circle ( Ref: Equation 25 ) +// TODO: This LUT and the above are parameterized the exact same way. Find a way to combine them into one sample? +// ----------------------------------------------------------------- + +RWTexture3D _PreIntegratedAverageHairFiberScatteringUAV; + +#define FLAGS_R MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT +#define FLAGS_TT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT +#define FLAGS_TRT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT + +[numthreads(8, 8, 8)] +void PreIntegrateAzimuthalScattering (uint3 dispatchThreadID : SV_DispatchThreadID) +{ + // Convert the dispatch coordinates to the generation space [0,1]. + float3 UVW = float3(((float3)dispatchThreadID + 0.5) / DIM); + + // Configure a theoretical hair fiber to evaluate the average attenuation. + SurfaceData surfaceDataR = ConfigureFiberSurface(UVW.z, UVW.x, FLAGS_R); + SurfaceData surfaceDataTT = ConfigureFiberSurface(UVW.z, UVW.x, FLAGS_TT); + SurfaceData surfaceDataTRT = ConfigureFiberSurface(UVW.z, UVW.x, FLAGS_TRT); + + // Use the conversion from the surface data to compute all of the per-lobe bsdf information. + BSDFData bsdfDataR = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceDataR); + BSDFData bsdfDataTT = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceDataTT); + BSDFData bsdfDataTRT = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceDataTRT); + + // Need to clamp the roughness manually since we invoke the BSDF manually. + // Without it, we get some artifacting in the LUT. + // TODO: all + // bsdfData.roughnessR = max(0.05, bsdfData.roughnessR); + // bsdfData.roughnessTT = max(0.05, bsdfData.roughnessTT); + // bsdfData.roughnessTRT = max(0.05, bsdfData.roughnessTRT); + + // Unused in this case. + PreLightData preLightData; + ZERO_INITIALIZE(PreLightData, preLightData); + + // Configure the initial incident theta direction. + float sinThetaI = UVW.y; + + float3 A = 0; + + for (uint w = 0; w < SPHERE_SAMPLES; w++) + { + float2 U = Hammersley2d(w, SPHERE_SAMPLES); + float3 V = SampleSphereUniform(U.x, U.y); + + // Integrate over all incident phi. + for (float phi = -HALF_PI; phi < HALF_PI; phi += DPHI) + { + // Places a light on the back scattering hemisphere (due to the constriction of phi to the -pi/2 to pi/2 range). + float3 L = SphericalToCartesian(phi, sinThetaI); + + // Invoke the fiber scattering function. + CBSDF cbsdfR = EvaluateBSDF(V, L, preLightData, bsdfDataR); + CBSDF cbsdfTT = EvaluateBSDF(V, L, preLightData, bsdfDataTT); + CBSDF cbsdfTRT = EvaluateBSDF(V, L, preLightData, bsdfDataTRT); + + + A += float3( cbsdfR.specR.x, + cbsdfTT.specR.x, + cbsdfTRT.specR.x ) / INV_FOUR_PI; + } + } + + + _PreIntegratedAverageHairFiberScatteringUAV[dispatchThreadID] = INV_PI * float4(A, 1); +} From 08cfb68124e11b3160a6790e089dd83b28d0f592 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 9 Aug 2021 18:39:28 -0400 Subject: [PATCH 46/73] Initial commit of completed DS implementation (average azimuthal scattering preintegration) --- .../Runtime/Lighting/LightLoop/LightLoop.hlsl | 16 +-- .../Lighting/LightLoop/LightLoopDef.hlsl | 7 - .../MultipleScattering.hlsl | 2 +- .../Runtime/Lighting/SurfaceShading.hlsl | 25 ++-- .../Runtime/Material/Hair/Hair.cs | 21 ++- .../Runtime/Material/Hair/Hair.cs.hlsl | 23 +-- .../Runtime/Material/Hair/Hair.hlsl | 121 ++++++++-------- .../HairMultipleScattering.hlsl | 134 +++++++++--------- ...irMultipleScatteringPreIntegration.compute | 87 ++++++------ 9 files changed, 198 insertions(+), 238 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index 81b8ad79128..4d7ffd30c5e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -200,7 +200,6 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS context.shadowContext = InitShadowContext(); context.shadowValue = 1; context.sampleReflection = 0; - ZERO_INITIALIZE(MultipleScatteringData, context.scatteringData); // With XR single-pass and camera-relative: offset position to do lighting computations from the combined center view (original camera matrix). // This is required because there is only one list of lights generated on the CPU. Shadows are also generated once and shared between the instanced views. @@ -228,25 +227,18 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS // TODO: this will cause us to load from the normal buffer first. Does this cause a performance problem? float3 L = -light.forward; + // In case of multiple scattering, for now we eat the VGPR cost and evaluate the sun shadow during directional light contribution evaluation. +#ifndef LIGHT_EVALUATES_MULTIPLE_SCATTERING // Is it worth sampling the shadow map? if ((light.lightDimmer > 0) && (light.shadowDimmer > 0) && // Note: Volumetric can have different dimmer, thus why we test it here IsNonZeroBSDF(V, L, preLightData, bsdfData) && !ShouldEvaluateThickObjectTransmission(V, L, preLightData, bsdfData, light.shadowIndex)) { - float3 shadowProxyPositionWS = posInput.positionWS; - -#ifdef LIGHT_EVALUATES_MULTIPLE_SCATTERING - // Since we evaluate the sun light early in this case for shadows (as well as for biasing the shadow), we cache the result in the context. - context.scatteringData = EvaluateMultipleScattering_Light(posInput, L); - - // ...and adjusts the sampled shadow position (if necessary). - EvaluateMultipleScattering_ShadowProxy(context.scatteringData, shadowProxyPositionWS); -#endif - context.shadowValue = GetDirectionalShadowAttenuation(context.shadowContext, - posInput.positionSS, shadowProxyPositionWS, GetNormalForShadowBias(bsdfData), + posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L); } +#endif } } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl index 49f9aea88ee..254a65cd632 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl @@ -12,10 +12,6 @@ struct HDShadowContext { float unused; }; #endif -#ifndef HAVE_MULTIPLE_SCATTERING_DATA -struct MultipleScatteringData { float unused; }; -#endif - // LightLoopContext is not visible from Material (user should not use these properties in Material file) // It allow the lightloop to have transmit sampling information (do we use atlas, or texture array etc...) struct LightLoopContext @@ -27,9 +23,6 @@ struct LightLoopContext uint contactShadow; // a bit mask of 24 bits that tell if the pixel is in a contact shadow or not real contactShadowFade; // combined fade factor of all contact shadows SHADOW_TYPE shadowValue; // Stores the value of the cascade shadow map - - // Stores the multiple scattering data for the sun light. - MultipleScatteringData scatteringData; }; // LightLoopOutput is the output of the LightLoop fuction call. diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl index fc1d74d2c83..bacd335f6cb 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl @@ -64,7 +64,7 @@ MultipleScatteringData EvaluateMultipleScattering_Light(PositionInputs posInputs float3 shadowProxyPositionWS = VolumeUVWToWorld(shadowProxyCoord); data.shadowProxyPositionRWS = GetCameraRelativePositionWS(shadowProxyPositionWS); #else - // TODO: More optimal routine (ie Deep Opacity Maps). + // TODO: Optimized routine (ie Deep Opacity Maps). #endif return data; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl index 162d46312a1..ee1fcac8519 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl @@ -93,23 +93,20 @@ DirectLighting ShadeSurface_Directional(LightLoopContext lightLoopContext, #endif { #ifdef LIGHT_EVALUATES_MULTIPLE_SCATTERING - MultipleScatteringData scatteringData; + MultipleScatteringData scatteringData = EvaluateMultipleScattering_Light(posInput, L); if ((light.shadowIndex >= 0) && (light.shadowDimmer > 0)) { - // If the sun light shadows are already evaluated, then scattering data is too. - scatteringData = lightLoopContext.scatteringData; - } - else - { - scatteringData = EvaluateMultipleScattering_Light(posInput, L); - } + // Due to self-occlusion from shadows within the scattering volume, we call this to modify the sampled position for shadows. + EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); - // Due to self-occlusion from shadows within the scattering volume, we call this to modify the sampled position for shadows. - EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); + lightLoopContext.shadowValue = GetDirectionalShadowAttenuation(lightLoopContext.shadowContext, + posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), + light.shadowIndex, L); + } - // Fill the BSDF data with the approximated multiple scattering terms for this light. - EvaluateMultipleScattering_Material(V, L, scatteringData, bsdfData); + // Propagate the fiber count to the BSDF. + bsdfData.fiberCount = scatteringData.fiberCount; #endif SHADOW_TYPE shadow = EvaluateShadow_Directional(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData)); @@ -201,8 +198,8 @@ DirectLighting ShadeSurface_Punctual(LightLoopContext lightLoopContext, // Due to self-occlusion from shadows within the a volume, we call this to modify the sampled position for shadows. EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); - // Fill the BSDF data with the approximated multiple scattering terms for this light. - EvaluateMultipleScattering_Material(V, L, scatteringData, bsdfData); + // Propagate the fiber count to the BSDF. + bsdfData.fiberCount = scatteringData.fiberCount; #endif // This code works for both surface reflection and thin object transmission. SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index f7fe6109c83..099b3380df4 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -146,10 +146,7 @@ public struct BSDFData public float roughnessRadial; // Dual scattering - public float directFraction; - public Vector3 forwardTransmittance; - public Vector3 forwardVariance; - public Vector3 localScattering; + public float fiberCount; }; @@ -169,9 +166,8 @@ public struct BSDFData private const int m_DimAbsorption = 64; private bool m_PreIntegratedFiberScatteringIsInit; - // X - Roughness - // Y - Theta - // Z - Absorption + // X - Theta + // Y - Absorption private RenderTexture m_PreIntegratedFiberAverageScatteringLUT; private bool m_PreIntegratedFiberAverageScatteringIsInit; @@ -205,15 +201,14 @@ public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntim }; m_PreIntegratedFiberScatteringLUT.Create(); - m_PreIntegratedFiberAverageScatteringLUT = new RenderTexture(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16B16A16_SFloat) + m_PreIntegratedFiberAverageScatteringLUT = new RenderTexture(m_DimTheta, m_DimAbsorption, 0, GraphicsFormat.R16G16B16A16_SFloat) { - dimension = TextureDimension.Tex3D, - volumeDepth = m_DimAbsorption, + dimension = TextureDimension.Tex2D, enableRandomWrite = true, hideFlags = HideFlags.HideAndDontSave, filterMode = FilterMode.Point, wrapMode = TextureWrapMode.Clamp, - name = CoreUtils.GetRenderTargetAutoName(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16B16A16_SFloat, "PreIntegratedAverageFiberScattering") + name = CoreUtils.GetRenderTargetAutoName(m_DimTheta, m_DimAbsorption, 0, GraphicsFormat.R16G16B16A16_SFloat, "PreIntegratedAverageFiberScattering") }; m_PreIntegratedFiberAverageScatteringLUT.Create(); @@ -251,9 +246,9 @@ public override void RenderInit(CommandBuffer cmd) if (!m_PreIntegratedFiberAverageScatteringIsInit) { cmd.SetComputeTextureParam(m_PreIntegratedFiberScatteringCS, 1, _PreIntegratedAverageHairFiberScatteringUAV, m_PreIntegratedFiberAverageScatteringLUT); - cmd.DispatchCompute(m_PreIntegratedFiberScatteringCS, 1, HDUtils.DivRoundUp(m_DimTheta, 8), HDUtils.DivRoundUp(m_DimBeta, 8), HDUtils.DivRoundUp(m_DimAbsorption, 8)); + cmd.DispatchCompute(m_PreIntegratedFiberScatteringCS, 1, HDUtils.DivRoundUp(m_DimTheta, 8), HDUtils.DivRoundUp(m_DimBeta, 8), 1); - m_PreIntegratedFiberAverageScatteringIsInit = true; + m_PreIntegratedFiberAverageScatteringIsInit = false; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 60eeb863c9b..f32dac55b46 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -70,10 +70,7 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT (1481) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) -#define DEBUGVIEW_HAIR_BSDFDATA_DIRECT_FRACTION (1484) -#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_TRANSMITTANCE (1485) -#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_VARIANCE (1486) -#define DEBUGVIEW_HAIR_BSDFDATA_LOCAL_SCATTERING (1487) +#define DEBUGVIEW_HAIR_BSDFDATA_FIBER_COUNT (1484) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -134,10 +131,7 @@ struct BSDFData float roughnessTT; float roughnessTRT; float roughnessRadial; - float directFraction; - float3 forwardTransmittance; - float3 forwardVariance; - float3 localScattering; + float fiberCount; }; // @@ -320,17 +314,8 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL: result = bsdfdata.roughnessRadial.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_DIRECT_FRACTION: - result = bsdfdata.directFraction.xxx; - break; - case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_TRANSMITTANCE: - result = bsdfdata.forwardTransmittance; - break; - case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_VARIANCE: - result = bsdfdata.forwardVariance; - break; - case DEBUGVIEW_HAIR_BSDFDATA_LOCAL_SCATTERING: - result = bsdfdata.localScattering; + case DEBUGVIEW_HAIR_BSDFDATA_FIBER_COUNT: + result = bsdfdata.fiberCount.xxx; break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 4da5cf10cd8..b59028943d2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -27,10 +27,11 @@ // An extra material feature flag we utilize to compile two different versions of BSDF evaluation (one with transmission lobe // for analytic lights, one without transmission lobe for environment light). -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R (1 << 16) -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 17) -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT (1 << 18) -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING (1 << 19) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R (1 << 16) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 17) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT (1 << 18) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING (1 << 19) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL (1 << 20) //----------------------------------------------------------------------------- // Helper functions/variable specific to this material @@ -490,17 +491,21 @@ LightTransportData GetLightTransportData(SurfaceData surfaceData, BuiltinData bu #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl" +#ifdef _USE_DENSITY_VOLUME_SCATTERING +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl" +#endif //_USE_DENSITY_VOLUME_SCATTERING + bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) { return true; // Due to either reflection or transmission being always active } void GetMarschnerAngle(float3 T, float3 V, float3 L, - out float thetaH, out float cosThetaD, out float cosPhi) + out float thetaH, out float cosThetaD, out float sinThetaI, out float cosPhi) { // Optimized math for spherical coordinate angle derivation. // Ref: Light Scattering from Human Hair Fibers - float sinThetaI = dot(T, L); + sinThetaI = dot(T, L); float sinThetaR = dot(T, V); float thetaI = FastASin(sinThetaI); @@ -588,9 +593,23 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // "An Energy-Conserving Hair Reflectance Model" (d'Eon 2011) // "Light Scattering from Human Hair Fibers" (Marschner 2003) + // Reminder: All of these flags are known at compile time and the compiler will strip away the unused paths. + // Retrieve angles via spherical coordinates in the hair shading space. - float thetaH, cosThetaD, cosPhi; - GetMarschnerAngle(T, V, L, thetaH, cosThetaD, cosPhi); + float thetaH, cosThetaD, sinThetaI, cosPhi; + GetMarschnerAngle(T, V, L, thetaH, cosThetaD, sinThetaI, cosPhi); + + const float3 alpha = float3( + bsdfData.cuticleAngleR, + bsdfData.cuticleAngleTT, + bsdfData.cuticleAngleTRT + ); + + const float3 beta = float3( + bsdfData.roughnessR, + bsdfData.roughnessTT, + bsdfData.roughnessTRT + ); // The index of refraction that can be used to analyze scattering in the normal plane (Bravais' Law). float etaPrime = ModifiedRefractionIndex(cosThetaD); @@ -601,28 +620,33 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD float3 mu = bsdfData.absorption; // Various terms reused between lobe evaluation. - float M, D = 0; + float D = 0; float3 A, F, Tr, S = 0; + // Evaluate the longitudinal scattering for all three lobes. + float3 M = 1; + + // We have a flag for this as we require a version of the BCSDF that evaluates only azimuthal scattering (N = A * D) for pre-integration purposes. + if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL)) + { + M = D_LongitudinalScatteringGaussian(thetaH - alpha, beta); + } + // Solve the first three lobes (R, TT, TRT). // R if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R)) { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleR, bsdfData.roughnessR); - // Distribution and attenuation for this path as proposed by d'Eon et al, replaced with a trig identity for cos half phi. D = 0.25 * sqrt(0.5 + 0.5 * cosPhi); A = F_Schlick(bsdfData.fresnel0, sqrt(0.5 + 0.5 * dot(L, V))); - S += M * A * D; + S += M[0] * A * D; } // TT if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT)) { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTT, bsdfData.roughnessTT); - #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING // This lobe's distribution is determined by sampling coefficients from a pre-integrated LUT of the distribution and evaluating a gaussian. D = GetPreIntegratedAzimuthalScatteringTransmissionDistribution(bsdfData.roughnessRadial, cosThetaD, cosPhi); @@ -638,14 +662,12 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD Tr = exp(-4 * mu); A = Sq(1 - F) * Tr; - S += M * A * D; + S += M[1] * A * D; } // TRT if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT)) { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTRT, bsdfData.roughnessTRT); - // TODO: Move this out of the BSDF evaluation. #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING // This lobe's distribution is determined by Frostbite's improvement over Karis' TRT approximation (maintaining Azimuthal Roughness). @@ -660,59 +682,33 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD Tr = exp(-2 * mu * (1 + cos(2 * FastASin(HAIR_H_TRT / etaPrime)))); A = Sq(1 - F) * F * Sq(Tr); - S += M * A * D; + S += M[2] * A * D; } // Transmission event is built into the model. // Some stubborn NaNs have cropped up due to the angle optimization, we suppress them here with a max for now. - cbsdf.specR = max(S , 0); + cbsdf.specR = max(S, 0); #endif // Multiple Scattering #if _USE_DENSITY_VOLUME_SCATTERING if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING)) { - const float directFraction = 0; - - const float3 fsDirect = cbsdf.specR; - const float3 fsBack = bsdfData.localScattering; - - // Compute the scattered bsdf - const float3 beta = float3( - bsdfData.roughnessR, - bsdfData.roughnessTT, - bsdfData.roughnessTRT - ); - - const float3 shift = float3( - bsdfData.cuticleAngleR, - bsdfData.cuticleAngleTT, - bsdfData.cuticleAngleTRT - ); - - const float3 MG = D_LongitudinalScatteringGaussian(thetaH - shift, beta + bsdfData.forwardVariance); - const float3 fsScatter = 0.2; - - const float3 Tf = bsdfData.forwardTransmittance; - - // Resolve the dual scattering approximation. - const float3 Fdirect = bsdfData.directFraction * (fsDirect + fsBack); - const float3 Fscatter = Tf * 0.7 * (fsScatter + PI * fsBack); - - cbsdf.specR = (Fdirect + Fscatter); - cbsdf.specR = max(cbsdf.specR, 0); + cbsdf.specR = EvaluateMultipleScattering(cbsdf.specR, bsdfData, alpha, beta, thetaH, cosThetaD, sinThetaI); + } + else + #endif + { + #if _USE_LIGHT_FACING_NORMAL + // See "Analytic Tangent Irradiance Environment Maps for Anisotropic Surfaces". + cbsdf.diffR = rcp(PI * PI) * clampedNdotL; + // Transmission is built into the model, and it's not exactly clear how to split it. + cbsdf.diffT = 0; + #else + // Double-sided Lambert. + cbsdf.diffR = Lambert() * clampedNdotL; + #endif // _USE_LIGHT_FACING_NORMAL } - #else - #if _USE_LIGHT_FACING_NORMAL - // See "Analytic Tangent Irradiance Environment Maps for Anisotropic Surfaces". - cbsdf.diffR = rcp(PI * PI) * clampedNdotL; - // Transmission is built into the model, and it's not exactly clear how to split it. - cbsdf.diffT = 0; - #else - // Double-sided Lambert. - cbsdf.diffR = Lambert() * clampedNdotL; - #endif // _USE_LIGHT_FACING_NORMAL - #endif // _USE_DENSITY_VOLUME_SCATTERING } return cbsdf; @@ -722,10 +718,6 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Surface shading (all light types) below //----------------------------------------------------------------------------- -#ifdef _USE_DENSITY_VOLUME_SCATTERING -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl" -#endif //_USE_DENSITY_VOLUME_SCATTERING - // Hair used precomputed transmittance, no thick transmittance required #define MATERIAL_INCLUDE_PRECOMPUTED_TRANSMISSION #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl" @@ -1089,6 +1081,9 @@ void PostEvaluateBSDF( LightLoopContext lightLoopContext, // Skip TT for the environment sample (compiler will optimizate for these two different BSDF versions) bsdfData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT; + // Environment light falls back to Kajiya Diffuse for now. + bsdfData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING; + // This sample is treated as a directional light source and we evaluate the BSDF with it directly. CBSDF cbsdf = EvaluateBSDF(V, bsdfData.normalWS, preLightData, bsdfData); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index b145d86b74a..25bfbb7491d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -1,13 +1,15 @@ // Inform the lightloop and evaluation to perform the necesarry tracing work and invoke the hair dual scattering implementation. #define LIGHT_EVALUATES_MULTIPLE_SCATTERING -#define STRAND_DIAMETER_MILLIMETERS 0.02 +#define STRAND_DIAMETER_MILLIMETERS 0.5 #define STRAND_DIAMETER_METERS (STRAND_DIAMETER_MILLIMETERS * METERS_PER_MILLIMETER) -#define DIRECT_ILLUMINATION_THRESHOLD 0.25 +#define DIRECT_ILLUMINATION_THRESHOLD 1 TEXTURE3D(_PreIntegratedHairFiberScattering); +TEXTURE2D(_PreIntegratedAverageHairFiberScattering); + #define FRONT 0 #define BACK 1 @@ -17,6 +19,9 @@ struct HairScatteringData float3 averageScattering [2]; float3 averageVariance [2]; float3 averageShift [2]; + + // Average azimuthal scattering. + float3x3 NG; }; float3 ScatteringSpreadGaussian(float3 x, float3 v) @@ -26,7 +31,7 @@ float3 ScatteringSpreadGaussian(float3 x, float3 v) // TODO: Currently the dual scattering approximation is assuming to be used for hair fibers, but it can be used for other // fiber materials (ie Fabric). It would be good to eventually generalize this and move it out of hair material evaluation. -HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) +HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 beta, float sinThetaI) { HairScatteringData scatteringData; ZERO_INITIALIZE(HairScatteringData, scatteringData); @@ -44,18 +49,29 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) float2 G = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.g), 0).xy; float2 B = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.b), 0).xy; - scatteringData.averageScattering[FRONT] = abs(float3(R.x, G.x, B.x)); - scatteringData.averageScattering[BACK] = abs(float3(R.y, G.y, B.y)); + scatteringData.averageScattering[FRONT] = float3(R.x, G.x, B.x); + scatteringData.averageScattering[BACK] = float3(R.y, G.y, B.y); } - // 2) Compute the average scattering variance + // 2) Sample the average azimuthal scattering { - const float3 beta = float3( - bsdfData.roughnessR, - bsdfData.roughnessTT, - bsdfData.roughnessTRT - ); + // Prepare the sampling coordiante + float X = abs(sinThetaI); + float3 Y = clamp((bsdfData.diffuseColor), 0.01, 0.99); // Need to clamp the absorption a bit due to artifacts at these boundaries. + // Sample the LUT for each color channel (wavelength). + // Note that we parameterize by diffuse color, not absorption, to fit in [0, 1]. + float3 R = SAMPLE_TEXTURE2D_LOD(_PreIntegratedAverageHairFiberScattering, s_linear_clamp_sampler, float2(X, Y.r), 0).xyz; + float3 G = SAMPLE_TEXTURE2D_LOD(_PreIntegratedAverageHairFiberScattering, s_linear_clamp_sampler, float2(X, Y.g), 0).xyz; + float3 B = SAMPLE_TEXTURE2D_LOD(_PreIntegratedAverageHairFiberScattering, s_linear_clamp_sampler, float2(X, Y.b), 0).xyz; + + scatteringData.NG = float3x3( float3(R.x, G.x, B.x), + float3(R.y, G.y, B.y), + float3(R.z, G.z, B.z) ); + } + + // 2) Compute the average scattering variance + { // Here we should be deriving the average variance with the per-component (R, TT, TRT) // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. @@ -74,53 +90,30 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) // 3) Compute the average scattering shift { - const float3 shift = float3( - bsdfData.cuticleAngleR, - bsdfData.cuticleAngleTT, - bsdfData.cuticleAngleTRT - ); - // Here we should be deriving the average shift with the per-component (R, TT, TRT) // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. // Front scattering (Disney Eq. 13) { const float3 af = scatteringData.averageScattering[FRONT]; - scatteringData.averageShift[FRONT] = dot(shift, af) / (af.r + af.g + af.b); + scatteringData.averageShift[FRONT] = dot(alpha, af) / (af.r + af.g + af.b); } // Back scattering (Disney Eq. 14) { const float3 ab = scatteringData.averageScattering[BACK]; - scatteringData.averageShift[BACK] = dot(shift, ab) / (ab.r + ab.g + ab.b); + scatteringData.averageShift[BACK] = dot(alpha, ab) / (ab.r + ab.g + ab.b); } } return scatteringData; } -void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringData lightScatteringData, inout BSDFData bsdfData) +// void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringData lightScatteringData, inout BSDFData bsdfData) +float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, float3 beta, float thetaH, float cosThetaD, float sinThetaI) { - float3 T = bsdfData.hairStrandDirectionWS; - - // The dot product of an incident direction with the strand direction gives the sine - // of the angle between the incident direction and the normal plane. - float sinThetaI = dot(T, L); - - // TEMP: Extra angle derivation, this is redundant work as we already do this for the same light on the BSDF evaluation. - float thetaH, thetaD; - { - float sinThetaR = dot(T, V); - - float thetaI = FastASin(sinThetaI); - float thetaR = FastASin(sinThetaR); - - thetaH = (thetaI + thetaR) * 0.5; - thetaD = (thetaR - thetaI) * 0.5; - } - // Fetch the various preintegrated data. - HairScatteringData hairScatteringData = GetHairScatteringData(bsdfData, sinThetaI); + HairScatteringData hairScatteringData = GetHairScatteringData(bsdfData, alpha, beta, sinThetaI); // Solve for multiple scattering in a volume of hair fibers with concepts from: // "Dual Scattering Approximation for Fast Multiple Scattering in Hair" (Zinke et. al) @@ -128,15 +121,16 @@ void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringD // "A BSSRDF Model for Efficient Rendering of Fur with Global Illumination" (Yan et. al) // Pre-define some shorthand for the symbols. - const float n = lightScatteringData.fiberCount; - const float3 af = hairScatteringData.averageScattering[FRONT]; - const float3 ab = hairScatteringData.averageScattering[BACK]; - const float3 sf = hairScatteringData.averageShift[FRONT]; - const float3 sb = hairScatteringData.averageShift[BACK]; - const float3 Bf = hairScatteringData.averageVariance[FRONT]; - const float3 Bb = hairScatteringData.averageVariance[BACK]; - const float3 Bf2 = Sq(Bf); - const float3 Bb2 = Sq(Bb); + const float n = bsdfData.fiberCount; + const float3 af = hairScatteringData.averageScattering[FRONT]; + const float3 ab = hairScatteringData.averageScattering[BACK]; + const float3 sf = hairScatteringData.averageShift[FRONT]; + const float3 sb = hairScatteringData.averageShift[BACK]; + const float3 Bf = hairScatteringData.averageVariance[FRONT]; + const float3 Bb = hairScatteringData.averageVariance[BACK]; + const float3 Bf2 = Sq(Bf); + const float3 Bb2 = Sq(Bb); + const float3x3 NG = hairScatteringData.NG; // Global scattering. // ----------------------------------------------------------------------------------- @@ -144,21 +138,17 @@ void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringD // can be approximated with this constant to match most path traced references. const float df = 0.7; - if (n > DIRECT_ILLUMINATION_THRESHOLD) - { - // Approximate the transmittance by assuming that all hair strands between the shading point and the light are - // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). - bsdfData.forwardTransmittance = df * pow(af, n); + // Approximate the transmittance by assuming that all hair strands between the shading point and the light are + // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). + float3 Tf = df * pow(af, n); - // Approximate the accumulated variance, by assuming strands all have the same average roughness and inclination. ( Eq. 7 Disney ) - bsdfData.forwardVariance = Bf2 * n; - } - else - { - // If directly illuminated (no intersecting strands). - bsdfData.forwardTransmittance = 1; - bsdfData.forwardVariance = 0; - } + // Approximate the accumulated variance, by assuming strands all have the same average roughness and inclination. ( Eq. 7 Disney ) + float3 sigmaF = Bf2 * n; + + // Blend the forward transmittance and variance toward their directly lit values. (Better than binary test) + const float directFraction = 1 - saturate(n); + Tf = lerp(Tf, 1, directFraction); + sigmaF = lerp(sigmaF, 0, directFraction); // Local scattering. // ------------------------------------------------------------------------------------ @@ -194,7 +184,7 @@ void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringD float3 A3 = (ab3 * af2) / afI3; float3 Ab = A1 + A3; - // Computes the average longitudinal shift ( Eq. 16 ). + // Computes the average longitudinal shift ( Eq. 16 ). float3 shiftB = 1 - ((2 * ab2) / afI2); float3 shiftF = ((2 * afI2) + (4 * af2 * ab2)) / afI3; float3 deltaB = (sb * shiftB) + (sf * shiftF); @@ -206,12 +196,20 @@ void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringD sigmaB = Sq(sigmaB); // Computes the average back scattering spread ( Eq. 15 ). - float3 Sb = ScatteringSpreadGaussian(thetaH - deltaB, sigmaB + bsdfData.forwardVariance); + float3 Sb = ScatteringSpreadGaussian(thetaH - deltaB, sigmaB + sigmaF); // Resolve the overall local scattering term ( Eq. 9 & 10 ). - bsdfData.localScattering = 2 * Ab * Sb; - bsdfData.localScattering /= cos(thetaD); - bsdfData.localScattering *= db; + float3 fsBack = 2 * Ab * Sb; + fsBack /= cosThetaD; + fsBack *= db; + + // Resolve the approximated multiple scattering. + // ------------------------------------------------------------------------------------ + const float3 MG = D_LongitudinalScatteringGaussian(thetaH - alpha, beta + sigmaF); + const float3 fsScatter = mul(MG, NG); + + const float3 Fdirect = directFraction * (Fs + fsBack); + const float3 Fscatter = (Tf - directFraction) * df * (fsScatter + PI * fsBack); - bsdfData.directFraction = n < DIRECT_ILLUMINATION_THRESHOLD ? 1 : 0; + return Fdirect + Fscatter; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute index bd98a586c68..cc52636954e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute @@ -4,6 +4,9 @@ // This define is required for invoking BSDF. #define HAS_LIGHTLOOP +// Instead of indirectly setting up the angles we inform the BSDF that we will be explicitly setting them. +// #define HAIR_OVERRIDE_ANGLE_BSDF + #define DIM 64 #define SPHERE_SAMPLES 128 #define DPHI radians(2) @@ -52,6 +55,13 @@ SurfaceData ConfigureFiberSurface(float diffuseColor, float perceptualSmoothness return surfaceData; } +void ClampRoughness(inout BSDFData bsdfData) +{ + bsdfData.roughnessR = max(0.05, bsdfData.roughnessR); + bsdfData.roughnessTT = max(0.05, bsdfData.roughnessTT); + bsdfData.roughnessTRT = max(0.05, bsdfData.roughnessTRT); +} + // Parameterization: // X - Perceptual Smoothness // Y - Theta @@ -74,11 +84,8 @@ void Main (uint3 dispatchThreadID : SV_DispatchThreadID) // Use the conversion from the surface data to compute all of the per-lobe bsdf information. BSDFData bsdfData = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceData); - // Need to clamp the roughness manually since we invoke the BSDF manually. - // Without it, we get some artifacting in the LUT. - bsdfData.roughnessR = max(0.05, bsdfData.roughnessR); - bsdfData.roughnessTT = max(0.05, bsdfData.roughnessTT); - bsdfData.roughnessTRT = max(0.05, bsdfData.roughnessTRT); + // Need to clamp the roughness manually since we invoke the BSDF manually, without it, we get some artifacting in the LUT. + ClampRoughness(bsdfData); // Unused in this case. PreLightData preLightData; @@ -133,67 +140,65 @@ void Main (uint3 dispatchThreadID : SV_DispatchThreadID) // TODO: This LUT and the above are parameterized the exact same way. Find a way to combine them into one sample? // ----------------------------------------------------------------- -RWTexture3D _PreIntegratedAverageHairFiberScatteringUAV; +RWTexture2D _PreIntegratedAverageHairFiberScatteringUAV; -#define FLAGS_R MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT -#define FLAGS_TT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT -#define FLAGS_TRT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT +#define FLAGS_R MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT +#define FLAGS_TT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT +#define FLAGS_TRT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT -[numthreads(8, 8, 8)] -void PreIntegrateAzimuthalScattering (uint3 dispatchThreadID : SV_DispatchThreadID) +[numthreads(8, 8, 1)] +void PreIntegrateAzimuthalScattering (uint2 dispatchThreadID : SV_DispatchThreadID) { // Convert the dispatch coordinates to the generation space [0,1]. - float3 UVW = float3(((float3)dispatchThreadID + 0.5) / DIM); + float2 UV = float2(((float2)dispatchThreadID + 0.5) / DIM); // Configure a theoretical hair fiber to evaluate the average attenuation. - SurfaceData surfaceDataR = ConfigureFiberSurface(UVW.z, UVW.x, FLAGS_R); - SurfaceData surfaceDataTT = ConfigureFiberSurface(UVW.z, UVW.x, FLAGS_TT); - SurfaceData surfaceDataTRT = ConfigureFiberSurface(UVW.z, UVW.x, FLAGS_TRT); + // Note, since we only evaluate the azimuthal scattering we can parameterize to 2D since roughness has no effect on this component. + SurfaceData surfaceDataR = ConfigureFiberSurface(UV.y, 0.5, FLAGS_R); + SurfaceData surfaceDataTT = ConfigureFiberSurface(UV.y, 0.5, FLAGS_TT); + SurfaceData surfaceDataTRT = ConfigureFiberSurface(UV.y, 0.5, FLAGS_TRT); // Use the conversion from the surface data to compute all of the per-lobe bsdf information. BSDFData bsdfDataR = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceDataR); BSDFData bsdfDataTT = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceDataTT); BSDFData bsdfDataTRT = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceDataTRT); - // Need to clamp the roughness manually since we invoke the BSDF manually. - // Without it, we get some artifacting in the LUT. - // TODO: all - // bsdfData.roughnessR = max(0.05, bsdfData.roughnessR); - // bsdfData.roughnessTT = max(0.05, bsdfData.roughnessTT); - // bsdfData.roughnessTRT = max(0.05, bsdfData.roughnessTRT); + // Need to clamp the roughness manually since we invoke the BSDF manually, without it, we get some artifacting in the LUT. + ClampRoughness(bsdfDataR); + ClampRoughness(bsdfDataTT); + ClampRoughness(bsdfDataTRT); // Unused in this case. PreLightData preLightData; ZERO_INITIALIZE(PreLightData, preLightData); // Configure the initial incident theta direction. - float sinThetaI = UVW.y; + float sinThetaI = UV.x; + + // We are analyzing the front scattering, so place a viewer on the negative X axis. + float3 V = float3(-1, 0, 0); float3 A = 0; + uint C = 0; - for (uint w = 0; w < SPHERE_SAMPLES; w++) + // Integrate over all incident phi. + for (float phi = -HALF_PI; phi < HALF_PI; phi += DPHI) { - float2 U = Hammersley2d(w, SPHERE_SAMPLES); - float3 V = SampleSphereUniform(U.x, U.y); + // Places a light on the back scattering hemisphere (due to the constriction of phi to the -pi/2 to pi/2 range). + float3 L = SphericalToCartesian(phi, sinThetaI); - // Integrate over all incident phi. - for (float phi = -HALF_PI; phi < HALF_PI; phi += DPHI) - { - // Places a light on the back scattering hemisphere (due to the constriction of phi to the -pi/2 to pi/2 range). - float3 L = SphericalToCartesian(phi, sinThetaI); - - // Invoke the fiber scattering function. - CBSDF cbsdfR = EvaluateBSDF(V, L, preLightData, bsdfDataR); - CBSDF cbsdfTT = EvaluateBSDF(V, L, preLightData, bsdfDataTT); - CBSDF cbsdfTRT = EvaluateBSDF(V, L, preLightData, bsdfDataTRT); + // Invoke the fiber scattering function. + CBSDF cbsdfR = EvaluateBSDF(V, L, preLightData, bsdfDataR); + CBSDF cbsdfTT = EvaluateBSDF(V, L, preLightData, bsdfDataTT); + CBSDF cbsdfTRT = EvaluateBSDF(V, L, preLightData, bsdfDataTRT); + // Integrating over a semi-circle, thus PDF = 1/pi + A += float3( cbsdfR.specR.x, + cbsdfTT.specR.x, + cbsdfTRT.specR.x ); - A += float3( cbsdfR.specR.x, - cbsdfTT.specR.x, - cbsdfTRT.specR.x ) / INV_FOUR_PI; - } + C++; } - - _PreIntegratedAverageHairFiberScatteringUAV[dispatchThreadID] = INV_PI * float4(A, 1); + _PreIntegratedAverageHairFiberScatteringUAV[dispatchThreadID] = (2 / PI) * float4(A / float(C), 1); } From 0b7c2aa5d094f40aaf3e4692b610e643fd312c27 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 9 Aug 2021 18:39:28 -0400 Subject: [PATCH 47/73] Initial commit of completed DS implementation (average azimuthal scattering preintegration) --- .../Runtime/Lighting/LightLoop/LightLoop.hlsl | 16 +-- .../Lighting/LightLoop/LightLoopDef.hlsl | 7 - .../MultipleScattering.hlsl | 2 +- .../Runtime/Lighting/SurfaceShading.hlsl | 25 ++-- .../Runtime/Material/Hair/Hair.cs | 19 +-- .../Runtime/Material/Hair/Hair.cs.hlsl | 23 +-- .../Runtime/Material/Hair/Hair.hlsl | 121 ++++++++-------- .../HairMultipleScattering.hlsl | 134 +++++++++--------- ...irMultipleScatteringPreIntegration.compute | 86 +++++------ 9 files changed, 196 insertions(+), 237 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index 81b8ad79128..4d7ffd30c5e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -200,7 +200,6 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS context.shadowContext = InitShadowContext(); context.shadowValue = 1; context.sampleReflection = 0; - ZERO_INITIALIZE(MultipleScatteringData, context.scatteringData); // With XR single-pass and camera-relative: offset position to do lighting computations from the combined center view (original camera matrix). // This is required because there is only one list of lights generated on the CPU. Shadows are also generated once and shared between the instanced views. @@ -228,25 +227,18 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS // TODO: this will cause us to load from the normal buffer first. Does this cause a performance problem? float3 L = -light.forward; + // In case of multiple scattering, for now we eat the VGPR cost and evaluate the sun shadow during directional light contribution evaluation. +#ifndef LIGHT_EVALUATES_MULTIPLE_SCATTERING // Is it worth sampling the shadow map? if ((light.lightDimmer > 0) && (light.shadowDimmer > 0) && // Note: Volumetric can have different dimmer, thus why we test it here IsNonZeroBSDF(V, L, preLightData, bsdfData) && !ShouldEvaluateThickObjectTransmission(V, L, preLightData, bsdfData, light.shadowIndex)) { - float3 shadowProxyPositionWS = posInput.positionWS; - -#ifdef LIGHT_EVALUATES_MULTIPLE_SCATTERING - // Since we evaluate the sun light early in this case for shadows (as well as for biasing the shadow), we cache the result in the context. - context.scatteringData = EvaluateMultipleScattering_Light(posInput, L); - - // ...and adjusts the sampled shadow position (if necessary). - EvaluateMultipleScattering_ShadowProxy(context.scatteringData, shadowProxyPositionWS); -#endif - context.shadowValue = GetDirectionalShadowAttenuation(context.shadowContext, - posInput.positionSS, shadowProxyPositionWS, GetNormalForShadowBias(bsdfData), + posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L); } +#endif } } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl index 49f9aea88ee..254a65cd632 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl @@ -12,10 +12,6 @@ struct HDShadowContext { float unused; }; #endif -#ifndef HAVE_MULTIPLE_SCATTERING_DATA -struct MultipleScatteringData { float unused; }; -#endif - // LightLoopContext is not visible from Material (user should not use these properties in Material file) // It allow the lightloop to have transmit sampling information (do we use atlas, or texture array etc...) struct LightLoopContext @@ -27,9 +23,6 @@ struct LightLoopContext uint contactShadow; // a bit mask of 24 bits that tell if the pixel is in a contact shadow or not real contactShadowFade; // combined fade factor of all contact shadows SHADOW_TYPE shadowValue; // Stores the value of the cascade shadow map - - // Stores the multiple scattering data for the sun light. - MultipleScatteringData scatteringData; }; // LightLoopOutput is the output of the LightLoop fuction call. diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl index fc1d74d2c83..bacd335f6cb 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl @@ -64,7 +64,7 @@ MultipleScatteringData EvaluateMultipleScattering_Light(PositionInputs posInputs float3 shadowProxyPositionWS = VolumeUVWToWorld(shadowProxyCoord); data.shadowProxyPositionRWS = GetCameraRelativePositionWS(shadowProxyPositionWS); #else - // TODO: More optimal routine (ie Deep Opacity Maps). + // TODO: Optimized routine (ie Deep Opacity Maps). #endif return data; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl index 162d46312a1..ee1fcac8519 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl @@ -93,23 +93,20 @@ DirectLighting ShadeSurface_Directional(LightLoopContext lightLoopContext, #endif { #ifdef LIGHT_EVALUATES_MULTIPLE_SCATTERING - MultipleScatteringData scatteringData; + MultipleScatteringData scatteringData = EvaluateMultipleScattering_Light(posInput, L); if ((light.shadowIndex >= 0) && (light.shadowDimmer > 0)) { - // If the sun light shadows are already evaluated, then scattering data is too. - scatteringData = lightLoopContext.scatteringData; - } - else - { - scatteringData = EvaluateMultipleScattering_Light(posInput, L); - } + // Due to self-occlusion from shadows within the scattering volume, we call this to modify the sampled position for shadows. + EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); - // Due to self-occlusion from shadows within the scattering volume, we call this to modify the sampled position for shadows. - EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); + lightLoopContext.shadowValue = GetDirectionalShadowAttenuation(lightLoopContext.shadowContext, + posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), + light.shadowIndex, L); + } - // Fill the BSDF data with the approximated multiple scattering terms for this light. - EvaluateMultipleScattering_Material(V, L, scatteringData, bsdfData); + // Propagate the fiber count to the BSDF. + bsdfData.fiberCount = scatteringData.fiberCount; #endif SHADOW_TYPE shadow = EvaluateShadow_Directional(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData)); @@ -201,8 +198,8 @@ DirectLighting ShadeSurface_Punctual(LightLoopContext lightLoopContext, // Due to self-occlusion from shadows within the a volume, we call this to modify the sampled position for shadows. EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); - // Fill the BSDF data with the approximated multiple scattering terms for this light. - EvaluateMultipleScattering_Material(V, L, scatteringData, bsdfData); + // Propagate the fiber count to the BSDF. + bsdfData.fiberCount = scatteringData.fiberCount; #endif // This code works for both surface reflection and thin object transmission. SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index f7fe6109c83..27089120771 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -146,10 +146,7 @@ public struct BSDFData public float roughnessRadial; // Dual scattering - public float directFraction; - public Vector3 forwardTransmittance; - public Vector3 forwardVariance; - public Vector3 localScattering; + public float fiberCount; }; @@ -169,9 +166,8 @@ public struct BSDFData private const int m_DimAbsorption = 64; private bool m_PreIntegratedFiberScatteringIsInit; - // X - Roughness - // Y - Theta - // Z - Absorption + // X - Theta + // Y - Absorption private RenderTexture m_PreIntegratedFiberAverageScatteringLUT; private bool m_PreIntegratedFiberAverageScatteringIsInit; @@ -205,15 +201,14 @@ public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntim }; m_PreIntegratedFiberScatteringLUT.Create(); - m_PreIntegratedFiberAverageScatteringLUT = new RenderTexture(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16B16A16_SFloat) + m_PreIntegratedFiberAverageScatteringLUT = new RenderTexture(m_DimTheta, m_DimAbsorption, 0, GraphicsFormat.R16G16B16A16_SFloat) { - dimension = TextureDimension.Tex3D, - volumeDepth = m_DimAbsorption, + dimension = TextureDimension.Tex2D, enableRandomWrite = true, hideFlags = HideFlags.HideAndDontSave, filterMode = FilterMode.Point, wrapMode = TextureWrapMode.Clamp, - name = CoreUtils.GetRenderTargetAutoName(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16B16A16_SFloat, "PreIntegratedAverageFiberScattering") + name = CoreUtils.GetRenderTargetAutoName(m_DimTheta, m_DimAbsorption, 0, GraphicsFormat.R16G16B16A16_SFloat, "PreIntegratedAverageFiberScattering") }; m_PreIntegratedFiberAverageScatteringLUT.Create(); @@ -251,7 +246,7 @@ public override void RenderInit(CommandBuffer cmd) if (!m_PreIntegratedFiberAverageScatteringIsInit) { cmd.SetComputeTextureParam(m_PreIntegratedFiberScatteringCS, 1, _PreIntegratedAverageHairFiberScatteringUAV, m_PreIntegratedFiberAverageScatteringLUT); - cmd.DispatchCompute(m_PreIntegratedFiberScatteringCS, 1, HDUtils.DivRoundUp(m_DimTheta, 8), HDUtils.DivRoundUp(m_DimBeta, 8), HDUtils.DivRoundUp(m_DimAbsorption, 8)); + cmd.DispatchCompute(m_PreIntegratedFiberScatteringCS, 1, HDUtils.DivRoundUp(m_DimTheta, 8), HDUtils.DivRoundUp(m_DimBeta, 8), 1); m_PreIntegratedFiberAverageScatteringIsInit = true; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 60eeb863c9b..f32dac55b46 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -70,10 +70,7 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT (1481) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) -#define DEBUGVIEW_HAIR_BSDFDATA_DIRECT_FRACTION (1484) -#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_TRANSMITTANCE (1485) -#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_VARIANCE (1486) -#define DEBUGVIEW_HAIR_BSDFDATA_LOCAL_SCATTERING (1487) +#define DEBUGVIEW_HAIR_BSDFDATA_FIBER_COUNT (1484) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -134,10 +131,7 @@ struct BSDFData float roughnessTT; float roughnessTRT; float roughnessRadial; - float directFraction; - float3 forwardTransmittance; - float3 forwardVariance; - float3 localScattering; + float fiberCount; }; // @@ -320,17 +314,8 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL: result = bsdfdata.roughnessRadial.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_DIRECT_FRACTION: - result = bsdfdata.directFraction.xxx; - break; - case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_TRANSMITTANCE: - result = bsdfdata.forwardTransmittance; - break; - case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_VARIANCE: - result = bsdfdata.forwardVariance; - break; - case DEBUGVIEW_HAIR_BSDFDATA_LOCAL_SCATTERING: - result = bsdfdata.localScattering; + case DEBUGVIEW_HAIR_BSDFDATA_FIBER_COUNT: + result = bsdfdata.fiberCount.xxx; break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 4da5cf10cd8..b59028943d2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -27,10 +27,11 @@ // An extra material feature flag we utilize to compile two different versions of BSDF evaluation (one with transmission lobe // for analytic lights, one without transmission lobe for environment light). -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R (1 << 16) -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 17) -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT (1 << 18) -#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING (1 << 19) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R (1 << 16) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 17) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT (1 << 18) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING (1 << 19) +#define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL (1 << 20) //----------------------------------------------------------------------------- // Helper functions/variable specific to this material @@ -490,17 +491,21 @@ LightTransportData GetLightTransportData(SurfaceData surfaceData, BuiltinData bu #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl" +#ifdef _USE_DENSITY_VOLUME_SCATTERING +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl" +#endif //_USE_DENSITY_VOLUME_SCATTERING + bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) { return true; // Due to either reflection or transmission being always active } void GetMarschnerAngle(float3 T, float3 V, float3 L, - out float thetaH, out float cosThetaD, out float cosPhi) + out float thetaH, out float cosThetaD, out float sinThetaI, out float cosPhi) { // Optimized math for spherical coordinate angle derivation. // Ref: Light Scattering from Human Hair Fibers - float sinThetaI = dot(T, L); + sinThetaI = dot(T, L); float sinThetaR = dot(T, V); float thetaI = FastASin(sinThetaI); @@ -588,9 +593,23 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // "An Energy-Conserving Hair Reflectance Model" (d'Eon 2011) // "Light Scattering from Human Hair Fibers" (Marschner 2003) + // Reminder: All of these flags are known at compile time and the compiler will strip away the unused paths. + // Retrieve angles via spherical coordinates in the hair shading space. - float thetaH, cosThetaD, cosPhi; - GetMarschnerAngle(T, V, L, thetaH, cosThetaD, cosPhi); + float thetaH, cosThetaD, sinThetaI, cosPhi; + GetMarschnerAngle(T, V, L, thetaH, cosThetaD, sinThetaI, cosPhi); + + const float3 alpha = float3( + bsdfData.cuticleAngleR, + bsdfData.cuticleAngleTT, + bsdfData.cuticleAngleTRT + ); + + const float3 beta = float3( + bsdfData.roughnessR, + bsdfData.roughnessTT, + bsdfData.roughnessTRT + ); // The index of refraction that can be used to analyze scattering in the normal plane (Bravais' Law). float etaPrime = ModifiedRefractionIndex(cosThetaD); @@ -601,28 +620,33 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD float3 mu = bsdfData.absorption; // Various terms reused between lobe evaluation. - float M, D = 0; + float D = 0; float3 A, F, Tr, S = 0; + // Evaluate the longitudinal scattering for all three lobes. + float3 M = 1; + + // We have a flag for this as we require a version of the BCSDF that evaluates only azimuthal scattering (N = A * D) for pre-integration purposes. + if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL)) + { + M = D_LongitudinalScatteringGaussian(thetaH - alpha, beta); + } + // Solve the first three lobes (R, TT, TRT). // R if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R)) { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleR, bsdfData.roughnessR); - // Distribution and attenuation for this path as proposed by d'Eon et al, replaced with a trig identity for cos half phi. D = 0.25 * sqrt(0.5 + 0.5 * cosPhi); A = F_Schlick(bsdfData.fresnel0, sqrt(0.5 + 0.5 * dot(L, V))); - S += M * A * D; + S += M[0] * A * D; } // TT if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT)) { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTT, bsdfData.roughnessTT); - #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING // This lobe's distribution is determined by sampling coefficients from a pre-integrated LUT of the distribution and evaluating a gaussian. D = GetPreIntegratedAzimuthalScatteringTransmissionDistribution(bsdfData.roughnessRadial, cosThetaD, cosPhi); @@ -638,14 +662,12 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD Tr = exp(-4 * mu); A = Sq(1 - F) * Tr; - S += M * A * D; + S += M[1] * A * D; } // TRT if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT)) { - M = D_LongitudinalScatteringGaussian(thetaH - bsdfData.cuticleAngleTRT, bsdfData.roughnessTRT); - // TODO: Move this out of the BSDF evaluation. #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING // This lobe's distribution is determined by Frostbite's improvement over Karis' TRT approximation (maintaining Azimuthal Roughness). @@ -660,59 +682,33 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD Tr = exp(-2 * mu * (1 + cos(2 * FastASin(HAIR_H_TRT / etaPrime)))); A = Sq(1 - F) * F * Sq(Tr); - S += M * A * D; + S += M[2] * A * D; } // Transmission event is built into the model. // Some stubborn NaNs have cropped up due to the angle optimization, we suppress them here with a max for now. - cbsdf.specR = max(S , 0); + cbsdf.specR = max(S, 0); #endif // Multiple Scattering #if _USE_DENSITY_VOLUME_SCATTERING if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING)) { - const float directFraction = 0; - - const float3 fsDirect = cbsdf.specR; - const float3 fsBack = bsdfData.localScattering; - - // Compute the scattered bsdf - const float3 beta = float3( - bsdfData.roughnessR, - bsdfData.roughnessTT, - bsdfData.roughnessTRT - ); - - const float3 shift = float3( - bsdfData.cuticleAngleR, - bsdfData.cuticleAngleTT, - bsdfData.cuticleAngleTRT - ); - - const float3 MG = D_LongitudinalScatteringGaussian(thetaH - shift, beta + bsdfData.forwardVariance); - const float3 fsScatter = 0.2; - - const float3 Tf = bsdfData.forwardTransmittance; - - // Resolve the dual scattering approximation. - const float3 Fdirect = bsdfData.directFraction * (fsDirect + fsBack); - const float3 Fscatter = Tf * 0.7 * (fsScatter + PI * fsBack); - - cbsdf.specR = (Fdirect + Fscatter); - cbsdf.specR = max(cbsdf.specR, 0); + cbsdf.specR = EvaluateMultipleScattering(cbsdf.specR, bsdfData, alpha, beta, thetaH, cosThetaD, sinThetaI); + } + else + #endif + { + #if _USE_LIGHT_FACING_NORMAL + // See "Analytic Tangent Irradiance Environment Maps for Anisotropic Surfaces". + cbsdf.diffR = rcp(PI * PI) * clampedNdotL; + // Transmission is built into the model, and it's not exactly clear how to split it. + cbsdf.diffT = 0; + #else + // Double-sided Lambert. + cbsdf.diffR = Lambert() * clampedNdotL; + #endif // _USE_LIGHT_FACING_NORMAL } - #else - #if _USE_LIGHT_FACING_NORMAL - // See "Analytic Tangent Irradiance Environment Maps for Anisotropic Surfaces". - cbsdf.diffR = rcp(PI * PI) * clampedNdotL; - // Transmission is built into the model, and it's not exactly clear how to split it. - cbsdf.diffT = 0; - #else - // Double-sided Lambert. - cbsdf.diffR = Lambert() * clampedNdotL; - #endif // _USE_LIGHT_FACING_NORMAL - #endif // _USE_DENSITY_VOLUME_SCATTERING } return cbsdf; @@ -722,10 +718,6 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Surface shading (all light types) below //----------------------------------------------------------------------------- -#ifdef _USE_DENSITY_VOLUME_SCATTERING -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl" -#endif //_USE_DENSITY_VOLUME_SCATTERING - // Hair used precomputed transmittance, no thick transmittance required #define MATERIAL_INCLUDE_PRECOMPUTED_TRANSMISSION #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl" @@ -1089,6 +1081,9 @@ void PostEvaluateBSDF( LightLoopContext lightLoopContext, // Skip TT for the environment sample (compiler will optimizate for these two different BSDF versions) bsdfData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT; + // Environment light falls back to Kajiya Diffuse for now. + bsdfData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING; + // This sample is treated as a directional light source and we evaluate the BSDF with it directly. CBSDF cbsdf = EvaluateBSDF(V, bsdfData.normalWS, preLightData, bsdfData); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index b145d86b74a..25bfbb7491d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -1,13 +1,15 @@ // Inform the lightloop and evaluation to perform the necesarry tracing work and invoke the hair dual scattering implementation. #define LIGHT_EVALUATES_MULTIPLE_SCATTERING -#define STRAND_DIAMETER_MILLIMETERS 0.02 +#define STRAND_DIAMETER_MILLIMETERS 0.5 #define STRAND_DIAMETER_METERS (STRAND_DIAMETER_MILLIMETERS * METERS_PER_MILLIMETER) -#define DIRECT_ILLUMINATION_THRESHOLD 0.25 +#define DIRECT_ILLUMINATION_THRESHOLD 1 TEXTURE3D(_PreIntegratedHairFiberScattering); +TEXTURE2D(_PreIntegratedAverageHairFiberScattering); + #define FRONT 0 #define BACK 1 @@ -17,6 +19,9 @@ struct HairScatteringData float3 averageScattering [2]; float3 averageVariance [2]; float3 averageShift [2]; + + // Average azimuthal scattering. + float3x3 NG; }; float3 ScatteringSpreadGaussian(float3 x, float3 v) @@ -26,7 +31,7 @@ float3 ScatteringSpreadGaussian(float3 x, float3 v) // TODO: Currently the dual scattering approximation is assuming to be used for hair fibers, but it can be used for other // fiber materials (ie Fabric). It would be good to eventually generalize this and move it out of hair material evaluation. -HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) +HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 beta, float sinThetaI) { HairScatteringData scatteringData; ZERO_INITIALIZE(HairScatteringData, scatteringData); @@ -44,18 +49,29 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) float2 G = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.g), 0).xy; float2 B = SAMPLE_TEXTURE3D_LOD(_PreIntegratedHairFiberScattering, s_linear_clamp_sampler, float3(X, Y, Z.b), 0).xy; - scatteringData.averageScattering[FRONT] = abs(float3(R.x, G.x, B.x)); - scatteringData.averageScattering[BACK] = abs(float3(R.y, G.y, B.y)); + scatteringData.averageScattering[FRONT] = float3(R.x, G.x, B.x); + scatteringData.averageScattering[BACK] = float3(R.y, G.y, B.y); } - // 2) Compute the average scattering variance + // 2) Sample the average azimuthal scattering { - const float3 beta = float3( - bsdfData.roughnessR, - bsdfData.roughnessTT, - bsdfData.roughnessTRT - ); + // Prepare the sampling coordiante + float X = abs(sinThetaI); + float3 Y = clamp((bsdfData.diffuseColor), 0.01, 0.99); // Need to clamp the absorption a bit due to artifacts at these boundaries. + // Sample the LUT for each color channel (wavelength). + // Note that we parameterize by diffuse color, not absorption, to fit in [0, 1]. + float3 R = SAMPLE_TEXTURE2D_LOD(_PreIntegratedAverageHairFiberScattering, s_linear_clamp_sampler, float2(X, Y.r), 0).xyz; + float3 G = SAMPLE_TEXTURE2D_LOD(_PreIntegratedAverageHairFiberScattering, s_linear_clamp_sampler, float2(X, Y.g), 0).xyz; + float3 B = SAMPLE_TEXTURE2D_LOD(_PreIntegratedAverageHairFiberScattering, s_linear_clamp_sampler, float2(X, Y.b), 0).xyz; + + scatteringData.NG = float3x3( float3(R.x, G.x, B.x), + float3(R.y, G.y, B.y), + float3(R.z, G.z, B.z) ); + } + + // 2) Compute the average scattering variance + { // Here we should be deriving the average variance with the per-component (R, TT, TRT) // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. @@ -74,53 +90,30 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float sinThetaI) // 3) Compute the average scattering shift { - const float3 shift = float3( - bsdfData.cuticleAngleR, - bsdfData.cuticleAngleTT, - bsdfData.cuticleAngleTRT - ); - // Here we should be deriving the average shift with the per-component (R, TT, TRT) // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. // Front scattering (Disney Eq. 13) { const float3 af = scatteringData.averageScattering[FRONT]; - scatteringData.averageShift[FRONT] = dot(shift, af) / (af.r + af.g + af.b); + scatteringData.averageShift[FRONT] = dot(alpha, af) / (af.r + af.g + af.b); } // Back scattering (Disney Eq. 14) { const float3 ab = scatteringData.averageScattering[BACK]; - scatteringData.averageShift[BACK] = dot(shift, ab) / (ab.r + ab.g + ab.b); + scatteringData.averageShift[BACK] = dot(alpha, ab) / (ab.r + ab.g + ab.b); } } return scatteringData; } -void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringData lightScatteringData, inout BSDFData bsdfData) +// void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringData lightScatteringData, inout BSDFData bsdfData) +float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, float3 beta, float thetaH, float cosThetaD, float sinThetaI) { - float3 T = bsdfData.hairStrandDirectionWS; - - // The dot product of an incident direction with the strand direction gives the sine - // of the angle between the incident direction and the normal plane. - float sinThetaI = dot(T, L); - - // TEMP: Extra angle derivation, this is redundant work as we already do this for the same light on the BSDF evaluation. - float thetaH, thetaD; - { - float sinThetaR = dot(T, V); - - float thetaI = FastASin(sinThetaI); - float thetaR = FastASin(sinThetaR); - - thetaH = (thetaI + thetaR) * 0.5; - thetaD = (thetaR - thetaI) * 0.5; - } - // Fetch the various preintegrated data. - HairScatteringData hairScatteringData = GetHairScatteringData(bsdfData, sinThetaI); + HairScatteringData hairScatteringData = GetHairScatteringData(bsdfData, alpha, beta, sinThetaI); // Solve for multiple scattering in a volume of hair fibers with concepts from: // "Dual Scattering Approximation for Fast Multiple Scattering in Hair" (Zinke et. al) @@ -128,15 +121,16 @@ void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringD // "A BSSRDF Model for Efficient Rendering of Fur with Global Illumination" (Yan et. al) // Pre-define some shorthand for the symbols. - const float n = lightScatteringData.fiberCount; - const float3 af = hairScatteringData.averageScattering[FRONT]; - const float3 ab = hairScatteringData.averageScattering[BACK]; - const float3 sf = hairScatteringData.averageShift[FRONT]; - const float3 sb = hairScatteringData.averageShift[BACK]; - const float3 Bf = hairScatteringData.averageVariance[FRONT]; - const float3 Bb = hairScatteringData.averageVariance[BACK]; - const float3 Bf2 = Sq(Bf); - const float3 Bb2 = Sq(Bb); + const float n = bsdfData.fiberCount; + const float3 af = hairScatteringData.averageScattering[FRONT]; + const float3 ab = hairScatteringData.averageScattering[BACK]; + const float3 sf = hairScatteringData.averageShift[FRONT]; + const float3 sb = hairScatteringData.averageShift[BACK]; + const float3 Bf = hairScatteringData.averageVariance[FRONT]; + const float3 Bb = hairScatteringData.averageVariance[BACK]; + const float3 Bf2 = Sq(Bf); + const float3 Bb2 = Sq(Bb); + const float3x3 NG = hairScatteringData.NG; // Global scattering. // ----------------------------------------------------------------------------------- @@ -144,21 +138,17 @@ void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringD // can be approximated with this constant to match most path traced references. const float df = 0.7; - if (n > DIRECT_ILLUMINATION_THRESHOLD) - { - // Approximate the transmittance by assuming that all hair strands between the shading point and the light are - // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). - bsdfData.forwardTransmittance = df * pow(af, n); + // Approximate the transmittance by assuming that all hair strands between the shading point and the light are + // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). + float3 Tf = df * pow(af, n); - // Approximate the accumulated variance, by assuming strands all have the same average roughness and inclination. ( Eq. 7 Disney ) - bsdfData.forwardVariance = Bf2 * n; - } - else - { - // If directly illuminated (no intersecting strands). - bsdfData.forwardTransmittance = 1; - bsdfData.forwardVariance = 0; - } + // Approximate the accumulated variance, by assuming strands all have the same average roughness and inclination. ( Eq. 7 Disney ) + float3 sigmaF = Bf2 * n; + + // Blend the forward transmittance and variance toward their directly lit values. (Better than binary test) + const float directFraction = 1 - saturate(n); + Tf = lerp(Tf, 1, directFraction); + sigmaF = lerp(sigmaF, 0, directFraction); // Local scattering. // ------------------------------------------------------------------------------------ @@ -194,7 +184,7 @@ void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringD float3 A3 = (ab3 * af2) / afI3; float3 Ab = A1 + A3; - // Computes the average longitudinal shift ( Eq. 16 ). + // Computes the average longitudinal shift ( Eq. 16 ). float3 shiftB = 1 - ((2 * ab2) / afI2); float3 shiftF = ((2 * afI2) + (4 * af2 * ab2)) / afI3; float3 deltaB = (sb * shiftB) + (sf * shiftF); @@ -206,12 +196,20 @@ void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringD sigmaB = Sq(sigmaB); // Computes the average back scattering spread ( Eq. 15 ). - float3 Sb = ScatteringSpreadGaussian(thetaH - deltaB, sigmaB + bsdfData.forwardVariance); + float3 Sb = ScatteringSpreadGaussian(thetaH - deltaB, sigmaB + sigmaF); // Resolve the overall local scattering term ( Eq. 9 & 10 ). - bsdfData.localScattering = 2 * Ab * Sb; - bsdfData.localScattering /= cos(thetaD); - bsdfData.localScattering *= db; + float3 fsBack = 2 * Ab * Sb; + fsBack /= cosThetaD; + fsBack *= db; + + // Resolve the approximated multiple scattering. + // ------------------------------------------------------------------------------------ + const float3 MG = D_LongitudinalScatteringGaussian(thetaH - alpha, beta + sigmaF); + const float3 fsScatter = mul(MG, NG); + + const float3 Fdirect = directFraction * (Fs + fsBack); + const float3 Fscatter = (Tf - directFraction) * df * (fsScatter + PI * fsBack); - bsdfData.directFraction = n < DIRECT_ILLUMINATION_THRESHOLD ? 1 : 0; + return Fdirect + Fscatter; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute index bd98a586c68..4b0b71102ab 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute @@ -4,6 +4,9 @@ // This define is required for invoking BSDF. #define HAS_LIGHTLOOP +// Instead of indirectly setting up the angles we inform the BSDF that we will be explicitly setting them. +// #define HAIR_OVERRIDE_ANGLE_BSDF + #define DIM 64 #define SPHERE_SAMPLES 128 #define DPHI radians(2) @@ -52,6 +55,13 @@ SurfaceData ConfigureFiberSurface(float diffuseColor, float perceptualSmoothness return surfaceData; } +void ClampRoughness(inout BSDFData bsdfData) +{ + bsdfData.roughnessR = max(0.05, bsdfData.roughnessR); + bsdfData.roughnessTT = max(0.05, bsdfData.roughnessTT); + bsdfData.roughnessTRT = max(0.05, bsdfData.roughnessTRT); +} + // Parameterization: // X - Perceptual Smoothness // Y - Theta @@ -74,11 +84,8 @@ void Main (uint3 dispatchThreadID : SV_DispatchThreadID) // Use the conversion from the surface data to compute all of the per-lobe bsdf information. BSDFData bsdfData = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceData); - // Need to clamp the roughness manually since we invoke the BSDF manually. - // Without it, we get some artifacting in the LUT. - bsdfData.roughnessR = max(0.05, bsdfData.roughnessR); - bsdfData.roughnessTT = max(0.05, bsdfData.roughnessTT); - bsdfData.roughnessTRT = max(0.05, bsdfData.roughnessTRT); + // Need to clamp the roughness manually since we invoke the BSDF manually, without it, we get some artifacting in the LUT. + ClampRoughness(bsdfData); // Unused in this case. PreLightData preLightData; @@ -133,67 +140,64 @@ void Main (uint3 dispatchThreadID : SV_DispatchThreadID) // TODO: This LUT and the above are parameterized the exact same way. Find a way to combine them into one sample? // ----------------------------------------------------------------- -RWTexture3D _PreIntegratedAverageHairFiberScatteringUAV; +RWTexture2D _PreIntegratedAverageHairFiberScatteringUAV; -#define FLAGS_R MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT -#define FLAGS_TT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT -#define FLAGS_TRT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT +#define FLAGS_R MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT +#define FLAGS_TT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT +#define FLAGS_TRT MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_LONGITUDINAL | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R | MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT -[numthreads(8, 8, 8)] -void PreIntegrateAzimuthalScattering (uint3 dispatchThreadID : SV_DispatchThreadID) +[numthreads(8, 8, 1)] +void PreIntegrateAzimuthalScattering (uint2 dispatchThreadID : SV_DispatchThreadID) { // Convert the dispatch coordinates to the generation space [0,1]. - float3 UVW = float3(((float3)dispatchThreadID + 0.5) / DIM); + float2 UV = float2(((float2)dispatchThreadID + 0.5) / DIM); // Configure a theoretical hair fiber to evaluate the average attenuation. - SurfaceData surfaceDataR = ConfigureFiberSurface(UVW.z, UVW.x, FLAGS_R); - SurfaceData surfaceDataTT = ConfigureFiberSurface(UVW.z, UVW.x, FLAGS_TT); - SurfaceData surfaceDataTRT = ConfigureFiberSurface(UVW.z, UVW.x, FLAGS_TRT); + // Note, since we only evaluate the azimuthal scattering we can parameterize to 2D since roughness has no effect on this component. + SurfaceData surfaceDataR = ConfigureFiberSurface(UV.y, 0.5, FLAGS_R); + SurfaceData surfaceDataTT = ConfigureFiberSurface(UV.y, 0.5, FLAGS_TT); + SurfaceData surfaceDataTRT = ConfigureFiberSurface(UV.y, 0.5, FLAGS_TRT); // Use the conversion from the surface data to compute all of the per-lobe bsdf information. BSDFData bsdfDataR = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceDataR); BSDFData bsdfDataTT = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceDataTT); BSDFData bsdfDataTRT = ConvertSurfaceDataToBSDFData(uint2(0, 0), surfaceDataTRT); - // Need to clamp the roughness manually since we invoke the BSDF manually. - // Without it, we get some artifacting in the LUT. - // TODO: all - // bsdfData.roughnessR = max(0.05, bsdfData.roughnessR); - // bsdfData.roughnessTT = max(0.05, bsdfData.roughnessTT); - // bsdfData.roughnessTRT = max(0.05, bsdfData.roughnessTRT); + // Need to clamp the roughness manually since we invoke the BSDF manually, without it, we get some artifacting in the LUT. + ClampRoughness(bsdfDataR); + ClampRoughness(bsdfDataTT); + ClampRoughness(bsdfDataTRT); // Unused in this case. PreLightData preLightData; ZERO_INITIALIZE(PreLightData, preLightData); // Configure the initial incident theta direction. - float sinThetaI = UVW.y; + float sinThetaI = UV.x; + + // We are analyzing the front scattering, so place a viewer on the negative X axis. + float3 V = float3(-1, 0, 0); float3 A = 0; + uint C = 0; - for (uint w = 0; w < SPHERE_SAMPLES; w++) + // Integrate over all incident phi. + for (float phi = -HALF_PI; phi < HALF_PI; phi += DPHI) { - float2 U = Hammersley2d(w, SPHERE_SAMPLES); - float3 V = SampleSphereUniform(U.x, U.y); + // Places a light on the back scattering hemisphere (due to the constriction of phi to the -pi/2 to pi/2 range). + float3 L = SphericalToCartesian(phi, sinThetaI); - // Integrate over all incident phi. - for (float phi = -HALF_PI; phi < HALF_PI; phi += DPHI) - { - // Places a light on the back scattering hemisphere (due to the constriction of phi to the -pi/2 to pi/2 range). - float3 L = SphericalToCartesian(phi, sinThetaI); - - // Invoke the fiber scattering function. - CBSDF cbsdfR = EvaluateBSDF(V, L, preLightData, bsdfDataR); - CBSDF cbsdfTT = EvaluateBSDF(V, L, preLightData, bsdfDataTT); - CBSDF cbsdfTRT = EvaluateBSDF(V, L, preLightData, bsdfDataTRT); + // Invoke the fiber scattering function. + CBSDF cbsdfR = EvaluateBSDF(V, L, preLightData, bsdfDataR); + CBSDF cbsdfTT = EvaluateBSDF(V, L, preLightData, bsdfDataTT); + CBSDF cbsdfTRT = EvaluateBSDF(V, L, preLightData, bsdfDataTRT); + A += float3( cbsdfR.specR.x, + cbsdfTT.specR.x, + cbsdfTRT.specR.x ); - A += float3( cbsdfR.specR.x, - cbsdfTT.specR.x, - cbsdfTRT.specR.x ) / INV_FOUR_PI; - } + C++; } - - _PreIntegratedAverageHairFiberScatteringUAV[dispatchThreadID] = INV_PI * float4(A, 1); + _PreIntegratedAverageHairFiberScatteringUAV[dispatchThreadID] = (2 / PI) * float4(A / float(C), 1); } From b154c4cf7e618793b32a3794296d92a372b0fbc7 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 30 Aug 2021 09:27:00 -0400 Subject: [PATCH 48/73] Further simplify the dual scattering approximation and nan suppresion --- .../RayMarchingFallbackHierarchy.cs.hlsl.meta | 2 +- .../Runtime/Material/Hair/Hair.cs | 6 +-- .../Runtime/Material/Hair/Hair.hlsl | 2 +- .../Material/Hair/HairScattering.hlsl.meta | 2 +- .../HairMultipleScattering.hlsl | 8 ++- .../HDRenderPipelineRuntimeResources.asset | 54 +++++++------------ 6 files changed, 27 insertions(+), 47 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta index 6cedcd9ffda..9b07b46f894 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 <<<<<<< HEAD:com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta -guid: 4ad238498a9cf924489ff520fd98d3ba +guid: 95643cfe1d8b9334188d39bfd9b97cfc ======= guid: 475e9dc7baf953948a861aba6bcd1a3e >>>>>>> master:com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 099b3380df4..a5abd93151b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -189,7 +189,7 @@ public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntim m_PreIntegratedAzimuthalScatteringLUT = defaultResources.textures.preintegratedAzimuthalScattering; // Initialize the dual scattering LUT. - m_PreIntegratedFiberScatteringLUT = new RenderTexture(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16_SFloat) + m_PreIntegratedFiberScatteringLUT = new RenderTexture(m_DimTheta, m_DimBeta, 0, GraphicsFormat.R16G16_SFloat) { dimension = TextureDimension.Tex3D, volumeDepth = m_DimAbsorption, @@ -197,7 +197,7 @@ public override void Build(HDRenderPipelineAsset hdAsset, HDRenderPipelineRuntim hideFlags = HideFlags.HideAndDontSave, filterMode = FilterMode.Point, wrapMode = TextureWrapMode.Clamp, - name = CoreUtils.GetRenderTargetAutoName(m_DimTheta, m_DimBeta, m_DimAbsorption, GraphicsFormat.R16G16_SFloat, "PreIntegratedFiberScattering") + name = CoreUtils.GetRenderTargetAutoName(m_DimTheta, m_DimBeta, 0, GraphicsFormat.R16G16_SFloat, "PreIntegratedFiberScattering") }; m_PreIntegratedFiberScatteringLUT.Create(); @@ -248,7 +248,7 @@ public override void RenderInit(CommandBuffer cmd) cmd.SetComputeTextureParam(m_PreIntegratedFiberScatteringCS, 1, _PreIntegratedAverageHairFiberScatteringUAV, m_PreIntegratedFiberAverageScatteringLUT); cmd.DispatchCompute(m_PreIntegratedFiberScatteringCS, 1, HDUtils.DivRoundUp(m_DimTheta, 8), HDUtils.DivRoundUp(m_DimBeta, 8), 1); - m_PreIntegratedFiberAverageScatteringIsInit = false; + m_PreIntegratedFiberAverageScatteringIsInit = true; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index b59028943d2..ceae4f31ffc 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -694,7 +694,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #if _USE_DENSITY_VOLUME_SCATTERING if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING)) { - cbsdf.specR = EvaluateMultipleScattering(cbsdf.specR, bsdfData, alpha, beta, thetaH, cosThetaD, sinThetaI); + cbsdf.specR = EvaluateMultipleScattering(cbsdf.specR, bsdfData, alpha, beta, thetaH, sinThetaI); } else #endif diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta index cd4c9924ec1..c15cb5945f2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c15cf6d48b32d1842b3dd4b411111d37 +guid: c1acf922f4c8a83439af05d428b09da8 ShaderIncludeImporter: externalObjects: {} userData: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index 25bfbb7491d..81d6d0bbb97 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -110,7 +110,7 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 } // void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringData lightScatteringData, inout BSDFData bsdfData) -float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, float3 beta, float thetaH, float cosThetaD, float sinThetaI) +float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, float3 beta, float thetaH, float sinThetaI) { // Fetch the various preintegrated data. HairScatteringData hairScatteringData = GetHairScatteringData(bsdfData, alpha, beta, sinThetaI); @@ -199,9 +199,7 @@ float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, fl float3 Sb = ScatteringSpreadGaussian(thetaH - deltaB, sigmaB + sigmaF); // Resolve the overall local scattering term ( Eq. 9 & 10 ). - float3 fsBack = 2 * Ab * Sb; - fsBack /= cosThetaD; - fsBack *= db; + float3 fsBack = db * 2 * Ab * Sb; // Resolve the approximated multiple scattering. // ------------------------------------------------------------------------------------ @@ -211,5 +209,5 @@ float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, fl const float3 Fdirect = directFraction * (Fs + fsBack); const float3 Fscatter = (Tf - directFraction) * df * (fsScatter + PI * fsBack); - return Fdirect + Fscatter; + return max(Fdirect + Fscatter, 0); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset index df1997d6698..c3db928ab0b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset @@ -77,26 +77,17 @@ MonoBehaviour: physicallyBasedSkyPS: {fileID: 4800000, guid: a06934a4863e778498be65d8f865b7a4, type: 3} planarReflectionFilteringCS: {fileID: 7200000, guid: 9f3f8a01b8caaaa4595591dc96d43dd2, type: 3} cloudLayerPS: {fileID: 4800000, guid: 001a47fa123e95a4bba13ecb0442d944, type: 3} - bakeCloudTextureCS: {fileID: 7200000, guid: 09a7f6850ee9fb4439e5ebd632127da5, - type: 3} - bakeCloudShadowsCS: {fileID: 7200000, guid: 3e7317e0800c066448ee07a3e47f102b, - type: 3} - volumetricCloudsCS: {fileID: 7200000, guid: f911a8577fa9a4546a6b255bcf888baf, - type: 3} - volumetricCloudMapGeneratorCS: {fileID: 7200000, guid: 6b22771f0aa98744cb09f455a5a818cb, - type: 3} - volumetricCloudsCombinePS: {fileID: 4800000, guid: 12f1a69ddf916f042ae6ce8a994506f3, - type: 3} - preIntegratedFGD_GGXDisneyDiffusePS: {fileID: 4800000, guid: 123f13d52852ef547b2962de4bd9eaad, - type: 3} - preIntegratedFGD_CharlieFabricLambertPS: {fileID: 4800000, guid: 3b3bf235775cf8b4baae7f3306787ab0, - type: 3} - preIntegratedFGD_MarschnerPS: {fileID: 4800000, guid: 31f36caf0a5e7f848a1b5328b6ad3eb8, - type: 3} - preIntegratedFGD_WardPS: {fileID: 4800000, guid: d279c46a545b0af4f9f0c4fa82cd489e, - type: 3} - preIntegratedFGD_CookTorrancePS: {fileID: 4800000, guid: a6402c19b020b4a4fb7073aaa2e26aba, - type: 3} + bakeCloudTextureCS: {fileID: 7200000, guid: 09a7f6850ee9fb4439e5ebd632127da5, type: 3} + bakeCloudShadowsCS: {fileID: 7200000, guid: 3e7317e0800c066448ee07a3e47f102b, type: 3} + volumetricCloudsCS: {fileID: 7200000, guid: f911a8577fa9a4546a6b255bcf888baf, type: 3} + volumetricCloudMapGeneratorCS: {fileID: 7200000, guid: 6b22771f0aa98744cb09f455a5a818cb, type: 3} + volumetricCloudsCombinePS: {fileID: 4800000, guid: 12f1a69ddf916f042ae6ce8a994506f3, type: 3} + preIntegratedFGD_GGXDisneyDiffusePS: {fileID: 4800000, guid: 123f13d52852ef547b2962de4bd9eaad, type: 3} + preIntegratedFGD_CharlieFabricLambertPS: {fileID: 4800000, guid: 3b3bf235775cf8b4baae7f3306787ab0, type: 3} + preIntegratedFGD_WardPS: {fileID: 4800000, guid: d279c46a545b0af4f9f0c4fa82cd489e, type: 3} + preIntegratedFGD_CookTorrancePS: {fileID: 4800000, guid: a6402c19b020b4a4fb7073aaa2e26aba, type: 3} + preIntegratedFGD_MarschnerPS: {fileID: 4800000, guid: 31f36caf0a5e7f848a1b5328b6ad3eb8, type: 3} + preIntegratedFiberScatteringCS: {fileID: 7200000, guid: 4a087c9d074552c48aeb85184d56312e, type: 3} encodeBC6HCS: {fileID: 7200000, guid: aa922d239de60304f964e24488559eeb, type: 3} cubeToPanoPS: {fileID: 4800000, guid: 595434cc3b6405246b6cd3086d0b6f7d, type: 3} blitCubeTextureFacePS: {fileID: 4800000, guid: d850d0a2481878d4bbf17e5126b04163, type: 3} @@ -156,28 +147,21 @@ MonoBehaviour: clearBlackPS: {fileID: 4800000, guid: 3330c1503ea8c6d4d9408df3f64227eb, type: 3} SMAAPS: {fileID: 4800000, guid: 9655f4aa89a469c49aceaceabf9bc77b, type: 3} temporalAntialiasingPS: {fileID: 4800000, guid: 3dd9fd928fdb83743b1f27d15df22179, type: 3} - upsampleSceneCS: {fileID: 7200000, guid: 51e13c18f34ea1d4183edb912e98cbf7, type: 3} lensFlareDataDrivenPS: {fileID: 4800000, guid: 85330b3de0cfebc4ba78b2d61b1a2899, type: 3} DLSSBiasColorMaskPS: {fileID: 4800000, guid: 017a05924c0b0484ca29717ed0c60343, type: 3} dofCircleOfConfusion: {fileID: 7200000, guid: 75332b7b315c80d4babe506820aa0bfd, type: 3} dofGatherCS: {fileID: 7200000, guid: 1e6b16a7970a1494db74b1d3d007d1cc, type: 3} dofCoCMinMaxCS: {fileID: 7200000, guid: c70dd492c3d2fe94589d6ca8d4e37915, type: 3} dofMinMaxDilateCS: {fileID: 7200000, guid: 757a3f81b35177b44b2b178909b49172, type: 3} - contrastAdaptiveSharpenCS: {fileID: 7200000, guid: 560896aec2f412c48995be35551a4ac6, - type: 3} - robustContrastAdaptiveSharpenCS: {fileID: 7200000, guid: d907373e407ff65479c449a66c04443d, - type: 3} - edgeAdaptiveSpatialUpsamplingCS: {fileID: 7200000, guid: f054fa9fe2c85bb42b9489e2f9ffb643, - type: 3} - VTFeedbackDownsample: {fileID: 7200000, guid: 32d963548086c2c439aeb23a93e9a00a, - type: 3} + contrastAdaptiveSharpenCS: {fileID: 7200000, guid: 560896aec2f412c48995be35551a4ac6, type: 3} + robustContrastAdaptiveSharpenCS: {fileID: 7200000, guid: d907373e407ff65479c449a66c04443d, type: 3} + edgeAdaptiveSpatialUpsamplingCS: {fileID: 7200000, guid: f054fa9fe2c85bb42b9489e2f9ffb643, type: 3} + VTFeedbackDownsample: {fileID: 7200000, guid: 32d963548086c2c439aeb23a93e9a00a, type: 3} accumulationCS: {fileID: 7200000, guid: ed80add7a217efa468d137d6f7c668f3, type: 3} alphaInjectionPS: {fileID: 4800000, guid: 4edd96259a5e8b44c90479928f0cd11e, type: 3} chromaKeyingPS: {fileID: 4800000, guid: 49feb6b111e82ec4eb6d3d08e4b6903e, type: 3} customClearPS: {fileID: 4800000, guid: 9cef3686fa32c8840947ed99b561195c, type: 3} - ssGIDenoiserCS: {fileID: 7200000, guid: a435d803bc32d0845ba1a713b7a1c8b1, type: 3} - bilateralUpsampleCS: {fileID: 7200000, guid: 68e831c555284d741b985e05369f0e63, - type: 3} + bilateralUpsampleCS: {fileID: 7200000, guid: 68e831c555284d741b985e05369f0e63, type: 3} temporalFilterCS: {fileID: 7200000, guid: 741979ff70f7bd6489fbcb464280ecff, type: 3} diffuseDenoiserCS: {fileID: 7200000, guid: b4ed2382141619f40af1f743a84ccaea, type: 3} textures: @@ -258,10 +242,8 @@ MonoBehaviour: rankingTile8SPP: {fileID: 2800000, guid: af4bd638a4b3eb14781e6441adcdfbb9, type: 3} scramblingTile8SPP: {fileID: 2800000, guid: 152f8b933250a7b448fc2d4d301b9944, type: 3} rankingTile256SPP: {fileID: 2800000, guid: 1e604a266c415cd46b36d97cd9220aa8, type: 3} - scramblingTile256SPP: {fileID: 2800000, guid: 882fb55d7b3e7c94598a318df9376e32, - type: 3} - preintegratedAzimuthalScattering: {fileID: 2800000, guid: 4f022cc0bdd8db4428a8faae60acb3dc, - type: 3} + scramblingTile256SPP: {fileID: 2800000, guid: 882fb55d7b3e7c94598a318df9376e32, type: 3} + preintegratedAzimuthalScattering: {fileID: 2800000, guid: 4f022cc0bdd8db4428a8faae60acb3dc, type: 3} cloudLutRainAO: {fileID: 2800000, guid: e0bcfddf26ed5584ba3d8b94d3200114, type: 3} worleyNoise128RGBA: {fileID: 11700000, guid: 1fe54a721d0e2504e89f121c723404a8, type: 3} worleyNoise32RGB: {fileID: 11700000, guid: ec156c314a242914dbb706f73ad78cf2, type: 3} From fcbb2d83da514224954c9a947dcccb2cf01c87a9 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 3 Sep 2021 10:32:31 -0400 Subject: [PATCH 49/73] Remove density tracing code from HDRP --- .../Runtime/Lighting/LightLoop/LightLoop.hlsl | 3 - .../Runtime/Lighting/Lighting.hlsl | 2 - .../MultipleScattering.hlsl | 79 ------------------- .../MultipleScattering.hlsl.meta | 11 --- .../Runtime/Lighting/SurfaceShading.hlsl | 26 ------ .../Runtime/Material/Hair/Hair.hlsl | 3 +- .../HDRenderPipelineRuntimeResources.asset | 6 +- 7 files changed, 4 insertions(+), 126 deletions(-) delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index 09f7523d55b..337106ac8d0 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -228,8 +228,6 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS // TODO: this will cause us to load from the normal buffer first. Does this cause a performance problem? float3 L = -light.forward; - // In case of multiple scattering, for now we eat the VGPR cost and evaluate the sun shadow during directional light contribution evaluation. -#ifndef LIGHT_EVALUATES_MULTIPLE_SCATTERING // Is it worth sampling the shadow map? if ((light.lightDimmer > 0) && (light.shadowDimmer > 0) && // Note: Volumetric can have different dimmer, thus why we test it here IsNonZeroBSDF(V, L, preLightData, bsdfData) && @@ -239,7 +237,6 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L); } -#endif } } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl index 3b997ba4c16..c26a83c8517 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl @@ -10,6 +10,4 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/HDShadow.hlsl" -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl" - #endif // UNITY_LIGHTING_INCLUDED diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl deleted file mode 100644 index bacd335f6cb..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl +++ /dev/null @@ -1,79 +0,0 @@ -// TODO: It is currently tricky to move this tracing util from the package as we then have a conflicting/redefinition -// issue from the "HairVert" custom node. The solution may need to be a secondary cbuffer for general binding. -// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimData.hlsl" -// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimComputeVolumeUtility.hlsl" - -float3 VolumeUVWToWorld(float3 uvw) -{ - float3 positionWS = (uvw * (_VolumeWorldMax - _VolumeWorldMin)) + _VolumeWorldMin; - return positionWS; -} - -// Currently the only routine we support for gathering multiple scattering information is by tracing a density volume. -#define MULTIPLE_SCATTERING_DENSITY_VOLUME 1 - -// Inform LightLoopDefs.hlsl that we have a multiple scattering struct define. -#define HAVE_MULTIPLE_SCATTERING_DATA - -struct MultipleScatteringData -{ - float fiberCount; - -#if MULTIPLE_SCATTERING_DENSITY_VOLUME - float3 shadowProxyPositionRWS; -#endif -}; - -MultipleScatteringData EvaluateMultipleScattering_Light(PositionInputs posInputs, float3 L) -{ - MultipleScatteringData data; - ZERO_INITIALIZE(MultipleScatteringData, data); - -#if MULTIPLE_SCATTERING_DENSITY_VOLUME - // Trace against the density field in the shadow ray direction. - const float3 positionWS = GetAbsolutePositionWS(posInputs.positionWS); - const float3 directionWS = L; - - const int numStepsWithinCell = 10; - const int numSteps = _VolumeCells.x * numStepsWithinCell; - - VolumeTraceState trace = VolumeTraceBegin(positionWS, directionWS, 0.5, numStepsWithinCell); - - // Track the outermost edge coordinate. - float3 shadowProxyCoord = trace.uvw; - - for (int i = 0; i != numSteps; i++) - { - if (VolumeTraceStep(trace)) - { - float cellDensitySampled = VolumeSampleScalar(_VolumeDensity, trace.uvw); - - // TODO: Better strand count approximation. - data.fiberCount += cellDensitySampled; - - if (any(cellDensitySampled)) - { - // While tracing, track the outermost coordinate in the shadow ray direction. - // This will be used to override the shadow test to handle self-occlusion between strands. - shadowProxyCoord = trace.uvw; - } - } - } - - // Transform the outermost coordinate into terms of camera relative world space. - float3 shadowProxyPositionWS = VolumeUVWToWorld(shadowProxyCoord); - data.shadowProxyPositionRWS = GetCameraRelativePositionWS(shadowProxyPositionWS); -#else - // TODO: Optimized routine (ie Deep Opacity Maps). -#endif - - return data; -} - -void EvaluateMultipleScattering_ShadowProxy(MultipleScatteringData scatteringData, inout float3 positionWS) -{ -#if MULTIPLE_SCATTERING_DENSITY_VOLUME - // Modify the shadow sample position to be the edge of the density volume toward the light. - positionWS = scatteringData.shadowProxyPositionRWS; -#endif -} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta deleted file mode 100644 index 6cedcd9ffda..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -<<<<<<< HEAD:com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta -guid: 4ad238498a9cf924489ff520fd98d3ba -======= -guid: 475e9dc7baf953948a861aba6bcd1a3e ->>>>>>> master:com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta -ShaderIncludeImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl index ee1fcac8519..1619f52dbf2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl @@ -92,23 +92,6 @@ DirectLighting ShadeSurface_Directional(LightLoopContext lightLoopContext, else #endif { -#ifdef LIGHT_EVALUATES_MULTIPLE_SCATTERING - MultipleScatteringData scatteringData = EvaluateMultipleScattering_Light(posInput, L); - - if ((light.shadowIndex >= 0) && (light.shadowDimmer > 0)) - { - // Due to self-occlusion from shadows within the scattering volume, we call this to modify the sampled position for shadows. - EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); - - lightLoopContext.shadowValue = GetDirectionalShadowAttenuation(lightLoopContext.shadowContext, - posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), - light.shadowIndex, L); - } - - // Propagate the fiber count to the BSDF. - bsdfData.fiberCount = scatteringData.fiberCount; -#endif - SHADOW_TYPE shadow = EvaluateShadow_Directional(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData)); float NdotL = dot(bsdfData.normalWS, L); // No microshadowing when facing away from light (use for thin transmission as well) shadow *= NdotL >= 0.0 ? ComputeMicroShadowing(GetAmbientOcclusionForMicroShadowing(bsdfData), NdotL, _MicroShadowOpacity) : 1.0; @@ -192,15 +175,6 @@ DirectLighting ShadeSurface_Punctual(LightLoopContext lightLoopContext, else #endif { -#ifdef LIGHT_EVALUATES_MULTIPLE_SCATTERING - MultipleScatteringData scatteringData = EvaluateMultipleScattering_Light(posInput, L); - - // Due to self-occlusion from shadows within the a volume, we call this to modify the sampled position for shadows. - EvaluateMultipleScattering_ShadowProxy(scatteringData, posInput.positionWS); - - // Propagate the fiber count to the BSDF. - bsdfData.fiberCount = scatteringData.fiberCount; -#endif // This code works for both surface reflection and thin object transmission. SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances); lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index ceae4f31ffc..bc8a73dda05 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -25,8 +25,7 @@ // #define HAIR_DISPLAY_REFERENCE_BSDF // #define HAIR_DISPLAY_REFERENCE_IBL -// An extra material feature flag we utilize to compile two different versions of BSDF evaluation (one with transmission lobe -// for analytic lights, one without transmission lobe for environment light). +// Extra material feature flag we utilize to compile different versions of BSDF evaluation (for pre-integration, etc.) #define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R (1 << 16) #define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 17) #define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT (1 << 18) diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset index 82c7307c4c5..e8d38d2dce8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineRuntimeResources.asset @@ -84,9 +84,10 @@ MonoBehaviour: volumetricCloudsCombinePS: {fileID: 4800000, guid: 12f1a69ddf916f042ae6ce8a994506f3, type: 3} preIntegratedFGD_GGXDisneyDiffusePS: {fileID: 4800000, guid: 123f13d52852ef547b2962de4bd9eaad, type: 3} preIntegratedFGD_CharlieFabricLambertPS: {fileID: 4800000, guid: 3b3bf235775cf8b4baae7f3306787ab0, type: 3} - preIntegratedFGD_MarschnerPS: {fileID: 4800000, guid: 31f36caf0a5e7f848a1b5328b6ad3eb8, type: 3} preIntegratedFGD_WardPS: {fileID: 4800000, guid: d279c46a545b0af4f9f0c4fa82cd489e, type: 3} preIntegratedFGD_CookTorrancePS: {fileID: 4800000, guid: a6402c19b020b4a4fb7073aaa2e26aba, type: 3} + preIntegratedFGD_MarschnerPS: {fileID: 4800000, guid: 31f36caf0a5e7f848a1b5328b6ad3eb8, type: 3} + preIntegratedFiberScatteringCS: {fileID: 7200000, guid: 4a087c9d074552c48aeb85184d56312e, type: 3} encodeBC6HCS: {fileID: 7200000, guid: aa922d239de60304f964e24488559eeb, type: 3} cubeToPanoPS: {fileID: 4800000, guid: 595434cc3b6405246b6cd3086d0b6f7d, type: 3} blitCubeTextureFacePS: {fileID: 4800000, guid: d850d0a2481878d4bbf17e5126b04163, type: 3} @@ -263,8 +264,7 @@ MonoBehaviour: defaultHDRISky: {fileID: 8900000, guid: 8253d41e6e8b11a4cbe77a4f8f82934d, type: 3} defaultCloudMap: {fileID: 2800000, guid: 57a33fc2476a01644865bfde5f06e2f4, type: 3} shaderGraphs: - objectIDPS: {fileID: -6465566751694194690, guid: 89daf81f8e8f6634da726cbca859ca38, - type: 3} + objectIDPS: {fileID: -6465566751694194690, guid: 89daf81f8e8f6634da726cbca859ca38, type: 3} assets: defaultDiffusionProfile: {fileID: 11400000, guid: 2b7005ba3a4d8474b8cdc34141ad766e, type: 2} emissiveCylinderMesh: {fileID: 2534964839176971238, guid: accb6d90f0d50fe4ca0f68159b4323de, type: 3} From b2d8bfc54f125f5e59946a46121a934e5c6a3c15 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 3 Sep 2021 12:10:20 -0400 Subject: [PATCH 50/73] Add the new new stack block inputs for sampling pre-processed global scattering --- .../Editor/Material/Hair/ShaderGraph/HairData.cs | 2 +- .../Material/Hair/ShaderGraph/HairSubTarget.cs | 13 +++++++++++-- .../Hair/ShaderGraph/ShaderPassDefine.template.hlsl | 2 +- .../Editor/Material/ShaderGraph/HDBlockFields.cs | 6 ++++++ .../Runtime/Lighting/MultipleScattering.meta | 8 -------- 5 files changed, 19 insertions(+), 12 deletions(-) delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering.meta diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs index f1dd48d7cc3..81836a1a115 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairData.cs @@ -21,7 +21,7 @@ public enum GeometryType public enum ScatteringMode { Approximate, - DensityVolume + Advanced } [SerializeField] diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 0a912e3660d..538ad3db168 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -57,7 +57,7 @@ public HairData hairData public static FieldDescriptor UseLightFacingNormal = new FieldDescriptor(string.Empty, "UseLightFacingNormal", "_USE_LIGHT_FACING_NORMAL 1"); public static FieldDescriptor Transmittance = new FieldDescriptor(string.Empty, "Transmittance", "_TRANSMITTANCE 1"); public static FieldDescriptor UseRoughenedAzimuthalScattering = new FieldDescriptor(string.Empty, "UseRoughenedAzimuthalScattering", "_USE_ROUGHENED_AZIMUTHAL_SCATTERING 1"); - public static FieldDescriptor ScatteringDensityVolume = new FieldDescriptor(string.Empty, "ScatteringDensityVolume", "_USE_DENSITY_VOLUME_SCATTERING 1"); + public static FieldDescriptor ScatteringAdvanced = new FieldDescriptor(string.Empty, "ScatteringAdvanced", "_USE_ADVANCED_MULTIPLE_SCATTERING 1"); public override void GetFields(ref TargetFieldContext context) { @@ -73,7 +73,7 @@ public override void GetFields(ref TargetFieldContext context) context.AddField(UseLightFacingNormal, hairData.geometryType == HairData.GeometryType.Strands); context.AddField(Transmittance, descs.Contains(HDBlockFields.SurfaceDescription.Transmittance) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.Transmittance)); context.AddField(UseRoughenedAzimuthalScattering, hairData.useRoughenedAzimuthalScattering); - context.AddField(ScatteringDensityVolume, hairData.scatteringMode == HairData.ScatteringMode.DensityVolume); + context.AddField(ScatteringAdvanced, hairData.scatteringMode == HairData.ScatteringMode.Advanced); // Misc context.AddField(SpecularAA, lightingData.specularAA && @@ -106,6 +106,15 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) // TODO: Refraction Index // Right now, the Marschner model implicitly assumes a human hair IOR of 1.55. + + if (hairData.scatteringMode == HairData.ScatteringMode.Advanced) + { + // Dual Scattering Inputs (Global Scattering) + // Right now these inputs are provided by the demo team hair package. + context.AddBlock(HDBlockFields.SurfaceDescription.ForwardScatteringTransmittance); + context.AddBlock(HDBlockFields.SurfaceDescription.ForwardScatteringVariance); + context.AddBlock(HDBlockFields.SurfaceDescription.DirectIlluminationFraction); + } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl index 02118d65168..5ac4ee72b3a 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPassDefine.template.hlsl @@ -6,5 +6,5 @@ $SpecularOcclusionFromAO: #define _SPECULAR_OCCLUSION_FROM_AO 1 $SpecularOcclusionFromAOBentNormal: #define _SPECULAR_OCCLUSION_FROM_AO_BENT_NORMAL 1 $SpecularOcclusionCustom: #define _SPECULAR_OCCLUSION_CUSTOM 1 $Specular.AA: #define _ENABLE_GEOMETRIC_SPECULAR_AA 1 -$ScatteringDensityVolume: #define _USE_DENSITY_VOLUME_SCATTERING 1 +$ScatteringAdvanced: #define _USE_ADVANCED_MULTIPLE_SCATTERING 1 $UseRoughenedAzimuthalScattering: #define _USE_ROUGHENED_AZIMUTHAL_SCATTERING 1 diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index 9c923b9a75c..ca169cb2b26 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -130,6 +130,12 @@ public struct SurfaceDescription new FloatControl(0.5f), ShaderStage.Fragment); public static BlockFieldDescriptor CuticleAngle = new BlockFieldDescriptor(SurfaceDescription.name, "CuticleAngle", "Cuticle Angle", "SURFACEDESCRIPTION_CUTICLEANGLE", new FloatControl(3f), ShaderStage.Fragment); + public static BlockFieldDescriptor ForwardScatteringTransmittance = new BlockFieldDescriptor(SurfaceDescription.name, "ForwardScatteringTransmittance", "Scattering Transmittance", "SURFACEDESCRIPTION_FORWARDSCATTERINGTRANSMITTANCE", + new Vector3Control(0.3f * new Vector3(1.0f, 0.65f, 0.3f)), ShaderStage.Fragment); + public static BlockFieldDescriptor ForwardScatteringVariance = new BlockFieldDescriptor(SurfaceDescription.name, "ForwardScatteringVariance", "Scattering Variance", "SURFACEDESCRIPTION_FORWARDSCATTERINGVARIANCE", + new Vector3Control(0.3f * new Vector3(1.0f, 0.65f, 0.3f)), ShaderStage.Fragment); + public static BlockFieldDescriptor DirectIlluminationFraction = new BlockFieldDescriptor(SurfaceDescription.name, "DirectIlluminationFraction", "Direct Illumination", "SURFACEDESCRIPTION_CUTICLEANGLE", + new FloatControl(0.5f), ShaderStage.Fragment); // -------------------------------------------------- // StackLit diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering.meta deleted file mode 100644 index 6e40da560aa..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 43d9a714307c3dd41a238efd4dd06abb -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: From a75dba488ab3570dd8b935fab9183911b01dadd0 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 3 Sep 2021 13:10:15 -0400 Subject: [PATCH 51/73] Configure GPU-side new bsdf inputs for multiple scattering --- .../Hair/ShaderGraph/ShaderPass.template.hlsl | 38 ++++++++++--------- .../Runtime/Material/Hair/Hair.cs | 15 +++++++- .../Runtime/Material/Hair/Hair.cs.hlsl | 33 ++++++++++++++-- .../Runtime/Material/Hair/Hair.hlsl | 12 ++++-- .../Runtime/Material/Hair/HairScattering.hlsl | 34 ----------------- .../Material/Hair/HairScattering.hlsl.meta | 7 ---- .../HairMultipleScattering.hlsl | 10 ++--- 7 files changed, 75 insertions(+), 74 deletions(-) delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl delete mode 100644 com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl index 06e5c31efc6..5ae7b1d7017 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl @@ -27,23 +27,27 @@ void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDes surfaceData.specularOcclusion = 1.0; // copy across graph values, if defined - $SurfaceDescription.BaseColor: surfaceData.diffuseColor = surfaceDescription.BaseColor; - $SurfaceDescription.SpecularOcclusion: surfaceData.specularOcclusion = surfaceDescription.SpecularOcclusion; - $SurfaceDescription.Smoothness: surfaceData.perceptualSmoothness = surfaceDescription.Smoothness; - $SurfaceDescription.Occlusion: surfaceData.ambientOcclusion = surfaceDescription.Occlusion; - $SurfaceDescription.Transmittance: surfaceData.transmittance = surfaceDescription.Transmittance; - $SurfaceDescription.RimTransmissionIntensity: surfaceData.rimTransmissionIntensity = surfaceDescription.RimTransmissionIntensity; - - $SurfaceDescription.SpecularTint: surfaceData.specularTint = surfaceDescription.SpecularTint; - $SurfaceDescription.SpecularShift: surfaceData.specularShift = surfaceDescription.SpecularShift; - - $SurfaceDescription.SecondarySmoothness: surfaceData.secondaryPerceptualSmoothness = surfaceDescription.SecondarySmoothness; - $SurfaceDescription.SecondarySpecularTint: surfaceData.secondarySpecularTint = surfaceDescription.SecondarySpecularTint; - $SurfaceDescription.SecondarySpecularShift: surfaceData.secondarySpecularShift = surfaceDescription.SecondarySpecularShift; - - $SurfaceDescription.RadialSmoothness: surfaceData.perceptualRadialSmoothness = surfaceDescription.RadialSmoothness; - $SurfaceDescription.PrimaryReflectionSmoothness: surfaceData.primaryReflectionSmoothness = surfaceDescription.PrimaryReflectionSmoothness; - $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; + $SurfaceDescription.BaseColor: surfaceData.diffuseColor = surfaceDescription.BaseColor; + $SurfaceDescription.SpecularOcclusion: surfaceData.specularOcclusion = surfaceDescription.SpecularOcclusion; + $SurfaceDescription.Smoothness: surfaceData.perceptualSmoothness = surfaceDescription.Smoothness; + $SurfaceDescription.Occlusion: surfaceData.ambientOcclusion = surfaceDescription.Occlusion; + $SurfaceDescription.Transmittance: surfaceData.transmittance = surfaceDescription.Transmittance; + $SurfaceDescription.RimTransmissionIntensity: surfaceData.rimTransmissionIntensity = surfaceDescription.RimTransmissionIntensity; + + $SurfaceDescription.SpecularTint: surfaceData.specularTint = surfaceDescription.SpecularTint; + $SurfaceDescription.SpecularShift: surfaceData.specularShift = surfaceDescription.SpecularShift; + + $SurfaceDescription.SecondarySmoothness: surfaceData.secondaryPerceptualSmoothness = surfaceDescription.SecondarySmoothness; + $SurfaceDescription.SecondarySpecularTint: surfaceData.secondarySpecularTint = surfaceDescription.SecondarySpecularTint; + $SurfaceDescription.SecondarySpecularShift: surfaceData.secondarySpecularShift = surfaceDescription.SecondarySpecularShift; + + $SurfaceDescription.RadialSmoothness: surfaceData.perceptualRadialSmoothness = surfaceDescription.RadialSmoothness; + $SurfaceDescription.PrimaryReflectionSmoothness: surfaceData.primaryReflectionSmoothness = surfaceDescription.PrimaryReflectionSmoothness; + $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; + + $SurfaceDescription.ForwardScatteringTransmittance: surfaceData.forwardScatteringTransmittance = surfaceDescription.ForwardScatteringTransmittance; + $SurfaceDescription.ForwardScatteringVariance: surfaceData.forwardScatteringVariance = surfaceDescription.ForwardScatteringVariance; + $SurfaceDescription.DirectIlluminationFraction: surfaceData.directIlluminationFraction = surfaceDescription.DirectIlluminationFraction; // These static material feature allow compile time optimization surfaceData.materialFeatures = 0; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index a39ebb90135..88b9610873f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -79,6 +79,15 @@ public struct SurfaceData public float perceptualRadialSmoothness; [SurfaceDataAttributes("Cuticle Angle")] public float cuticleAngle; + + // Global Scattering + [SurfaceDataAttributes("Scattering Transmittance")] + public Vector3 forwardScatteringTransmittance; + [SurfaceDataAttributes("Scattering Variance")] + public Vector3 forwardScatteringVariance; + [SurfaceDataAttributes("Direct Illumination")] + public float directIlluminationFraction; + }; //----------------------------------------------------------------------------- @@ -145,8 +154,10 @@ public struct BSDFData public float roughnessRadial; - // Dual scattering - public float fiberCount; + // Global Scattering + public Vector3 forwardScatteringTransmittance; + public Vector3 forwardScatteringVariance; + public float directIlluminationFraction; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index f32dac55b46..180e46a059c 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -32,6 +32,9 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_SHIFT (1416) #define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1417) #define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1418) +#define DEBUGVIEW_HAIR_SURFACEDATA_SCATTERING_TRANSMITTANCE (1419) +#define DEBUGVIEW_HAIR_SURFACEDATA_SCATTERING_VARIANCE (1420) +#define DEBUGVIEW_HAIR_SURFACEDATA_DIRECT_ILLUMINATION (1421) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -70,7 +73,9 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT (1481) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) -#define DEBUGVIEW_HAIR_BSDFDATA_FIBER_COUNT (1484) +#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_SCATTERING_TRANSMITTANCE (1484) +#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_SCATTERING_VARIANCE (1485) +#define DEBUGVIEW_HAIR_BSDFDATA_DIRECT_ILLUMINATION_FRACTION (1486) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -93,6 +98,9 @@ struct SurfaceData float secondarySpecularShift; float perceptualRadialSmoothness; float cuticleAngle; + float3 forwardScatteringTransmittance; + float3 forwardScatteringVariance; + float directIlluminationFraction; }; // Generated from UnityEngine.Rendering.HighDefinition.Hair+BSDFData @@ -131,7 +139,9 @@ struct BSDFData float roughnessTT; float roughnessTRT; float roughnessRadial; - float fiberCount; + float3 forwardScatteringTransmittance; + float3 forwardScatteringVariance; + float directIlluminationFraction; }; // @@ -201,6 +211,15 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f case DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE: result = surfacedata.cuticleAngle.xxx; break; + case DEBUGVIEW_HAIR_SURFACEDATA_SCATTERING_TRANSMITTANCE: + result = surfacedata.forwardScatteringTransmittance; + break; + case DEBUGVIEW_HAIR_SURFACEDATA_SCATTERING_VARIANCE: + result = surfacedata.forwardScatteringVariance; + break; + case DEBUGVIEW_HAIR_SURFACEDATA_DIRECT_ILLUMINATION: + result = surfacedata.directIlluminationFraction.xxx; + break; } } @@ -314,8 +333,14 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL: result = bsdfdata.roughnessRadial.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_FIBER_COUNT: - result = bsdfdata.fiberCount.xxx; + case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_SCATTERING_TRANSMITTANCE: + result = bsdfdata.forwardScatteringTransmittance; + break; + case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_SCATTERING_VARIANCE: + result = bsdfdata.forwardScatteringVariance; + break; + case DEBUGVIEW_HAIR_BSDFDATA_DIRECT_ILLUMINATION_FRACTION: + result = bsdfdata.directIlluminationFraction.xxx; break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index bc8a73dda05..b6b770f9893 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -260,6 +260,12 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) // Absorption bsdfData.absorption = DiffuseColorToAbsorption(surfaceData.diffuseColor, bsdfData.roughnessRadial); + + #if _USE_ADVANCED_MULTIPLE_SCATTERING + bsdfData.forwardScatteringTransmittance = surfaceData.forwardScatteringTransmittance; + bsdfData.forwardScatteringVariance = surfaceData.forwardScatteringVariance; + bsdfData.directIlluminationFraction = surfaceData.directIlluminationFraction; + #endif } ApplyDebugToBSDFData(bsdfData); @@ -490,9 +496,9 @@ LightTransportData GetLightTransportData(SurfaceData surfaceData, BuiltinData bu #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/PreIntegratedAzimuthalScattering.hlsl" -#ifdef _USE_DENSITY_VOLUME_SCATTERING +#ifdef _USE_ADVANCED_MULTIPLE_SCATTERING #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl" -#endif //_USE_DENSITY_VOLUME_SCATTERING +#endif //_USE_ADVANCED_MULTIPLE_SCATTERING bool IsNonZeroBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) { @@ -690,7 +696,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #endif // Multiple Scattering - #if _USE_DENSITY_VOLUME_SCATTERING + #if _USE_ADVANCED_MULTIPLE_SCATTERING if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING)) { cbsdf.specR = EvaluateMultipleScattering(cbsdf.specR, bsdfData, alpha, beta, thetaH, sinThetaI); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl deleted file mode 100644 index 0784eed08c2..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl +++ /dev/null @@ -1,34 +0,0 @@ -#if _USE_DENSITY_VOLUME_SCATTERING -// NOTE: Temporary package dependency. We should move all of this to somewhere in HDRP -// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimData.hlsl" -// #include "Packages/com.unity.demoteam.hair/Runtime/HairSimComputeVolumeUtility.hlsl" -#endif - -float EvaluateStrandCount(float3 L, float3 P) -{ -#if _USE_DENSITY_VOLUME_SCATTERING - // Trace against the density field in the light ray direction. -// const float3 worldPos = GetAbsolutePositionWS(P); -// const float3 worldDir = L; -// -// const int numStepsWithinCell = 10; -// const int numSteps = _VolumeCells.x * numStepsWithinCell; -// -// VolumeTraceState trace = VolumeTraceBegin(worldPos, worldDir, 0.5, numStepsWithinCell); -// -// float density = 0; -// -// for (int i = 0; i != numSteps; i++) -// { -// if (VolumeTraceStep(trace)) -// { -// density += VolumeSampleScalar(_VolumeDensity, trace.uvw); -// } -// } -// -// return saturate(density); -#else - // TODO - return 1; -#endif -} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta deleted file mode 100644 index c15cb5945f2..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairScattering.hlsl.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: c1acf922f4c8a83439af05d428b09da8 -ShaderIncludeImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index 81d6d0bbb97..aaf61b94d22 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -121,7 +121,6 @@ float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, fl // "A BSSRDF Model for Efficient Rendering of Fur with Global Illumination" (Yan et. al) // Pre-define some shorthand for the symbols. - const float n = bsdfData.fiberCount; const float3 af = hairScatteringData.averageScattering[FRONT]; const float3 ab = hairScatteringData.averageScattering[BACK]; const float3 sf = hairScatteringData.averageShift[FRONT]; @@ -140,15 +139,12 @@ float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, fl // Approximate the transmittance by assuming that all hair strands between the shading point and the light are // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). - float3 Tf = df * pow(af, n); + float3 Tf = bsdfData.forwardScatteringTransmittance; // Approximate the accumulated variance, by assuming strands all have the same average roughness and inclination. ( Eq. 7 Disney ) - float3 sigmaF = Bf2 * n; + float3 sigmaF = bsdfData.forwardScatteringVariance; - // Blend the forward transmittance and variance toward their directly lit values. (Better than binary test) - const float directFraction = 1 - saturate(n); - Tf = lerp(Tf, 1, directFraction); - sigmaF = lerp(sigmaF, 0, directFraction); + float directFraction = bsdfData.directIlluminationFraction; // Local scattering. // ------------------------------------------------------------------------------------ From 6ccfce510ecf0375430340b650f0d0f1295c62a2 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 6 Sep 2021 17:06:06 -0400 Subject: [PATCH 52/73] Fix reflection probe support and revert baked lighting modifications --- .../Runtime/Material/Hair/Hair.hlsl | 83 ++++++++----------- 1 file changed, 36 insertions(+), 47 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index b6b770f9893..664e399b13e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -408,7 +408,16 @@ PreLightData GetPreLightData(float3 V, PositionInputs posInput, inout BSDFData b // float3 iblN = normalize(lerp(bsdfData.normalWS, N, bsdfData.anisotropy)); float3 iblN = N; preLightData.iblR = reflect(-V, iblN); - preLightData.iblPerceptualRoughness *= saturate(1.2 - abs(bsdfData.anisotropy)); + + if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_KAJIYA_KAY)) + { + preLightData.iblPerceptualRoughness *= saturate(1.2 - abs(bsdfData.anisotropy)); + } + else + { + // Marschner utilizes the lowest environment mip and treats it as a directional light source to invoke the BSDF directly. + preLightData.iblPerceptualRoughness = 1.0; + } // Area light // UVs for sampling the LUTs @@ -455,16 +464,8 @@ void ModifyBakedDiffuseLighting(float3 V, PositionInputs posInput, PreLightData //builtinData.bakeDiffuseLighting += builtinData.backBakeDiffuseLighting * bsdfData.transmittance; } - if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) - { - // See: [NOTE-MARSCHNER-IBL] - builtinData.bakeDiffuseLighting *= PI; - } - else - { - // Premultiply (back) bake diffuse lighting information with diffuse pre-integration - builtinData.bakeDiffuseLighting *= preLightData.diffuseFGD * bsdfData.diffuseColor; - } + // Premultiply (back) bake diffuse lighting information with diffuse pre-integration + builtinData.bakeDiffuseLighting *= preLightData.diffuseFGD * bsdfData.diffuseColor; } //----------------------------------------------------------------------------- @@ -1025,12 +1026,6 @@ IndirectLighting EvaluateBSDF_Env( LightLoopContext lightLoopContext, if (GPUImageBasedLightingType == GPUIMAGEBASEDLIGHTINGTYPE_REFRACTION) return lighting; - if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) - { - // See: [NOTE-MARSCHNER-IBL] - return lighting; - } - float3 envLighting; float3 positionWS = posInput.positionWS; float weight = 1.0; @@ -1043,13 +1038,33 @@ IndirectLighting EvaluateBSDF_Env( LightLoopContext lightLoopContext, float4 preLD = SampleEnvWithDistanceBaseRoughness(lightLoopContext, posInput, lightData, R, preLightData.iblPerceptualRoughness, intersectionDistance); weight *= preLD.a; // Used by planar reflection to discard pixel - envLighting = preLightData.specularFGD * preLD.rgb; - if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_KAJIYA_KAY)) { + envLighting = preLightData.specularFGD * preLD.rgb; + // We tint the HDRI with the secondary lob specular as it is more representatative of indirect lighting on hair. envLighting *= bsdfData.secondarySpecularTint; } + else + { + // For now we approximate Marschner IBL as proposed by Brian Karis in "Physically Based Hair Shading in Unreal": + // With slight variant in approach, instead of sampling a spherical harmonic of the environment, sample from the lowest mip. + + // Modify the roughness to approximate a larger area light source. + bsdfData.roughnessR = saturate(bsdfData.roughnessR + 0.1); + bsdfData.roughnessTRT = saturate(bsdfData.roughnessTRT + 0.1); + + // Skip TT for the environment sample (compiler will optimizate for these two different BSDF versions) + bsdfData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT; + + // Skip the advanced multiple scattering evaluation. + bsdfData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING; + + // This sample is treated as a directional light source and we evaluate the BSDF with it directly. + CBSDF cbsdf = EvaluateBSDF(V, bsdfData.normalWS, preLightData, bsdfData); + + envLighting = cbsdf.specR * preLD.rgb * PI; + } UpdateLightingHierarchyWeights(hierarchyWeight, weight); envLighting *= weight * lightData.multiplier; @@ -1071,36 +1086,10 @@ void PostEvaluateBSDF( LightLoopContext lightLoopContext, GetScreenSpaceAmbientOcclusionMultibounce(posInput.positionSS, preLightData.NdotV, bsdfData.perceptualRoughness, bsdfData.ambientOcclusion, bsdfData.specularOcclusion, bsdfData.diffuseColor, bsdfData.fresnel0, aoFactor); ApplyAmbientOcclusionFactor(aoFactor, builtinData, lighting); - float3 indirectDiffuse = builtinData.bakeDiffuseLighting; - float3 indirectSpecular = lighting.indirect.specularReflected; - - if (HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER)) - { - // [NOTE-MARSCHNER-IBL] - // For now we approximate Marschner IBL as proposed by Brian Karis in "Physically Based Hair Shading in Unreal": - - // Modify the roughness - bsdfData.roughnessR = saturate(bsdfData.roughnessR + 0.2); - bsdfData.roughnessTRT = saturate(bsdfData.roughnessTRT + 0.2); - - // Skip TT for the environment sample (compiler will optimizate for these two different BSDF versions) - bsdfData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT; - - // Environment light falls back to Kajiya Diffuse for now. - bsdfData.materialFeatures |= MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING; - - // This sample is treated as a directional light source and we evaluate the BSDF with it directly. - CBSDF cbsdf = EvaluateBSDF(V, bsdfData.normalWS, preLightData, bsdfData); - - // Repurpose the spherical harmonic sample of the environment lighting (sampled with the modified normal). - indirectDiffuse = cbsdf.diffR * builtinData.bakeDiffuseLighting * bsdfData.diffuseColor; - indirectSpecular = cbsdf.specR * builtinData.bakeDiffuseLighting; - } - // Apply the albedo to the direct diffuse lighting (only once). The indirect (baked) // diffuse lighting has already multiply the albedo in ModifyBakedDiffuseLighting(). - lightLoopOutput.diffuseLighting = bsdfData.diffuseColor * lighting.direct.diffuse + indirectDiffuse + builtinData.emissiveColor; - lightLoopOutput.specularLighting = lighting.direct.specular + indirectSpecular; + lightLoopOutput.diffuseLighting = bsdfData.diffuseColor * lighting.direct.diffuse + builtinData.bakeDiffuseLighting + builtinData.emissiveColor; + lightLoopOutput.specularLighting = lighting.direct.specular + lighting.indirect.specularReflected; #ifdef DEBUG_DISPLAY PostEvaluateBSDFDebugDisplay(aoFactor, builtinData, lighting, bsdfData.diffuseColor, lightLoopOutput); From 84b63aa85adcf954ed5e3674e45d9958e28abe07 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 8 Sep 2021 18:59:28 -0400 Subject: [PATCH 53/73] Switch to spherical harmonic representation of strand count as input --- .../Hair/ShaderGraph/HairSubTarget.cs | 4 +- .../Hair/ShaderGraph/ShaderPass.template.hlsl | 40 +++++++++---------- .../Material/ShaderGraph/HDBlockFields.cs | 8 +--- .../Runtime/Material/Hair/Hair.cs | 12 ++---- .../Runtime/Material/Hair/Hair.cs.hlsl | 36 ++++------------- .../Runtime/Material/Hair/Hair.hlsl | 6 +-- .../HairMultipleScattering.hlsl | 38 ++++++++++++------ 7 files changed, 60 insertions(+), 84 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 538ad3db168..cd80585929a 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -111,9 +111,7 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) { // Dual Scattering Inputs (Global Scattering) // Right now these inputs are provided by the demo team hair package. - context.AddBlock(HDBlockFields.SurfaceDescription.ForwardScatteringTransmittance); - context.AddBlock(HDBlockFields.SurfaceDescription.ForwardScatteringVariance); - context.AddBlock(HDBlockFields.SurfaceDescription.DirectIlluminationFraction); + context.AddBlock(HDBlockFields.SurfaceDescription.DensitySphericalHarmonic); } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl index 5ae7b1d7017..1cc6d094eb5 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl @@ -27,27 +27,25 @@ void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDes surfaceData.specularOcclusion = 1.0; // copy across graph values, if defined - $SurfaceDescription.BaseColor: surfaceData.diffuseColor = surfaceDescription.BaseColor; - $SurfaceDescription.SpecularOcclusion: surfaceData.specularOcclusion = surfaceDescription.SpecularOcclusion; - $SurfaceDescription.Smoothness: surfaceData.perceptualSmoothness = surfaceDescription.Smoothness; - $SurfaceDescription.Occlusion: surfaceData.ambientOcclusion = surfaceDescription.Occlusion; - $SurfaceDescription.Transmittance: surfaceData.transmittance = surfaceDescription.Transmittance; - $SurfaceDescription.RimTransmissionIntensity: surfaceData.rimTransmissionIntensity = surfaceDescription.RimTransmissionIntensity; - - $SurfaceDescription.SpecularTint: surfaceData.specularTint = surfaceDescription.SpecularTint; - $SurfaceDescription.SpecularShift: surfaceData.specularShift = surfaceDescription.SpecularShift; - - $SurfaceDescription.SecondarySmoothness: surfaceData.secondaryPerceptualSmoothness = surfaceDescription.SecondarySmoothness; - $SurfaceDescription.SecondarySpecularTint: surfaceData.secondarySpecularTint = surfaceDescription.SecondarySpecularTint; - $SurfaceDescription.SecondarySpecularShift: surfaceData.secondarySpecularShift = surfaceDescription.SecondarySpecularShift; - - $SurfaceDescription.RadialSmoothness: surfaceData.perceptualRadialSmoothness = surfaceDescription.RadialSmoothness; - $SurfaceDescription.PrimaryReflectionSmoothness: surfaceData.primaryReflectionSmoothness = surfaceDescription.PrimaryReflectionSmoothness; - $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; - - $SurfaceDescription.ForwardScatteringTransmittance: surfaceData.forwardScatteringTransmittance = surfaceDescription.ForwardScatteringTransmittance; - $SurfaceDescription.ForwardScatteringVariance: surfaceData.forwardScatteringVariance = surfaceDescription.ForwardScatteringVariance; - $SurfaceDescription.DirectIlluminationFraction: surfaceData.directIlluminationFraction = surfaceDescription.DirectIlluminationFraction; + $SurfaceDescription.BaseColor: surfaceData.diffuseColor = surfaceDescription.BaseColor; + $SurfaceDescription.SpecularOcclusion: surfaceData.specularOcclusion = surfaceDescription.SpecularOcclusion; + $SurfaceDescription.Smoothness: surfaceData.perceptualSmoothness = surfaceDescription.Smoothness; + $SurfaceDescription.Occlusion: surfaceData.ambientOcclusion = surfaceDescription.Occlusion; + $SurfaceDescription.Transmittance: surfaceData.transmittance = surfaceDescription.Transmittance; + $SurfaceDescription.RimTransmissionIntensity: surfaceData.rimTransmissionIntensity = surfaceDescription.RimTransmissionIntensity; + + $SurfaceDescription.SpecularTint: surfaceData.specularTint = surfaceDescription.SpecularTint; + $SurfaceDescription.SpecularShift: surfaceData.specularShift = surfaceDescription.SpecularShift; + + $SurfaceDescription.SecondarySmoothness: surfaceData.secondaryPerceptualSmoothness = surfaceDescription.SecondarySmoothness; + $SurfaceDescription.SecondarySpecularTint: surfaceData.secondarySpecularTint = surfaceDescription.SecondarySpecularTint; + $SurfaceDescription.SecondarySpecularShift: surfaceData.secondarySpecularShift = surfaceDescription.SecondarySpecularShift; + + $SurfaceDescription.RadialSmoothness: surfaceData.perceptualRadialSmoothness = surfaceDescription.RadialSmoothness; + $SurfaceDescription.PrimaryReflectionSmoothness: surfaceData.primaryReflectionSmoothness = surfaceDescription.PrimaryReflectionSmoothness; + $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; + + $SurfaceDescription.DensitySphericalHarmonic: surfaceData.strandCountSH = surfaceDescription.DensitySphericalHarmonic; // These static material feature allow compile time optimization surfaceData.materialFeatures = 0; diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index ca169cb2b26..0a96d4fea38 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -130,12 +130,8 @@ public struct SurfaceDescription new FloatControl(0.5f), ShaderStage.Fragment); public static BlockFieldDescriptor CuticleAngle = new BlockFieldDescriptor(SurfaceDescription.name, "CuticleAngle", "Cuticle Angle", "SURFACEDESCRIPTION_CUTICLEANGLE", new FloatControl(3f), ShaderStage.Fragment); - public static BlockFieldDescriptor ForwardScatteringTransmittance = new BlockFieldDescriptor(SurfaceDescription.name, "ForwardScatteringTransmittance", "Scattering Transmittance", "SURFACEDESCRIPTION_FORWARDSCATTERINGTRANSMITTANCE", - new Vector3Control(0.3f * new Vector3(1.0f, 0.65f, 0.3f)), ShaderStage.Fragment); - public static BlockFieldDescriptor ForwardScatteringVariance = new BlockFieldDescriptor(SurfaceDescription.name, "ForwardScatteringVariance", "Scattering Variance", "SURFACEDESCRIPTION_FORWARDSCATTERINGVARIANCE", - new Vector3Control(0.3f * new Vector3(1.0f, 0.65f, 0.3f)), ShaderStage.Fragment); - public static BlockFieldDescriptor DirectIlluminationFraction = new BlockFieldDescriptor(SurfaceDescription.name, "DirectIlluminationFraction", "Direct Illumination", "SURFACEDESCRIPTION_CUTICLEANGLE", - new FloatControl(0.5f), ShaderStage.Fragment); + public static BlockFieldDescriptor DensitySphericalHarmonic = new BlockFieldDescriptor(SurfaceDescription.name, "DensitySphericalHarmonic", "Density Spherical Harmonic", "SURFACEDESCRIPTION_DENSITYSPHERICALHARMONIC", + new Vector4Control(Vector4.zero), ShaderStage.Fragment); // -------------------------------------------------- // StackLit diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 88b9610873f..561d8ab9057 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -81,12 +81,8 @@ public struct SurfaceData public float cuticleAngle; // Global Scattering - [SurfaceDataAttributes("Scattering Transmittance")] - public Vector3 forwardScatteringTransmittance; - [SurfaceDataAttributes("Scattering Variance")] - public Vector3 forwardScatteringVariance; - [SurfaceDataAttributes("Direct Illumination")] - public float directIlluminationFraction; + [SurfaceDataAttributes("Density Spherical Harmonic")] + public Vector4 strandCountSH; }; @@ -155,9 +151,7 @@ public struct BSDFData public float roughnessRadial; // Global Scattering - public Vector3 forwardScatteringTransmittance; - public Vector3 forwardScatteringVariance; - public float directIlluminationFraction; + public Vector4 strandCountSH; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 180e46a059c..f963cc7fbd0 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -32,9 +32,7 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_SHIFT (1416) #define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1417) #define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1418) -#define DEBUGVIEW_HAIR_SURFACEDATA_SCATTERING_TRANSMITTANCE (1419) -#define DEBUGVIEW_HAIR_SURFACEDATA_SCATTERING_VARIANCE (1420) -#define DEBUGVIEW_HAIR_SURFACEDATA_DIRECT_ILLUMINATION (1421) +#define DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_SH (1419) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -73,9 +71,7 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT (1481) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) -#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_SCATTERING_TRANSMITTANCE (1484) -#define DEBUGVIEW_HAIR_BSDFDATA_FORWARD_SCATTERING_VARIANCE (1485) -#define DEBUGVIEW_HAIR_BSDFDATA_DIRECT_ILLUMINATION_FRACTION (1486) +#define DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_SH (1484) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -98,9 +94,7 @@ struct SurfaceData float secondarySpecularShift; float perceptualRadialSmoothness; float cuticleAngle; - float3 forwardScatteringTransmittance; - float3 forwardScatteringVariance; - float directIlluminationFraction; + float4 strandCountSH; }; // Generated from UnityEngine.Rendering.HighDefinition.Hair+BSDFData @@ -139,9 +133,7 @@ struct BSDFData float roughnessTT; float roughnessTRT; float roughnessRadial; - float3 forwardScatteringTransmittance; - float3 forwardScatteringVariance; - float directIlluminationFraction; + float4 strandCountSH; }; // @@ -211,14 +203,8 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f case DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE: result = surfacedata.cuticleAngle.xxx; break; - case DEBUGVIEW_HAIR_SURFACEDATA_SCATTERING_TRANSMITTANCE: - result = surfacedata.forwardScatteringTransmittance; - break; - case DEBUGVIEW_HAIR_SURFACEDATA_SCATTERING_VARIANCE: - result = surfacedata.forwardScatteringVariance; - break; - case DEBUGVIEW_HAIR_SURFACEDATA_DIRECT_ILLUMINATION: - result = surfacedata.directIlluminationFraction.xxx; + case DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_SH: + result = surfacedata.strandCountSH.xyz; break; } } @@ -333,14 +319,8 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL: result = bsdfdata.roughnessRadial.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_SCATTERING_TRANSMITTANCE: - result = bsdfdata.forwardScatteringTransmittance; - break; - case DEBUGVIEW_HAIR_BSDFDATA_FORWARD_SCATTERING_VARIANCE: - result = bsdfdata.forwardScatteringVariance; - break; - case DEBUGVIEW_HAIR_BSDFDATA_DIRECT_ILLUMINATION_FRACTION: - result = bsdfdata.directIlluminationFraction.xxx; + case DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_SH: + result = bsdfdata.strandCountSH.xyz; break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 664e399b13e..3f12f199f2e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -262,9 +262,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) bsdfData.absorption = DiffuseColorToAbsorption(surfaceData.diffuseColor, bsdfData.roughnessRadial); #if _USE_ADVANCED_MULTIPLE_SCATTERING - bsdfData.forwardScatteringTransmittance = surfaceData.forwardScatteringTransmittance; - bsdfData.forwardScatteringVariance = surfaceData.forwardScatteringVariance; - bsdfData.directIlluminationFraction = surfaceData.directIlluminationFraction; + bsdfData.strandCountSH = surfaceData.strandCountSH; #endif } @@ -700,7 +698,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #if _USE_ADVANCED_MULTIPLE_SCATTERING if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_SCATTERING)) { - cbsdf.specR = EvaluateMultipleScattering(cbsdf.specR, bsdfData, alpha, beta, thetaH, sinThetaI); + cbsdf.specR = EvaluateMultipleScattering(L, cbsdf.specR, bsdfData, alpha, beta, thetaH, sinThetaI); } else #endif diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index aaf61b94d22..318acdab125 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -1,13 +1,4 @@ -// Inform the lightloop and evaluation to perform the necesarry tracing work and invoke the hair dual scattering implementation. -#define LIGHT_EVALUATES_MULTIPLE_SCATTERING - -#define STRAND_DIAMETER_MILLIMETERS 0.5 -#define STRAND_DIAMETER_METERS (STRAND_DIAMETER_MILLIMETERS * METERS_PER_MILLIMETER) - -#define DIRECT_ILLUMINATION_THRESHOLD 1 - TEXTURE3D(_PreIntegratedHairFiberScattering); - TEXTURE2D(_PreIntegratedAverageHairFiberScattering); #define FRONT 0 @@ -24,6 +15,24 @@ struct HairScatteringData float3x3 NG; }; + +#define SQRT_INV_PI 0.56418958354775628694 +#define SQRT_3_DIV_PI 0.97720502380583984317 +#define SQRT_5_DIV_PI 1.26156626101008002412 +#define SQRT_15_DIV_PI 2.18509686118415814108 + +float DecodeHairStrandCount(float3 L, float4 strandCountSH) +{ + float strandCount = 0; + + strandCount += strandCountSH.x * (0.5 * SQRT_INV_PI); + strandCount += strandCountSH.y * (0.5 * SQRT_3_DIV_PI * L.y); + strandCount += strandCountSH.z * (0.5 * SQRT_3_DIV_PI * L.z); + strandCount += strandCountSH.w * (0.5 * SQRT_3_DIV_PI * L.x); + + return 10 * strandCount; +} + float3 ScatteringSpreadGaussian(float3 x, float3 v) { return rsqrt(TWO_PI * v) * exp(-Sq(x) / (2 * v)); @@ -110,7 +119,7 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 } // void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringData lightScatteringData, inout BSDFData bsdfData) -float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, float3 beta, float thetaH, float sinThetaI) +float3 EvaluateMultipleScattering(float3 L, float3 Fs, BSDFData bsdfData, float3 alpha, float3 beta, float thetaH, float sinThetaI) { // Fetch the various preintegrated data. HairScatteringData hairScatteringData = GetHairScatteringData(bsdfData, alpha, beta, sinThetaI); @@ -121,6 +130,7 @@ float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, fl // "A BSSRDF Model for Efficient Rendering of Fur with Global Illumination" (Yan et. al) // Pre-define some shorthand for the symbols. + const float n = DecodeHairStrandCount(L, bsdfData.strandCountSH); const float3 af = hairScatteringData.averageScattering[FRONT]; const float3 ab = hairScatteringData.averageScattering[BACK]; const float3 sf = hairScatteringData.averageShift[FRONT]; @@ -139,12 +149,14 @@ float3 EvaluateMultipleScattering(float3 Fs, BSDFData bsdfData, float3 alpha, fl // Approximate the transmittance by assuming that all hair strands between the shading point and the light are // oriented the same. This is suitable for long, straighter hair ( Eq. 6 Disney ). - float3 Tf = bsdfData.forwardScatteringTransmittance; + float3 Tf = df * pow(af, n); // Approximate the accumulated variance, by assuming strands all have the same average roughness and inclination. ( Eq. 7 Disney ) - float3 sigmaF = bsdfData.forwardScatteringVariance; + float3 sigmaF = Bf2 * n; - float directFraction = bsdfData.directIlluminationFraction; + const float directFraction = 1 - saturate(n); + Tf = lerp(Tf, 1, directFraction); + sigmaF = lerp(sigmaF, 0, directFraction); // Local scattering. // ------------------------------------------------------------------------------------ From 72bf9b82358a235c843bac1ec0687d2ce0e9ea6d Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 9 Sep 2021 12:17:38 -0400 Subject: [PATCH 54/73] Rename to strand count probe --- .../Hair/ShaderGraph/HairSubTarget.cs | 2 +- .../Hair/ShaderGraph/ShaderPass.template.hlsl | 2 +- .../Material/ShaderGraph/HDBlockFields.cs | 2 +- .../Runtime/Material/Hair/Hair.cs | 6 ++-- .../Runtime/Material/Hair/Hair.cs.hlsl | 16 +++++----- .../Runtime/Material/Hair/Hair.hlsl | 2 +- .../HairMultipleScattering.hlsl | 30 +++++++++---------- 7 files changed, 29 insertions(+), 31 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index cd80585929a..f4efef2b263 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -111,7 +111,7 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) { // Dual Scattering Inputs (Global Scattering) // Right now these inputs are provided by the demo team hair package. - context.AddBlock(HDBlockFields.SurfaceDescription.DensitySphericalHarmonic); + context.AddBlock(HDBlockFields.SurfaceDescription.StrandCountProbe); } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl index 1cc6d094eb5..d256f206f30 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl @@ -45,7 +45,7 @@ void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDes $SurfaceDescription.PrimaryReflectionSmoothness: surfaceData.primaryReflectionSmoothness = surfaceDescription.PrimaryReflectionSmoothness; $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; - $SurfaceDescription.DensitySphericalHarmonic: surfaceData.strandCountSH = surfaceDescription.DensitySphericalHarmonic; + $SurfaceDescription.StrandCountProbe: surfaceData.strandCountProbe = surfaceDescription.StrandCountProbe; // These static material feature allow compile time optimization surfaceData.materialFeatures = 0; diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index 0a96d4fea38..e2f9e2e4863 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -130,7 +130,7 @@ public struct SurfaceDescription new FloatControl(0.5f), ShaderStage.Fragment); public static BlockFieldDescriptor CuticleAngle = new BlockFieldDescriptor(SurfaceDescription.name, "CuticleAngle", "Cuticle Angle", "SURFACEDESCRIPTION_CUTICLEANGLE", new FloatControl(3f), ShaderStage.Fragment); - public static BlockFieldDescriptor DensitySphericalHarmonic = new BlockFieldDescriptor(SurfaceDescription.name, "DensitySphericalHarmonic", "Density Spherical Harmonic", "SURFACEDESCRIPTION_DENSITYSPHERICALHARMONIC", + public static BlockFieldDescriptor StrandCountProbe = new BlockFieldDescriptor(SurfaceDescription.name, "StrandCountProbe", "Strand Count Probe", "SURFACEDESCRIPTION_STRANDCOUNTPROBE", new Vector4Control(Vector4.zero), ShaderStage.Fragment); // -------------------------------------------------- diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 561d8ab9057..5c5531b7dff 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -81,8 +81,8 @@ public struct SurfaceData public float cuticleAngle; // Global Scattering - [SurfaceDataAttributes("Density Spherical Harmonic")] - public Vector4 strandCountSH; + [SurfaceDataAttributes("Strand Count Probe")] + public Vector4 strandCountProbe; }; @@ -151,7 +151,7 @@ public struct BSDFData public float roughnessRadial; // Global Scattering - public Vector4 strandCountSH; + public Vector4 strandCountProbe; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index f963cc7fbd0..6789476c4cf 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -32,7 +32,7 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_SECONDARY_SPECULAR_SHIFT (1416) #define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1417) #define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1418) -#define DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_SH (1419) +#define DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_PROBE (1419) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -71,7 +71,7 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TT (1481) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) -#define DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_SH (1484) +#define DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_PROBE (1484) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -94,7 +94,7 @@ struct SurfaceData float secondarySpecularShift; float perceptualRadialSmoothness; float cuticleAngle; - float4 strandCountSH; + float4 strandCountProbe; }; // Generated from UnityEngine.Rendering.HighDefinition.Hair+BSDFData @@ -133,7 +133,7 @@ struct BSDFData float roughnessTT; float roughnessTRT; float roughnessRadial; - float4 strandCountSH; + float4 strandCountProbe; }; // @@ -203,8 +203,8 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f case DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE: result = surfacedata.cuticleAngle.xxx; break; - case DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_SH: - result = surfacedata.strandCountSH.xyz; + case DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_PROBE: + result = surfacedata.strandCountProbe.xyz; break; } } @@ -319,8 +319,8 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL: result = bsdfdata.roughnessRadial.xxx; break; - case DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_SH: - result = bsdfdata.strandCountSH.xyz; + case DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_PROBE: + result = bsdfdata.strandCountProbe.xyz; break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 3f12f199f2e..291acec00b3 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -262,7 +262,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) bsdfData.absorption = DiffuseColorToAbsorption(surfaceData.diffuseColor, bsdfData.roughnessRadial); #if _USE_ADVANCED_MULTIPLE_SCATTERING - bsdfData.strandCountSH = surfaceData.strandCountSH; + bsdfData.strandCountProbe = surfaceData.strandCountProbe; #endif } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index 318acdab125..abd3ef891c6 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -15,22 +15,21 @@ struct HairScatteringData float3x3 NG; }; +#define HALF_SQRT_INV_PI 0.5 * 0.56418958354775628694 +#define HALF_SQRT_3_DIV_PI 0.5 * 0.97720502380583984317 +#define HALF_SQRT_5_DIV_PI 0.5 * 1.26156626101008002412 +#define HALF_SQRT_15_DIV_PI 0.5 * 2.18509686118415814108 -#define SQRT_INV_PI 0.56418958354775628694 -#define SQRT_3_DIV_PI 0.97720502380583984317 -#define SQRT_5_DIV_PI 1.26156626101008002412 -#define SQRT_15_DIV_PI 2.18509686118415814108 - -float DecodeHairStrandCount(float3 L, float4 strandCountSH) +float DecodeHairStrandCount(float3 L, float4 strandCountProbe) { - float strandCount = 0; - - strandCount += strandCountSH.x * (0.5 * SQRT_INV_PI); - strandCount += strandCountSH.y * (0.5 * SQRT_3_DIV_PI * L.y); - strandCount += strandCountSH.z * (0.5 * SQRT_3_DIV_PI * L.z); - strandCount += strandCountSH.w * (0.5 * SQRT_3_DIV_PI * L.x); - - return 10 * strandCount; + float4 Ylm = float4( + HALF_SQRT_INV_PI, + HALF_SQRT_3_DIV_PI * L.y, + HALF_SQRT_3_DIV_PI * L.z, + HALF_SQRT_3_DIV_PI * L.x + ); + + return dot(strandCountProbe, Ylm); } float3 ScatteringSpreadGaussian(float3 x, float3 v) @@ -118,7 +117,6 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 return scatteringData; } -// void EvaluateMultipleScattering_Material(float3 V, float3 L, MultipleScatteringData lightScatteringData, inout BSDFData bsdfData) float3 EvaluateMultipleScattering(float3 L, float3 Fs, BSDFData bsdfData, float3 alpha, float3 beta, float thetaH, float sinThetaI) { // Fetch the various preintegrated data. @@ -130,7 +128,7 @@ float3 EvaluateMultipleScattering(float3 L, float3 Fs, BSDFData bsdfData, float3 // "A BSSRDF Model for Efficient Rendering of Fur with Global Illumination" (Yan et. al) // Pre-define some shorthand for the symbols. - const float n = DecodeHairStrandCount(L, bsdfData.strandCountSH); + const float n = DecodeHairStrandCount(L, bsdfData.strandCountProbe); const float3 af = hairScatteringData.averageScattering[FRONT]; const float3 ab = hairScatteringData.averageScattering[BACK]; const float3 sf = hairScatteringData.averageShift[FRONT]; From 18011e6af228573ae6c79bd6d727cad970425bd2 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 9 Sep 2021 12:35:53 -0400 Subject: [PATCH 55/73] Disable shadows again until reintroducing a biasing solution --- .../Runtime/Material/Hair/Hair.hlsl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 291acec00b3..4a9ee1dfcf1 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -25,6 +25,10 @@ // #define HAIR_DISPLAY_REFERENCE_BSDF // #define HAIR_DISPLAY_REFERENCE_IBL +#if _USE_ADVANCED_MULTIPLE_SCATTERING +#define LIGHT_EVALUATION_NO_SHADOWS +#endif + // Extra material feature flag we utilize to compile different versions of BSDF evaluation (for pre-integration, etc.) #define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R (1 << 16) #define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 17) From 6315cf2b113b70851bb28362d90fe5160ed2df16 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 10 Sep 2021 11:08:48 -0400 Subject: [PATCH 56/73] Resolve some bad merge artifacts impacting the PR diff --- ...r_Marschner_LightFacingNormals.shadergraph | 74 ------------------- .../AfterPPBlurs.shader.meta | 7 +- .../shader-graph-blocks/cuticle-angle.md | 5 -- .../shader-graph-blocks/smoothness-radial.md | 5 -- .../allow-radial-smoothness.md | 4 - .../advanced-options/geometry-type.md | 4 - .../RayMarchingFallbackHierarchy.cs.hlsl.meta | 4 - 7 files changed, 2 insertions(+), 101 deletions(-) diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph index b7c3175510c..254f5705881 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph @@ -229,12 +229,6 @@ "m_Id": "07c67cc90490470fb9a60030a0d5d717" }, { -<<<<<<< HEAD - "m_Id": "fffb46fc91204972998523af40633b0f" - }, - { -======= ->>>>>>> master "m_Id": "78479c8d6abe4634abf777821e1eea54" }, { @@ -926,12 +920,6 @@ "m_Id": "07c67cc90490470fb9a60030a0d5d717" }, { -<<<<<<< HEAD - "m_Id": "fffb46fc91204972998523af40633b0f" - }, - { -======= ->>>>>>> master "m_Id": "78479c8d6abe4634abf777821e1eea54" }, { @@ -943,12 +931,8 @@ "serializedMesh": { "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", "m_Guid": "" -<<<<<<< HEAD - } -======= }, "preventRotation": false ->>>>>>> master }, "m_Path": "HDRPSamples", "m_GraphPrecision": 0, @@ -2786,24 +2770,6 @@ { "m_SGVersion": 0, -<<<<<<< HEAD - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "5cf0167f642345bf87669ade69eb753f", - "m_Id": 0, - "m_DisplayName": "Primary Reflection Smoothness", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "PrimaryReflectionSmoothness", - "m_StageCapability": 2, - "m_Value": 0.0, - "m_DefaultValue": 1.0, - "m_Labels": [] -} - -{ - "m_SGVersion": 0, -======= ->>>>>>> master "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", "m_ObjectId": "5f38d464c32e2e82828769e0b7986031", "m_Group": { @@ -5338,11 +5304,7 @@ "m_ObjectId": "d30f1aa1a02847c89af2bab89f780e13", "m_MaterialType": 1, "m_ScatteringMode": 0, -<<<<<<< HEAD - "m_UseLightFacingNormal": true, -======= "m_GeometryType": 1, ->>>>>>> master "m_UseRoughenedAzimuthalScattering": true } @@ -6411,39 +6373,3 @@ "m_DefaultType": 2 } -<<<<<<< HEAD -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.BlockNode", - "m_ObjectId": "fffb46fc91204972998523af40633b0f", - "m_Group": { - "m_Id": "" - }, - "m_Name": "SurfaceDescription.PrimaryReflectionSmoothness", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": 0.0, - "y": 0.0, - "width": 0.0, - "height": 0.0 - } - }, - "m_Slots": [ - { - "m_Id": "5cf0167f642345bf87669ade69eb753f" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - }, - "m_SerializedDescriptor": "SurfaceDescription.PrimaryReflectionSmoothness" -} - -======= ->>>>>>> master diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/4x_PostProcessing/4060_CustomPostProcess/AfterPPBlurs.shader.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/4x_PostProcessing/4060_CustomPostProcess/AfterPPBlurs.shader.meta index a99d6ece5a0..7fa040a7032 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/4x_PostProcessing/4060_CustomPostProcess/AfterPPBlurs.shader.meta +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/4x_PostProcessing/4060_CustomPostProcess/AfterPPBlurs.shader.meta @@ -1,12 +1,9 @@ fileFormatVersion: 2 -<<<<<<< HEAD:com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute.meta -guid: 4a087c9d074552c48aeb85184d56312e -ComputeShaderImporter: -======= guid: 6bc6063bc09c00f4fa52ef16c2861d4c ShaderImporter: ->>>>>>> master:TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/4x_PostProcessing/4060_CustomPostProcess/AfterPPBlurs.shader.meta externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] preprocessorOverride: 0 userData: assetBundleName: diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md index a1e3831ba8b..02fb9b9fde0 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/cuticle-angle.md @@ -1,11 +1,6 @@ -<<<<<<< HEAD -**Smoothness** -The angle in degrees at which the scales on a hair fiber are tilted from the strand direction. (for human hair, typically between 2 to 3 degrees). Use this property to “shift” the highlight.. -======= **Cuticle Angle** The angle (in degrees) that the scales on a hair fiber tilt from the strand direction. For human hair, this value is usually between 2 to 3 degrees. Use this property to “shift” the highlight. ->>>>>>> master None 3 diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md index c138b390e6a..60ebeebf3bc 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/smoothness-radial.md @@ -1,11 +1,6 @@ -<<<<<<< HEAD -**Smoothness** -Controls the internal scattering of the light paths and absorption that occurs within the hair fiber. “Allow Radial Smoothness” must be enabled on the hair target to use this property. -======= **Radial Smoothness** Controls the internal scattering of light paths and the amount of light the hair fiber absorbs. To use this property, enable **Allow Radial Smoothness**. ->>>>>>> master None 0.5 diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md index 6b3672cddb5..c86a4939be0 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/allow-radial-smoothness.md @@ -1,8 +1,4 @@ **Allow Radial Smoothness** -<<<<<<< HEAD -Adds a secondary **Radial Smoothness** block to the target, controlling the internal scattering of the light paths and absorption that occurs within the fiber. Enabling this option comes at a slight performance cost to the shader; when disabled, it will fall back to an approximation of the internal scattering. -======= Adds a secondary **Radial Smoothness** block to the target that controls the internal scattering of light paths and the amount of light the hair fiber absorbs. Enabling this option makes the shader use slightly more resources on the GPU. When this property is disabled, the shader approximates internal scattering. ->>>>>>> master diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/geometry-type.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/geometry-type.md index 89de1bfb36c..b60fa978f3b 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/geometry-type.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/geometry-type.md @@ -1,10 +1,6 @@ **Geometry Type** -<<<<<<< HEAD -Indicates the type of geometry being used to represent the hair, allowing the shading model to make informed approximations. Note that switching between these two types will produce slightly differing results, due to how the underling shading model approximates the hair fiber. The options are:
• **Cards**: Representation by hair "cards"; a projection of hair fibers onto a drastically simplified proxy geometry.
• **Strands**: Representation by screen-aligned ribbons, or tubes; an explicit representation of a hair fiber. -======= Indicates what geometry is used to represent the hair, which allows the shading model to make informed approximations. The shading model approximates the hair fiber differently in each of the following representations:
• **Cards**: Hair fibers are projected onto simplified proxy geometry called "cards".
• **Strands**: Hair fibers are represented by screen-aligned ribbons or tubes. ->>>>>>> master diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta index 9b07b46f894..fc1cdedc3df 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta @@ -1,9 +1,5 @@ fileFormatVersion: 2 -<<<<<<< HEAD:com.unity.render-pipelines.high-definition/Runtime/Lighting/MultipleScattering/MultipleScattering.hlsl.meta -guid: 95643cfe1d8b9334188d39bfd9b97cfc -======= guid: 475e9dc7baf953948a861aba6bcd1a3e ->>>>>>> master:com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/RayMarchingFallbackHierarchy.cs.hlsl.meta ShaderIncludeImporter: externalObjects: {} userData: From b4ace91627d97b5284b057079ed280d7519112be Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 10 Sep 2021 11:16:01 -0400 Subject: [PATCH 57/73] More PR cleanup --- .../Runtime/Material/Hair/Hair.hlsl | 2 +- .../Runtime/Material/Lit/LitProperties.hlsl | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 4a9ee1dfcf1..5ab39fb1b45 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -526,7 +526,7 @@ void GetMarschnerAngle(float3 T, float3 V, float3 L, // Projection onto the normal plane, and since phi is the relative angle, we take the cosine in this projection. float3 LProj = L - sinThetaI * T; float3 VProj = V - sinThetaR * T; - cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj) + 0.0001); + cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj)); } CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitProperties.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitProperties.hlsl index 6136329e0e5..9eed7799baf 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitProperties.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitProperties.hlsl @@ -144,12 +144,11 @@ float4 _UVMappingMaskEmissive; float4 _InvPrimScale; // Only XY are used // Wind -// TEMP: Hide this as the generic name conflicts with hair package. -// float _InitialBend; -// float _Stiffness; -// float _Drag; -// float _ShiverDrag; -// float _ShiverDirectionality; +float _InitialBend; +float _Stiffness; +float _Drag; +float _ShiverDrag; +float _ShiverDirectionality; // Specular AA float _EnableGeometricSpecularAA; From 354a76519fa5fc06b153291c5244967b0ea6bbd8 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 10 Sep 2021 12:28:22 -0400 Subject: [PATCH 58/73] Update test images due to the environment lighting fix --- .../Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png | 4 ++-- .../Linear/OSXEditor/Metal/None/1401_HairGraph.png | 4 ++-- .../Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png | 4 ++-- .../Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png | 4 ++-- .../Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png index c060075f7ca..1c0d926ec8d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8370429c82adb1486c4d27c0b12199b2f93c40a7cf574c6c53e64b53e8ba40ad -size 118276 +oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 +size 119719 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png index a20fc8ba0f2..1c0d926ec8d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee9bb54d67253543343df89825fb1f3b0bb3e78a0d0abd4c988502c742068795 -size 120267 +oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 +size 119719 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png index d113acab98d..1c0d926ec8d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 -size 119958 +oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 +size 119719 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png index d113acab98d..1c0d926ec8d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f281417a121b584bb386bc78ae28788e9493b86d95ac170a1c940bf1b546d28 -size 119958 +oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 +size 119719 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png index c060075f7ca..1c0d926ec8d 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8370429c82adb1486c4d27c0b12199b2f93c40a7cf574c6c53e64b53e8ba40ad -size 118276 +oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 +size 119719 From cfe68e347b0d1aea61a701e691d44be4a8374487 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 10 Sep 2021 14:55:19 -0400 Subject: [PATCH 59/73] Add multiple scattering to the test and update images --- .../Scenes/1x_Materials/1401_HairGraph.unity | 336 +- .../1401_HairGraph/HairTestSettings.asset | 115 +- ...irTest_Marschner_Opaque_DualScattering.mat | 341 + ...t_Marschner_Opaque_DualScattering.mat.meta | 8 + .../1401_HairGraph/Shadergraph/Kajiya.meta | 8 + .../{ => Kajiya}/SG_Hair.shadergraph | 0 .../{ => Kajiya}/SG_Hair.shadergraph.meta | 0 .../SG_Hair_LightFacingNormals.shadergraph | 0 ...G_Hair_LightFacingNormals.shadergraph.meta | 0 .../SG_Hair_NoShadowThreshold.shadergraph | 0 ...SG_Hair_NoShadowThreshold.shadergraph.meta | 0 .../1401_HairGraph/Shadergraph/Marschner.meta | 8 + .../SG_Hair_Marschner.shadergraph | 0 .../SG_Hair_Marschner.shadergraph.meta | 0 ...r_Marschner_LightFacingNormals.shadergraph | 0 ...schner_LightFacingNormals.shadergraph.meta | 0 ...ir_Marschner_NoShadowThreshold.shadergraph | 0 ...rschner_NoShadowThreshold.shadergraph.meta | 0 .../Shadergraph/MarschnerDualScattering.meta | 8 + .../SG_Hair_Marschner_DS.shadergraph | 6441 +++++++++++++++++ .../SG_Hair_Marschner_DS.shadergraph.meta | 10 + .../Vulkan/None/1401_HairGraph.png | 4 +- .../OSXEditor/Metal/None/1401_HairGraph.png | 4 +- .../Direct3D11/None/1401_HairGraph.png | 4 +- .../Direct3D12/None/1401_HairGraph.png | 4 +- .../Vulkan/None/1401_HairGraph.png | 4 +- 26 files changed, 7258 insertions(+), 37 deletions(-) create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque_DualScattering.mat create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque_DualScattering.mat.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya.meta rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Kajiya}/SG_Hair.shadergraph (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Kajiya}/SG_Hair.shadergraph.meta (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Kajiya}/SG_Hair_LightFacingNormals.shadergraph (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Kajiya}/SG_Hair_LightFacingNormals.shadergraph.meta (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Kajiya}/SG_Hair_NoShadowThreshold.shadergraph (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Kajiya}/SG_Hair_NoShadowThreshold.shadergraph.meta (100%) create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner.meta rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Marschner}/SG_Hair_Marschner.shadergraph (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Marschner}/SG_Hair_Marschner.shadergraph.meta (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Marschner}/SG_Hair_Marschner_LightFacingNormals.shadergraph (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Marschner}/SG_Hair_Marschner_LightFacingNormals.shadergraph.meta (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Marschner}/SG_Hair_Marschner_NoShadowThreshold.shadergraph (100%) rename TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/{ => Marschner}/SG_Hair_Marschner_NoShadowThreshold.shadergraph.meta (100%) create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering.meta create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph create mode 100644 TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph.meta diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph.unity index 9f1610e3222..92033e1994d 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph.unity +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.09726915, g: 0.101576716, b: 0.1044133, a: 1} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -252,6 +252,7 @@ Transform: m_Children: - {fileID: 718955200} - {fileID: 1114387487} + - {fileID: 1817108408} m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1047,6 +1048,103 @@ Transform: type: 3} m_PrefabInstance: {fileID: 811747106} m_PrefabAsset: {fileID: 0} +--- !u!1 &909460426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 909460427} + - component: {fileID: 909460430} + - component: {fileID: 909460429} + - component: {fileID: 909460428} + m_Layer: 0 + m_Name: Sphere Hair (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &909460427 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909460426} + m_LocalRotation: {x: 0.013634171, y: 0.15583922, z: 0.08608275, w: 0.9839299} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.047619, y: 1.0476191, z: 1.0476191} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2038554210} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 18, z: 10} +--- !u!135 &909460428 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909460426} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &909460429 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909460426} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 1 + m_Materials: + - {fileID: 2100000, guid: 9432b3fc3aa4bed4ea4de1bf10942bc1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &909460430 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909460426} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &1038286093 PrefabInstance: m_ObjectHideFlags: 0 @@ -2018,6 +2116,38 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1391346168} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1396667890 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1396667891} + m_Layer: 0 + m_Name: MarschnerDualScattering + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1396667891 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396667890} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.0602808, y: 0.99553204, z: -0.98959327} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2038554210} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1571147377 PrefabInstance: m_ObjectHideFlags: 0 @@ -2130,15 +2260,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalPosition.x - value: 3.31 + value: 3.564 objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalPosition.y - value: 6.94 + value: 7.402 objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalPosition.z - value: -0.56 + value: -1.764 objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalRotation.w @@ -2220,7 +2350,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} m_Name: m_EditorClassIdentifier: - isGlobal: 1 + m_IsGlobal: 1 priority: 0 blendDistance: 0 weight: 1 @@ -2255,6 +2385,7 @@ MonoBehaviour: m_Profile: {fileID: 11400000, guid: c5cc9b32f8c21194d93b79f9b7ed8ad5, type: 2} m_StaticLightingSkyUniqueID: 1 m_StaticLightingCloudsUniqueID: 0 + m_StaticLightingVolumetricClouds: 0 --- !u!1 &1718021475 GameObject: m_ObjectHideFlags: 0 @@ -2486,6 +2617,103 @@ Transform: type: 3} m_PrefabInstance: {fileID: 1758184890} m_PrefabAsset: {fileID: 0} +--- !u!1 &1817108407 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1817108408} + - component: {fileID: 1817108410} + - component: {fileID: 1817108409} + m_Layer: 0 + m_Name: Marschner Dual Scattering + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1817108408 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817108407} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 1.35, y: -0.081, z: -2.85} + m_LocalScale: {x: 0.21546872, y: 0.21546872, z: 0.21546872} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 367260126} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!102 &1817108409 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817108407} + m_Text: " Marschner \n(Multiple Scatter)" + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 0 + m_TabSize: 4 + m_FontSize: 0 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: 74a5091d8707f334b9a5c31ef71a64ba, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4278190080 +--- !u!23 &1817108410 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817108407} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 74a5091d8707f334b9a5c31ef71a64ba, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1001 &1907090814 PrefabInstance: m_ObjectHideFlags: 0 @@ -2815,6 +3043,104 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1963828115} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2038554209 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2038554210} + - component: {fileID: 2038554213} + - component: {fileID: 2038554212} + - component: {fileID: 2038554211} + m_Layer: 0 + m_Name: Sphere Hair (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2038554210 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038554209} + m_LocalRotation: {x: -0, y: -0, z: 0.01817496, w: 0.99983484} + m_LocalPosition: {x: 3.25, y: -0.17205596, z: -3.14} + m_LocalScale: {x: 0.8419015, y: 0.8419015, z: 0.8419014} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 909460427} + m_Father: {fileID: 1396667891} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 2.0830002} +--- !u!135 &2038554211 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038554209} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2038554212 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038554209} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9432b3fc3aa4bed4ea4de1bf10942bc1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2038554213 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038554209} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &2079958783 GameObject: m_ObjectHideFlags: 0 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTestSettings.asset b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTestSettings.asset index 9828d589e0b..bed29edceb9 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTestSettings.asset +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTestSettings.asset @@ -9,7 +9,6 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_GeneratorAsset: {fileID: 0} m_Script: {fileID: 11500000, guid: 7ddcec8a8eb2d684d833ac8f5d26aebd, type: 3} m_Name: HDShadowSettings m_EditorClassIdentifier: @@ -17,43 +16,33 @@ MonoBehaviour: maxShadowDistance: m_OverrideState: 1 m_Value: 30 - min: 0 + directionalTransmissionMultiplier: + m_OverrideState: 0 + m_Value: 1 cascadeShadowSplitCount: m_OverrideState: 0 m_Value: 4 - min: 1 - max: 4 cascadeShadowSplit0: m_OverrideState: 0 m_Value: 0.05 - min: 0 - max: 1 cascadeShadowSplit1: m_OverrideState: 0 m_Value: 0.15 - min: 0 - max: 1 cascadeShadowSplit2: m_OverrideState: 0 m_Value: 0.3 - min: 0 - max: 1 cascadeShadowBorder0: m_OverrideState: 0 m_Value: 0 - min: 0 cascadeShadowBorder1: m_OverrideState: 0 m_Value: 0 - min: 0 cascadeShadowBorder2: m_OverrideState: 0 m_Value: 0 - min: 0 cascadeShadowBorder3: m_OverrideState: 0 m_Value: 0 - min: 0 --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 @@ -63,7 +52,6 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_GeneratorAsset: {fileID: 0} m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} m_Name: HairTestSettings m_EditorClassIdentifier: @@ -80,7 +68,6 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_GeneratorAsset: {fileID: 0} m_Script: {fileID: 11500000, guid: 0d7593b3a9277ac4696b20006c21dde2, type: 3} m_Name: VisualEnvironment m_EditorClassIdentifier: @@ -88,6 +75,18 @@ MonoBehaviour: skyType: m_OverrideState: 1 m_Value: 1 + cloudType: + m_OverrideState: 0 + m_Value: 0 + skyAmbientMode: + m_OverrideState: 0 + m_Value: 1 + windOrientation: + m_OverrideState: 0 + m_Value: 0 + windSpeed: + m_OverrideState: 0 + m_Value: 100 fogType: m_OverrideState: 1 m_Value: 0 @@ -100,7 +99,6 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_GeneratorAsset: {fileID: 0} m_Script: {fileID: 11500000, guid: 59b6606ef2548734bb6d11b9d160bc7e, type: 3} m_Name: HDRISky m_EditorClassIdentifier: @@ -108,8 +106,6 @@ MonoBehaviour: rotation: m_OverrideState: 0 m_Value: 0 - min: 0 - max: 360 skyIntensityMode: m_OverrideState: 0 m_Value: 0 @@ -119,11 +115,12 @@ MonoBehaviour: multiplier: m_OverrideState: 0 m_Value: 1 - min: 0 upperHemisphereLuxValue: m_OverrideState: 0 m_Value: 2.4222 - min: 0 + upperHemisphereLuxColor: + m_OverrideState: 0 + m_Value: {x: 0, y: 0, z: 0} desiredLuxValue: m_OverrideState: 0 m_Value: 20000 @@ -133,10 +130,84 @@ MonoBehaviour: updatePeriod: m_OverrideState: 0 m_Value: 0 - min: 0 includeSunInBaking: m_OverrideState: 0 m_Value: 0 hdriSky: m_OverrideState: 1 m_Value: {fileID: 8900000, guid: 5fb993a599e7e9b4b825e1a28e6d2c07, type: 3} + distortionMode: + m_OverrideState: 0 + m_Value: 0 + flowmap: + m_OverrideState: 0 + m_Value: {fileID: 0} + upperHemisphereOnly: + m_OverrideState: 0 + m_Value: 1 + scrollOrientation: + m_OverrideState: 0 + m_Value: + mode: 1 + customValue: 0 + additiveValue: 0 + multiplyValue: 1 + scrollSpeed: + m_OverrideState: 0 + m_Value: + mode: 1 + customValue: 100 + additiveValue: 0 + multiplyValue: 1 + enableBackplate: + m_OverrideState: 0 + m_Value: 0 + backplateType: + m_OverrideState: 0 + m_Value: 0 + groundLevel: + m_OverrideState: 0 + m_Value: 0 + scale: + m_OverrideState: 0 + m_Value: {x: 32, y: 32} + projectionDistance: + m_OverrideState: 0 + m_Value: 16 + plateRotation: + m_OverrideState: 0 + m_Value: 0 + plateTexRotation: + m_OverrideState: 0 + m_Value: 0 + plateTexOffset: + m_OverrideState: 0 + m_Value: {x: 0, y: 0} + blendAmount: + m_OverrideState: 0 + m_Value: 0 + shadowTint: + m_OverrideState: 0 + m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1} + pointLightShadow: + m_OverrideState: 0 + m_Value: 0 + dirLightShadow: + m_OverrideState: 0 + m_Value: 0 + rectLightShadow: + m_OverrideState: 0 + m_Value: 0 + m_SkyVersion: 1 + enableDistortion: + m_OverrideState: 0 + m_Value: 0 + procedural: + m_OverrideState: 0 + m_Value: 1 + scrollDirection: + m_OverrideState: 0 + m_Value: 0 + m_ObsoleteScrollSpeed: + m_OverrideState: 0 + m_Value: 1 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque_DualScattering.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque_DualScattering.mat new file mode 100644 index 00000000000..b48035366b0 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque_DualScattering.mat @@ -0,0 +1,341 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1535412643302782085 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HairTest_Marschner_Opaque_DualScattering + m_Shader: {fileID: -6465566751694194690, guid: d989c91312dc521438ae166f9d8a24f6, + type: 3} + m_ShaderKeywords: _ALPHATEST_ON _BLENDMODE_ALPHA _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 2475 + stringTagMap: + MotionVector: User + RenderType: TransparentCutout + disabledShaderPasses: + - MOTIONVECTORS + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - Texture2D_189C8E90: + m_Texture: {fileID: 2800000, guid: e0d86873105ce774d8fa34942fc1e8fc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_6C0DA6CC: + m_Texture: {fileID: 2800000, guid: 66171ce41a2b74140b03d4b2781a85bf, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_9D58E1D1: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Ambient_Occlusion_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Diffuse_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DistortionVectorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: f71a4355f2f772b4b99ed08b8d564c3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + m_Texture: {fileID: 2800000, guid: cbd88c0d1d791c044950d2a6b99b7db5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: f75fdfd95ada34844997dda9b91794b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Smoothness_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Specular_Shift_Texture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - AlphaCutoff: 0.653 + - Boolean_F987B642: 0 + - Vector1_7D9AC3D3: 0.36 + - Vector1_901E5FC2: 1 + - _AORemapMax: 1 + - _AORemapMin: 0 + - _AO_Max: 1 + - _AO_Min: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 1 + - _AlphaCutoffPostpass: 0.25 + - _AlphaCutoffPrepass: 0.96 + - _AlphaCutoffShadows: 0.75 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _ConservativeDepthOffsetEnable: 0 + - _CullMode: 0 + - _CullModeForward: 0 + - _Cuticle_Tilt: 0.125 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileID: 4 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DistortionBlendMode: 0 + - _DistortionBlurBlendMode: 0 + - _DistortionBlurDstBlend: 0 + - _DistortionBlurRemapMax: 1 + - _DistortionBlurRemapMin: 0 + - _DistortionBlurScale: 1 + - _DistortionBlurSrcBlend: 0 + - _DistortionDepthTest: 1 + - _DistortionDstBlend: 0 + - _DistortionEnable: 0 + - _DistortionScale: 1 + - _DistortionSrcBlend: 0 + - _DistortionVectorBias: -1 + - _DistortionVectorScale: 2 + - _DoubleSidedEnable: 1 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 2 + - _Drag: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EnableBlendModePreserveSpecularLighting: 0 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnableMotionVectorForVertexAnimation: 0 + - _EnableSpecularOcclusion: 0 + - _EnableWind: 0 + - _EnergyConservingSpecularColor: 1 + - _HdrpVersion: 2 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InitialBend: 1 + - _InvTilingScale: 1 + - _Ior: 1 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _NormalMapSpace: 0 + - _NormalScale: 0.3 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _PreRefractionPass: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _RenderQueueType: 1 + - _RequireSplitLighting: 0 + - _RimTransmissionIntensity: 0 + - _SSRefractionProjectionModel: 0 + - _SecondarySpecularMultiplier: 1 + - _SecondarySpecularShift: 0 + - _ShiverDirectionality: 0.5 + - _ShiverDrag: 0.2 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 0.89 + - _SmoothnessRemapMin: 0.547 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularMultiplier: 0.348 + - _SpecularShift: 0.125 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _Stiffness: 1 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _ThicknessMultiplier: 1 + - _ThicknessRemapMax: 0.001 + - _ThicknessRemapMin: 0 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 1 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 1 + - _TransparentDepthPrepassEnable: 1 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 1 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseDetailMap: 0 + - _UseShadowThreshold: 1 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 3 + - _ZTestModeDistortion: 8 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - Color_6FC6C3A4: {r: 0.29999998, g: 0.19499996, b: 0.089999996, a: 1} + - _BaseColor: {r: 0.5, g: 0.34403664, b: 0.24770638, a: 1} + - _Base_UV_Mask: {r: 1, g: 0, b: 0, a: 0} + - _Base_UV_Tiling_and_Offset: {r: 1, g: 1, b: 0, a: 0} + - _Color: {r: 0.5, g: 0.3440366, b: 0.24770635, a: 1} + - _Diffuse_Color: {r: 0.643, g: 0.47758824, b: 0.35943696, a: 1} + - _DoubleSidedConstants: {r: 1, g: 1, b: 1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 0.8679245, g: 0.559068, b: 0.2251691, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseMask: {r: 1, g: 0, b: 0, a: 0} + - _uvBaseST: {r: 0.5, g: 0.5, b: 0, a: 0} + - _uvDetailMask: {r: 1, g: 0, b: 0, a: 0} + - _uvDetailST: {r: 1, g: 1, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque_DualScattering.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque_DualScattering.mat.meta new file mode 100644 index 00000000000..268590403ca --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/HairTest_Marschner_Opaque_DualScattering.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9432b3fc3aa4bed4ea4de1bf10942bc1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya.meta new file mode 100644 index 00000000000..1fca19a41e4 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98559b9f27e1b5c45bc5fcb8f3ace18f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair.shadergraph similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair.shadergraph rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair.shadergraph diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair.shadergraph.meta similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair.shadergraph.meta rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair.shadergraph.meta diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_LightFacingNormals.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair_LightFacingNormals.shadergraph similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_LightFacingNormals.shadergraph rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair_LightFacingNormals.shadergraph diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_LightFacingNormals.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair_LightFacingNormals.shadergraph.meta similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_LightFacingNormals.shadergraph.meta rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair_LightFacingNormals.shadergraph.meta diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_NoShadowThreshold.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair_NoShadowThreshold.shadergraph similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_NoShadowThreshold.shadergraph rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair_NoShadowThreshold.shadergraph diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_NoShadowThreshold.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair_NoShadowThreshold.shadergraph.meta similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_NoShadowThreshold.shadergraph.meta rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Kajiya/SG_Hair_NoShadowThreshold.shadergraph.meta diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner.meta new file mode 100644 index 00000000000..d3349bb245c --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f7dab7619e1c6847a394cd7b7824036 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner.shadergraph similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner.shadergraph diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner.shadergraph.meta similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner.shadergraph.meta rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner.shadergraph.meta diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner_LightFacingNormals.shadergraph similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner_LightFacingNormals.shadergraph diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner_LightFacingNormals.shadergraph.meta similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_LightFacingNormals.shadergraph.meta rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner_LightFacingNormals.shadergraph.meta diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner_NoShadowThreshold.shadergraph similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner_NoShadowThreshold.shadergraph diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner_NoShadowThreshold.shadergraph.meta similarity index 100% rename from TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/SG_Hair_Marschner_NoShadowThreshold.shadergraph.meta rename to TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/Marschner/SG_Hair_Marschner_NoShadowThreshold.shadergraph.meta diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering.meta new file mode 100644 index 00000000000..5c8321bd811 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df64aabb13b025c42b1cc49830a0cb1e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph new file mode 100644 index 00000000000..7b1e76bfb4d --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph @@ -0,0 +1,6441 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "ba4b5529a59a475aa65637b55f84d1ed", + "m_Properties": [ + { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + }, + { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + }, + { + "m_Id": "427966ec1fded689943d180f391e68c5" + }, + { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + }, + { + "m_Id": "d77184bb68602a87a21066eb88527731" + }, + { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + }, + { + "m_Id": "179f8f51376c088aaf94836698ac8220" + }, + { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + }, + { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + }, + { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + }, + { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + }, + { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + }, + { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + }, + { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + }, + { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + }, + { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + }, + { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + }, + { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + }, + { + "m_Id": "226d0088ad363282a5742f217833b48e" + }, + { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f55453ccdc2c4306a5f9d39ff0237186" + } + ], + "m_Nodes": [ + { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" + }, + { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + { + "m_Id": "33d526f7424ba48298f8f47efe601b4b" + }, + { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + { + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" + }, + { + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" + }, + { + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" + }, + { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + { + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" + }, + { + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" + }, + { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + { + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" + }, + { + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" + }, + { + "m_Id": "6628192f4725228184a28da67814b191" + }, + { + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" + }, + { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + { + "m_Id": "99a201ca0a64c082ad04b50f33589bab" + }, + { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + { + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" + }, + { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + { + "m_Id": "7b26f104187a8987a649a27bf1682e3e" + }, + { + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" + }, + { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + { + "m_Id": "533b9b9d2ff0a0898705d5962522997f" + }, + { + "m_Id": "dcb284e02529428e984891e5fb1ad226" + }, + { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + { + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" + }, + { + "m_Id": "43a41f7a42a9b487af906c32995abadc" + }, + { + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" + }, + { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + { + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" + }, + { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + { + "m_Id": "343bdea30d074ae8ada2b5753fb67baf" + }, + { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + { + "m_Id": "4d889de587fa45e9a282082e13cc8970" + }, + { + "m_Id": "2c16e07788c1416d80f89c2611f8b98a" + }, + { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + { + "m_Id": "f9469208c3a047c8ba590663d472be9d" + }, + { + "m_Id": "9dc2bfa03db44301ad94343ad1abd06e" + }, + { + "m_Id": "07c67cc90490470fb9a60030a0d5d717" + }, + { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + { + "m_Id": "edfdef5f3ad944ae99de6eb746229ae6" + }, + { + "m_Id": "48e77cac8746488daad50e482d2c3de9" + }, + { + "m_Id": "88754b8e9dad4e1ea0eda24699d31a17" + } + ], + "m_GroupDatas": [ + { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1c9bb297962f0c82a0d1a739cab371e6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "33d526f7424ba48298f8f47efe601b4b" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3b96fbbc5e6ed68198a59a2a3d43ab52" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "43a41f7a42a9b487af906c32995abadc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1533382448 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "533b9b9d2ff0a0898705d5962522997f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5b490fbd5e29ed89aa6a4d83b25a2009" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4be44d4bc359298a9985c1d86006f8fb" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7135e81ebc9cca808d6c1bf0f4757a19" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0858398b0628498aa76b94db0641ebd0" + }, + "m_SlotId": -1319696916 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "77b24a17f4d9ce888d0d645c8a3a18e5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f38d464c32e2e82828769e0b7986031" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7b26f104187a8987a649a27bf1682e3e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7ecf4ec3d845eb89a2ea57b521ca8faa" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8b24fb7984fd1e86b1571bb5bf90faa1" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6628192f4725228184a28da67814b191" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "90853359b4e7bb8b9312b5f784d3b4be" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8ad836f22bf91488a01151f840cf8766" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "99a201ca0a64c082ad04b50f33589bab" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9a474beedf33ee8ba0abd17e767ba739" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9b824dc1cd2c7088b802e3b5c40e21fb" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a23e238449fe1f8083c8cb7190bf3f13" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "aea42b6e88350189aaf5b1883905f4e5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "686bbf54cd40c1829f1e042219490c16" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b1dbc96cf13ee28d9d722f739bd0e349" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9cdb0052e240a38a8da7f0afdfd664c0" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "820ef484d4e55783849213f3ffc6550c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d4834395e858ef8aa81f53d5ccdd7ce7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "647309fcbf93808f8e9587e1bb5d3017" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d6204936eb0c778ba79957469938ffce" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2b67d3cfa8ede686a5a5891675840aca" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc71dafd015c0b8fbd4cf8eda6b04650" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dc9305a3fb26de8581d475dd3a59fbe8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b41d947f3439b385af4b28c78a8273d6" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dcb284e02529428e984891e5fb1ad226" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b27abc57c8e84886aaee2448a139a9e9" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e7fea26afb72bc83a7767f135cc064aa" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "edfdef5f3ad944ae99de6eb746229ae6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9251a286f0e1c983a73eb912051c4291" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 110.0, + "y": -169.0 + }, + "m_Blocks": [ + { + "m_Id": "343bdea30d074ae8ada2b5753fb67baf" + }, + { + "m_Id": "f9469208c3a047c8ba590663d472be9d" + }, + { + "m_Id": "9dc2bfa03db44301ad94343ad1abd06e" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 110.0, + "y": 31.0 + }, + "m_Blocks": [ + { + "m_Id": "e017d9a832a643c5b827aa92818f0161" + }, + { + "m_Id": "175f0193daaf4506ae7a09423b09b819" + }, + { + "m_Id": "4d889de587fa45e9a282082e13cc8970" + }, + { + "m_Id": "2c16e07788c1416d80f89c2611f8b98a" + }, + { + "m_Id": "9c145c8195e14fac89847d119fefa84b" + }, + { + "m_Id": "cafab10338384e2c8f9abf0be8484db9" + }, + { + "m_Id": "1f7eca786bed4788ac8341455af633d5" + }, + { + "m_Id": "3789ef8d67264f3db1f22b522f1c36a5" + }, + { + "m_Id": "2dd33c5afb374d9aa3f15b58321e0f2f" + }, + { + "m_Id": "14ed3d9577a24d448cf12554150ecccb" + }, + { + "m_Id": "ec7608b7aa994ec788ccc5ee3e343092" + }, + { + "m_Id": "07c67cc90490470fb9a60030a0d5d717" + }, + { + "m_Id": "78479c8d6abe4634abf777821e1eea54" + }, + { + "m_Id": "48e77cac8746488daad50e482d2c3de9" + }, + { + "m_Id": "88754b8e9dad4e1ea0eda24699d31a17" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "HDRPSamples", + "m_GraphPrecision": 0, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "8f325a30dd2a4515af1f028912b6f70e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "005fd5aaba054304adbf564a8279747e", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "0280396e0fca118e8bd811b51a52d939", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "0308ee630bd24310b1f66165863140fd", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "05327e12b59bd185886f0d655de86628", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "07c67cc90490470fb9a60030a0d5d717", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 128.99998474121095, + "y": 599.0000610351563, + "width": 199.99998474121095, + "height": 41.0 + } + }, + "m_Slots": [ + { + "m_Id": "8d4c7998d3ea469188313f32fd5bcd33" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "0858398b0628498aa76b94db0641ebd0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SGR_uvCombine", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2058.000244140625, + "y": 149.00003051757813, + "width": 189.0001220703125, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "a6d2f8d93c070f8ea36456eeba1dbe79" + }, + { + "m_Id": "b091997e5dd0358f90a108ac01e23b34" + }, + { + "m_Id": "ed9c054016be518faf9cc2372fbd6915" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": 11400000,\n \"guid\": \"e485c02b07de92f4299e12a405a846f1\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "7eaf38f1-8035-488d-80b2-5a35598d3bac", + "2b164c69-e541-49c1-ab61-7f7c65de9d44" + ], + "m_PropertyIds": [ + -1533382448, + -1319696916 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "090e2558a73d4577ad326b8c7c48b642", + "m_Id": 0, + "m_DisplayName": "Radial Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "RadialSmoothness", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "09de172d67c56088ab0c01bd8c7eac3f", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "0ac5bf5847aabd8cb2d384d6666fe60b", + "m_Guid": { + "m_GuidSerialized": "4005f9a0-1e7b-4422-9591-2d7900dc14a5" + }, + "m_Name": "Smoothness Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_A659E432", + "m_OverrideReferenceName": "_SmoothnessRemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "0dbc29ef6ffa7d8cb6ab2776226e7718", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "1256f23312cc46b59365214f65948a61", + "m_Title": "Ambient Occlusion", + "m_Position": { + "x": -1242.000244140625, + "y": -347.0000305175781 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1425366fc04241fb9f3b78af2049ee13", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "14b012f13c19a78cadd30a711522abc0", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "14db0ed0236c41738ba41db83871b1e8", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Prepass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPrepass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "14ed3d9577a24d448cf12554150ecccb", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPostpass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "519b5dc3ba5e47139dc635b812781052" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPostpass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "15f1cda72ce66782bb5877573ceab864", + "m_Guid": { + "m_GuidSerialized": "f713fd50-191c-4103-85a2-925a51d5dd5b" + }, + "m_Name": "Normal Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_272FF350", + "m_OverrideReferenceName": "_NormalMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "175f0193daaf4506ae7a09423b09b819", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "0308ee630bd24310b1f66165863140fd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "176531b3e19b8686b38e0c9259252aee", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "179f8f51376c088aaf94836698ac8220", + "m_Guid": { + "m_GuidSerialized": "d5937b9c-e726-47e2-9096-c64bd42839d2" + }, + "m_Name": "Ambient Occlusion Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_E48D0DF2", + "m_OverrideReferenceName": "_MaskMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "1960479b41340083b65285a79683a509", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1aa04e00d5958c8e838a82ba3f1072fd", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "1c9bb297962f0c82a0d1a739cab371e6", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1025.0, + "y": 64.00000762939453, + "width": 161.99993896484376, + "height": 33.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "e9d9af9c13491486b6a00c4fbd1c39b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1f7eca786bed4788ac8341455af633d5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ab0dfa88aaaf47708507acf54125f8b3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "226d0088ad363282a5742f217833b48e", + "m_Guid": { + "m_GuidSerialized": "8cdbfb43-feb7-4816-9cea-ca9952679ecb" + }, + "m_Name": "Base UV Tiling and Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_84AAB3AE", + "m_OverrideReferenceName": "_uvBaseST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "236d9b8d136c718d9974f605510b28b6", + "m_Id": 0, + "m_DisplayName": "Normal Map Strength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "236f73c9e460cb8394c6c7f693633923", + "m_Id": 0, + "m_DisplayName": "Normal Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2371eb645bdf0789be466e3f4c8c8602", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "240dbbe9e073ba8fbbc7866bfe19006f", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "2620a8e4de7c188e9a1a352425899905", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "2b67d3cfa8ede686a5a5891675840aca", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1165.9998779296875, + "y": -442.0000305175781, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "2620a8e4de7c188e9a1a352425899905" + }, + { + "m_Id": "eb64f51ceae0e985b9a2d518888e7e38" + }, + { + "m_Id": "bdb36d10e8f5d9868a902112523885d3" + }, + { + "m_Id": "a4d19347cca2d08dbd28cee652fa9662" + }, + { + "m_Id": "3dd1686839cd4c8ea23a9e210822ed45" + }, + { + "m_Id": "b57e501619804b89b55a01c6914f1061" + }, + { + "m_Id": "7911580134b27285aea5011e176efc55" + }, + { + "m_Id": "92504468ba4f378f834ad4b5f33fbaf9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "2b9e6e492bd61c8a85beb3c304421742", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2c16e07788c1416d80f89c2611f8b98a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.HairStrandDirection", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "af12385c82644c1bb54ee97c98449804" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.HairStrandDirection" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2dd33c5afb374d9aa3f15b58321e0f2f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdDepthPrepass", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "14db0ed0236c41738ba41db83871b1e8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdDepthPrepass" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2e197e754975c58a94b53041782ead99", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Shadows", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "2ea9c83800e54883a65a85d0be4f537f", + "m_Guid": { + "m_GuidSerialized": "e4dc662e-3747-4770-96eb-43812b6540e3" + }, + "m_Name": "Smoothness Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4F7BB2EA", + "m_OverrideReferenceName": "_SmoothnessRemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "2f2dda15cd64628695a5e429bd783b18", + "m_Id": 0, + "m_DisplayName": "Smoothness Map (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "33a224fa0e0e4db49ddfa856369c0a0e", + "m_Id": 0, + "m_DisplayName": "Strand Count Probe", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "StrandCountProbe", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 1.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "33d526f7424ba48298f8f47efe601b4b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -86.00001525878906, + "y": 365.0000305175781, + "width": 141.00001525878907, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "91e02132de64ba8188337710a7ffc3e4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "427966ec1fded689943d180f391e68c5" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "33ff9e47cf9b4883af237446e1274285", + "m_Title": "Diffuse", + "m_Position": { + "x": -1457.0001220703125, + "y": -703.0000610351563 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "340b1f3554a53881b136398deed4da52", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "343bdea30d074ae8ada2b5753fb67baf", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e45e0dd4a288445d990250bd6c1d46b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "348fecfb4fb3a38db2bd198743f33083", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "354c780e278883888de190759d0b677c", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "3789ef8d67264f3db1f22b522f1c36a5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cad70c769fa144abbc8aece598c97044" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "3956714c58cb9a88bf186adf5315d9e0", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "3b96fbbc5e6ed68198a59a2a3d43ab52", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1616.9998779296875, + "y": -390.0000305175781, + "width": 236.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "ae77e3144b96ce8fb1897a571d778e92" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "3c2bc1a9a5054043b94470701f8ac5e1", + "m_MaterialNeedsUpdateHash": 0, + "m_SurfaceType": 0, + "m_RenderingPass": 1, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 0, + "m_DOTSInstancing": false, + "m_CustomVelocity": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3d239afea657458f89d6c65107f2aa06", + "m_Id": 0, + "m_DisplayName": "Smoothness Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "3d29306586360f87bd4e7b9ae811bfb5", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3dd1686839cd4c8ea23a9e210822ed45", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3e64307feed15f8cad4236a057acf4c8", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Postpass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3f79ba7357137587a04e6051a0d313b4", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "427966ec1fded689943d180f391e68c5", + "m_Guid": { + "m_GuidSerialized": "1c11679b-cbb6-4fa9-8f37-996c04d07707" + }, + "m_Name": "Alpha Cutoff", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_15C6E93B", + "m_OverrideReferenceName": "AlphaCutoff", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "433ac40aaba40288a2951408c4d772ee", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "43a41f7a42a9b487af906c32995abadc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2240.000244140625, + "y": 173.00001525878907, + "width": 153.0, + "height": 34.00004577636719 + } + }, + "m_Slots": [ + { + "m_Id": "bb9ae3f0ca69bc89bcd4618fe24578fe" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "44eb2baae7244a869ce9cf82ea31a653", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "450e3ecb6d6aa089a80825c4acc0c74c", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "48e77cac8746488daad50e482d2c3de9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.RadialSmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "090e2558a73d4577ad326b8c7c48b642" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.RadialSmoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4a2e31e5bdadeb8ba3525a11caade5fa", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "4be44d4bc359298a9985c1d86006f8fb", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -651.9998168945313, + "y": -441.0000305175781, + "width": 181.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "86a16f16f03dab80a00a66849fc57418" + }, + { + "m_Id": "aa8c1dcd926d098f8ae2e03e7c89e48e" + }, + { + "m_Id": "3d29306586360f87bd4e7b9ae811bfb5" + }, + { + "m_Id": "ce1c65ecd0d8c485bad482d92cd4207f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "4d889de587fa45e9a282082e13cc8970", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BentNormal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "97f4eac589c948c6b38f803164d3bbd2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BentNormal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "50556458863843898802643405572325", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "519b5dc3ba5e47139dc635b812781052", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Depth Postpass", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdDepthPostpass", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "51f89bbfeb89fd8e8abd8c2da08380b6", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "533b20e3fe8405898a55f0a048a3ddaf", + "m_Id": 0, + "m_DisplayName": "Diffuse Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "533b9b9d2ff0a0898705d5962522997f", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1589.9998779296875, + "y": -313.0000305175781, + "width": 198.0, + "height": 131.0 + } + }, + "m_Slots": [ + { + "m_Id": "240dbbe9e073ba8fbbc7866bfe19006f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 1 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "5403de39fff83a858f3897c561e7b8d8", + "m_Guid": { + "m_GuidSerialized": "d91fd1a5-e079-4844-b874-c9c0ca592f79" + }, + "m_Name": "Alpha Cutoff Prepass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_AD26FB16", + "m_OverrideReferenceName": "_AlphaCutoffPrepass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.8999999761581421, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "54c2c9fab03b8986a419a8f4d38cc9b4", + "m_Guid": { + "m_GuidSerialized": "08ee1c25-529f-4fca-8392-271b44871553" + }, + "m_Name": "Alpha Cutoff Shadows", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_CAFF147E", + "m_OverrideReferenceName": "_AlphaCutoffShadows", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "565b18ce35d4f88c8fddae94b4729467", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff Prepass", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5726522506e2465ba8fd69530096fb72", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "59ed7da959ff1f84a470af10c5ac986a", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5b490fbd5e29ed89aa6a4d83b25a2009", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1377.9998779296875, + "y": -463.00006103515627, + "width": 175.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "433ac40aaba40288a2951408c4d772ee" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "179f8f51376c088aaf94836698ac8220" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5c7f2dba5a3378818055e511404568fe", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "5f38d464c32e2e82828769e0b7986031", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1021.9998168945313, + "y": -746.0, + "width": 198.0, + "height": 182.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "65c9308837466e8c95b0adac0199c4c1" + }, + { + "m_Id": "f534ee89ba597889981c1cd0f89566ad" + }, + { + "m_Id": "340b1f3554a53881b136398deed4da52" + }, + { + "m_Id": "6d83dd949117898385976df4af592436" + }, + { + "m_Id": "c1d28320e6e1e186a6f185a0d00723ea" + }, + { + "m_Id": "2b9e6e492bd61c8a85beb3c304421742" + }, + { + "m_Id": "86a7033bf32fde89a32671894f3faa27" + }, + { + "m_Id": "0dbc29ef6ffa7d8cb6ab2776226e7718" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "60b90383c40e4824b4bbcec1f9014ab6", + "m_Title": "Normal", + "m_Position": { + "x": -1093.000244140625, + "y": 241.99996948242188 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "647309fcbf93808f8e9587e1bb5d3017", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -784.9998779296875, + "y": -376.0000305175781, + "width": 124.99999237060547, + "height": 100.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "d604aeede7be8c81a89f3f9f7b316785" + }, + { + "m_Id": "c6251dcf7d883e8493c3ba4142a40eae" + }, + { + "m_Id": "44eb2baae7244a869ce9cf82ea31a653" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "65c9308837466e8c95b0adac0199c4c1", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "65cb1c5a02e5d183bfc5ceb7aeab47b9", + "m_Id": 0, + "m_DisplayName": "AO Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "6628192f4725228184a28da67814b191", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -870.0001220703125, + "y": -87.00003814697266, + "width": 157.0001220703125, + "height": 178.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "3956714c58cb9a88bf186adf5315d9e0" + }, + { + "m_Id": "50556458863843898802643405572325" + }, + { + "m_Id": "a1ce52e42287c98ba224acde9ae460ba" + }, + { + "m_Id": "be2ab041555e4284b3ae78102b12445e" + }, + { + "m_Id": "b8ee043449f1fa8894ec494307b662e9" + }, + { + "m_Id": "0280396e0fca118e8bd811b51a52d939" + }, + { + "m_Id": "dd1870936d90fb81bc8ec730e1dcefdc" + }, + { + "m_Id": "a684ed327e7dac8092910d8f98cb958a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "686bbf54cd40c1829f1e042219490c16", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -795.9998779296875, + "y": -796.0, + "width": 124.99999237060547, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "1960479b41340083b65285a79683a509" + }, + { + "m_Id": "c7aaac29b313fb8ebbfcb4055bcbb86d" + }, + { + "m_Id": "f6270313d819ae8eb09b23f362e7578e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "6a5b1ea4a775ca87a7613bd5f29245ce", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6d83dd949117898385976df4af592436", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6eb14bdea8824c898b37443575572deb", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7135e81ebc9cca808d6c1bf0f4757a19", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2298.000244140625, + "y": 215.0000457763672, + "width": 211.0, + "height": 33.999908447265628 + } + }, + "m_Slots": [ + { + "m_Id": "8de4f0e928a2d8849f1ca35633e0086e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "226d0088ad363282a5742f217833b48e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7796b2ec1bc478829b13398bab417829", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "77b24a17f4d9ce888d0d645c8a3a18e5", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1166.9998779296875, + "y": -746.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "533b20e3fe8405898a55f0a048a3ddaf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "78479c8d6abe4634abf777821e1eea54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.CuticleAngle", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ddc68b917a884852ade19f0e1a11f6a5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.CuticleAngle" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "78bc3b99a581dd88acad23f34e26f942", + "m_Guid": { + "m_GuidSerialized": "6343a65d-92e9-4ea6-a610-b17eff7c3712" + }, + "m_Name": "Diffuse Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_1DA0BB85", + "m_OverrideReferenceName": "_BaseColorMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7911580134b27285aea5011e176efc55", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7b122e5ad389c78e955d1a8d600c0649", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7b26f104187a8987a649a27bf1682e3e", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -920.9998168945313, + "y": -312.00006103515627, + "width": 91.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "f6fe779f1a8d0f8599e6605b9d793fdf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "7c176772d8494e69a1e6e71caf3824c8", + "m_Guid": { + "m_GuidSerialized": "6f1ce988-5e87-4df7-a6bd-ed36e081c857" + }, + "m_Name": "Cuticle Tilt", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Cuticle Tilt", + "m_DefaultReferenceName": "_Cuticle_Tilt", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.125, + "m_FloatType": 1, + "m_RangeValues": { + "x": -0.5, + "y": 0.5 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "7dff3059b4b242759d1c81ad9c86927f", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "7e989903b67f2d88805cd5533cbf1b58", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7ecf4ec3d845eb89a2ea57b521ca8faa", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1078.0, + "y": 800.0000610351563, + "width": 239.99993896484376, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "f3139b7f81c5638f9f3ef81eefb4f54b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "820ef484d4e55783849213f3ffc6550c", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -958.0000610351563, + "y": 661.0000610351563, + "width": 126.00006103515625, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "09de172d67c56088ab0c01bd8c7eac3f" + }, + { + "m_Id": "cd4fb894fda2e280bf7c73c2dba7dd40" + }, + { + "m_Id": "b392c30da2ee518f9e37b248e67f6672" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a16f16f03dab80a00a66849fc57418", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "86a63ca605871b8a8395c2d33321eabc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "86a7033bf32fde89a32671894f3faa27", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "87788c13afe3128a8737b5d4498527ab", + "m_Guid": { + "m_GuidSerialized": "33400aac-8162-4d1d-9d4b-243c04977272" + }, + "m_Name": "AO Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_164AD3BD", + "m_OverrideReferenceName": "_AORemapMin", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "87c6de5a78a54a79923f7129c2fc0f70", + "m_Title": "Cuticle Angle", + "m_Position": { + "x": -1580.0, + "y": 567.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "88754b8e9dad4e1ea0eda24699d31a17", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.StrandCountProbe", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "33a224fa0e0e4db49ddfa856369c0a0e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.StrandCountProbe" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "8ad836f22bf91488a01151f840cf8766", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -860.0000610351563, + "y": 307.99993896484377, + "width": 180.99993896484376, + "height": 179.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "59ed7da959ff1f84a470af10c5ac986a" + }, + { + "m_Id": "176531b3e19b8686b38e0c9259252aee" + }, + { + "m_Id": "9e270c52f272de868f33637366dd69e2" + }, + { + "m_Id": "d5e1d4528a311e849b59ac342f46dad1" + }, + { + "m_Id": "6eb14bdea8824c898b37443575572deb" + }, + { + "m_Id": "c2eb32947e67fa8ea0a3f06d43de5ef8" + }, + { + "m_Id": "7b122e5ad389c78e955d1a8d600c0649" + }, + { + "m_Id": "7e989903b67f2d88805cd5533cbf1b58" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 1, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8b24fb7984fd1e86b1571bb5bf90faa1", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1068.0001220703125, + "y": -89.00005340576172, + "width": 193.0, + "height": 34.00007247924805 + } + }, + "m_Slots": [ + { + "m_Id": "2f2dda15cd64628695a5e429bd783b18" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "8bd09d48b70f4915b6bec74d49bf6362", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": true, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 0, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "8d4c7998d3ea469188313f32fd5bcd33", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "8de4f0e928a2d8849f1ca35633e0086e", + "m_Id": 0, + "m_DisplayName": "Base UV Tiling and Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairSubTarget", + "m_ObjectId": "8e390779bd944f90817742d777ed7c63" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDTarget", + "m_ObjectId": "8f325a30dd2a4515af1f028912b6f70e", + "m_ActiveSubTarget": { + "m_Id": "8e390779bd944f90817742d777ed7c63" + }, + "m_Datas": [ + { + "m_Id": "ad2567a30e4541b8b5ef7d4714d5a0e9" + }, + { + "m_Id": "c6dad4c67be84c8180af0558b93ee6eb" + }, + { + "m_Id": "ce6a30e827984b21b01ef697317d0934" + }, + { + "m_Id": "d30f1aa1a02847c89af2bab89f780e13" + }, + { + "m_Id": "9a306ec58a5f4b1897e7d3ef28907dd8" + }, + { + "m_Id": "8bd09d48b70f4915b6bec74d49bf6362" + }, + { + "m_Id": "3c2bc1a9a5054043b94470701f8ac5e1" + } + ], + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "90853359b4e7bb8b9312b5f784d3b4be", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1068.0001220703125, + "y": 301.00006103515627, + "width": 147.0, + "height": 33.999908447265628 + } + }, + "m_Slots": [ + { + "m_Id": "236f73c9e460cb8394c6c7f693633923" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "91848e9583b5198296103f526e3be1e6", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "9198df248acd2b88818c20a5f911228e", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "91e02132de64ba8188337710a7ffc3e4", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "92504468ba4f378f834ad4b5f33fbaf9", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "9251a286f0e1c983a73eb912051c4291", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -580.0001220703125, + "y": 625.9999389648438, + "width": 125.9998779296875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "354c780e278883888de190759d0b677c" + }, + { + "m_Id": "86a63ca605871b8a8395c2d33321eabc" + }, + { + "m_Id": "c2706657c5ed9a858ca5a80941ca7c37" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "95b97349851241ec8d6bf8bccd0cdf41", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "97f4eac589c948c6b38f803164d3bbd2", + "m_Id": 0, + "m_DisplayName": "Bent Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BentNormal", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "99a201ca0a64c082ad04b50f33589bab", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -829.0001831054688, + "y": 494.9998779296875, + "width": 187.00018310546876, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "236d9b8d136c718d9974f605510b28b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "9a306ec58a5f4b1897e7d3ef28907dd8", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": false, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": false, + "m_BackThenFrontRendering": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9a474beedf33ee8ba0abd17e767ba739", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -131.00001525878907, + "y": 398.9999694824219, + "width": 186.00001525878907, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "565b18ce35d4f88c8fddae94b4729467" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "9a7263d78d61fc8099fd01358336b0af", + "m_Guid": { + "m_GuidSerialized": "9e22e251-3c42-49bc-9403-4e38bab24977" + }, + "m_Name": "Ambient Occlusion use lightmap UVs", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Boolean_F987B642", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "9b824dc1cd2c7088b802e3b5c40e21fb", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -793.0000610351563, + "y": 701.0, + "width": 126.0, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "c02b546bf752f08ca1a3b01417b0fd97" + }, + { + "m_Id": "3f79ba7357137587a04e6051a0d313b4" + }, + { + "m_Id": "ef8bf4d259d4fb8ba52d5e34bb08edf5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9c145c8195e14fac89847d119fefa84b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5726522506e2465ba8fd69530096fb72" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "9cdb0052e240a38a8da7f0afdfd664c0", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -656.0001220703125, + "y": 4.000010013580322, + "width": 186.0001220703125, + "height": 117.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "d6f36d8cdd25bc84a3ec8866932cc344" + }, + { + "m_Id": "eea7b5afae50d789a7c8e2c7bb397a73" + }, + { + "m_Id": "fcd1884afc9fd087bc0a999b1f291827" + }, + { + "m_Id": "46ce7a9c6fa53d80a3d9f6d2f57bb7a8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "9cec744ea596404bb4a84da7c6007853", + "m_Title": "Smoothness", + "m_Position": { + "x": -1093.000244140625, + "y": -148.00003051757813 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "9d49b97bf90bc3808de132718c7b159e", + "m_Guid": { + "m_GuidSerialized": "66ded31f-2a1d-40c4-9c0c-c7faef0f5375" + }, + "m_Name": "Cuticle Tilt Texture Intensity", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_7D9AC3D3", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 3.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9dc2bfa03db44301ad94343ad1abd06e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7dff3059b4b242759d1c81ad9c86927f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9e270c52f272de868f33637366dd69e2", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a1ce52e42287c98ba224acde9ae460ba", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "a23e238449fe1f8083c8cb7190bf3f13", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -590.9998168945313, + "y": -791.0, + "width": 116.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "450e3ecb6d6aa089a80825c4acc0c74c" + }, + { + "m_Id": "a2c8b51fa5091083805db5d1505d0c0c" + }, + { + "m_Id": "f9f54bc74c5eaf89888138923426ed14" + }, + { + "m_Id": "2371eb645bdf0789be466e3f4c8c8602" + }, + { + "m_Id": "4a2e31e5bdadeb8ba3525a11caade5fa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "a28b550795132e88a28002a11edcbfdd", + "m_Guid": { + "m_GuidSerialized": "91b97227-7399-4cd6-9d23-d7f3396a4d2d" + }, + "m_Name": "Cuticle Tilt Texture (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_6C0DA6CC", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a2c8b51fa5091083805db5d1505d0c0c", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a4d19347cca2d08dbd28cee652fa9662", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "a684ed327e7dac8092910d8f98cb958a", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a6d2f8d93c070f8ea36456eeba1dbe79", + "m_Id": -1533382448, + "m_DisplayName": "uvMask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvMask", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "aa8c1dcd926d098f8ae2e03e7c89e48e", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ab0dfa88aaaf47708507acf54125f8b3", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "ad2567a30e4541b8b5ef7d4714d5a0e9", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": true, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": true, + "m_BackThenFrontRendering": true, + "m_TransparentDepthPrepass": true, + "m_TransparentDepthPostpass": true, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "ad712e421bdc2b858f94bf5ee650e74a", + "m_Guid": { + "m_GuidSerialized": "cdb23723-972f-4d49-9f82-4ac5e80e2d1d" + }, + "m_Name": "Diffuse Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Color_22DC9E2D", + "m_OverrideReferenceName": "_BaseColor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.6430000066757202, + "g": 0.4775882661342621, + "b": 0.3594370186328888, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "ae77e3144b96ce8fb1897a571d778e92", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion use lightmap UVs", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "aea42b6e88350189aaf5b1883905f4e5", + "m_Group": { + "m_Id": "33ff9e47cf9b4883af237446e1274285" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -945.9998168945313, + "y": -830.0, + "width": 118.99999237060547, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "e11d69393def7780bbc8627b1ef61969" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "af12385c82644c1bb54ee97c98449804", + "m_Id": 0, + "m_DisplayName": "Hair Strand Direction", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "HairStrandDirection", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b091997e5dd0358f90a108ac01e23b34", + "m_Id": -1319696916, + "m_DisplayName": "uvST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_uvST", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "b0b092120dffbc8881293027cf951bfa", + "m_Guid": { + "m_GuidSerialized": "45256b52-4919-4436-824f-6f9e813fe9b1" + }, + "m_Name": "Normal Map Strength", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_2B87C9F0", + "m_OverrideReferenceName": "_NormalScale", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 8.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b1dbc96cf13ee28d9d722f739bd0e349", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -137.00003051757813, + "y": 467.0, + "width": 192.00003051757813, + "height": 34.000030517578128 + } + }, + "m_Slots": [ + { + "m_Id": "2e197e754975c58a94b53041782ead99" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "b27abc57c8e84886aaee2448a139a9e9", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -796.0001220703125, + "y": 106.99996948242188, + "width": 128.00006103515626, + "height": 100.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "b6d251f6dfaf348591c32b52051ce15b" + }, + { + "m_Id": "1aa04e00d5958c8e838a82ba3f1072fd" + }, + { + "m_Id": "6a5b1ea4a775ca87a7613bd5f29245ce" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b392c30da2ee518f9e37b248e67f6672", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "b41d947f3439b385af4b28c78a8273d6", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": false, + "m_Position": { + "serializedVersion": "2", + "x": -1270.0, + "y": 655.0, + "width": 157.0, + "height": 179.0 + } + }, + "m_Slots": [ + { + "m_Id": "bd5750773a87e18cb74bbb99402aa22c" + }, + { + "m_Id": "f2a852dd8efe0787843b125f8785b8eb" + }, + { + "m_Id": "bc90e8e5ced965859c0ea26885d0b60f" + }, + { + "m_Id": "7796b2ec1bc478829b13398bab417829" + }, + { + "m_Id": "51f89bbfeb89fd8e8abd8c2da08380b6" + }, + { + "m_Id": "b7dec426f089a780bc0521baaf578975" + }, + { + "m_Id": "91848e9583b5198296103f526e3be1e6" + }, + { + "m_Id": "348fecfb4fb3a38db2bd198743f33083" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b57e501619804b89b55a01c6914f1061", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b6d251f6dfaf348591c32b52051ce15b", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b7dec426f089a780bc0521baaf578975", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b8ee043449f1fa8894ec494307b662e9", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bb9ae3f0ca69bc89bcd4618fe24578fe", + "m_Id": 0, + "m_DisplayName": "Base UV Mask", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bc90e8e5ced965859c0ea26885d0b60f", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bd5750773a87e18cb74bbb99402aa22c", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bdb36d10e8f5d9868a902112523885d3", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "be2ab041555e4284b3ae78102b12445e", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c02b546bf752f08ca1a3b01417b0fd97", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c1d28320e6e1e186a6f185a0d00723ea", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c2706657c5ed9a858ca5a80941ca7c37", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "c2eb32947e67fa8ea0a3f06d43de5ef8", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c6251dcf7d883e8493c3ba4142a40eae", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "c6dad4c67be84c8180af0558b93ee6eb", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": false, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 1, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c7aaac29b313fb8ebbfcb4055bcbb86d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cad70c769fa144abbc8aece598c97044", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cafab10338384e2c8f9abf0be8484db9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1425366fc04241fb9f3b78af2049ee13" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cd4fb894fda2e280bf7c73c2dba7dd40", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": -0.5, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "cdc63087ae339f8b99568d20bf75b4ec", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt Texture (R)", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ce1c65ecd0d8c485bad482d92cd4207f", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "ce6a30e827984b21b01ef697317d0934", + "m_MaterialNeedsUpdateHash": 12719, + "m_SurfaceType": 1, + "m_RenderingPass": 4, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": true, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 1, + "m_DOTSInstancing": false, + "m_CustomVelocity": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 9 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HairData", + "m_ObjectId": "d30f1aa1a02847c89af2bab89f780e13", + "m_MaterialType": 1, + "m_ScatteringMode": 1, + "m_GeometryType": 0, + "m_UseRoughenedAzimuthalScattering": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d4834395e858ef8aa81f53d5ccdd7ce7", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -925.9998168945313, + "y": -386.0, + "width": 90.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "65cb1c5a02e5d183bfc5ceb7aeab47b9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d5e1d4528a311e849b59ac342f46dad1", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d604aeede7be8c81a89f3f9f7b316785", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "d6204936eb0c778ba79957469938ffce", + "m_Group": { + "m_Id": "1256f23312cc46b59365214f65948a61" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1362.9998779296875, + "y": -372.0, + "width": 165.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "9198df248acd2b88818c20a5f911228e" + }, + { + "m_Id": "5c7f2dba5a3378818055e511404568fe" + }, + { + "m_Id": "dd24ba99be67fd8fb31bd72b0321c4fc" + }, + { + "m_Id": "05327e12b59bd185886f0d655de86628" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d6f36d8cdd25bc84a3ec8866932cc344", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "d77184bb68602a87a21066eb88527731", + "m_Guid": { + "m_GuidSerialized": "2fbe22fb-2883-4e21-974b-0e58cf6fa5a8" + }, + "m_Name": "Alpha Cutoff Postpass", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_4B895F81", + "m_OverrideReferenceName": "_AlphaCutoffPostpass", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.20000000298023225, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc71dafd015c0b8fbd4cf8eda6b04650", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -137.00003051757813, + "y": 433.0000305175781, + "width": 192.00003051757813, + "height": 33.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "3e64307feed15f8cad4236a057acf4c8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d77184bb68602a87a21066eb88527731" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dc9305a3fb26de8581d475dd3a59fbe8", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1555.0, + "y": 654.0, + "width": 218.0001220703125, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "cdc63087ae339f8b99568d20bf75b4ec" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dcb284e02529428e984891e5fb1ad226", + "m_Group": { + "m_Id": "9cec744ea596404bb4a84da7c6007853" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1024.0001220703125, + "y": 139.99993896484376, + "width": 165.0001220703125, + "height": 34.00007629394531 + } + }, + "m_Slots": [ + { + "m_Id": "3d239afea657458f89d6c65107f2aa06" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "dd1870936d90fb81bc8ec730e1dcefdc", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "dd24ba99be67fd8fb31bd72b0321c4fc", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ddc68b917a884852ade19f0e1a11f6a5", + "m_Id": 0, + "m_DisplayName": "Cuticle Angle", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "CuticleAngle", + "m_StageCapability": 2, + "m_Value": 3.0, + "m_DefaultValue": 3.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ddf62ee7d5534c008dc868db6ce30944", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e017d9a832a643c5b827aa92818f0161", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "005fd5aaba054304adbf564a8279747e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e11d69393def7780bbc8627b1ef61969", + "m_Id": 0, + "m_DisplayName": "Diffuse Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "e45e0dd4a288445d990250bd6c1d46b6", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "e5f61fab2dc4308f947bab38abc57baf", + "m_Guid": { + "m_GuidSerialized": "f7dfeb70-3e1c-4c38-9793-23ec535a1aa6" + }, + "m_Name": "AO Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_FBDC704E", + "m_OverrideReferenceName": "_AORemapMax", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalStrengthNode", + "m_ObjectId": "e7fea26afb72bc83a7767f135cc064aa", + "m_Group": { + "m_Id": "60b90383c40e4824b4bbcec1f9014ab6" + }, + "m_Name": "Normal Strength", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -630.0001220703125, + "y": 377.9999084472656, + "width": 166.00015258789063, + "height": 117.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "14b012f13c19a78cadd30a711522abc0" + }, + { + "m_Id": "f93fdf97edd1dd85bfc3ba4170b91351" + }, + { + "m_Id": "ee2289d2e61e8e8ebd8ffc90d07ba380" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e9d9af9c13491486b6a00c4fbd1c39b9", + "m_Id": 0, + "m_DisplayName": "Smoothness Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "eb64f51ceae0e985b9a2d518888e7e38", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "ec7608b7aa994ec788ccc5ee3e343092", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThresholdShadow", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f9b3522313754ad2a1989d5c82ba301c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThresholdShadow" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ed9c054016be518faf9cc2372fbd6915", + "m_Id": 1, + "m_DisplayName": "Output 1", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Output1", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "edfdef5f3ad944ae99de6eb746229ae6", + "m_Group": { + "m_Id": "87c6de5a78a54a79923f7129c2fc0f70" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -846.0001220703125, + "y": 860.9999389648438, + "width": 148.00006103515626, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "ddf62ee7d5534c008dc868db6ce30944" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "ee2289d2e61e8e8ebd8ffc90d07ba380", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [ + "X", + "Y", + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "eea7b5afae50d789a7c8e2c7bb397a73", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ef8bf4d259d4fb8ba52d5e34bb08edf5", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f2a852dd8efe0787843b125f8785b8eb", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f3139b7f81c5638f9f3ef81eefb4f54b", + "m_Id": 0, + "m_DisplayName": "Cuticle Tilt Texture Intensity", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f534ee89ba597889981c1cd0f89566ad", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f55453ccdc2c4306a5f9d39ff0237186", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "78bc3b99a581dd88acad23f34e26f942" + }, + { + "m_Id": "ad712e421bdc2b858f94bf5ee650e74a" + }, + { + "m_Id": "427966ec1fded689943d180f391e68c5" + }, + { + "m_Id": "5403de39fff83a858f3897c561e7b8d8" + }, + { + "m_Id": "d77184bb68602a87a21066eb88527731" + }, + { + "m_Id": "54c2c9fab03b8986a419a8f4d38cc9b4" + }, + { + "m_Id": "179f8f51376c088aaf94836698ac8220" + }, + { + "m_Id": "9a7263d78d61fc8099fd01358336b0af" + }, + { + "m_Id": "87788c13afe3128a8737b5d4498527ab" + }, + { + "m_Id": "e5f61fab2dc4308f947bab38abc57baf" + }, + { + "m_Id": "fec923cefdaaac89ad009fba47d1e58f" + }, + { + "m_Id": "2ea9c83800e54883a65a85d0be4f537f" + }, + { + "m_Id": "0ac5bf5847aabd8cb2d384d6666fe60b" + }, + { + "m_Id": "a28b550795132e88a28002a11edcbfdd" + }, + { + "m_Id": "9d49b97bf90bc3808de132718c7b159e" + }, + { + "m_Id": "7c176772d8494e69a1e6e71caf3824c8" + }, + { + "m_Id": "15f1cda72ce66782bb5877573ceab864" + }, + { + "m_Id": "b0b092120dffbc8881293027cf951bfa" + }, + { + "m_Id": "f6b5ba98fc42e2808adc619221f62a58" + }, + { + "m_Id": "226d0088ad363282a5742f217833b48e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f6270313d819ae8eb09b23f362e7578e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "f6b5ba98fc42e2808adc619221f62a58", + "m_Guid": { + "m_GuidSerialized": "ac9e053c-4cda-42a4-be2e-b1261e151565" + }, + "m_Name": "Base UV Mask", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_BBB2EF8D", + "m_OverrideReferenceName": "_uvBaseMask", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f6fe779f1a8d0f8599e6605b9d793fdf", + "m_Id": 0, + "m_DisplayName": "AO Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f93fdf97edd1dd85bfc3ba4170b91351", + "m_Id": 1, + "m_DisplayName": "Strength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Strength", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f9469208c3a047c8ba590663d472be9d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "95b97349851241ec8d6bf8bccd0cdf41" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9b3522313754ad2a1989d5c82ba301c", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold Shadow", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThresholdShadow", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f9f54bc74c5eaf89888138923426ed14", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "X" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "fcd1884afc9fd087bc0a999b1f291827", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [ + "X", + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "fec923cefdaaac89ad009fba47d1e58f", + "m_Guid": { + "m_GuidSerialized": "179767ac-b5e5-49ea-a32e-2546c617a112" + }, + "m_Name": "Smoothness Map (R)", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Texture2D_189C8E90", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 2 +} + diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph.meta new file mode 100644 index 00000000000..6dba6ff78ee --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d989c91312dc521438ae166f9d8a24f6 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png index 1c0d926ec8d..a58889178d5 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 -size 119719 +oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 +size 118320 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png index 1c0d926ec8d..a58889178d5 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 -size 119719 +oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 +size 118320 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png index 1c0d926ec8d..a58889178d5 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 -size 119719 +oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 +size 118320 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png index 1c0d926ec8d..a58889178d5 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 -size 119719 +oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 +size 118320 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png index 1c0d926ec8d..a58889178d5 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b39e358cbdf97a4a586caee345ac7bb98c83eb3245cd552e09d87102884ba112 -size 119719 +oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 +size 118320 From 98286e42c930d8dda04aa47794777e16ecd1f89f Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 10 Sep 2021 15:54:42 -0400 Subject: [PATCH 60/73] Add documentation and update appearance of scattering mode (only for marschner strands) --- .../Documentation~/master-stack-hair.md | 8 +++++--- .../shader-graph-blocks/strand-count-probe.md | 6 ++++++ .../advanced-options/scattering-mode.md | 6 ++++++ .../Hair/ShaderGraph/HairPropertyBlocks.cs | 5 ++++- .../Material/Hair/ShaderGraph/HairSubTarget.cs | 17 ++++++++++------- 5 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-count-probe.md create mode 100644 com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/scattering-mode.md diff --git a/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md b/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md index f7cb71daeb3..1e92dec3aa4 100644 --- a/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md +++ b/com.unity.render-pipelines.high-definition/Documentation~/master-stack-hair.md @@ -75,12 +75,10 @@ When you create a new Hair Master Stack, the Fragment Context contains the follo [!include[](snippets/shader-graph-blocks/transmittance.md)] [!include[](snippets/shader-graph-blocks/rim-transmission-intensity.md)] [!include[](snippets/shader-graph-blocks/smoothness.md)] -[!include[](snippets/shader-graph-blocks/smoothness-radial.md)] [!include[](snippets/shader-graph-blocks/ambient-occlusion.md)] [!include[](snippets/shader-graph-blocks/alpha.md)] [!include[](snippets/shader-graph-blocks/specular-tint.md)] [!include[](snippets/shader-graph-blocks/specular-shift.md)] -[!include[](snippets/shader-graph-blocks/cuticle-angle.md)] [!include[](snippets/shader-graph-blocks/secondary-specular-tint.md)] [!include[](snippets/shader-graph-blocks/secondary-specular-shift.md)] [!include[](snippets/shader-graph-blocks/emission.md)] @@ -88,7 +86,7 @@ When you create a new Hair Master Stack, the Fragment Context contains the follo #### Relevant -Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add the following locks to the Fragment Context: +Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add the following blocks to the Fragment Context: @@ -109,6 +107,9 @@ Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add [!include[](snippets/shader-graph-blocks/specular-aa-screen-space-variance.md)] [!include[](snippets/shader-graph-blocks/specular-aa-threshold.md)] [!include[](snippets/shader-graph-blocks/specular-occlusion.md)] +[!include[](snippets/shader-graph-blocks/smoothness-radial.md)] +[!include[](snippets/shader-graph-blocks/cuticle-angle.md)] +[!include[](snippets/shader-graph-blocks/strand-count-probe.md)]
## Graph Settings @@ -158,5 +159,6 @@ Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add [!include[](snippets/shader-properties/advanced-options/support-lod-crossfade.md)] [!include[](snippets/shader-properties/advanced-options/add-precomputed-velocity.md)] [!include[](snippets/shader-properties/advanced-options/geometry-type.md)] +[!include[](snippets/shader-properties/advanced-options/scattering-mode.md)] [!include[](snippets/shader-properties/advanced-options/allow-radial-smoothness.md)] diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-count-probe.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-count-probe.md new file mode 100644 index 00000000000..f791e531b43 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-graph-blocks/strand-count-probe.md @@ -0,0 +1,6 @@ + +**Strand Count Probe** +The four coefficients of an L0 and L1 spherical harmonic near the shading position. Encoded with the strand count on the sphere of directions. +None +0.0 + diff --git a/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/scattering-mode.md b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/scattering-mode.md new file mode 100644 index 00000000000..92148f291b5 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Documentation~/snippets/shader-properties/advanced-options/scattering-mode.md @@ -0,0 +1,6 @@ + +**Scattering Mode** +Indicates the method by which the scattering of light is calculated in a volume of hair. Requires the "Marschner" Material Type and "Strands" Geometry Type to use: +
• **Approximate**: Fall back to a simplified diffuse component to approximate hair color. This is generally acceptable for high-absorbent (dark) hair. +
• **Advanced**: Simulate the scattering of light through a volume of hair strands. This is important for depicting low-absorbent (light) hair. Adds the Strand Probe Volume block parameter. + diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs index 49905a7dfe1..3f0cf4f451e 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairPropertyBlocks.cs @@ -55,7 +55,10 @@ protected override void CreatePropertyGUI() if (hairData.materialType == HairData.MaterialType.Marschner) { - AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); + // For now only allow scattering mode for strands, as the multiple scattering was developed against this for 21.2. + if (hairData.geometryType == HairData.GeometryType.Strands) + AddProperty(Styles.scatteringMode, () => hairData.scatteringMode, (newValue) => hairData.scatteringMode = newValue); + AddProperty(Styles.useRoughenedAzimuthalScattering, () => hairData.useRoughenedAzimuthalScattering, (newValue) => hairData.useRoughenedAzimuthalScattering = newValue); } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index f4efef2b263..954318b2a27 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -36,6 +36,12 @@ sealed partial class HairSubTarget : LightingSubTarget, ILegacyTarget, IRequires protected override bool supportPathtracing => true; protected override string pathtracingInclude => CoreIncludes.kHairPathtracing; + // Only allow advanced scattering for Marschner Strands explicitly set to advanced. + private bool useAdvancedMultipleScattering => + hairData.materialType == ShaderGraph.HairData.MaterialType.Marschner && + hairData.geometryType == HairData.GeometryType.Strands && + hairData.scatteringMode == HairData.ScatteringMode.Advanced; + HairData m_HairData; HairData IRequiresData.data @@ -73,7 +79,7 @@ public override void GetFields(ref TargetFieldContext context) context.AddField(UseLightFacingNormal, hairData.geometryType == HairData.GeometryType.Strands); context.AddField(Transmittance, descs.Contains(HDBlockFields.SurfaceDescription.Transmittance) && context.pass.validPixelBlocks.Contains(HDBlockFields.SurfaceDescription.Transmittance)); context.AddField(UseRoughenedAzimuthalScattering, hairData.useRoughenedAzimuthalScattering); - context.AddField(ScatteringAdvanced, hairData.scatteringMode == HairData.ScatteringMode.Advanced); + context.AddField(ScatteringAdvanced, useAdvancedMultipleScattering); // Misc context.AddField(SpecularAA, lightingData.specularAA && @@ -107,12 +113,9 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) // TODO: Refraction Index // Right now, the Marschner model implicitly assumes a human hair IOR of 1.55. - if (hairData.scatteringMode == HairData.ScatteringMode.Advanced) - { - // Dual Scattering Inputs (Global Scattering) - // Right now these inputs are provided by the demo team hair package. - context.AddBlock(HDBlockFields.SurfaceDescription.StrandCountProbe); - } + // Dual Scattering Inputs (Global Scattering) + // Right now these inputs are provided by the demo team hair package. + context.AddBlock(HDBlockFields.SurfaceDescription.StrandCountProbe, useAdvancedMultipleScattering); } } From fcb38b1be2b468ad9a4c85a340cae4fd681f9919 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Fri, 10 Sep 2021 15:58:53 -0400 Subject: [PATCH 61/73] Explicitly set the multiple scattering test graph to Marschner + Strands type to fix the test. --- .../MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph index 7b1e76bfb4d..da86ccffce8 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/1x_Materials/1401_HairGraph/Shadergraph/MarschnerDualScattering/SG_Hair_Marschner_DS.shadergraph @@ -5370,7 +5370,7 @@ "m_ObjectId": "d30f1aa1a02847c89af2bab89f780e13", "m_MaterialType": 1, "m_ScatteringMode": 1, - "m_GeometryType": 0, + "m_GeometryType": 1, "m_UseRoughenedAzimuthalScattering": true } From d5b7b1321abafea8fbdf725fe7ebc55dd232e46a Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Mon, 13 Sep 2021 10:31:56 -0400 Subject: [PATCH 62/73] Fix preintegration NaN in BSDF --- .../Runtime/Material/Hair/Hair.hlsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 5ab39fb1b45..723cea39579 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -526,7 +526,7 @@ void GetMarschnerAngle(float3 T, float3 V, float3 L, // Projection onto the normal plane, and since phi is the relative angle, we take the cosine in this projection. float3 LProj = L - sinThetaI * T; float3 VProj = V - sinThetaR * T; - cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj)); + cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj) + 0.0001); // Small epsilon to combat potential nans } CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) From 57e9f7d3a5adada0bd46fa27d026335bed8c9936 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 15 Sep 2021 01:48:38 -0400 Subject: [PATCH 63/73] Fix various subtle issues (preintegration domain, scattering gaussian discrepancies). --- .../Runtime/Material/Hair/Hair.cs | 1 - .../Runtime/Material/Hair/Hair.hlsl | 21 +++---- .../Runtime/Material/Hair/HairReference.hlsl | 13 ++--- .../HairMultipleScattering.hlsl | 58 ++++++------------- ...irMultipleScatteringPreIntegration.compute | 18 +++--- 5 files changed, 40 insertions(+), 71 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 5c5531b7dff..72e011d91cc 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -83,7 +83,6 @@ public struct SurfaceData // Global Scattering [SurfaceDataAttributes("Strand Count Probe")] public Vector4 strandCountProbe; - }; //----------------------------------------------------------------------------- diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 723cea39579..303fa4f61c9 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -26,7 +26,10 @@ // #define HAIR_DISPLAY_REFERENCE_IBL #if _USE_ADVANCED_MULTIPLE_SCATTERING + +// Temporary until we introduce spline bias toward light. #define LIGHT_EVALUATION_NO_SHADOWS + #endif // Extra material feature flag we utilize to compile different versions of BSDF evaluation (for pre-integration, etc.) @@ -44,18 +47,10 @@ // Longitudinal scattering as modeled by a normal distribution. // To be used as an approximation to d'Eon et al's Energy Conserving Longitudinal Scattering Function. // TODO: Move me to BSDF.hlsl -real D_LongitudinalScatteringGaussian(real theta, real beta) -{ - real v = theta / beta; - - const real sqrtTwoPi = 2.50662827463100050241; - return rcp(beta * sqrtTwoPi) * exp(-0.5 * v * v); -} real3 D_LongitudinalScatteringGaussian(real3 theta, real3 beta) { real3 v = theta / beta; - const real sqrtTwoPi = 2.50662827463100050241; return rcp(beta * sqrtTwoPi) * exp(-0.5 * v * v); } @@ -245,13 +240,13 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) const float cuticleAngle = radians(surfaceData.cuticleAngle); bsdfData.cuticleAngleR = -cuticleAngle; bsdfData.cuticleAngleTT = cuticleAngle * 0.5; - bsdfData.cuticleAngleTRT = cuticleAngle * 3.0 * 0.5; + bsdfData.cuticleAngleTRT = cuticleAngle * 1.5; // Longitudinal Roughness - const float roughnessL = bsdfData.perceptualRoughness; - bsdfData.roughnessR = PerceptualRoughnessToRoughness(roughnessL); - bsdfData.roughnessTT = PerceptualRoughnessToRoughness(roughnessL * 0.5); - bsdfData.roughnessTRT = PerceptualRoughnessToRoughness(roughnessL * 2.0); + const float roughnessL = PerceptualRoughnessToRoughness(bsdfData.perceptualRoughness); + bsdfData.roughnessR = roughnessL; + bsdfData.roughnessTT = roughnessL * 0.5; + bsdfData.roughnessTRT = roughnessL * 2.0; // Azimuthal Roughness #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl index bca2f4943d2..8533befa5b8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/HairReference.hlsl @@ -126,9 +126,9 @@ float3 Attenuation(uint p, float h, float LdotV, float thetaD, float etaPrime, f // A = pow(1 - f, 2.0) * pow(f, p - 1) * pow(T, p); if (p == 1) - A = pow(1 - f, 2.0) * T; + A = Sq(1 - f) * T; else - A = pow(1 - f, 2.0) * f * (T * T); + A = Sq(1 - f) * f * Sq(T); } return A; @@ -261,7 +261,7 @@ float LongitudinalScattering(uint p, ReferenceInputs inputs) } #else const float thetaH = 0.5 * (thetaI + thetaR); - M = D_LongitudinalScatteringGaussian(thetaH - inputs.shifts[p], v); + M = D_LongitudinalScatteringGaussian(thetaH - inputs.shifts[p], v).x; #endif return M; @@ -345,10 +345,9 @@ CBSDF EvaluateMarschnerReference(float3 V, float3 L, BSDFData bsdfData) // Factored lobe representation. Sigma Sp(thetai, thetao, phi) = Mp(thetai, thetao) * Np(phi). for (uint p = 0; p < 3; p++) { - // TEMP: Lobe (R, TT, TRT, TRRT) selection - // if (p == 0) continue; - // if (p == 1) continue; - // if (p == 2) continue; + if (p == 0 && HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R)) continue; + if (p == 1 && HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT)) continue; + if (p == 2 && HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT)) continue; S += LongitudinalScattering(p, inputs) * AzimuthalScattering(p, inputs); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index abd3ef891c6..8188de06049 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -17,8 +17,6 @@ struct HairScatteringData #define HALF_SQRT_INV_PI 0.5 * 0.56418958354775628694 #define HALF_SQRT_3_DIV_PI 0.5 * 0.97720502380583984317 -#define HALF_SQRT_5_DIV_PI 0.5 * 1.26156626101008002412 -#define HALF_SQRT_15_DIV_PI 0.5 * 2.18509686118415814108 float DecodeHairStrandCount(float3 L, float4 strandCountProbe) { @@ -32,11 +30,6 @@ float DecodeHairStrandCount(float3 L, float4 strandCountProbe) return dot(strandCountProbe, Ylm); } -float3 ScatteringSpreadGaussian(float3 x, float3 v) -{ - return rsqrt(TWO_PI * v) * exp(-Sq(x) / (2 * v)); -} - // TODO: Currently the dual scattering approximation is assuming to be used for hair fibers, but it can be used for other // fiber materials (ie Fabric). It would be good to eventually generalize this and move it out of hair material evaluation. HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 beta, float sinThetaI) @@ -49,7 +42,7 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 // Prepare the sampling coordinate. float X = PerceptualRoughnessToPerceptualSmoothness(bsdfData.perceptualRoughness); float Y = abs(sinThetaI); - float3 Z = clamp((bsdfData.diffuseColor), 0.01, 0.99); // Need to clamp the absorption a bit due to artifacts at these boundaries. + float3 Z = clamp(bsdfData.diffuseColor, 0.01, 0.99); // Need to clamp the absorption a bit due to artifacts at these boundaries. // Sample the LUT for each color channel (wavelength). // Note that we parameterize by diffuse color, not absorption, to fit in [0, 1]. @@ -65,7 +58,7 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 { // Prepare the sampling coordiante float X = abs(sinThetaI); - float3 Y = clamp((bsdfData.diffuseColor), 0.01, 0.99); // Need to clamp the absorption a bit due to artifacts at these boundaries. + float3 Y = clamp(bsdfData.diffuseColor, 0.01, 0.99); // Need to clamp the absorption a bit due to artifacts at these boundaries. // Sample the LUT for each color channel (wavelength). // Note that we parameterize by diffuse color, not absorption, to fit in [0, 1]. @@ -78,40 +71,21 @@ HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 float3(R.z, G.z, B.z) ); } - // 2) Compute the average scattering variance + // 3) Compute the average scattering variance & shift { + const float3 af = scatteringData.averageScattering[FRONT]; + const float3 ab = scatteringData.averageScattering[BACK]; + // Here we should be deriving the average variance with the per-component (R, TT, TRT) // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. + float3 afW = af / dot(1, af); + float3 abW = ab / dot(1, ab); - // Front scattering (Disney Eq. 15) - { - const float3 af = scatteringData.averageScattering[FRONT]; - scatteringData.averageVariance[FRONT] = dot(beta, af) / (af.r + af.g + af.b); - } - - // Back scattering (Disney Eq. 16) - { - const float3 ab = scatteringData.averageScattering[BACK]; - scatteringData.averageVariance[BACK] = dot(beta, ab) / (ab.r + ab.g + ab.b); - } - } + scatteringData.averageVariance[FRONT] = dot(beta, afW); // Front scattering (Disney Eq. 15) + scatteringData.averageVariance[BACK] = dot(beta, abW); // Back scattering (Disney Eq. 16) - // 3) Compute the average scattering shift - { - // Here we should be deriving the average shift with the per-component (R, TT, TRT) - // BSDF average in the hemisphere, and not the BSDF average per-absorption channel. - - // Front scattering (Disney Eq. 13) - { - const float3 af = scatteringData.averageScattering[FRONT]; - scatteringData.averageShift[FRONT] = dot(alpha, af) / (af.r + af.g + af.b); - } - - // Back scattering (Disney Eq. 14) - { - const float3 ab = scatteringData.averageScattering[BACK]; - scatteringData.averageShift[BACK] = dot(alpha, ab) / (ab.r + ab.g + ab.b); - } + scatteringData.averageShift[FRONT] = dot(alpha, afW); // Front scattering (Disney Eq. 13) + scatteringData.averageShift[BACK] = dot(alpha, abW); // Back scattering (Disney Eq. 14) } return scatteringData; @@ -122,6 +96,8 @@ float3 EvaluateMultipleScattering(float3 L, float3 Fs, BSDFData bsdfData, float3 // Fetch the various preintegrated data. HairScatteringData hairScatteringData = GetHairScatteringData(bsdfData, alpha, beta, sinThetaI); + beta = clamp(0.2, 0.4, beta); + // Solve for multiple scattering in a volume of hair fibers with concepts from: // "Dual Scattering Approximation for Fast Multiple Scattering in Hair" (Zinke et. al) // "Efficient Implementation of the Dual Scattering Model in RenderMan" (Sadeghi et. al) @@ -199,15 +175,15 @@ float3 EvaluateMultipleScattering(float3 L, float3 Fs, BSDFData bsdfData, float3 float3 sigmaB = (1 + db * af2); sigmaB *= (ab * sqrt((2 * Bf2) + Bb2)) + (ab3 * sqrt((2 * Bf2) + Bb2)); sigmaB /= ab + (ab3 * ((2 * Bf) + (3 * Bb))); - sigmaB = Sq(sigmaB); + // sigmaB = Sq(sigmaB); // Computes the average back scattering spread ( Eq. 15 ). - float3 Sb = ScatteringSpreadGaussian(thetaH - deltaB, sigmaB + sigmaF); + float3 Sb = D_LongitudinalScatteringGaussian(thetaH - deltaB, sigmaB); // Resolve the overall local scattering term ( Eq. 9 & 10 ). float3 fsBack = db * 2 * Ab * Sb; - // Resolve the approximated multiple scattering. + // Resolve the approximated multiple scattering. (Approximate Eq. 22) // ------------------------------------------------------------------------------------ const float3 MG = D_LongitudinalScatteringGaussian(thetaH - alpha, beta + sigmaF); const float3 fsScatter = mul(MG, NG); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute index 4b0b71102ab..67fd5d05449 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScatteringPreIntegration.compute @@ -4,6 +4,8 @@ // This define is required for invoking BSDF. #define HAS_LIGHTLOOP +// #pragma enable_d3d11_debug_symbols + // Instead of indirectly setting up the angles we inform the BSDF that we will be explicitly setting them. // #define HAIR_OVERRIDE_ANGLE_BSDF @@ -44,7 +46,8 @@ SurfaceData ConfigureFiberSurface(float diffuseColor, float perceptualSmoothness surfaceData.perceptualSmoothness = perceptualSmoothness; // Radial Smoothness (Azimuthal Roughness). - surfaceData.perceptualRadialSmoothness = 0.3; + // TODO: Currently we don't support azimuthal roughness with dual scattering. + // surfaceData.perceptualRadialSmoothness = 0.3; // Cuticle Angle surfaceData.cuticleAngle = 3; @@ -179,10 +182,9 @@ void PreIntegrateAzimuthalScattering (uint2 dispatchThreadID : SV_DispatchThread float3 V = float3(-1, 0, 0); float3 A = 0; - uint C = 0; // Integrate over all incident phi. - for (float phi = -HALF_PI; phi < HALF_PI; phi += DPHI) + for (float phi = HALF_PI; phi < PI; phi += DPHI) { // Places a light on the back scattering hemisphere (due to the constriction of phi to the -pi/2 to pi/2 range). float3 L = SphericalToCartesian(phi, sinThetaI); @@ -192,12 +194,10 @@ void PreIntegrateAzimuthalScattering (uint2 dispatchThreadID : SV_DispatchThread CBSDF cbsdfTT = EvaluateBSDF(V, L, preLightData, bsdfDataTT); CBSDF cbsdfTRT = EvaluateBSDF(V, L, preLightData, bsdfDataTRT); - A += float3( cbsdfR.specR.x, - cbsdfTT.specR.x, - cbsdfTRT.specR.x ); - - C++; + A += float3( cbsdfR.specR.x, + cbsdfTT.specR.x, + cbsdfTRT.specR.x ) * DPHI; } - _PreIntegratedAverageHairFiberScatteringUAV[dispatchThreadID] = (2 / PI) * float4(A / float(C), 1); + _PreIntegratedAverageHairFiberScatteringUAV[dispatchThreadID] = (2 / PI) * float4(A, 1); } From 0ace987d077ec0deebd022ae3054f7fdb303bcd3 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 15 Sep 2021 02:42:56 -0400 Subject: [PATCH 64/73] Add spline shadow bias --- .../Material/Hair/ShaderGraph/HairSubTarget.cs | 1 + .../Hair/ShaderGraph/ShaderPass.template.hlsl | 1 + .../Editor/Material/ShaderGraph/HDBlockFields.cs | 2 ++ .../Runtime/Lighting/LightLoop/LightLoop.hlsl | 4 ++-- .../Runtime/Lighting/SurfaceShading.hlsl | 4 ++-- .../Runtime/Material/AxF/AxF.hlsl | 2 +- .../Runtime/Material/Eye/Eye.hlsl | 2 +- .../Runtime/Material/Fabric/Fabric.hlsl | 2 +- .../Runtime/Material/Hair/Hair.cs | 3 +++ .../Runtime/Material/Hair/Hair.cs.hlsl | 10 ++++++++++ .../Runtime/Material/Hair/Hair.hlsl | 13 +++++-------- .../Runtime/Material/Lit/Lit.hlsl | 2 +- .../Runtime/Material/Lit/SimpleLit.hlsl | 2 +- .../Runtime/Material/StackLit/StackLit.hlsl | 2 +- .../Raytracing/Shaders/RaytracingLightLoop.hlsl | 2 +- 15 files changed, 33 insertions(+), 19 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 954318b2a27..61468cb643e 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -116,6 +116,7 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) // Dual Scattering Inputs (Global Scattering) // Right now these inputs are provided by the demo team hair package. context.AddBlock(HDBlockFields.SurfaceDescription.StrandCountProbe, useAdvancedMultipleScattering); + context.AddBlock(HDBlockFields.SurfaceDescription.SplineShadowBias, useAdvancedMultipleScattering); } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl index d256f206f30..138e994d521 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl @@ -46,6 +46,7 @@ void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDes $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; $SurfaceDescription.StrandCountProbe: surfaceData.strandCountProbe = surfaceDescription.StrandCountProbe; + $SurfaceDescription.SplineShadowBias: surfaceData.splineShadowBias = surfaceDescription.SplineShadowBias; // These static material feature allow compile time optimization surfaceData.materialFeatures = 0; diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index e2f9e2e4863..5838ce0eb21 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -132,6 +132,8 @@ public struct SurfaceDescription new FloatControl(3f), ShaderStage.Fragment); public static BlockFieldDescriptor StrandCountProbe = new BlockFieldDescriptor(SurfaceDescription.name, "StrandCountProbe", "Strand Count Probe", "SURFACEDESCRIPTION_STRANDCOUNTPROBE", new Vector4Control(Vector4.zero), ShaderStage.Fragment); + public static BlockFieldDescriptor SplineShadowBias = new BlockFieldDescriptor(SurfaceDescription.name, "SplineShadowBias", "Spline Shadow Bias", "SURFACEDESCRIPTION_SPLINESHADOWBIAS", + new FloatControl(0f), ShaderStage.Fragment); // -------------------------------------------------- // StackLit diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index 337106ac8d0..2412a0b703a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -147,7 +147,7 @@ void ApplyDebug(LightLoopContext context, PositionInputs posInput, BSDFData bsdf { float3 L = -light.forward; shadow = GetDirectionalShadowAttenuation(context.shadowContext, - posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), + posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(L, bsdfData), light.shadowIndex, L); } } @@ -234,7 +234,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS !ShouldEvaluateThickObjectTransmission(V, L, preLightData, bsdfData, light.shadowIndex)) { context.shadowValue = GetDirectionalShadowAttenuation(context.shadowContext, - posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), + posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(L, bsdfData), light.shadowIndex, L); } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl index 1619f52dbf2..ec93ebdeadb 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl @@ -92,7 +92,7 @@ DirectLighting ShadeSurface_Directional(LightLoopContext lightLoopContext, else #endif { - SHADOW_TYPE shadow = EvaluateShadow_Directional(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData)); + SHADOW_TYPE shadow = EvaluateShadow_Directional(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(L, bsdfData)); float NdotL = dot(bsdfData.normalWS, L); // No microshadowing when facing away from light (use for thin transmission as well) shadow *= NdotL >= 0.0 ? ComputeMicroShadowing(GetAmbientOcclusionForMicroShadowing(bsdfData), NdotL, _MicroShadowOpacity) : 1.0; lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); @@ -176,7 +176,7 @@ DirectLighting ShadeSurface_Punctual(LightLoopContext lightLoopContext, #endif { // This code works for both surface reflection and thin object transmission. - SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances); + SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(L, bsdfData), L, distances); lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); #ifdef DEBUG_DISPLAY diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.hlsl index 37ffd0e3e9f..06b18767f59 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.hlsl @@ -954,7 +954,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(lerp(diffuseColor, fresnel0, weight * replace), weight); } -float3 GetNormalForShadowBias(BSDFData bsdfData) +float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) { return bsdfData.geomNormalWS; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Eye/Eye.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Eye/Eye.hlsl index be45e672f94..24c85ba4eb7 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Eye/Eye.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Eye/Eye.hlsl @@ -25,7 +25,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(bsdfData.diffuseColor, 0.0); } -float3 GetNormalForShadowBias(BSDFData bsdfData) +float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) { return bsdfData.geomNormalWS; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Fabric/Fabric.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Fabric/Fabric.hlsl index 5336bb0cb7b..1e8d613947c 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Fabric/Fabric.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Fabric/Fabric.hlsl @@ -28,7 +28,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(bsdfData.diffuseColor, 0.0); } -float3 GetNormalForShadowBias(BSDFData bsdfData) +float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) { return bsdfData.geomNormalWS; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 72e011d91cc..8ab36a0ea44 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -83,6 +83,8 @@ public struct SurfaceData // Global Scattering [SurfaceDataAttributes("Strand Count Probe")] public Vector4 strandCountProbe; + [SurfaceDataAttributes("Spline Shadow Bias")] + public float splineShadowBias; }; //----------------------------------------------------------------------------- @@ -151,6 +153,7 @@ public struct BSDFData // Global Scattering public Vector4 strandCountProbe; + public float splineShadowBias; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 6789476c4cf..239b807e75d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -33,6 +33,7 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1417) #define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1418) #define DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_PROBE (1419) +#define DEBUGVIEW_HAIR_SURFACEDATA_SPLINE_SHADOW_BIAS (1420) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -72,6 +73,7 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) #define DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_PROBE (1484) +#define DEBUGVIEW_HAIR_BSDFDATA_SPLINE_SHADOW_BIAS (1485) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -95,6 +97,7 @@ struct SurfaceData float perceptualRadialSmoothness; float cuticleAngle; float4 strandCountProbe; + float splineShadowBias; }; // Generated from UnityEngine.Rendering.HighDefinition.Hair+BSDFData @@ -134,6 +137,7 @@ struct BSDFData float roughnessTRT; float roughnessRadial; float4 strandCountProbe; + float splineShadowBias; }; // @@ -206,6 +210,9 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f case DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_PROBE: result = surfacedata.strandCountProbe.xyz; break; + case DEBUGVIEW_HAIR_SURFACEDATA_SPLINE_SHADOW_BIAS: + result = surfacedata.splineShadowBias.xxx; + break; } } @@ -322,6 +329,9 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_PROBE: result = bsdfdata.strandCountProbe.xyz; break; + case DEBUGVIEW_HAIR_BSDFDATA_SPLINE_SHADOW_BIAS: + result = bsdfdata.splineShadowBias.xxx; + break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 303fa4f61c9..3c1e219e83a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -26,10 +26,7 @@ // #define HAIR_DISPLAY_REFERENCE_IBL #if _USE_ADVANCED_MULTIPLE_SCATTERING - -// Temporary until we introduce spline bias toward light. -#define LIGHT_EVALUATION_NO_SHADOWS - +#define LIGHT_EVALUATION_SHADOW_BIAS_SPLINE #endif // Extra material feature flag we utilize to compile different versions of BSDF evaluation (for pre-integration, etc.) @@ -86,11 +83,10 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(bsdfData.diffuseColor, 0.0); } -float3 GetNormalForShadowBias(BSDFData bsdfData) +float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) { -#if _USE_LIGHT_FACING_NORMAL - // TODO: should probably bias towards the light for splines... - return bsdfData.geomNormalWS; +#ifdef LIGHT_EVALUATION_SHADOW_BIAS_SPLINE + return L * bsdfData.splineShadowBias; #else return bsdfData.geomNormalWS; #endif @@ -262,6 +258,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) #if _USE_ADVANCED_MULTIPLE_SCATTERING bsdfData.strandCountProbe = surfaceData.strandCountProbe; + bsdfData.splineShadowBias = surfaceData.splineShadowBias * 100; #endif } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl index 29d0c121ba0..035c046dfeb 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl @@ -181,7 +181,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(lerp(bsdfData.diffuseColor, bsdfData.fresnel0, weight * replace), weight); } -float3 GetNormalForShadowBias(BSDFData bsdfData) +float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) { // In forward we can used geometric normal for shadow bias which improve quality #if (SHADERPASS == SHADERPASS_FORWARD) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/SimpleLit.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/SimpleLit.hlsl index b420caa939d..b86cc0b8ddb 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/SimpleLit.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/SimpleLit.hlsl @@ -27,7 +27,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(lerp(bsdfData.diffuseColor, bsdfData.fresnel0, weight * replace), weight); } -float3 GetNormalForShadowBias(BSDFData bsdfData) +float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) { // In forward we can used geometric normal for shadow bias which improve quality #if (SHADERPASS == SHADERPASS_FORWARD) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/StackLit/StackLit.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/StackLit/StackLit.hlsl index de18a0d03f0..c539fbd9116 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/StackLit/StackLit.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/StackLit/StackLit.hlsl @@ -217,7 +217,7 @@ void GetAmbientOcclusionFactor(float3 indirectAmbientOcclusion, float3 indirectS // Helper functions/variable specific to this material //----------------------------------------------------------------------------- -float3 GetNormalForShadowBias(BSDFData bsdfData) +float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) { return bsdfData.geomNormalWS; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl index 79af86856d8..171bbc9b14b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl @@ -33,7 +33,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS !ShouldEvaluateThickObjectTransmission(V, L, preLightData, bsdfData, light.shadowIndex)) { int shadowSplitIndex; - context.shadowValue = EvalShadow_CascadedDepth_Dither_SplitIndex(context.shadowContext, _ShadowmapCascadeAtlas, s_linear_clamp_compare_sampler, posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L, shadowSplitIndex); + context.shadowValue = EvalShadow_CascadedDepth_Dither_SplitIndex(context.shadowContext, _ShadowmapCascadeAtlas, s_linear_clamp_compare_sampler, posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(L, bsdfData), light.shadowIndex, L, shadowSplitIndex); if (shadowSplitIndex < 0.0) { context.shadowValue = _DirectionalShadowFallbackIntensity; From c74563cb2f821fd6321483e58cf9aa662c738215 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 15 Sep 2021 02:55:34 -0400 Subject: [PATCH 65/73] Update test images --- .../Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png | 4 ++-- .../Linear/OSXEditor/Metal/None/1401_HairGraph.png | 4 ++-- .../Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png | 4 ++-- .../Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png | 4 ++-- .../Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png index a58889178d5..1edadd05c05 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 -size 118320 +oid sha256:f7850a3100c4a9a1e1311ebe164a3a20c7ec9bc182c1b9803a976d13a0729e7d +size 118129 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png index a58889178d5..1edadd05c05 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 -size 118320 +oid sha256:f7850a3100c4a9a1e1311ebe164a3a20c7ec9bc182c1b9803a976d13a0729e7d +size 118129 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png index a58889178d5..1edadd05c05 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 -size 118320 +oid sha256:f7850a3100c4a9a1e1311ebe164a3a20c7ec9bc182c1b9803a976d13a0729e7d +size 118129 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png index a58889178d5..1edadd05c05 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 -size 118320 +oid sha256:f7850a3100c4a9a1e1311ebe164a3a20c7ec9bc182c1b9803a976d13a0729e7d +size 118129 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png index a58889178d5..1edadd05c05 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f319519ed67862d7bfd99005f16bca45823a1e61b445707232d944414b358f24 -size 118320 +oid sha256:f7850a3100c4a9a1e1311ebe164a3a20c7ec9bc182c1b9803a976d13a0729e7d +size 118129 From e824b316c5f06d6f1885bd0f0e2fd3d3f02f7977 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Wed, 15 Sep 2021 08:49:50 -0400 Subject: [PATCH 66/73] Update reference images for Vulkan and Metal + re-run --- .../Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png | 4 ++-- .../Linear/OSXEditor/Metal/None/1401_HairGraph.png | 4 ++-- .../Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png index 1edadd05c05..023fe3a1bbb 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7850a3100c4a9a1e1311ebe164a3a20c7ec9bc182c1b9803a976d13a0729e7d -size 118129 +oid sha256:fa40242b3892d08220c2c0a1540ecf2adf9d25cb4df6fe3ebcd0354fc02d731c +size 116205 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png index 1edadd05c05..88aa1fd3114 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7850a3100c4a9a1e1311ebe164a3a20c7ec9bc182c1b9803a976d13a0729e7d -size 118129 +oid sha256:6521a7c072681dc845922bc1178715aa529ce60a458b2331438d74f40539f5be +size 118104 diff --git a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png index 1edadd05c05..32b395d6c53 100644 --- a/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png +++ b/TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Vulkan/None/1401_HairGraph.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7850a3100c4a9a1e1311ebe164a3a20c7ec9bc182c1b9803a976d13a0729e7d -size 118129 +oid sha256:d70ae3d0457e5a1529716a24f6735a567b3a23e11806a6710ca80a2b31ad7c14 +size 116171 From ca3ac530cc6221988bf53c0a1b2ac0de21d67df9 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 16 Sep 2021 10:05:34 -0400 Subject: [PATCH 67/73] Change the default azimuthal from 0.3 -> 0.8 --- .../Runtime/Material/Hair/Hair.hlsl | 15 ++++++-------- .../HairMultipleScattering.hlsl | 20 +++++++++++-------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 3c1e219e83a..4ec91e1f83d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -249,8 +249,9 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) bsdfData.roughnessRadial = PerceptualSmoothnessToRoughness(surfaceData.perceptualRadialSmoothness); #else // Need to provide some sensible default in case of no roughened azimuthal scattering, since currently our - // absorption is dependent on it. - bsdfData.roughnessRadial = 0.3; + // absorption is dependent on it. 0.3 is generally a good default for hair, but 0.8 seems to get us closer + // to an absorption that better matches the Kajiya diffuse component. + bsdfData.roughnessRadial = 0.8; #endif // Absorption @@ -518,7 +519,7 @@ void GetMarschnerAngle(float3 T, float3 V, float3 L, // Projection onto the normal plane, and since phi is the relative angle, we take the cosine in this projection. float3 LProj = L - sinThetaI * T; float3 VProj = V - sinThetaR * T; - cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj) + 0.0001); // Small epsilon to combat potential nans + cosPhi = dot(LProj, VProj) * rsqrt(dot(LProj, LProj) * dot(VProj, VProj) + 0.0001); // zero-div guard } CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfData) @@ -633,6 +634,7 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD } // Solve the first three lobes (R, TT, TRT). + // TODO: Residual TRRT+ Lobe. (accounts for ~15% energy otherwise lost by the first three lobes). // R if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R)) @@ -668,13 +670,8 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // TRT if (!HasFlag(bsdfData.materialFeatures, MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TRT)) { - // TODO: Move this out of the BSDF evaluation. - #if _USE_ROUGHENED_AZIMUTHAL_SCATTERING // This lobe's distribution is determined by Frostbite's improvement over Karis' TRT approximation (maintaining Azimuthal Roughness). - float scaleFactor = saturate(1.5 * (1 - bsdfData.roughnessRadial)); - #else - float scaleFactor = 1; - #endif + const float scaleFactor = saturate(1.5 * (1 - bsdfData.roughnessRadial)); D = scaleFactor * exp(scaleFactor * (17.0 * cosPhi - 16.78)); // Attenutation (Simplified for H = √3/2) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index 8188de06049..af957b54a25 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -15,9 +15,10 @@ struct HairScatteringData float3x3 NG; }; -#define HALF_SQRT_INV_PI 0.5 * 0.56418958354775628694 -#define HALF_SQRT_3_DIV_PI 0.5 * 0.97720502380583984317 +#define HALF_SQRT_INV_PI 0.28209479177387814347 +#define HALF_SQRT_3_DIV_PI 0.48860251190291992158 +// Returns the approximate strand count in direction L from an L1 band spherical harmonic. float DecodeHairStrandCount(float3 L, float4 strandCountProbe) { float4 Ylm = float4( @@ -178,18 +179,21 @@ float3 EvaluateMultipleScattering(float3 L, float3 Fs, BSDFData bsdfData, float3 // sigmaB = Sq(sigmaB); // Computes the average back scattering spread ( Eq. 15 ). - float3 Sb = D_LongitudinalScatteringGaussian(thetaH - deltaB, sigmaB); + // float3 Sb = D_LongitudinalScatteringGaussian(thetaH - deltaB, sigmaB); - // Resolve the overall local scattering term ( Eq. 9 & 10 ). - float3 fsBack = db * 2 * Ab * Sb; + // Resolve the overall local scattering term ( Eq. 19 & 20 Disney ). + float3 fsBackDirect = db * 2 * Ab * D_LongitudinalScatteringGaussian(thetaH - deltaB, sigmaB); + float3 fsBackScatter = db * 2 * Ab * D_LongitudinalScatteringGaussian(thetaH - deltaB, sigmaB + sigmaF); // Resolve the approximated multiple scattering. (Approximate Eq. 22) // ------------------------------------------------------------------------------------ const float3 MG = D_LongitudinalScatteringGaussian(thetaH - alpha, beta + sigmaF); const float3 fsScatter = mul(MG, NG); - const float3 Fdirect = directFraction * (Fs + fsBack); - const float3 Fscatter = (Tf - directFraction) * df * (fsScatter + PI * fsBack); + const float3 Fdirect = directFraction * (Fs + fsBackDirect); + const float3 Fscatter = (Tf - directFraction) * df * (fsScatter + PI * fsBackScatter); + const float3 F = (Fdirect + Fscatter) * sqrt(1 - Sq(sinThetaI)); + + return max(F, 0); - return max(Fdirect + Fscatter, 0); } From 39500a927b53fffd8a36a66de57f17771e47b989 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 16 Sep 2021 10:07:57 -0400 Subject: [PATCH 68/73] Revert "Add spline shadow bias" This reverts commit 0ace987d077ec0deebd022ae3054f7fdb303bcd3. --- .../Material/Hair/ShaderGraph/HairSubTarget.cs | 1 - .../Hair/ShaderGraph/ShaderPass.template.hlsl | 1 - .../Editor/Material/ShaderGraph/HDBlockFields.cs | 2 -- .../Runtime/Lighting/LightLoop/LightLoop.hlsl | 4 ++-- .../Runtime/Lighting/SurfaceShading.hlsl | 4 ++-- .../Runtime/Material/AxF/AxF.hlsl | 2 +- .../Runtime/Material/Eye/Eye.hlsl | 2 +- .../Runtime/Material/Fabric/Fabric.hlsl | 2 +- .../Runtime/Material/Hair/Hair.cs | 3 --- .../Runtime/Material/Hair/Hair.cs.hlsl | 10 ---------- .../Runtime/Material/Hair/Hair.hlsl | 13 ++++++++----- .../Runtime/Material/Lit/Lit.hlsl | 2 +- .../Runtime/Material/Lit/SimpleLit.hlsl | 2 +- .../Runtime/Material/StackLit/StackLit.hlsl | 2 +- .../Raytracing/Shaders/RaytracingLightLoop.hlsl | 2 +- 15 files changed, 19 insertions(+), 33 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 61468cb643e..954318b2a27 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -116,7 +116,6 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) // Dual Scattering Inputs (Global Scattering) // Right now these inputs are provided by the demo team hair package. context.AddBlock(HDBlockFields.SurfaceDescription.StrandCountProbe, useAdvancedMultipleScattering); - context.AddBlock(HDBlockFields.SurfaceDescription.SplineShadowBias, useAdvancedMultipleScattering); } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl index 138e994d521..d256f206f30 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl @@ -46,7 +46,6 @@ void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDes $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; $SurfaceDescription.StrandCountProbe: surfaceData.strandCountProbe = surfaceDescription.StrandCountProbe; - $SurfaceDescription.SplineShadowBias: surfaceData.splineShadowBias = surfaceDescription.SplineShadowBias; // These static material feature allow compile time optimization surfaceData.materialFeatures = 0; diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index 5838ce0eb21..e2f9e2e4863 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -132,8 +132,6 @@ public struct SurfaceDescription new FloatControl(3f), ShaderStage.Fragment); public static BlockFieldDescriptor StrandCountProbe = new BlockFieldDescriptor(SurfaceDescription.name, "StrandCountProbe", "Strand Count Probe", "SURFACEDESCRIPTION_STRANDCOUNTPROBE", new Vector4Control(Vector4.zero), ShaderStage.Fragment); - public static BlockFieldDescriptor SplineShadowBias = new BlockFieldDescriptor(SurfaceDescription.name, "SplineShadowBias", "Spline Shadow Bias", "SURFACEDESCRIPTION_SPLINESHADOWBIAS", - new FloatControl(0f), ShaderStage.Fragment); // -------------------------------------------------- // StackLit diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index 3a106bf1e70..190b4559d5b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -141,7 +141,7 @@ void ApplyDebug(LightLoopContext context, PositionInputs posInput, BSDFData bsdf { float3 L = -light.forward; shadow = GetDirectionalShadowAttenuation(context.shadowContext, - posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(L, bsdfData), + posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L); } } @@ -228,7 +228,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS !ShouldEvaluateThickObjectTransmission(V, L, preLightData, bsdfData, light.shadowIndex)) { context.shadowValue = GetDirectionalShadowAttenuation(context.shadowContext, - posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(L, bsdfData), + posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L); } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl index ec93ebdeadb..1619f52dbf2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl @@ -92,7 +92,7 @@ DirectLighting ShadeSurface_Directional(LightLoopContext lightLoopContext, else #endif { - SHADOW_TYPE shadow = EvaluateShadow_Directional(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(L, bsdfData)); + SHADOW_TYPE shadow = EvaluateShadow_Directional(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData)); float NdotL = dot(bsdfData.normalWS, L); // No microshadowing when facing away from light (use for thin transmission as well) shadow *= NdotL >= 0.0 ? ComputeMicroShadowing(GetAmbientOcclusionForMicroShadowing(bsdfData), NdotL, _MicroShadowOpacity) : 1.0; lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); @@ -176,7 +176,7 @@ DirectLighting ShadeSurface_Punctual(LightLoopContext lightLoopContext, #endif { // This code works for both surface reflection and thin object transmission. - SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(L, bsdfData), L, distances); + SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances); lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); #ifdef DEBUG_DISPLAY diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.hlsl index 06b18767f59..37ffd0e3e9f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.hlsl @@ -954,7 +954,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(lerp(diffuseColor, fresnel0, weight * replace), weight); } -float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) +float3 GetNormalForShadowBias(BSDFData bsdfData) { return bsdfData.geomNormalWS; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Eye/Eye.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Eye/Eye.hlsl index 24c85ba4eb7..be45e672f94 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Eye/Eye.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Eye/Eye.hlsl @@ -25,7 +25,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(bsdfData.diffuseColor, 0.0); } -float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) +float3 GetNormalForShadowBias(BSDFData bsdfData) { return bsdfData.geomNormalWS; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Fabric/Fabric.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Fabric/Fabric.hlsl index 1e8d613947c..5336bb0cb7b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Fabric/Fabric.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Fabric/Fabric.hlsl @@ -28,7 +28,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(bsdfData.diffuseColor, 0.0); } -float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) +float3 GetNormalForShadowBias(BSDFData bsdfData) { return bsdfData.geomNormalWS; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 8ab36a0ea44..72e011d91cc 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -83,8 +83,6 @@ public struct SurfaceData // Global Scattering [SurfaceDataAttributes("Strand Count Probe")] public Vector4 strandCountProbe; - [SurfaceDataAttributes("Spline Shadow Bias")] - public float splineShadowBias; }; //----------------------------------------------------------------------------- @@ -153,7 +151,6 @@ public struct BSDFData // Global Scattering public Vector4 strandCountProbe; - public float splineShadowBias; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 239b807e75d..6789476c4cf 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -33,7 +33,6 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1417) #define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1418) #define DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_PROBE (1419) -#define DEBUGVIEW_HAIR_SURFACEDATA_SPLINE_SHADOW_BIAS (1420) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -73,7 +72,6 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) #define DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_PROBE (1484) -#define DEBUGVIEW_HAIR_BSDFDATA_SPLINE_SHADOW_BIAS (1485) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -97,7 +95,6 @@ struct SurfaceData float perceptualRadialSmoothness; float cuticleAngle; float4 strandCountProbe; - float splineShadowBias; }; // Generated from UnityEngine.Rendering.HighDefinition.Hair+BSDFData @@ -137,7 +134,6 @@ struct BSDFData float roughnessTRT; float roughnessRadial; float4 strandCountProbe; - float splineShadowBias; }; // @@ -210,9 +206,6 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f case DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_PROBE: result = surfacedata.strandCountProbe.xyz; break; - case DEBUGVIEW_HAIR_SURFACEDATA_SPLINE_SHADOW_BIAS: - result = surfacedata.splineShadowBias.xxx; - break; } } @@ -329,9 +322,6 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_PROBE: result = bsdfdata.strandCountProbe.xyz; break; - case DEBUGVIEW_HAIR_BSDFDATA_SPLINE_SHADOW_BIAS: - result = bsdfdata.splineShadowBias.xxx; - break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 4ec91e1f83d..cabf04d08b1 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -26,7 +26,10 @@ // #define HAIR_DISPLAY_REFERENCE_IBL #if _USE_ADVANCED_MULTIPLE_SCATTERING -#define LIGHT_EVALUATION_SHADOW_BIAS_SPLINE + +// Temporary until we introduce spline bias toward light. +#define LIGHT_EVALUATION_NO_SHADOWS + #endif // Extra material feature flag we utilize to compile different versions of BSDF evaluation (for pre-integration, etc.) @@ -83,10 +86,11 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(bsdfData.diffuseColor, 0.0); } -float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) +float3 GetNormalForShadowBias(BSDFData bsdfData) { -#ifdef LIGHT_EVALUATION_SHADOW_BIAS_SPLINE - return L * bsdfData.splineShadowBias; +#if _USE_LIGHT_FACING_NORMAL + // TODO: should probably bias towards the light for splines... + return bsdfData.geomNormalWS; #else return bsdfData.geomNormalWS; #endif @@ -259,7 +263,6 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) #if _USE_ADVANCED_MULTIPLE_SCATTERING bsdfData.strandCountProbe = surfaceData.strandCountProbe; - bsdfData.splineShadowBias = surfaceData.splineShadowBias * 100; #endif } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl index 56a2a5e02cc..f391c7bf599 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl @@ -181,7 +181,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(lerp(bsdfData.diffuseColor, bsdfData.fresnel0, weight * replace), weight); } -float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) +float3 GetNormalForShadowBias(BSDFData bsdfData) { // In forward we can used geometric normal for shadow bias which improve quality #if (SHADERPASS == SHADERPASS_FORWARD) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/SimpleLit.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/SimpleLit.hlsl index fb16a5049b9..0748c7e8119 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/SimpleLit.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/SimpleLit.hlsl @@ -27,7 +27,7 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) return float4(lerp(bsdfData.diffuseColor, bsdfData.fresnel0, weight * replace), weight); } -float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) +float3 GetNormalForShadowBias(BSDFData bsdfData) { // In forward we can used geometric normal for shadow bias which improve quality #if (SHADERPASS == SHADERPASS_FORWARD) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/StackLit/StackLit.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/StackLit/StackLit.hlsl index c539fbd9116..de18a0d03f0 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/StackLit/StackLit.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/StackLit/StackLit.hlsl @@ -217,7 +217,7 @@ void GetAmbientOcclusionFactor(float3 indirectAmbientOcclusion, float3 indirectS // Helper functions/variable specific to this material //----------------------------------------------------------------------------- -float3 GetNormalForShadowBias(float3 L, BSDFData bsdfData) +float3 GetNormalForShadowBias(BSDFData bsdfData) { return bsdfData.geomNormalWS; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl index 171bbc9b14b..79af86856d8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl @@ -33,7 +33,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS !ShouldEvaluateThickObjectTransmission(V, L, preLightData, bsdfData, light.shadowIndex)) { int shadowSplitIndex; - context.shadowValue = EvalShadow_CascadedDepth_Dither_SplitIndex(context.shadowContext, _ShadowmapCascadeAtlas, s_linear_clamp_compare_sampler, posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(L, bsdfData), light.shadowIndex, L, shadowSplitIndex); + context.shadowValue = EvalShadow_CascadedDepth_Dither_SplitIndex(context.shadowContext, _ShadowmapCascadeAtlas, s_linear_clamp_compare_sampler, posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L, shadowSplitIndex); if (shadowSplitIndex < 0.0) { context.shadowValue = _DirectionalShadowFallbackIntensity; From 94e33bfe7aa31036b39c046a5ebdd207c61b97e6 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 16 Sep 2021 10:27:47 -0400 Subject: [PATCH 69/73] Add back the strand shadow bias property --- .../Editor/Material/Hair/ShaderGraph/HairSubTarget.cs | 2 +- .../Material/Hair/ShaderGraph/ShaderPass.template.hlsl | 1 + .../Editor/Material/ShaderGraph/HDBlockFields.cs | 2 ++ .../Runtime/Material/Hair/Hair.cs | 3 +++ .../Runtime/Material/Hair/Hair.cs.hlsl | 10 ++++++++++ .../Runtime/Material/Hair/Hair.hlsl | 1 + 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs index 954318b2a27..207d346b57d 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairSubTarget.cs @@ -114,8 +114,8 @@ public override void GetActiveBlocks(ref TargetActiveBlockContext context) // Right now, the Marschner model implicitly assumes a human hair IOR of 1.55. // Dual Scattering Inputs (Global Scattering) - // Right now these inputs are provided by the demo team hair package. context.AddBlock(HDBlockFields.SurfaceDescription.StrandCountProbe, useAdvancedMultipleScattering); + context.AddBlock(HDBlockFields.SurfaceDescription.StrandShadowBias, useAdvancedMultipleScattering); } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl index d256f206f30..3a58bf2544e 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/ShaderPass.template.hlsl @@ -46,6 +46,7 @@ void BuildSurfaceData(FragInputs fragInputs, inout SurfaceDescription surfaceDes $SurfaceDescription.CuticleAngle: surfaceData.cuticleAngle = surfaceDescription.CuticleAngle; $SurfaceDescription.StrandCountProbe: surfaceData.strandCountProbe = surfaceDescription.StrandCountProbe; + $SurfaceDescription.StrandShadowBias: surfaceData.strandShadowBias = surfaceDescription.StrandShadowBias; // These static material feature allow compile time optimization surfaceData.materialFeatures = 0; diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs index e2f9e2e4863..a04f7eb5dbc 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDBlockFields.cs @@ -132,6 +132,8 @@ public struct SurfaceDescription new FloatControl(3f), ShaderStage.Fragment); public static BlockFieldDescriptor StrandCountProbe = new BlockFieldDescriptor(SurfaceDescription.name, "StrandCountProbe", "Strand Count Probe", "SURFACEDESCRIPTION_STRANDCOUNTPROBE", new Vector4Control(Vector4.zero), ShaderStage.Fragment); + public static BlockFieldDescriptor StrandShadowBias = new BlockFieldDescriptor(SurfaceDescription.name, "StrandShadowBias", "Strand Shadow Bias", "SURFACEDESCRIPTION_STRANDSHADOWBIAS", + new FloatControl(0f), ShaderStage.Fragment); // -------------------------------------------------- // StackLit diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index 72e011d91cc..ea85046b595 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -83,6 +83,8 @@ public struct SurfaceData // Global Scattering [SurfaceDataAttributes("Strand Count Probe")] public Vector4 strandCountProbe; + [SurfaceDataAttributes("Strand Shadow Bias")] + public float strandShadowBias; }; //----------------------------------------------------------------------------- @@ -151,6 +153,7 @@ public struct BSDFData // Global Scattering public Vector4 strandCountProbe; + public float strandShadowBias; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 6789476c4cf..3fff8bfcd69 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -33,6 +33,7 @@ #define DEBUGVIEW_HAIR_SURFACEDATA_AZIMUTHAL_ROUGHNESS (1417) #define DEBUGVIEW_HAIR_SURFACEDATA_CUTICLE_ANGLE (1418) #define DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_PROBE (1419) +#define DEBUGVIEW_HAIR_SURFACEDATA_STRAND_SHADOW_BIAS (1420) // // UnityEngine.Rendering.HighDefinition.Hair+BSDFData: static fields @@ -72,6 +73,7 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_TRT (1482) #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) #define DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_PROBE (1484) +#define DEBUGVIEW_HAIR_BSDFDATA_STRAND_SHADOW_BIAS (1485) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -95,6 +97,7 @@ struct SurfaceData float perceptualRadialSmoothness; float cuticleAngle; float4 strandCountProbe; + float strandShadowBias; }; // Generated from UnityEngine.Rendering.HighDefinition.Hair+BSDFData @@ -134,6 +137,7 @@ struct BSDFData float roughnessTRT; float roughnessRadial; float4 strandCountProbe; + float strandShadowBias; }; // @@ -206,6 +210,9 @@ void GetGeneratedSurfaceDataDebug(uint paramId, SurfaceData surfacedata, inout f case DEBUGVIEW_HAIR_SURFACEDATA_STRAND_COUNT_PROBE: result = surfacedata.strandCountProbe.xyz; break; + case DEBUGVIEW_HAIR_SURFACEDATA_STRAND_SHADOW_BIAS: + result = surfacedata.strandShadowBias.xxx; + break; } } @@ -322,6 +329,9 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_PROBE: result = bsdfdata.strandCountProbe.xyz; break; + case DEBUGVIEW_HAIR_BSDFDATA_STRAND_SHADOW_BIAS: + result = bsdfdata.strandShadowBias.xxx; + break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index cabf04d08b1..2045e7f54b8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -263,6 +263,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) #if _USE_ADVANCED_MULTIPLE_SCATTERING bsdfData.strandCountProbe = surfaceData.strandCountProbe; + bsdfData.strandShadowBias = surfaceData.strandShadowBias; #endif } From cb28ef72c676011813557b596aa499e0e45db7da Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 16 Sep 2021 13:29:21 -0400 Subject: [PATCH 70/73] Incorporate spline shadow bias to light loop for analytic light shadow maps. --- .../Runtime/Lighting/LightLoop/LightLoop.hlsl | 7 +++++- .../Runtime/Lighting/SurfaceShading.hlsl | 3 +++ .../Runtime/Material/Hair/Hair.hlsl | 24 +++++++++---------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index 190b4559d5b..1dd1a6cdae5 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -227,8 +227,13 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS IsNonZeroBSDF(V, L, preLightData, bsdfData) && !ShouldEvaluateThickObjectTransmission(V, L, preLightData, bsdfData, light.shadowIndex)) { + float3 positionWS = posInput.positionWS; + +#ifdef LIGHT_EVALUATION_SPLINE_SHADOW_BIAS + positionWS += GetNormalForShadowBiasSpline(bsdfData, L); +#endif context.shadowValue = GetDirectionalShadowAttenuation(context.shadowContext, - posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), + posInput.positionSS, positionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L); } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl index 1619f52dbf2..ec37c75ea88 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl @@ -175,6 +175,9 @@ DirectLighting ShadeSurface_Punctual(LightLoopContext lightLoopContext, else #endif { +#ifdef LIGHT_EVALUATION_SPLINE_SHADOW_BIAS + posInput.positionWS += GetNormalForShadowBiasSpline(bsdfData, L); +#endif // This code works for both surface reflection and thin object transmission. SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances); lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index 2045e7f54b8..ca7ee5a00d1 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -25,13 +25,6 @@ // #define HAIR_DISPLAY_REFERENCE_BSDF // #define HAIR_DISPLAY_REFERENCE_IBL -#if _USE_ADVANCED_MULTIPLE_SCATTERING - -// Temporary until we introduce spline bias toward light. -#define LIGHT_EVALUATION_NO_SHADOWS - -#endif - // Extra material feature flag we utilize to compile different versions of BSDF evaluation (for pre-integration, etc.) #define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_R (1 << 16) #define MATERIALFEATUREFLAGS_HAIR_MARSCHNER_SKIP_TT (1 << 17) @@ -88,12 +81,13 @@ float4 GetDiffuseOrDefaultColor(BSDFData bsdfData, float replace) float3 GetNormalForShadowBias(BSDFData bsdfData) { -#if _USE_LIGHT_FACING_NORMAL - // TODO: should probably bias towards the light for splines... - return bsdfData.geomNormalWS; -#else return bsdfData.geomNormalWS; -#endif +} + +float3 GetNormalForShadowBiasSpline(BSDFData bsdfData, float3 L) +{ + // TODO: Can strand count be useful here? (Would require decoding for the light twice). + return L * bsdfData.strandShadowBias; } float GetAmbientOcclusionForMicroShadowing(BSDFData bsdfData) @@ -721,6 +715,12 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD // Hair used precomputed transmittance, no thick transmittance required #define MATERIAL_INCLUDE_PRECOMPUTED_TRANSMISSION + +#if _USE_ADVANCED_MULTIPLE_SCATTERING +// Hair requires shadow biasing toward light for splines while in advanced scattering mode. +#define LIGHT_EVALUATION_SPLINE_SHADOW_BIAS +#endif + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialEvaluation.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl" From a14e1913645833ea7e4d6f17027de612e255e211 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 16 Sep 2021 15:25:42 -0400 Subject: [PATCH 71/73] Add second shadow tap for strand visibility term. --- .../Runtime/Lighting/LightLoop/LightLoop.hlsl | 10 ++++++- .../Lighting/LightLoop/LightLoopDef.hlsl | 1 + .../Runtime/Lighting/SurfaceShading.hlsl | 29 +++++++++++++++++-- .../Runtime/Material/Hair/Hair.cs | 1 + .../Runtime/Material/Hair/Hair.cs.hlsl | 5 ++++ .../Runtime/Material/Hair/Hair.hlsl | 11 +++++-- .../HairMultipleScattering.hlsl | 11 +++++-- .../Shaders/RaytracingLightLoop.hlsl | 1 + 8 files changed, 61 insertions(+), 8 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index 1dd1a6cdae5..dfd3519a4ff 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -195,6 +195,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS context.shadowContext = InitShadowContext(); context.shadowValue = 1; context.sampleReflection = 0; + context.splineVisibility = -1; // With XR single-pass and camera-relative: offset position to do lighting computations from the combined center view (original camera matrix). // This is required because there is only one list of lights generated on the CPU. Shadows are also generated once and shared between the instanced views. @@ -230,11 +231,18 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS float3 positionWS = posInput.positionWS; #ifdef LIGHT_EVALUATION_SPLINE_SHADOW_BIAS - positionWS += GetNormalForShadowBiasSpline(bsdfData, L); + positionWS += L * GetSplineOffsetForShadowBias(bsdfData); #endif context.shadowValue = GetDirectionalShadowAttenuation(context.shadowContext, posInput.positionSS, positionWS, GetNormalForShadowBias(bsdfData), light.shadowIndex, L); + +#ifdef LIGHT_EVALUATION_SPLINE_SHADOW_VISIBILITY_SAMPLE + // Tap the shadow a second time for strand visibility term. + context.splineVisibility = GetDirectionalShadowAttenuation(context.shadowContext, + posInput.positionSS, posInput.positionWS, GetNormalForShadowBias(bsdfData), + light.shadowIndex, L); +#endif } } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl index 3aad01d106e..f5e0988fc13 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl @@ -23,6 +23,7 @@ struct LightLoopContext uint contactShadow; // a bit mask of 24 bits that tell if the pixel is in a contact shadow or not real contactShadowFade; // combined fade factor of all contact shadows SHADOW_TYPE shadowValue; // Stores the value of the cascade shadow map + real splineVisibility; // Stores the value of the cascade shadow map (unbiased for splines) }; // LightLoopOutput is the output of the LightLoop fuction call. diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl index ec37c75ea88..48bdac0627c 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl @@ -96,6 +96,17 @@ DirectLighting ShadeSurface_Directional(LightLoopContext lightLoopContext, float NdotL = dot(bsdfData.normalWS, L); // No microshadowing when facing away from light (use for thin transmission as well) shadow *= NdotL >= 0.0 ? ComputeMicroShadowing(GetAmbientOcclusionForMicroShadowing(bsdfData), NdotL, _MicroShadowOpacity) : 1.0; lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); + +#ifdef LIGHT_EVALUATION_SPLINE_SHADOW_VISIBILITY_SAMPLE + if ((light.shadowIndex >= 0)) + { + bsdfData.splineVisibility = lightLoopContext.splineVisibility; + } + else + { + bsdfData.splineVisibility = -1; + } +#endif } // Simulate a sphere/disk light with this hack. @@ -175,13 +186,27 @@ DirectLighting ShadeSurface_Punctual(LightLoopContext lightLoopContext, else #endif { + PositionInputs shadowPositionInputs = posInput; + #ifdef LIGHT_EVALUATION_SPLINE_SHADOW_BIAS - posInput.positionWS += GetNormalForShadowBiasSpline(bsdfData, L); + shadowPositionInputs.positionWS += L * GetSplineOffsetForShadowBias(bsdfData); #endif // This code works for both surface reflection and thin object transmission. - SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances); + SHADOW_TYPE shadow = EvaluateShadow_Punctual(lightLoopContext, shadowPositionInputs, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances); lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); +#ifdef LIGHT_EVALUATION_SPLINE_SHADOW_VISIBILITY_SAMPLE + if ((light.shadowIndex >= 0) && (light.shadowDimmer > 0)) + { + // Evaluate the shadow map a second time (this time unbiased for the spline). + bsdfData.splineVisibility = EvaluateShadow_Punctual(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData), L, distances).x; + } + else + { + bsdfData.splineVisibility = -1; + } +#endif + #ifdef DEBUG_DISPLAY // The step with the attenuation is required to avoid seeing the screen tiles at the end of lights because the attenuation always falls to 0 before the tile ends. // Note: g_DebugShadowAttenuation have been setup in EvaluateShadow_Punctual diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs index ea85046b595..18321e1468c 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs @@ -154,6 +154,7 @@ public struct BSDFData // Global Scattering public Vector4 strandCountProbe; public float strandShadowBias; + public float splineVisibility; }; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl index 3fff8bfcd69..d9706516356 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.cs.hlsl @@ -74,6 +74,7 @@ #define DEBUGVIEW_HAIR_BSDFDATA_ROUGHNESS_RADIAL (1483) #define DEBUGVIEW_HAIR_BSDFDATA_STRAND_COUNT_PROBE (1484) #define DEBUGVIEW_HAIR_BSDFDATA_STRAND_SHADOW_BIAS (1485) +#define DEBUGVIEW_HAIR_BSDFDATA_SPLINE_VISIBILITY (1486) // Generated from UnityEngine.Rendering.HighDefinition.Hair+SurfaceData // PackingRules = Exact @@ -138,6 +139,7 @@ struct BSDFData float roughnessRadial; float4 strandCountProbe; float strandShadowBias; + float splineVisibility; }; // @@ -332,6 +334,9 @@ void GetGeneratedBSDFDataDebug(uint paramId, BSDFData bsdfdata, inout float3 res case DEBUGVIEW_HAIR_BSDFDATA_STRAND_SHADOW_BIAS: result = bsdfdata.strandShadowBias.xxx; break; + case DEBUGVIEW_HAIR_BSDFDATA_SPLINE_VISIBILITY: + result = bsdfdata.splineVisibility.xxx; + break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl index ca7ee5a00d1..f0bcd554e23 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/Hair.hlsl @@ -84,10 +84,10 @@ float3 GetNormalForShadowBias(BSDFData bsdfData) return bsdfData.geomNormalWS; } -float3 GetNormalForShadowBiasSpline(BSDFData bsdfData, float3 L) +float GetSplineOffsetForShadowBias(BSDFData bsdfData) { // TODO: Can strand count be useful here? (Would require decoding for the light twice). - return L * bsdfData.strandShadowBias; + return bsdfData.strandShadowBias; } float GetAmbientOcclusionForMicroShadowing(BSDFData bsdfData) @@ -258,6 +258,7 @@ BSDFData ConvertSurfaceDataToBSDFData(uint2 positionSS, SurfaceData surfaceData) #if _USE_ADVANCED_MULTIPLE_SCATTERING bsdfData.strandCountProbe = surfaceData.strandCountProbe; bsdfData.strandShadowBias = surfaceData.strandShadowBias; + bsdfData.splineVisibility = -1; #endif } @@ -717,8 +718,14 @@ CBSDF EvaluateBSDF(float3 V, float3 L, PreLightData preLightData, BSDFData bsdfD #define MATERIAL_INCLUDE_PRECOMPUTED_TRANSMISSION #if _USE_ADVANCED_MULTIPLE_SCATTERING +// Disable the contact shadow in case of multiple scattering. +#define LIGHT_EVALUATION_NO_CONTACT_SHADOWS + // Hair requires shadow biasing toward light for splines while in advanced scattering mode. #define LIGHT_EVALUATION_SPLINE_SHADOW_BIAS + +// Secondary shadow tap that can provide a higher quality occlusion information for the multiple scattering. +#define LIGHT_EVALUATION_SPLINE_SHADOW_VISIBILITY_SAMPLE #endif #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl" diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index af957b54a25..758785c22b2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -31,6 +31,13 @@ float DecodeHairStrandCount(float3 L, float4 strandCountProbe) return dot(strandCountProbe, Ylm); } +float GetDirectFraction(BSDFData bsdfData, float strandCount) +{ + // Defer to the higher quality spline visibility for this light, if any. + // Otherwise fall back to the coarse approximation from the spherical harmonic. + return bsdfData.splineVisibility > -1 ? bsdfData.splineVisibility : 1 - saturate(strandCount); +} + // TODO: Currently the dual scattering approximation is assuming to be used for hair fibers, but it can be used for other // fiber materials (ie Fabric). It would be good to eventually generalize this and move it out of hair material evaluation. HairScatteringData GetHairScatteringData(BSDFData bsdfData, float3 alpha, float3 beta, float sinThetaI) @@ -97,8 +104,6 @@ float3 EvaluateMultipleScattering(float3 L, float3 Fs, BSDFData bsdfData, float3 // Fetch the various preintegrated data. HairScatteringData hairScatteringData = GetHairScatteringData(bsdfData, alpha, beta, sinThetaI); - beta = clamp(0.2, 0.4, beta); - // Solve for multiple scattering in a volume of hair fibers with concepts from: // "Dual Scattering Approximation for Fast Multiple Scattering in Hair" (Zinke et. al) // "Efficient Implementation of the Dual Scattering Model in RenderMan" (Sadeghi et. al) @@ -129,7 +134,7 @@ float3 EvaluateMultipleScattering(float3 L, float3 Fs, BSDFData bsdfData, float3 // Approximate the accumulated variance, by assuming strands all have the same average roughness and inclination. ( Eq. 7 Disney ) float3 sigmaF = Bf2 * n; - const float directFraction = 1 - saturate(n); + const float directFraction = GetDirectFraction(bsdfData, n); Tf = lerp(Tf, 1, directFraction); sigmaF = lerp(sigmaF, 0, directFraction); diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl index 79af86856d8..39e81281b05 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl @@ -14,6 +14,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS context.contactShadow = 1.0; context.shadowContext = InitShadowContext(); context.shadowValue = 1.0; + context.splineVisibility = -1; context.sampleReflection = 0; // Initialize the contactShadow and contactShadowFade fields From 0b54460f14bf0141d660a3171957476454f52aee Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 16 Sep 2021 15:33:25 -0400 Subject: [PATCH 72/73] Remove the debug symbols --- .../Editor/Material/ShaderGraph/Templates/ShaderPass.template | 1 - 1 file changed, 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/ShaderPass.template b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/ShaderPass.template index 7c7ed829f0a..76662e28e0e 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/ShaderPass.template +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/ShaderPass.template @@ -19,7 +19,6 @@ Pass // Pragmas $splice(PassPragmas) - #pragma enable_d3d11_debug_symbols // Keywords $splice(PassKeywords) From 5b3ab792d50926511b34eb9009d80c7907c5cee5 Mon Sep 17 00:00:00 2001 From: John Parsaie Date: Thu, 16 Sep 2021 21:42:53 -0400 Subject: [PATCH 73/73] Mitigate SH ringing --- .../Hair/MultipleScattering/HairMultipleScattering.hlsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl index 758785c22b2..d46a9fb1185 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Hair/MultipleScattering/HairMultipleScattering.hlsl @@ -28,7 +28,7 @@ float DecodeHairStrandCount(float3 L, float4 strandCountProbe) HALF_SQRT_3_DIV_PI * L.x ); - return dot(strandCountProbe, Ylm); + return abs(dot(strandCountProbe, Ylm)); } float GetDirectFraction(BSDFData bsdfData, float strandCount)