diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing.meta new file mode 100644 index 00000000000..f4db051ad68 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f8493e48bd94c6148befc28c658fc4de +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing.unity new file mode 100644 index 00000000000..5ae7503f24e --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing.unity @@ -0,0 +1,3837 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 112000000, guid: bf8ca8e1564687f40b494fc1f1490915, + type: 2} + m_LightingSettings: {fileID: 4890085278179872738, guid: a1556c1d9fb367745a1c4aaa01451097, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &45892344 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 45892345} + - component: {fileID: 45892347} + - component: {fileID: 45892346} + m_Layer: 0 + m_Name: LitGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &45892345 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 45892344} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2.5, y: 3.7, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &45892346 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 45892344} + m_Text: 'Simple Lit Graph + +' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &45892347 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 45892344} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &78105986 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 78105987} + - component: {fileID: 78105989} + - component: {fileID: 78105988} + m_Layer: 0 + m_Name: Hair + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &78105987 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 78105986} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.5, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &78105988 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 78105986} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 68a009b14c10a24488b47dd0fb86b883, 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: 0 + 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 &78105989 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 78105986} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &133822026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 133822030} + - component: {fileID: 133822029} + - component: {fileID: 133822028} + m_Layer: 0 + m_Name: LitGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &133822028 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133822026} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: cc84e16d82c586944a35abe7b79273e4, 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: 0 + 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 &133822029 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133822026} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &133822030 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133822026} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: 2.3, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &203258257 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 203258258} + - component: {fileID: 203258260} + - component: {fileID: 203258259} + m_Layer: 0 + m_Name: UnlitGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &203258258 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203258257} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.521, y: 3.7, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &203258259 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203258257} + m_Text: 'Simple Unlit Graph + +' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &203258260 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 203258257} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &220407417 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 220407418} + - component: {fileID: 220407420} + - component: {fileID: 220407419} + m_Layer: 0 + m_Name: SubGraph1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &220407418 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 220407417} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.5, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &220407419 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 220407417} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: ba2a5e802a9105145812d83b16e9b9e7, 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: 0 + 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 &220407420 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 220407417} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &245866176 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 245866177} + - component: {fileID: 245866179} + - component: {fileID: 245866178} + m_Layer: 0 + m_Name: SubGraph2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &245866177 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245866176} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.73, y: 1.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &245866178 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245866176} + m_Text: 'Special Graphs (Subgraphs + + , Keword) + +' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &245866179 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245866176} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &280369411 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 280369412} + - component: {fileID: 280369414} + - component: {fileID: 280369413} + m_Layer: 0 + m_Name: Eye + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &280369412 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 280369411} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.5, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &280369413 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 280369411} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9ea3de83b55e1f745aaa7d7a9152158a, 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: 0 + 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 &280369414 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 280369411} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &314782149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 314782153} + - component: {fileID: 314782152} + - component: {fileID: 314782151} + m_Layer: 0 + m_Name: UnlitGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &314782151 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314782149} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 6c09bf438cfab3d438d8fd945dc9bc84, 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: 0 + 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 &314782152 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314782149} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &314782153 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314782149} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: 2.3, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &329574045 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 329574046} + - component: {fileID: 329574048} + - component: {fileID: 329574047} + m_Layer: 0 + m_Name: BiasDeriv + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &329574046 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 329574045} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3.52, y: -1.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &329574047 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 329574045} + m_Text: 'Bias / Derivatives + + +' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &329574048 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 329574045} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &339800103 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 339800104} + - component: {fileID: 339800106} + - component: {fileID: 339800105} + m_Layer: 0 + m_Name: ExplicitLod + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &339800104 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 339800103} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.5, y: -1.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &339800105 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 339800103} + m_Text: 'Explicit Lod sampling + +' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &339800106 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 339800103} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &361997041 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 361997044} + - component: {fileID: 361997043} + - component: {fileID: 361997042} + m_Layer: 0 + m_Name: Scene Settings + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &361997042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 361997041} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 441482e8936e35048a1dffac814e3ef8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Profile: {fileID: 11400000, guid: 22810a4b5b549954198ff70792391f0f, type: 2} + m_StaticLightingSkyUniqueID: 2 + m_SkySettings: {fileID: 0} + m_SkySettingsFromProfile: {fileID: 0} +--- !u!114 &361997043 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 361997041} + 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: fa4ec2b9b6d574840b320077b8871c38, type: 2} +--- !u!4 &361997044 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 361997041} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1000, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &386950478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 386950479} + - component: {fileID: 386950481} + - component: {fileID: 386950480} + m_Layer: 0 + m_Name: SubGraph3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &386950479 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 386950478} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.5, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &386950480 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 386950478} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 2330b7f72cb6e414e988ee52d6d1ef8a, 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: 0 + 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 &386950481 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 386950478} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &404777708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 404777709} + - component: {fileID: 404777711} + - component: {fileID: 404777710} + m_Layer: 0 + m_Name: SubGraph4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &404777709 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 404777708} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.5, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &404777710 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 404777708} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fd32f17d440606a4087c07273ee5978c, 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: 0 + 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 &404777711 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 404777708} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &411464814 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 411464815} + - component: {fileID: 411464816} + m_Layer: 0 + m_Name: SceneController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &411464815 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 411464814} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -30, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &411464816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 411464814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0a0fe6dffef10d418605b143e1a8e4f, type: 3} + m_Name: + m_EditorClassIdentifier: + dirLight: {fileID: 1036204241} + rotateLight: 1 + rotationDegPerS: 45 + sensitivity: 30 + maxX: 88 + minX: -5 + minCameraDist: 1 + maxCameraDist: 15 +--- !u!1 &420231308 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 420231309} + - component: {fileID: 420231311} + - component: {fileID: 420231310} + m_Layer: 0 + m_Name: Various + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &420231309 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420231308} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.91, y: -1.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &420231310 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420231308} + m_Text: 'Stack, Fabric, Gory Bits (Eyes and hair) + +' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &420231311 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420231308} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &482586313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 482586314} + - component: {fileID: 482586316} + - component: {fileID: 482586315} + m_Layer: 0 + m_Name: Fabric + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &482586314 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 482586313} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.5, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &482586315 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 482586313} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7fac6689649feba43beb1a82bafb0276, 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: 0 + 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 &482586316 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 482586313} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &563548582 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 563548583} + - component: {fileID: 563548585} + - component: {fileID: 563548584} + m_Layer: 0 + m_Name: VertexShader + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &563548583 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 563548582} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -2, y: -2.4, z: 0} + m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!23 &563548584 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 563548582} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 4d44d890bd690ee40b18df454cc3c54e, 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: 0 + 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 &563548585 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 563548582} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &657075898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 657075902} + - component: {fileID: 657075901} + - component: {fileID: 657075900} + m_Layer: 0 + m_Name: SubSurfaceScattered + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &657075900 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 657075898} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: dcf7b170acea5a94b8e35ec60d41744c, 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: 0 + 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 &657075901 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 657075898} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &657075902 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 657075898} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &698175485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 698175486} + - component: {fileID: 698175488} + - component: {fileID: 698175487} + m_Layer: 0 + m_Name: MultiSample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &698175486 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698175485} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: -2.4, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!23 &698175487 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698175485} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0e0805d3bf312e34585b88bb067a8c22, 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: 0 + 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 &698175488 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698175485} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &711217080 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 711217081} + - component: {fileID: 711217083} + - component: {fileID: 711217082} + m_Layer: 0 + m_Name: VertexShader + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &711217081 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 711217080} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2.213, y: -1.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &711217082 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 711217080} + m_Text: "Vertex\n Shader\n" + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &711217083 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 711217080} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &878058836 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 878058837} + - component: {fileID: 878058839} + - component: {fileID: 878058838} + m_Layer: 0 + m_Name: PBRGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &878058837 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878058836} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3.58, y: 3.7, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &878058838 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878058836} + m_Text: Simple PBR Graph + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &878058839 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878058836} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &1036204241 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1036204245} + - component: {fileID: 1036204244} + - component: {fileID: 1036204243} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1036204243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036204241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 10 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 + m_Intensity: 3.1415927 + m_EnableSpotReflector: 0 + m_LuxAtDistance: 1 + m_InnerSpotPercent: 0 + m_LightDimmer: 1 + m_VolumetricDimmer: 1 + m_LightUnit: 2 + m_FadeDistance: 10000 + m_AffectDiffuse: 1 + m_AffectSpecular: 1 + m_NonLightmappedOnly: 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_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 + m_EvsmBlurPasses: 0 + m_LightlayersMask: 1 + m_LinkShadowLayers: 1 + m_ShadowNearPlane: 0.2 + m_BlockerSampleCount: 24 + m_FilterSampleCount: 32 + m_MinFilterSize: 0.01 + m_KernelSize: 5 + m_LightAngle: 1 + m_MaxDepthBias: 0.001 + m_ShadowResolution: + m_Override: 512 + m_UseOverride: 1 + m_Level: 1 + m_ShadowDimmer: 1 + m_VolumetricShadowDimmer: 1 + m_ShadowFadeDistance: 10000 + m_UseContactShadow: + m_Override: 0 + 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_SlopeBias: 0.5 + m_ShadowUpdateMode: 0 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_ShadowCascadeRatios: + - 0.05 + - 0.2 + - 0.3 + m_ShadowCascadeBorders: + - 0.2 + - 0.2 + - 0.2 + - 0.2 + m_ShadowAlgorithm: 0 + m_ShadowVariant: 3 + m_ShadowPrecision: 0 + useOldInspector: 0 + useVolumetric: 1 + featuresFoldout: 1 + showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 +--- !u!108 &1036204244 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036204241} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.1415927 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 2 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1036204245 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036204241} + m_LocalRotation: {x: 0.2981349, y: 0.124443755, z: -0.03923696, w: 0.94556326} + m_LocalPosition: {x: 0, y: 7, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 35, y: 14.995001, z: 0} +--- !u!1 &1053123894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1053123895} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1053123895 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1053123894} + 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: + - {fileID: 45892345} + - {fileID: 878058837} + - {fileID: 203258258} + - {fileID: 1604621049} + - {fileID: 1132552987} + - {fileID: 1179882697} + - {fileID: 1178773848} + - {fileID: 339800104} + - {fileID: 711217081} + - {fileID: 329574046} + - {fileID: 2138013990} + - {fileID: 2005760251} + - {fileID: 245866177} + - {fileID: 420231309} + m_Father: {fileID: 2056951134} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1102400181 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1102400182} + - component: {fileID: 1102400185} + - component: {fileID: 1102400184} + - component: {fileID: 1102400183} + m_Layer: 0 + m_Name: MipmapCalculation + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1102400182 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1102400181} + m_LocalRotation: {x: 0.10452855, y: -0, z: -0, w: -0.9945219} + m_LocalPosition: {x: 0, y: 4.38, z: 12.28} + m_LocalScale: {x: 0.2, y: 0.2, z: 3} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 348, y: 0, z: 0} +--- !u!64 &1102400183 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1102400181} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1102400184 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1102400181} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + 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: a548c1e35ed7ba04c89c177c3653e1df, 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 &1102400185 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1102400181} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1131061215 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1131061216} + - component: {fileID: 1131061218} + - component: {fileID: 1131061217} + m_Layer: 0 + m_Name: BiasDeriv + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1131061216 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1131061215} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 4, y: -2.4, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!23 &1131061217 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1131061215} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 06453d90af16bb54c9774e2fee59fe90, 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: 0 + 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 &1131061218 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1131061215} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1132552986 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1132552987} + - component: {fileID: 1132552989} + - component: {fileID: 1132552988} + m_Layer: 0 + m_Name: PropertyOverrideGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1132552987 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132552986} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.395, y: 1.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &1132552988 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132552986} + m_Text: 'Material Property Override Earth + + Alpha Tested Lit Clouds' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1132552989 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132552986} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &1178773847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1178773848} + - component: {fileID: 1178773850} + - component: {fileID: 1178773849} + m_Layer: 0 + m_Name: MultiSample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1178773848 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178773847} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.89, y: -1.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &1178773849 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178773847} + m_Text: Multiple VT Samples, Separate UV's + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1178773850 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178773847} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &1179882696 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1179882697} + - component: {fileID: 1179882699} + - component: {fileID: 1179882698} + m_Layer: 0 + m_Name: EmisUnlitGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1179882697 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179882696} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.36, y: 1.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &1179882698 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179882696} + m_Text: 'Unlit Emisson Graph + +' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1179882699 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179882696} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &1303166446 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1303166450} + - component: {fileID: 1303166449} + - component: {fileID: 1303166448} + m_Layer: 0 + m_Name: PBRGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1303166448 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1303166446} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44f5224734b61e94fa0b4eb2d8dea605, 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: 0 + 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 &1303166449 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1303166446} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1303166450 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1303166446} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4, y: 2.3, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1604621048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1604621049} + - component: {fileID: 1604621051} + - component: {fileID: 1604621050} + m_Layer: 0 + m_Name: Sub Surface Scattered + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1604621049 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604621048} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2.5, y: 1.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &1604621050 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604621048} + m_Text: Sub Surface Scattered + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &1604621051 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604621048} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &1606819159 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1606819160} + - component: {fileID: 1606819162} + - component: {fileID: 1606819161} + m_Layer: 0 + m_Name: ExplicitLod + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1606819160 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606819159} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 2, y: -2.4, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!23 &1606819161 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606819159} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 07d9e73903bb12c47908581c233e64d8, 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: 0 + 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 &1606819162 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606819159} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1803598726 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1803598727} + - component: {fileID: 1803598729} + - component: {fileID: 1803598728} + m_Layer: 0 + m_Name: SubGraph2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1803598727 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1803598726} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.5, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1803598728 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1803598726} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: abfb28732b269f442905a9ea2ec03577, 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: 0 + 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 &1803598729 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1803598726} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1855075392 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1855075393} + - component: {fileID: 1855075395} + - component: {fileID: 1855075394} + m_Layer: 0 + m_Name: StackLit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1855075393 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1855075392} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.5, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1855075394 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1855075392} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 86ca8682d76e1624496b00579837fadd, 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: 0 + 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 &1855075395 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1855075392} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1984901468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1984901469} + - component: {fileID: 1984901471} + - component: {fileID: 1984901470} + - component: {fileID: 1984901472} + m_Layer: 0 + m_Name: Clouds + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1984901469 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984901468} + m_LocalRotation: {x: -0, y: -0, z: -0.0000000060535967, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.1, y: 1.1, z: 1.1} + m_Children: [] + m_Father: {fileID: 2088724965} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 5, z: 90} +--- !u!23 &1984901470 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984901468} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + 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: 48186b9b44885574a9e56fd68988986d, 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: 0 + 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 &1984901471 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984901468} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1984901472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984901468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8098e6a0c5b7c054abf14fe03508004f, type: 3} + m_Name: + m_EditorClassIdentifier: + materialToRequest: {fileID: 2100000, guid: 48186b9b44885574a9e56fd68988986d, type: 2} + firstMipToRequest: 0 +--- !u!1 &2005760250 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2005760251} + - component: {fileID: 2005760253} + - component: {fileID: 2005760252} + m_Layer: 0 + m_Name: MipmapCalculation + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2005760251 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2005760250} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.56, y: 3.7, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &2005760252 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2005760250} + m_Text: 'Auto Mipmap Calculation + + +' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &2005760253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2005760250} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &2056951133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2056951134} + m_Layer: 0 + m_Name: Balls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2056951134 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2056951133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -30, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 133822030} + - {fileID: 1303166450} + - {fileID: 314782153} + - {fileID: 657075902} + - {fileID: 2088724965} + - {fileID: 2090775361} + - {fileID: 698175486} + - {fileID: 1606819160} + - {fileID: 563548583} + - {fileID: 1131061216} + - {fileID: 2147186747} + - {fileID: 1102400182} + - {fileID: 1053123895} + - {fileID: 220407418} + - {fileID: 1803598727} + - {fileID: 1855075393} + - {fileID: 482586314} + - {fileID: 78105987} + - {fileID: 280369412} + - {fileID: 386950479} + - {fileID: 404777709} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2088724961 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2088724965} + - component: {fileID: 2088724964} + - component: {fileID: 2088724963} + m_Layer: 0 + m_Name: PropertyOverrideGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2088724963 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2088724961} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 275d5e59711e73a439d896a258144eda, 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: 0 + 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 &2088724964 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2088724961} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2088724965 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2088724961} + m_LocalRotation: {x: 0, y: 0.043619405, z: 0, w: 0.9990483} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: + - {fileID: 1984901469} + m_Father: {fileID: 2056951134} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 5, z: 0} +--- !u!1 &2090775357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2090775361} + - component: {fileID: 2090775360} + - component: {fileID: 2090775359} + m_Layer: 0 + m_Name: EmisUnlitGraph + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2090775359 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2090775357} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 235d3c3699f368b458ff0c1d16bab6a1, 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: 0 + 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 &2090775360 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2090775357} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2090775361 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2090775357} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2138013989 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2138013990} + - component: {fileID: 2138013992} + - component: {fileID: 2138013991} + m_Layer: 0 + m_Name: Aniso + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2138013990 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2138013989} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3.7, y: 1.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053123895} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!102 &2138013991 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2138013989} + m_Text: 'Anisotropic + + +' + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 100 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!23 &2138013992 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2138013989} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + 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: 0 + 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 &2147186746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2147186747} + - component: {fileID: 2147186749} + - component: {fileID: 2147186748} + m_Layer: 0 + m_Name: Aniso + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2147186747 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2147186746} + m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: 1.9, y: 1.9, z: 1.9} + m_Children: [] + m_Father: {fileID: 2056951134} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!23 &2147186748 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2147186746} + 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_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 13b3465dfcce31d4d9ff6ea35a65eb5d, 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: 0 + 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 &2147186749 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2147186746} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1132393544551473 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4209882626151009} + - component: {fileID: 20109209845833397} + - component: {fileID: 114777190067558783} + - component: {fileID: 1132393544551474} + m_Layer: 0 + m_Name: HDRP_VirtualTexturing_Test_Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1132393544551474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132393544551473} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9459100e7946cb84eb53a26a14473032, type: 3} + m_Name: + m_EditorClassIdentifier: + ImageComparisonSettings: + TargetWidth: 1024 + TargetHeight: 1024 + PerPixelCorrectnessThreshold: 0.0005 + AverageCorrectnessThreshold: 0.0005 + UseHDR: 0 + doBeforeTest: + m_PersistentCalls: + m_Calls: [] + captureFramerate: 0 + waitFrames: 20 + xrCompatible: 1 + xrThresholdMultiplier: 1 + checkMemoryAllocation: 1 + renderPipelineAsset: {fileID: 11400000, guid: d7fe5f39d2c099a4ea1f1f610af309d7, + type: 2} +--- !u!4 &4209882626151009 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132393544551473} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -30, y: 0.073, z: -20.71} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &20109209845833397 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132393544551473} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.2509804, g: 0.2509804, b: 0.2509804, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.5 + far clip plane: 100 + field of view: 20 + orthographic: 0 + orthographic size: 1.2 + m_Depth: 1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!114 &114777190067558783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132393544551473} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 7 + m_ObsoleteRenderingPath: 0 + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + clearColorMode: 1 + backgroundColorHDR: {r: 0.147, g: 0.08628003, b: 0.056594998, a: 0} + clearDepth: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + antialiasing: 0 + SMAAQuality: 2 + dithering: 0 + stopNaNs: 0 + taaSharpenStrength: 0.6 + physicalParameters: + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + flipYMode: 0 + fullscreenPassthrough: 0 + allowDynamicResolution: 0 + customRenderingSettings: 0 + invertFaceCulling: 0 + probeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hasPersistentHistory: 0 + m_RenderingPathCustomFrameSettings: + bitDatas: + data1: 2110976425804 + data2: 4539628425463136256 + lodBias: 1 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + materialQuality: 0 + renderingPathCustomFrameSettingsOverrideMask: + mask: + data1: 0 + data2: 0 + defaultFrameSettings: 0 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing.unity.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing.unity.meta new file mode 100644 index 00000000000..d5903ea8f3d --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 897c2870240f77a46a18884a0446b797 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/Anisotropic.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/Anisotropic.shadergraph new file mode 100644 index 00000000000..e27c69863ae --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/Anisotropic.shadergraph @@ -0,0 +1,241 @@ +{ + "m_SerializedProperties": [], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.MultiplyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"0587a3f4-d6c4-454b-9a09-5fbf38b781cc\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -995.0,\n \"y\": 443.0,\n \"width\": 128.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\\\": 1.0,\\n \\\"e01\\\": 1.0,\\n \\\"e02\\\": 1.0,\\n \\\"e03\\\": 1.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.DDYNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"0fd0470b-6da2-4aa6-90cf-ed9bc881081f\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"DDY\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1156.0,\n \"y\": 587.0,\n \"width\": 130.0,\n \"height\": 94.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.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTexture2DNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"12e9d939-afda-4a2f-84e6-90543eccb2ad\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Sample Texture 2D\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1024.0,\n \"y\": -300.0,\n \"width\": 182.0,\n \"height\": 251.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.DDYNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"310ca3a3-61cf-486b-ad02-d74c5fff0c9c\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"DDY\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1161.9998779296875,\n \"y\": 280.0,\n \"width\": 130.0,\n \"height\": 94.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.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.DDXNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"3c25cf28-ce9c-402c-9027-177ff74085ce\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"DDX\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1141.0,\n \"y\": 443.0,\n \"width\": 130.0,\n \"height\": 94.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.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"4ca89603-b76f-450e-b92f-bb0be3e5f062\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TexStack_BB4EA8E6\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -713.0,\n \"y\": 468.0,\n \"width\": 179.0,\n \"height\": 149.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"526f56bddea1ec94abca08e368cb7006\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Dx\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Dx\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"Dx\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 13,\\n \\\"m_DisplayName\\\": \\\"Dy\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Dy\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"Dy\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 3,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.DDXNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"4e23743b-b4fb-43b4-a91b-4190fdf3aee7\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"DDX\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1147.0,\n \"y\": 136.00001525878907,\n \"width\": 130.0,\n \"height\": 94.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.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.MultiplyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"54618814-da9e-4030-b146-880b18126998\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -988.0,\n \"y\": 573.0,\n \"width\": 128.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\\\": 4.0,\\n \\\"e01\\\": 4.0,\\n \\\"e02\\\": 4.0,\\n \\\"e03\\\": 4.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.UnlitMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"630d2f2a-4a30-428c-a299-225f1484d36f\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Unlit Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 257.0,\n \"y\": -11.0,\n \"width\": 200.0,\n \"height\": 197.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.PositionMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Vertex Position\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Vertex 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\\\": 10,\\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\\\": 11,\\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\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Color\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Color\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\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\\\": 7,\\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\\\": 8,\\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.5,\\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_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.UnlitSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_TwoSided\": false,\n \"m_AddPrecomputedVelocity\": false\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.UVNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"6bfe9a0b-b37c-4c02-989f-a0a5c42d6e5a\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"UV\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1420.0,\n \"y\": 497.0,\n \"width\": 145.0,\n \"height\": 129.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\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.UVNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"8952786a-5936-4b53-b9ab-4d76ffaa89bd\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"UV\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1425.9998779296875,\n \"y\": 190.00003051757813,\n \"width\": 145.0,\n \"height\": 129.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\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.UVNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"942470ed-9c80-421e-b16b-d99242b7657f\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"UV\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -587.9999389648438,\n \"y\": -213.99998474121095,\n \"width\": 144.99998474121095,\n \"height\": 129.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\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.BranchNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"bdd12f90-40d7-46b1-94d6-32e8205d9c42\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Branch\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -86.99999237060547,\n \"y\": -22.000011444091798,\n \"width\": 208.0,\n \"height\": 326.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.Vector1Node" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"c31d49b1-ee01-46ad-ac34-bb276d63575b\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Vector 1\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1464.0,\n \"y\": 364.0,\n \"width\": 124.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\\\": 8.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.MultiplyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"e27cf047-7b70-4765-a2a6-a437daa96f08\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -993.9999389648438,\n \"y\": 266.0,\n \"width\": 128.0,\n \"height\": 117.99999237060547\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\\\": 1.0,\\n \\\"e01\\\": 1.0,\\n \\\"e02\\\": 1.0,\\n \\\"e03\\\": 1.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.MultiplyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"e9c0ad29-e459-4ffe-b1fd-75422913ea99\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1000.9998779296875,\n \"y\": 136.00001525878907,\n \"width\": 207.99998474121095,\n \"height\": 301.9999694824219\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\\\": 4.0,\\n \\\"e01\\\": 4.0,\\n \\\"e02\\\": 4.0,\\n \\\"e03\\\": 4.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.ComparisonNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"efc5b178-7187-4038-810f-762d192c6bb1\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Comparison\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -302.9999084472656,\n \"y\": -156.99998474121095,\n \"width\": 144.99998474121095,\n \"height\": 136.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\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\\\": 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\\\": 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\\\": 0.5,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.BooleanMaterialSlot\"\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\\\": 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_ComparisonType\": 4\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"f08b4b8a-d4f8-4e42-8028-6a40a4c9dfef\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TexStack_8EB725B5\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -718.9998779296875,\n \"y\": 161.0,\n \"width\": 183.0,\n \"height\": 149.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"526f56bddea1ec94abca08e368cb7006\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Dx\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Dx\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"Dx\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 13,\\n \\\"m_DisplayName\\\": \\\"Dy\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Dy\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"Dy\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 3,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"0587a3f4-d6c4-454b-9a09-5fbf38b781cc\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 12,\n \"m_NodeGUIDSerialized\": \"4ca89603-b76f-450e-b92f-bb0be3e5f062\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"0fd0470b-6da2-4aa6-90cf-ed9bc881081f\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"54618814-da9e-4030-b146-880b18126998\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"310ca3a3-61cf-486b-ad02-d74c5fff0c9c\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e27cf047-7b70-4765-a2a6-a437daa96f08\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"3c25cf28-ce9c-402c-9027-177ff74085ce\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"0587a3f4-d6c4-454b-9a09-5fbf38b781cc\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"4ca89603-b76f-450e-b92f-bb0be3e5f062\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"bdd12f90-40d7-46b1-94d6-32e8205d9c42\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"4e23743b-b4fb-43b4-a91b-4190fdf3aee7\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e9c0ad29-e459-4ffe-b1fd-75422913ea99\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"54618814-da9e-4030-b146-880b18126998\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 13,\n \"m_NodeGUIDSerialized\": \"4ca89603-b76f-450e-b92f-bb0be3e5f062\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"6bfe9a0b-b37c-4c02-989f-a0a5c42d6e5a\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"0fd0470b-6da2-4aa6-90cf-ed9bc881081f\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"6bfe9a0b-b37c-4c02-989f-a0a5c42d6e5a\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"3c25cf28-ce9c-402c-9027-177ff74085ce\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"8952786a-5936-4b53-b9ab-4d76ffaa89bd\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"310ca3a3-61cf-486b-ad02-d74c5fff0c9c\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"8952786a-5936-4b53-b9ab-4d76ffaa89bd\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"4e23743b-b4fb-43b4-a91b-4190fdf3aee7\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"942470ed-9c80-421e-b16b-d99242b7657f\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"efc5b178-7187-4038-810f-762d192c6bb1\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"bdd12f90-40d7-46b1-94d6-32e8205d9c42\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"630d2f2a-4a30-428c-a299-225f1484d36f\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"c31d49b1-ee01-46ad-ac34-bb276d63575b\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"54618814-da9e-4030-b146-880b18126998\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"c31d49b1-ee01-46ad-ac34-bb276d63575b\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"e9c0ad29-e459-4ffe-b1fd-75422913ea99\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"e27cf047-7b70-4765-a2a6-a437daa96f08\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 13,\n \"m_NodeGUIDSerialized\": \"f08b4b8a-d4f8-4e42-8028-6a40a4c9dfef\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"e9c0ad29-e459-4ffe-b1fd-75422913ea99\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 12,\n \"m_NodeGUIDSerialized\": \"f08b4b8a-d4f8-4e42-8028-6a40a4c9dfef\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"efc5b178-7187-4038-810f-762d192c6bb1\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"bdd12f90-40d7-46b1-94d6-32e8205d9c42\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"f08b4b8a-d4f8-4e42-8028-6a40a4c9dfef\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"bdd12f90-40d7-46b1-94d6-32e8205d9c42\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "630d2f2a-4a30-428c-a299-225f1484d36f" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/Anisotropic.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/Anisotropic.shadergraph.meta new file mode 100644 index 00000000000..9ed193de321 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/Anisotropic.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: be450c2402fe5164ca1b2a66b69347f4 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/AnisotrpicMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/AnisotrpicMat.mat new file mode 100644 index 00000000000..4c89ae619be --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/AnisotrpicMat.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: AnisotrpicMat + m_Shader: {fileID: -6465566751694194690, guid: be450c2402fe5164ca1b2a66b69347f4, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleVTStack_8EB725B5_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_BB4EA8E6_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStack8EB725B5_8EB725B5_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStackBB4EA8E6_BB4EA8E6_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: [] + m_Colors: [] + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/AnisotrpicMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/AnisotrpicMat.mat.meta new file mode 100644 index 00000000000..7254e8d0b46 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/AnisotrpicMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13b3465dfcce31d4d9ff6ea35a65eb5d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraph.shadergraph new file mode 100644 index 00000000000..bdd4e303735 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraph.shadergraph @@ -0,0 +1,210 @@ +{ + "m_SerializedProperties": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty" + }, + "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"5497e486-042c-47dd-9205-e8c6f38de78b\"\n },\n \"m_Name\": \"Bias\",\n \"m_DefaultReferenceName\": \"Vector1_304AE820\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 4.0,\n \"m_FloatType\": 0,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + } + ], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.BranchNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"05d61069-55b9-4f5c-addd-42da66a27201\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Branch\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -222.99998474121095,\n \"y\": 65.0,\n \"width\": 208.00001525878907,\n \"height\": 326.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.UVNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"21f55666-6b45-414a-b499-98fe83edeab9\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"UV\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -2224.0,\n \"y\": -265.0,\n \"width\": 208.0,\n \"height\": 313.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_OutputChannel\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"26ee4014-e917-4e17-bf4b-3f407e6e9733\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TexStack_A89EC4BF\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -613.0001220703125,\n \"y\": 12.999992370605469,\n \"width\": 186.00001525878907,\n \"height\": 125.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"526f56bddea1ec94abca08e368cb7006\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 11,\\n \\\"m_DisplayName\\\": \\\"Bias\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Bias\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"Bias\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 2,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.PropertyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"55cd7911-982c-44ad-9525-1f776d752522\",\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\": -2033.0001220703125,\n \"y\": 174.99998474121095,\n \"width\": 97.00000762939453,\n \"height\": 34.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Bias\\\",\\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\": \"5497e486-042c-47dd-9205-e8c6f38de78b\"\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"588b1756-bab3-4d43-a41f-7bc208fc2470\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TexStack_D656B90C\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -595.0000610351563,\n \"y\": 313.0,\n \"width\": 186.00001525878907,\n \"height\": 149.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"526f56bddea1ec94abca08e368cb7006\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Dx\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Dx\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"Dx\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 13,\\n \\\"m_DisplayName\\\": \\\"Dy\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Dy\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.0,\\n \\\"y\\\": 1.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"Dy\\\",\\n \\\"Y\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 3,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.ComparisonNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"74832b71-b33f-4df3-944e-e46b88ed10e6\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Comparison\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -289.0,\n \"y\": -142.0,\n \"width\": 145.0,\n \"height\": 136.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\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\\\": 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\\\": 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\\\": 0.5,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.BooleanMaterialSlot\"\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\\\": 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_ComparisonType\": 4\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.DDYNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"8186ddd5-97ee-4599-b304-7cea8f7d1c84\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"DDY\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1390.0,\n \"y\": 466.0,\n \"width\": 208.0,\n \"height\": 278.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.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.MultiplyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"bc5a218f-b68d-4f3b-94a5-a59395640a16\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1027.0001220703125,\n \"y\": 217.00003051757813,\n \"width\": 208.00001525878907,\n \"height\": 302.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.MultiplyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"dbec4ab3-0147-43e3-8de7-b22eb9dcb4ec\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1027.0001220703125,\n \"y\": 544.0,\n \"width\": 208.00001525878907,\n \"height\": 302.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.PowerNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"e4f11a1e-bdbd-4f80-9585-9105c57be95f\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Power\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1861.0,\n \"y\": 289.0,\n \"width\": 208.0,\n \"height\": 302.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\\\": 2.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\\\": 2.0,\\n \\\"y\\\": 2.0,\\n \\\"z\\\": 2.0,\\n \\\"w\\\": 2.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.Vector1Node" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"e8718d91-b5be-45f9-812f-313319545c74\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Vector 1\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -2210.0,\n \"y\": 175.0,\n \"width\": 124.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.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.DDXNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"edc16a25-0edc-4e26-b35d-20436082cf8d\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"DDX\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1389.0001220703125,\n \"y\": 175.0,\n \"width\": 208.00001525878907,\n \"height\": 278.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.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.UnlitMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"efd9328d-ca9c-4ae9-9a88-e7290c08d4d5\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Unlit Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 273.00006103515627,\n \"y\": 131.0,\n \"width\": 199.99998474121095,\n \"height\": 196.99998474121095\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.PositionMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Vertex Position\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Vertex 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\\\": 10,\\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\\\": 11,\\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\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Color\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Color\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\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\\\": 7,\\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\\\": 8,\\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.5,\\n \\\"m_DefaultValue\\\": 0.5,\\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_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.UnlitSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_TwoSided\": false,\n \"m_AddPrecomputedVelocity\": false\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [ + { + "m_GuidSerialized": "41b458fb-24c8-430d-85e9-b2c77974d886", + "m_Title": "What this does", + "m_Content": "We do biasing both using explicit bias sampling here and by modifying derivatives (on half of the uv space we do one on halfe the other). This should give identical results", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -1410.0, + "y": -141.0, + "width": 199.99996948242188, + "height": 252.99996948242188 + }, + "m_GroupGuidSerialized": "00000000-0000-0000-0000-000000000000" + } + ], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"05d61069-55b9-4f5c-addd-42da66a27201\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"efd9328d-ca9c-4ae9-9a88-e7290c08d4d5\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"21f55666-6b45-414a-b499-98fe83edeab9\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"74832b71-b33f-4df3-944e-e46b88ed10e6\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"21f55666-6b45-414a-b499-98fe83edeab9\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"8186ddd5-97ee-4599-b304-7cea8f7d1c84\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"21f55666-6b45-414a-b499-98fe83edeab9\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"edc16a25-0edc-4e26-b35d-20436082cf8d\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"26ee4014-e917-4e17-bf4b-3f407e6e9733\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"05d61069-55b9-4f5c-addd-42da66a27201\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"588b1756-bab3-4d43-a41f-7bc208fc2470\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"05d61069-55b9-4f5c-addd-42da66a27201\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"74832b71-b33f-4df3-944e-e46b88ed10e6\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"05d61069-55b9-4f5c-addd-42da66a27201\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"8186ddd5-97ee-4599-b304-7cea8f7d1c84\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"dbec4ab3-0147-43e3-8de7-b22eb9dcb4ec\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"bc5a218f-b68d-4f3b-94a5-a59395640a16\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 12,\n \"m_NodeGUIDSerialized\": \"588b1756-bab3-4d43-a41f-7bc208fc2470\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"dbec4ab3-0147-43e3-8de7-b22eb9dcb4ec\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 13,\n \"m_NodeGUIDSerialized\": \"588b1756-bab3-4d43-a41f-7bc208fc2470\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"e4f11a1e-bdbd-4f80-9585-9105c57be95f\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"bc5a218f-b68d-4f3b-94a5-a59395640a16\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"e4f11a1e-bdbd-4f80-9585-9105c57be95f\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"dbec4ab3-0147-43e3-8de7-b22eb9dcb4ec\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e8718d91-b5be-45f9-812f-313319545c74\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 11,\n \"m_NodeGUIDSerialized\": \"26ee4014-e917-4e17-bf4b-3f407e6e9733\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e8718d91-b5be-45f9-812f-313319545c74\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"e4f11a1e-bdbd-4f80-9585-9105c57be95f\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"edc16a25-0edc-4e26-b35d-20436082cf8d\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"bc5a218f-b68d-4f3b-94a5-a59395640a16\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "efd9328d-ca9c-4ae9-9a88-e7290c08d4d5" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraph.shadergraph.meta new file mode 100644 index 00000000000..6942b097188 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b17bc5d4a3448094fa08df45154f1e31 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraphMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraphMat.mat new file mode 100644 index 00000000000..33a6e98d567 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraphMat.mat @@ -0,0 +1,52 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BiasGraphMat + m_Shader: {fileID: -6465566751694194690, guid: b17bc5d4a3448094fa08df45154f1e31, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleTextureStack_A89EC4BF_Texture_5: + m_Texture: {fileID: 2800000, guid: a20adda6fb3420a4890b277fd47d6e05, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack_D656B90C_Texture_5: + m_Texture: {fileID: 2800000, guid: a20adda6fb3420a4890b277fd47d6e05, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_A89EC4BF_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_D656B90C_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStackA89EC4BF_A89EC4BF_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStackD656B90C_D656B90C_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - Vector1_304AE820: 4 + m_Colors: [] + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraphMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraphMat.mat.meta new file mode 100644 index 00000000000..adc57139d86 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/BiasGraphMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06453d90af16bb54c9774e2fee59fe90 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraph.shadergraph new file mode 100644 index 00000000000..6daafc93bca --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraph.shadergraph @@ -0,0 +1,242 @@ +{ + "m_SerializedProperties": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty" + }, + "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"ef0c5218-02be-43d2-858e-592354a6cfed\"\n },\n \"m_Name\": \"Metallic\",\n \"m_DefaultReferenceName\": \"\",\n \"m_OverrideReferenceName\": \"Vector1_A6D4BDE2\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.8999999761581421,\n \"m_FloatType\": 0,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty" + }, + "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"5ac744a1-eef9-4c42-a281-6bd143fbd014\"\n },\n \"m_Name\": \"Smoothness\",\n \"m_DefaultReferenceName\": \"\",\n \"m_OverrideReferenceName\": \"Vector1_1EC2602A\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.5,\n \"m_FloatType\": 0,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}" + } + ], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.Rendering.HighDefinition.HDLitMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"0004a8ba-604a-4734-81ac-ec71efa2d4e2\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Lit Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 3.0,\n \"y\": -644.0,\n \"width\": 200.0,\n \"height\": 341.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\\\": \\\"Vertex 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\\\": 33,\\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\\\": 34,\\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\\\": \\\"BaseColor\\\",\\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\\\": 0.9339622855186462,\\n \\\"y\\\": 0.9339622855186462,\\n \\\"z\\\": 0.9339622855186462\\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\\\": 3,\\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\\\": 11,\\n \\\"m_DisplayName\\\": \\\"CoatMask\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"CoatMask\\\",\\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\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Metallic\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Metallic\\\",\\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\\\": 14,\\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\\\": 15,\\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.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 13,\\n \\\"m_DisplayName\\\": \\\"Emission\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Emission\\\",\\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_ColorMode\\\": 1\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 16,\\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\\\": 17,\\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.5,\\n \\\"m_DefaultValue\\\": 0.5,\\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_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.HDLitSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_RenderingPass\": 1,\n \"m_BlendPreserveSpecular\": false,\n \"m_TransparencyFog\": false,\n \"m_DrawBeforeRefraction\": false,\n \"m_RefractionModel\": 0,\n \"m_Distortion\": false,\n \"m_DistortionMode\": 0,\n \"m_DistortionDepthTest\": false,\n \"m_AlphaTest\": true,\n \"m_AlphaTestDepthPrepass\": false,\n \"m_AlphaTestDepthPostpass\": false,\n \"m_TransparentWritesMotionVec\": false,\n \"m_AlphaTestShadow\": false,\n \"m_BackThenFrontRendering\": false,\n \"m_SortPriority\": 0,\n \"m_DoubleSidedMode\": 0,\n \"m_NormalDropOffSpace\": 0,\n \"m_MaterialType\": 0,\n \"m_SSSTransmission\": false,\n \"m_ReceiveDecals\": false,\n \"m_ReceivesSSR\": true,\n \"m_AddPrecomputedVelocity\": false,\n \"m_EnergyConservingSpecular\": false,\n \"m_SpecularAA\": false,\n \"m_SpecularAAScreenSpaceVariance\": 0.0,\n \"m_SpecularAAThreshold\": 0.0,\n \"m_SpecularOcclusionMode\": 0,\n \"m_DiffusionProfile\": 0,\n \"m_overrideBakedGI\": false,\n \"m_depthOffset\": false,\n \"m_ZWrite\": false,\n \"m_transparentCullMode\": 2,\n \"m_ZTest\": 4,\n \"m_SupportLodCrossFade\": false,\n \"m_MaterialNeedsUpdateHash\": 10\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.PropertyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"092d2f83-9486-496a-bd55-6b11fd236050\",\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\": -298.0000305175781,\n \"y\": -184.0,\n \"width\": 118.00000762939453,\n \"height\": 34.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Metallic\\\",\\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\": \"ef0c5218-02be-43d2-858e-592354a6cfed\"\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"308ee1bc-7f36-4ba5-9ff1-04acc460fdfa\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Sample Texture Stack 2\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -785.0,\n \"y\": -644.0000610351563,\n \"width\": 196.00001525878907,\n \"height\": 125.00000762939453\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out2\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out2\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"402f77c2ec784934a884d97647d9fe9b\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 6,\\n \\\"m_DisplayName\\\": \\\"Texture2\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Texture2\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Texture\\\": {\\n \\\"m_SerializedTexture\\\": \\\"{\\\\\\\"texture\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"312de1f115b043b42804703d66a0e4b8\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 3\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_NumSlots\": 2,\n \"m_NoFeedback\": false,\n \"m_TextureTypes\": [\n 0,\n 1,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.OneMinusNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"48225bcc-e33f-4d09-b380-a2e293e91fd0\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"One Minus\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1339.0001220703125,\n \"y\": -307.0,\n \"width\": 208.00001525878907,\n \"height\": 278.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.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.TimeNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"58fddeaf-5e19-4c7c-906a-a7625bccbf2b\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Time\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -2168.0,\n \"y\": -590.9999389648438,\n \"width\": 133.0,\n \"height\": 173.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Time\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Time\\\",\\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\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Sine Time\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Sine Time\\\",\\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\\\": \\\"Cosine Time\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Cosine Time\\\",\\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\\\": \\\"Delta Time\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Delta Time\\\",\\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\\\": \\\"Smooth Delta\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Smooth Delta\\\",\\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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.UVNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"5e8e4c97-0caa-4f3c-aa5d-b10c167ab561\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"UV\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1673.9998779296875,\n \"y\": -959.0,\n \"width\": 207.99998474121095,\n \"height\": 311.9999694824219\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_OutputChannel\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.AddNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"90b32223-1f19-4047-975d-4f3631a13f03\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Add\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -558.0,\n \"y\": -260.0000305175781,\n \"width\": 208.0,\n \"height\": 302.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.20000000298023225,\\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.PowerNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"9f9a4fc9-7e9d-4f76-8276-2f1279e4538b\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Power\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1078.0001220703125,\n \"y\": -317.0,\n \"width\": 208.00001525878907,\n \"height\": 302.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\\\": 4.0,\\n \\\"y\\\": 2.0,\\n \\\"z\\\": 2.0,\\n \\\"w\\\": 2.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.MultiplyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"a4323ab5-7056-40f3-ac97-e16df1c0e181\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1476.0,\n \"y\": -641.0,\n \"width\": 207.99998474121095,\n \"height\": 301.9999694824219\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.5,\\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.OneMinusNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"a9cad4fc-17d0-4cfe-8109-d16897860d36\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"One Minus\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -803.0000610351563,\n \"y\": -259.0,\n \"width\": 208.00001525878907,\n \"height\": 278.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.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.PropertyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"b4a161b9-c67d-49d1-804b-31e89d07ca25\",\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\": -330.0,\n \"y\": -91.00004577636719,\n \"width\": 144.0,\n \"height\": 34.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\\\",\\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\": \"5ac744a1-eef9-4c42-a281-6bd143fbd014\"\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.AddNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"bbef275a-cffa-4318-b56e-c21cb06b7da2\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Add\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -940.0000610351563,\n \"y\": 51.99998474121094,\n \"width\": 208.00001525878907,\n \"height\": 302.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.4000000059604645,\\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.DitherNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"bdbe3eb8-08d6-46d3-9dfc-06f489912cee\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Dither\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1229.0001220703125,\n \"y\": 38.000003814697269,\n \"width\": 212.0,\n \"height\": 302.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.ScreenPositionMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Screen Position\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"ScreenPosition\\\",\\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 \\\"m_ScreenSpaceType\\\": 0\\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SplitNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"c99aec2a-b9f5-4fb6-9f55-2524371059ba\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Split\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -400.0,\n \"y\": -458.0,\n \"width\": 128.0,\n \"height\": 149.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.Vector2Node" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"d023280a-c244-4992-a753-c91bb9a38cda\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Vector 2\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1689.9998779296875,\n \"y\": -516.0,\n \"width\": 128.99998474121095,\n \"height\": 101.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.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.AddNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"d8ef3c23-259a-485a-ac9d-24a4a48b3988\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Add\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1935.9998779296875,\n \"y\": -584.0000610351563,\n \"width\": 128.99998474121095,\n \"height\": 117.99999237060547\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.12999999523162843,\\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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.AddNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"e80c7bb6-7579-4fc7-8c51-ea8fbf8793cb\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Add\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -649.9675903320313,\n \"y\": 85.03246307373047,\n \"width\": 208.0,\n \"height\": 302.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.10000000149011612,\\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.AddNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"ed3a3f04-9634-4c1a-b0e6-52bd68747507\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Add\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1181.0,\n \"y\": -880.0,\n \"width\": 207.99998474121095,\n \"height\": 301.9999694824219\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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"092d2f83-9486-496a-bd55-6b11fd236050\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 12,\n \"m_NodeGUIDSerialized\": \"0004a8ba-604a-4734-81ac-ec71efa2d4e2\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"308ee1bc-7f36-4ba5-9ff1-04acc460fdfa\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"c99aec2a-b9f5-4fb6-9f55-2524371059ba\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"308ee1bc-7f36-4ba5-9ff1-04acc460fdfa\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"0004a8ba-604a-4734-81ac-ec71efa2d4e2\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"48225bcc-e33f-4d09-b380-a2e293e91fd0\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"9f9a4fc9-7e9d-4f76-8276-2f1279e4538b\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"5e8e4c97-0caa-4f3c-aa5d-b10c167ab561\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"ed3a3f04-9634-4c1a-b0e6-52bd68747507\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"90b32223-1f19-4047-975d-4f3631a13f03\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 16,\n \"m_NodeGUIDSerialized\": \"0004a8ba-604a-4734-81ac-ec71efa2d4e2\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"9f9a4fc9-7e9d-4f76-8276-2f1279e4538b\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"a9cad4fc-17d0-4cfe-8109-d16897860d36\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"a4323ab5-7056-40f3-ac97-e16df1c0e181\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"ed3a3f04-9634-4c1a-b0e6-52bd68747507\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"a9cad4fc-17d0-4cfe-8109-d16897860d36\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e80c7bb6-7579-4fc7-8c51-ea8fbf8793cb\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"b4a161b9-c67d-49d1-804b-31e89d07ca25\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 14,\n \"m_NodeGUIDSerialized\": \"0004a8ba-604a-4734-81ac-ec71efa2d4e2\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"bbef275a-cffa-4318-b56e-c21cb06b7da2\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"90b32223-1f19-4047-975d-4f3631a13f03\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"bdbe3eb8-08d6-46d3-9dfc-06f489912cee\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"bbef275a-cffa-4318-b56e-c21cb06b7da2\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"c99aec2a-b9f5-4fb6-9f55-2524371059ba\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"48225bcc-e33f-4d09-b380-a2e293e91fd0\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"d023280a-c244-4992-a753-c91bb9a38cda\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"a4323ab5-7056-40f3-ac97-e16df1c0e181\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"d8ef3c23-259a-485a-ac9d-24a4a48b3988\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"d023280a-c244-4992-a753-c91bb9a38cda\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"e80c7bb6-7579-4fc7-8c51-ea8fbf8793cb\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"90b32223-1f19-4047-975d-4f3631a13f03\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"ed3a3f04-9634-4c1a-b0e6-52bd68747507\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"308ee1bc-7f36-4ba5-9ff1-04acc460fdfa\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Transparent", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "0004a8ba-604a-4734-81ac-ec71efa2d4e2" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraph.shadergraph.meta new file mode 100644 index 00000000000..006b180361f --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ab27d72fec363a047a6c74c0b7f8cef1 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraphMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraphMat.mat new file mode 100644 index 00000000000..3935fc8eb13 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraphMat.mat @@ -0,0 +1,117 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CloudGraphMat + m_Shader: {fileID: -6465566751694194690, guid: ab27d72fec363a047a6c74c0b7f8cef1, + type: 3} + m_ShaderKeywords: _ALPHATEST_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2450 + stringTagMap: + MotionVector: User + RenderType: TransparentCutout + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - Texture2D_26D31A1D: + m_Texture: {fileID: 2800000, guid: c2f3ef3cb804f414e90609a436ec8e8a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack2_164AE2E_Texture2_4: + m_Texture: {fileID: 2800000, guid: 312de1f115b043b42804703d66a0e4b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack2_164AE2E_Texture2_6: + m_Texture: {fileID: 2800000, guid: 312de1f115b043b42804703d66a0e4b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack2_164AE2E_Texture_3: + m_Texture: {fileID: 2800000, guid: 9d826512ba2dfdd43b55968c032dde91, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack2_164AE2E_Texture_5: + m_Texture: {fileID: 2800000, guid: 402f77c2ec784934a884d97647d9fe9b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_164AE2E_Texture2_6: + m_Texture: {fileID: 2800000, guid: 312de1f115b043b42804703d66a0e4b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_164AE2E_Texture_5: + m_Texture: {fileID: 2800000, guid: 402f77c2ec784934a884d97647d9fe9b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStack164AE2E_164AE2E_Texture2_6: + m_Texture: {fileID: 2800000, guid: 312de1f115b043b42804703d66a0e4b8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStack164AE2E_164AE2E_Texture_5: + m_Texture: {fileID: 2800000, guid: 402f77c2ec784934a884d97647d9fe9b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - Vector1_1EC2602A: 0.5 + - Vector1_A6D4BDE2: 0.5 + - _AlphaCutoffEnable: 1 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _BlendMode: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 2 + - _DstBlend: 0 + - _EnableFogOnTransparent: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 1 + - _RenderQueueType: 1 + - _RequireSplitLighting: 0 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SurfaceType: 0 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentSortPriority: 0 + - _TransparentZWrite: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 3 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &4048175855346994500 +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: 2 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraphMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraphMat.mat.meta new file mode 100644 index 00000000000..58b71969633 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/CloudGraphMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 48186b9b44885574a9e56fd68988986d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraph.shadergraph new file mode 100644 index 00000000000..3456daf356c --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraph.shadergraph @@ -0,0 +1,37 @@ +{ + "m_SerializedProperties": [], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"68065f08-7c25-43d3-bce2-bab59a5a253a\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Sample Texture Stack 1\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -867.0,\n \"y\": 28.0,\n \"width\": 195.0,\n \"height\": 101.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"402f77c2ec784934a884d97647d9fe9b\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Rendering.HighDefinition.DecalMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"8dbb241d-9c32-43a4-a837-03d1bf24228b\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Decal Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -351.0000915527344,\n \"y\": -57.00001525878906,\n \"width\": 200.00001525878907,\n \"height\": 341.0000305175781\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\\\": \\\"Vertex 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\\\": 10,\\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\\\": 11,\\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\\\": \\\"BaseColor\\\",\\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\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\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\\\": 2,\\n \\\"m_DisplayName\\\": \\\"BaseColor Opacity\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"AlphaAlbedo\\\",\\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.NormalMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 3,\\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.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"Normal Opacity\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"AlphaNormal\\\",\\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\\\": 5,\\n \\\"m_DisplayName\\\": \\\"Metallic\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Metallic\\\",\\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\\\": \\\"Ambient Occlusion\\\",\\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.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 7,\\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\\\": 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\\\": 8,\\n \\\"m_DisplayName\\\": \\\"MAOS Opacity\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"MAOSOpacity\\\",\\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.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Emission\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Emission\\\",\\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_ColorMode\\\": 1\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.DecalSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_AffectsMetal\": true,\n \"m_AffectsAO\": true,\n \"m_AffectsSmoothness\": true,\n \"m_AffectsAlbedo\": true,\n \"m_AffectsNormal\": true,\n \"m_AffectsEmission\": true,\n \"m_DrawOrder\": 0\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"68065f08-7c25-43d3-bce2-bab59a5a253a\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"8dbb241d-9c32-43a4-a837-03d1bf24228b\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "8dbb241d-9c32-43a4-a837-03d1bf24228b" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraph.shadergraph.meta new file mode 100644 index 00000000000..43271f2740e --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3899f9a985edc8444a69309861892c4c +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraphMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraphMat.mat new file mode 100644 index 00000000000..d56d660bad6 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraphMat.mat @@ -0,0 +1,52 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DecalGraphMat + m_Shader: {fileID: -6465566751694194690, guid: 3899f9a985edc8444a69309861892c4c, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleTextureStack1_F1146E9_Texture_2: + m_Texture: {fileID: 2800000, guid: 3a5dd8b426778e14cb9f1f2e716841f8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack1_F1146E9_Texture_5: + m_Texture: {fileID: 2800000, guid: 402f77c2ec784934a884d97647d9fe9b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_F1146E9_Texture_5: + m_Texture: {fileID: 2800000, guid: 402f77c2ec784934a884d97647d9fe9b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _DecalMeshDepthBias: 0 + - _DrawOrder: 0 + m_Colors: [] + m_BuildTextureStacks: [] +--- !u!114 &4550561707362505580 +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: 2 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraphMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraphMat.mat.meta new file mode 100644 index 00000000000..5383aeec62f --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/DecalGraphMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 342da00bb7479ee4496c018d481c260f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitGraph.shadergraph new file mode 100644 index 00000000000..074d72b0af5 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitGraph.shadergraph @@ -0,0 +1,49 @@ +{ + "m_SerializedProperties": [], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.MultiplyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"1a944490-65d6-4417-b514-6cc13b6bd635\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -359.0,\n \"y\": 176.0,\n \"width\": 208.0,\n \"height\": 302.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\\\": 10.0,\\n \\\"e01\\\": 7.0,\\n \\\"e02\\\": 5.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"418ce6b5-1a87-4747-940b-2238d19f921b\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Sample Texture Stack 1\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -709.0,\n \"y\": 124.0,\n \"width\": 195.0,\n \"height\": 101.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"062e2e8c474a74644bc719d5d294c476\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Rendering.HighDefinition.HDUnlitMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"86ecdce8-13f2-4fea-ad8d-8732fdaeb77b\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Unlit Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 0.0,\n \"y\": 0.0,\n \"width\": 0.0,\n \"height\": 0.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.PositionMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Vertex Position\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Vertex 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\\\": 13,\\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\\\": 14,\\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\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Color\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Color\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.003921568859368563,\\n \\\"y\\\": 0.003921568859368563,\\n \\\"z\\\": 0.003921568859368563\\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\\\": 7,\\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\\\": 8,\\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.5,\\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\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Emission\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Emission\\\",\\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_ColorMode\\\": 1\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.HDUnlitSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_RenderingPass\": 1,\n \"m_TransparencyFog\": true,\n \"m_DrawBeforeRefraction\": false,\n \"m_Distortion\": false,\n \"m_DistortionMode\": 0,\n \"m_DistortionOnly\": true,\n \"m_DistortionDepthTest\": true,\n \"m_AlphaTest\": false,\n \"m_SortPriority\": 0,\n \"m_DoubleSided\": false,\n \"m_ZWrite\": true,\n \"m_transparentCullMode\": 2,\n \"m_ZTest\": 4,\n \"m_AddPrecomputedVelocity\": false,\n \"m_EnableShadowMatte\": false\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"1a944490-65d6-4417-b514-6cc13b6bd635\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 12,\n \"m_NodeGUIDSerialized\": \"86ecdce8-13f2-4fea-ad8d-8732fdaeb77b\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"418ce6b5-1a87-4747-940b-2238d19f921b\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"1a944490-65d6-4417-b514-6cc13b6bd635\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "86ecdce8-13f2-4fea-ad8d-8732fdaeb77b" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitGraph.shadergraph.meta new file mode 100644 index 00000000000..0aff8de59c2 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6160a92e39d31d14582bc3f037b78082 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitMat.mat new file mode 100644 index 00000000000..a559a527837 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitMat.mat @@ -0,0 +1,94 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-877316350253502381 +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: 2 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: EmisUnlitMat + m_Shader: {fileID: -6465566751694194690, guid: 6160a92e39d31d14582bc3f037b78082, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleTextureStack1_E020294_Texture_2: + m_Texture: {fileID: 2800000, guid: 062e2e8c474a74644bc719d5d294c476, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack1_E020294_Texture_5: + m_Texture: {fileID: 2800000, guid: 062e2e8c474a74644bc719d5d294c476, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_E020294_Texture_5: + m_Texture: {fileID: 2800000, guid: 062e2e8c474a74644bc719d5d294c476, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStackE020294_E020294_Texture_5: + m_Texture: {fileID: 2800000, guid: 062e2e8c474a74644bc719d5d294c476, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaCutoffEnable: 0 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _BlendMode: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 2 + - _DstBlend: 0 + - _EnableFogOnTransparent: 1 + - _ReceivesSSR: 0 + - _ReceivesSSRTransparent: 0 + - _RenderQueueType: 1 + - _RequireSplitLighting: 0 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 0 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 2 + - _StencilRefMV: 32 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SurfaceType: 0 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentSortPriority: 0 + - _TransparentZWrite: 1 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitMat.mat.meta new file mode 100644 index 00000000000..611a1870cbe --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EmisUnlitMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 235d3c3699f368b458ff0c1d16bab6a1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodGraph.shadergraph new file mode 100644 index 00000000000..241a7ccf6f9 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodGraph.shadergraph @@ -0,0 +1,143 @@ +{ + "m_SerializedProperties": [], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.UVNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"05ee2060-3dbb-44bc-bdc0-f8b7fec4868b\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"UV\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -371.0000915527344,\n \"y\": -422.0,\n \"width\": 144.99998474121095,\n \"height\": 129.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\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.ComparisonNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"11271f9a-2f8c-446c-8ec7-bffc10c73812\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Comparison\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -86.00003814697266,\n \"y\": -365.0,\n \"width\": 144.99998474121095,\n \"height\": 136.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\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\\\": 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\\\": 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\\\": 0.5,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.BooleanMaterialSlot\"\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\\\": false,\\n \\\"m_DefaultValue\\\": false\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_ComparisonType\": 4\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.UVNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"12a90813-fc57-4e6b-a2ca-984d3f37e998\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"UV\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1435.0,\n \"y\": 236.0,\n \"width\": 208.0,\n \"height\": 313.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_OutputChannel\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.BranchNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"1ce7dfec-d97d-4066-b267-2b656dfe6838\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Branch\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 129.99986267089845,\n \"y\": -230.0,\n \"width\": 168.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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SplitNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"6db72112-d751-489a-afba-2aaf99fd7a0e\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Split\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -1186.0,\n \"y\": 245.0,\n \"width\": 118.00000762939453,\n \"height\": 149.00001525878907\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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.MultiplyNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"706e1d01-fa79-4d97-8a46-e49d06d859d2\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Multiply\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -796.0,\n \"y\": 148.99998474121095,\n \"width\": 208.0,\n \"height\": 302.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\\\": 5.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\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Rendering.HighDefinition.HDLitMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"7204a8a6-53ca-499b-a124-6e2b17f89079\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Lit Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 372.0,\n \"y\": -96.0,\n \"width\": 200.0,\n \"height\": 341.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\\\": \\\"Vertex 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\\\": 33,\\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\\\": 34,\\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\\\": \\\"BaseColor\\\",\\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\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\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\\\": 3,\\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\\\": 11,\\n \\\"m_DisplayName\\\": \\\"CoatMask\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"CoatMask\\\",\\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\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Metallic\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Metallic\\\",\\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\\\": 14,\\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\\\": 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\\\": 15,\\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.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 13,\\n \\\"m_DisplayName\\\": \\\"Emission\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Emission\\\",\\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_ColorMode\\\": 1\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 16,\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.HDLitSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_RenderingPass\": 1,\n \"m_BlendPreserveSpecular\": true,\n \"m_TransparencyFog\": true,\n \"m_DrawBeforeRefraction\": false,\n \"m_RefractionModel\": 0,\n \"m_Distortion\": false,\n \"m_DistortionMode\": 0,\n \"m_DistortionDepthTest\": true,\n \"m_AlphaTest\": false,\n \"m_AlphaTestDepthPrepass\": false,\n \"m_AlphaTestDepthPostpass\": false,\n \"m_TransparentWritesMotionVec\": false,\n \"m_AlphaTestShadow\": false,\n \"m_BackThenFrontRendering\": false,\n \"m_SortPriority\": 0,\n \"m_DoubleSidedMode\": 0,\n \"m_NormalDropOffSpace\": 0,\n \"m_MaterialType\": 0,\n \"m_SSSTransmission\": true,\n \"m_ReceiveDecals\": true,\n \"m_ReceivesSSR\": true,\n \"m_AddPrecomputedVelocity\": false,\n \"m_EnergyConservingSpecular\": true,\n \"m_SpecularAA\": false,\n \"m_SpecularAAScreenSpaceVariance\": 0.0,\n \"m_SpecularAAThreshold\": 0.0,\n \"m_SpecularOcclusionMode\": 0,\n \"m_DiffusionProfile\": 0,\n \"m_overrideBakedGI\": false,\n \"m_depthOffset\": false,\n \"m_ZWrite\": false,\n \"m_transparentCullMode\": 2,\n \"m_ZTest\": 4,\n \"m_SupportLodCrossFade\": false,\n \"m_MaterialNeedsUpdateHash\": 11\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTexture2DLODNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"8b10edbf-32a4-4259-b44c-2c78b90ff3b4\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Sample Texture 2D LOD\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -444.9999694824219,\n \"y\": -203.00001525878907,\n \"width\": 197.0,\n \"height\": 251.00001525878907\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\\\": 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\\\": 5,\\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\\\": 6,\\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\\\": 7,\\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\\\": 8,\\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 \"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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"526f56bddea1ec94abca08e368cb7006\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\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 \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"LOD\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"LOD\\\",\\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\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_TextureType\": 0,\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"b97e50cc-f655-4015-89d1-451ce38e12c0\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TexStack_622C0D0\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -53.00006103515625,\n \"y\": -24.999990463256837,\n \"width\": 176.0,\n \"height\": 125.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"526f56bddea1ec94abca08e368cb7006\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 10,\\n \\\"m_DisplayName\\\": \\\"Lod\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Lod\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"Lod\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 1,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [ + { + "m_GuidSerialized": "a7a6694e-f212-4334-9682-53fad661db32", + "m_Title": "What this does", + "m_Content": "Half the ball goes trhough VT the other half through regular texture sampling. This ensures vt behaves identical with explicit lod sampling.", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -849.0, + "y": -310.0, + "width": 200.0, + "height": 160.0 + }, + "m_GroupGuidSerialized": "00000000-0000-0000-0000-000000000000" + } + ], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"05ee2060-3dbb-44bc-bdc0-f8b7fec4868b\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"11271f9a-2f8c-446c-8ec7-bffc10c73812\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"11271f9a-2f8c-446c-8ec7-bffc10c73812\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"1ce7dfec-d97d-4066-b267-2b656dfe6838\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"12a90813-fc57-4e6b-a2ca-984d3f37e998\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"6db72112-d751-489a-afba-2aaf99fd7a0e\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"1ce7dfec-d97d-4066-b267-2b656dfe6838\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"7204a8a6-53ca-499b-a124-6e2b17f89079\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"6db72112-d751-489a-afba-2aaf99fd7a0e\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"706e1d01-fa79-4d97-8a46-e49d06d859d2\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"706e1d01-fa79-4d97-8a46-e49d06d859d2\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 4,\n \"m_NodeGUIDSerialized\": \"8b10edbf-32a4-4259-b44c-2c78b90ff3b4\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"706e1d01-fa79-4d97-8a46-e49d06d859d2\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 10,\n \"m_NodeGUIDSerialized\": \"b97e50cc-f655-4015-89d1-451ce38e12c0\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"8b10edbf-32a4-4259-b44c-2c78b90ff3b4\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"1ce7dfec-d97d-4066-b267-2b656dfe6838\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"b97e50cc-f655-4015-89d1-451ce38e12c0\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"1ce7dfec-d97d-4066-b267-2b656dfe6838\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "7204a8a6-53ca-499b-a124-6e2b17f89079" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodGraph.shadergraph.meta new file mode 100644 index 00000000000..4a837d998c0 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 95cfe7544cc0daa42bdb78ee21f9a8db +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodMat.mat new file mode 100644 index 00000000000..1424297188a --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodMat.mat @@ -0,0 +1,94 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8705482740865616583 +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: 2 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ExplicitLodMat + m_Shader: {fileID: -6465566751694194690, guid: 95cfe7544cc0daa42bdb78ee21f9a8db, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleTexture2DLOD_95D04801_Texture_1: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack_622C0D0_Texture_5: + m_Texture: {fileID: 2800000, guid: 45616a16dd1d6db4c8b22f5f0963c86a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_622C0D0_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStack622C0D0_622C0D0_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaCutoffEnable: 0 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _BlendMode: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 2 + - _DstBlend: 0 + - _EnableFogOnTransparent: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 1 + - _RenderQueueType: 1 + - _RequireSplitLighting: 0 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SurfaceType: 0 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentSortPriority: 0 + - _TransparentZWrite: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodMat.mat.meta new file mode 100644 index 00000000000..cc4b61c1b46 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/ExplicitLodMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07d9e73903bb12c47908581c233e64d8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraph.shadergraph new file mode 100644 index 00000000000..ccceea43e1b --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraph.shadergraph @@ -0,0 +1,37 @@ +{ + "m_SerializedProperties": [], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.Rendering.HighDefinition.EyeMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"29304e7a-e8b0-4281-a5f9-793a98c38ba4\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Eye Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 0.0,\n \"y\": 0.0,\n \"width\": 0.0,\n \"height\": 0.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\\\": \\\"Vertex 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\\\": 18,\\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\\\": 19,\\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\\\": \\\"BaseColor\\\",\\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\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\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\\\": 3,\\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\\\": \\\"IrisNormal\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"IrisNormal\\\",\\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\\\": 14,\\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\\\": 5,\\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\\\": 0.8999999761581421,\\n \\\"m_DefaultValue\\\": 0.8999999761581421,\\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\\\": \\\"IOR\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"IOR\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": 1.399999976158142,\\n \\\"m_DefaultValue\\\": 1.399999976158142,\\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\\\": \\\"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.Vector2MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 8,\\n \\\"m_DisplayName\\\": \\\"Mask\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Mask\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 1.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 \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 11,\\n \\\"m_DisplayName\\\": \\\"Emission\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Emission\\\",\\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_ColorMode\\\": 1\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.EyeSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_BlendPreserveSpecular\": true,\n \"m_TransparencyFog\": true,\n \"m_AlphaTest\": false,\n \"m_AlphaTestDepthPrepass\": false,\n \"m_AlphaTestDepthPostpass\": false,\n \"m_SortPriority\": 0,\n \"m_DoubleSidedMode\": 0,\n \"m_MaterialType\": 0,\n \"m_ReceiveDecals\": true,\n \"m_ReceivesSSR\": true,\n \"m_AddPrecomputedVelocity\": false,\n \"m_SubsurfaceScattering\": false,\n \"m_SpecularOcclusionMode\": 0,\n \"m_overrideBakedGI\": false,\n \"m_depthOffset\": false,\n \"m_ZWrite\": false,\n \"m_transparentCullMode\": 2,\n \"m_ZTest\": 4,\n \"m_SupportLodCrossFade\": false,\n \"m_MaterialNeedsUpdateHash\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"ea5137b8-8393-47c0-bfb5-b72a60f1435f\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TexStack_7EEFEDDA\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -419.0,\n \"y\": 98.0,\n \"width\": 182.0,\n \"height\": 101.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"45616a16dd1d6db4c8b22f5f0963c86a\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"ea5137b8-8393-47c0-bfb5-b72a60f1435f\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"29304e7a-e8b0-4281-a5f9-793a98c38ba4\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "29304e7a-e8b0-4281-a5f9-793a98c38ba4" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraph.shadergraph.meta new file mode 100644 index 00000000000..5c237fee3bd --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: cc4fcd59609243c4c9dc00a10f18dd3a +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraphMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraphMat.mat new file mode 100644 index 00000000000..6e11e09dfbe --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraphMat.mat @@ -0,0 +1,85 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: EyeGraphMat + m_Shader: {fileID: -6465566751694194690, guid: cc4fcd59609243c4c9dc00a10f18dd3a, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleVTStack_DC9225B2_Texture_5: + m_Texture: {fileID: 2800000, guid: 45616a16dd1d6db4c8b22f5f0963c86a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStackDC9225B2_DC9225B2_Texture_5: + m_Texture: {fileID: 2800000, guid: 45616a16dd1d6db4c8b22f5f0963c86a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaCutoffEnable: 0 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _BlendMode: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 2 + - _DstBlend: 0 + - _EnableFogOnTransparent: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RequireSplitLighting: 0 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SurfaceType: 0 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentSortPriority: 0 + - _TransparentZWrite: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &8827444566161710921 +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: 2 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraphMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraphMat.mat.meta new file mode 100644 index 00000000000..57b802afb92 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/EyeGraphMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9ea3de83b55e1f745aaa7d7a9152158a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraph.shadergraph new file mode 100644 index 00000000000..f09b935b40b --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraph.shadergraph @@ -0,0 +1,37 @@ +{ + "m_SerializedProperties": [], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.Rendering.HighDefinition.FabricMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"c80305e5-157f-4854-83a3-6dcf7c30607c\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Fabric Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 0.0,\n \"y\": 0.0,\n \"width\": 0.0,\n \"height\": 0.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\\\": \\\"Vertex 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\\\": 19,\\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\\\": 20,\\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\\\": \\\"BaseColor\\\",\\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\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\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\\\": 3,\\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\\\": 15,\\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\\\": 4,\\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\\\": 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\\\": 5,\\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.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 6,\\n \\\"m_DisplayName\\\": \\\"SpecularColor\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Specular\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.20000000298023225,\\n \\\"y\\\": 0.20000000298023225,\\n \\\"z\\\": 0.20000000298023225\\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.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Emission\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Emission\\\",\\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_ColorMode\\\": 1\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 13,\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.FabricSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_BlendPreserveSpecular\": true,\n \"m_TransparencyFog\": true,\n \"m_AlphaTest\": false,\n \"m_SortPriority\": 0,\n \"m_DoubleSidedMode\": 0,\n \"m_MaterialType\": 0,\n \"m_ReceiveDecals\": true,\n \"m_ReceivesSSR\": true,\n \"m_AddPrecomputedVelocity\": false,\n \"m_EnergyConservingSpecular\": true,\n \"m_Transmission\": false,\n \"m_SubsurfaceScattering\": false,\n \"m_SpecularOcclusionMode\": 0,\n \"m_overrideBakedGI\": false,\n \"m_depthOffset\": false,\n \"m_ZWrite\": false,\n \"m_transparentCullMode\": 2,\n \"m_ZTest\": 4,\n \"m_SupportLodCrossFade\": false,\n \"m_MaterialNeedsUpdateHash\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"dd723891-0aa0-41a0-98a1-ccb6edbcd0ba\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TexStack_7EEFEDDA\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -392.0,\n \"y\": 105.0,\n \"width\": 182.0,\n \"height\": 101.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"45616a16dd1d6db4c8b22f5f0963c86a\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"dd723891-0aa0-41a0-98a1-ccb6edbcd0ba\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"c80305e5-157f-4854-83a3-6dcf7c30607c\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "c80305e5-157f-4854-83a3-6dcf7c30607c" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraph.shadergraph.meta new file mode 100644 index 00000000000..5d09d81ad98 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d1bf7c67b2bdce345bad08de5899bf29 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraphMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraphMat.mat new file mode 100644 index 00000000000..e713626c976 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraphMat.mat @@ -0,0 +1,85 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-777096719594565242 +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: 2 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FabricGraphMat + m_Shader: {fileID: -6465566751694194690, guid: d1bf7c67b2bdce345bad08de5899bf29, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleVTStack_54B3324D_Texture_5: + m_Texture: {fileID: 2800000, guid: 45616a16dd1d6db4c8b22f5f0963c86a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStack54B3324D_54B3324D_Texture_5: + m_Texture: {fileID: 2800000, guid: 45616a16dd1d6db4c8b22f5f0963c86a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaCutoffEnable: 0 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _BlendMode: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 2 + - _DstBlend: 0 + - _EnableFogOnTransparent: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RequireSplitLighting: 0 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SurfaceType: 0 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentSortPriority: 0 + - _TransparentZWrite: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraphMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraphMat.mat.meta new file mode 100644 index 00000000000..9222d385875 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/FabricGraphMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7fac6689649feba43beb1a82bafb0276 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraph.shadergraph new file mode 100644 index 00000000000..9cfe52ff710 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraph.shadergraph @@ -0,0 +1,37 @@ +{ + "m_SerializedProperties": [], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"8249aade-79e8-4636-9895-89d02f940665\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TexStack_7EEFEDDA\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -486.0,\n \"y\": 107.0,\n \"width\": 182.0,\n \"height\": 101.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"45616a16dd1d6db4c8b22f5f0963c86a\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Rendering.HighDefinition.HairMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"8e5f1c96-3f88-43dc-b54e-d67b079ef3a4\",\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\": 0.0,\n \"y\": 0.0,\n \"width\": 0.0,\n \"height\": 0.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\\\": \\\"Vertex 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\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\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\\\": 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\\\": 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\\\": 0.20000000298023225,\\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.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.10000000149011612,\\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.10000000149011612,\\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_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.HairSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_BlendPreserveSpecular\": true,\n \"m_TransparencyFog\": true,\n \"m_AlphaTest\": false,\n \"m_AlphaTestDepthPrepass\": false,\n \"m_AlphaTestDepthPostpass\": false,\n \"m_TransparentWritesMotionVec\": false,\n \"m_AlphaTestShadow\": false,\n \"m_BackThenFrontRendering\": false,\n \"m_SortPriority\": 0,\n \"m_DoubleSidedMode\": 0,\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\": 0,\n \"m_overrideBakedGI\": false,\n \"m_depthOffset\": false,\n \"m_ZWrite\": false,\n \"m_transparentCullMode\": 2,\n \"m_ZTest\": 4,\n \"m_SupportLodCrossFade\": false,\n \"m_MaterialNeedsUpdateHash\": 3\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"8249aade-79e8-4636-9895-89d02f940665\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"8e5f1c96-3f88-43dc-b54e-d67b079ef3a4\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "8e5f1c96-3f88-43dc-b54e-d67b079ef3a4" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraph.shadergraph.meta new file mode 100644 index 00000000000..37d8969a195 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f4da338061f75f648a7416e7b585e8db +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraphMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraphMat.mat new file mode 100644 index 00000000000..1c360a9e680 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraphMat.mat @@ -0,0 +1,85 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9094565611291873008 +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: 2 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HairGraphMat + m_Shader: {fileID: -6465566751694194690, guid: f4da338061f75f648a7416e7b585e8db, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleVTStack_9EBCEA0_Texture_5: + m_Texture: {fileID: 2800000, guid: 45616a16dd1d6db4c8b22f5f0963c86a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStack9EBCEA0_9EBCEA0_Texture_5: + m_Texture: {fileID: 2800000, guid: 45616a16dd1d6db4c8b22f5f0963c86a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaCutoffEnable: 0 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _BlendMode: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 2 + - _DstBlend: 0 + - _EnableFogOnTransparent: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RequireSplitLighting: 0 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SurfaceType: 0 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentSortPriority: 0 + - _TransparentZWrite: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraphMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraphMat.mat.meta new file mode 100644 index 00000000000..feaf62e82d3 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/HairGraphMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 68a009b14c10a24488b47dd0fb86b883 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraph.shadergraph new file mode 100644 index 00000000000..a66402f88f0 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraph.shadergraph @@ -0,0 +1,104 @@ +{ + "m_SerializedProperties": [], + "m_SerializedKeywords": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.ShaderKeyword" + }, + "JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"804b9e83-d235-4490-8b98-782f9c9f3e88\"\n },\n \"m_Name\": \"TestKeyword\",\n \"m_DefaultReferenceName\": \"ENUM_4BFCF0BD\",\n \"m_OverrideReferenceName\": \"TESTKEYWORD\",\n \"m_GeneratePropertyBlock\": true,\n \"m_KeywordType\": 1,\n \"m_KeywordDefinition\": 1,\n \"m_KeywordScope\": 0,\n \"m_Entries\": [\n {\n \"id\": 1,\n \"displayName\": \"TwoStacks\",\n \"referenceName\": \"TWOSTACKS\"\n },\n {\n \"id\": 2,\n \"displayName\": \"OneStack\",\n \"referenceName\": \"ONESTACK\"\n },\n {\n \"id\": 3,\n \"displayName\": \"NoStack\",\n \"referenceName\": \"NOSTACK\"\n }\n ],\n \"m_Value\": 0,\n \"m_IsEditable\": true\n}" + } + ], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"0de74125-13e7-49d6-abd0-1b9521a47360\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Sample VT Stack\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -633.0000610351563,\n \"y\": 179.00001525878907,\n \"width\": 167.0,\n \"height\": 101.00000762939453\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"3a5dd8b426778e14cb9f1f2e716841f8\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Rendering.HighDefinition.HDUnlitMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"460c3a5f-e447-4f24-8bb5-4437eaa84765\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Unlit Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": 123.0000228881836,\n \"y\": 39.00001907348633,\n \"width\": 200.00001525878907,\n \"height\": 221.00001525878907\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.PositionMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Vertex Position\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Vertex 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\\\": 13,\\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\\\": 14,\\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\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Color\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Color\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\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\\\": 7,\\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\\\": 8,\\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.5,\\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\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Emission\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Emission\\\",\\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_ColorMode\\\": 1\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_RenderingPass\": 1,\n \"m_TransparencyFog\": true,\n \"m_DrawBeforeRefraction\": false,\n \"m_Distortion\": false,\n \"m_DistortionMode\": 0,\n \"m_DistortionOnly\": true,\n \"m_DistortionDepthTest\": true,\n \"m_AlphaTest\": false,\n \"m_SortPriority\": 0,\n \"m_DoubleSided\": false,\n \"m_ZWrite\": true,\n \"m_transparentCullMode\": 2,\n \"m_ZTest\": 4,\n \"m_AddPrecomputedVelocity\": false,\n \"m_EnableShadowMatte\": false,\n \"m_DOTSInstancing\": false,\n \"m_ShaderGUIOverride\": \"\",\n \"m_OverrideEnabled\": false\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.LerpNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"661f2595-8787-4372-bf04-4cad07da380a\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Lerp\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -388.99993896484377,\n \"y\": 16.999998092651368,\n \"width\": 208.00001525878907,\n \"height\": 326.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.5,\\n \\\"y\\\": 0.5,\\n \\\"z\\\": 0.5,\\n \\\"w\\\": 0.5\\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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTexture2DNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"790b4cc8-d868-4be2-b504-399bf80dfb06\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Sample Texture 2D\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -651.0,\n \"y\": 302.0,\n \"width\": 182.0,\n \"height\": 251.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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"63ca992c464c234489312adaa6c517fb\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\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}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.KeywordNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"90bf3a2f-56ba-4fca-9d8f-295ecf0c9af7\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TestKeyword\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -217.0,\n \"y\": 155.0,\n \"width\": 208.0,\n \"height\": 326.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\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 \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.DynamicVectorMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"TwoStacks\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"TWOSTACKS\\\",\\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\\\": \\\"OneStack\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"ONESTACK\\\",\\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\\\": \\\"NoStack\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"NOSTACK\\\",\\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_KeywordGuidSerialized\": \"804b9e83-d235-4490-8b98-782f9c9f3e88\"\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"b33ff9b1-4eb2-47b3-86ba-129963ba58bd\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Sample VT Stack\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -628.9999389648438,\n \"y\": 56.00002670288086,\n \"width\": 167.0,\n \"height\": 101.00000762939453\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"526f56bddea1ec94abca08e368cb7006\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"b8836192-7daa-4fe9-9d73-d3433334fb5a\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Sample VT Stack\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -615.9999389648438,\n \"y\": -56.9999885559082,\n \"width\": 167.0,\n \"height\": 101.00000762939453\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"45616a16dd1d6db4c8b22f5f0963c86a\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 1,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"0de74125-13e7-49d6-abd0-1b9521a47360\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"90bf3a2f-56ba-4fca-9d8f-295ecf0c9af7\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"661f2595-8787-4372-bf04-4cad07da380a\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"90bf3a2f-56ba-4fca-9d8f-295ecf0c9af7\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"790b4cc8-d868-4be2-b504-399bf80dfb06\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 3,\n \"m_NodeGUIDSerialized\": \"90bf3a2f-56ba-4fca-9d8f-295ecf0c9af7\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"90bf3a2f-56ba-4fca-9d8f-295ecf0c9af7\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"460c3a5f-e447-4f24-8bb5-4437eaa84765\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"b33ff9b1-4eb2-47b3-86ba-129963ba58bd\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"661f2595-8787-4372-bf04-4cad07da380a\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"b8836192-7daa-4fe9-9d73-d3433334fb5a\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"661f2595-8787-4372-bf04-4cad07da380a\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "460c3a5f-e447-4f24-8bb5-4437eaa84765" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraph.shadergraph.meta new file mode 100644 index 00000000000..079714c629f --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: be5619756dc67924a96b8c42d04163ef +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat.mat new file mode 100644 index 00000000000..3a242015285 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat.mat @@ -0,0 +1,95 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-212447893603212950 +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: 2 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: KeywordGraphMat + m_Shader: {fileID: -6465566751694194690, guid: be5619756dc67924a96b8c42d04163ef, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleTexture2D_E61CDA67_Texture_1: + m_Texture: {fileID: 2800000, guid: 63ca992c464c234489312adaa6c517fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_10927F28_Texture_5: + m_Texture: {fileID: 2800000, guid: 45616a16dd1d6db4c8b22f5f0963c86a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_15ED268D_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_9915F6DF_Texture_5: + m_Texture: {fileID: 2800000, guid: 3a5dd8b426778e14cb9f1f2e716841f8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - TESTKEYWORD: 0 + - _AlphaCutoffEnable: 0 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _BlendMode: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 2 + - _DstBlend: 0 + - _EnableFogOnTransparent: 1 + - _ReceivesSSR: 0 + - _ReceivesSSRTransparent: 0 + - _RenderQueueType: 1 + - _RequireSplitLighting: 0 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 0 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 2 + - _StencilRefMV: 32 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SurfaceType: 0 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentSortPriority: 0 + - _TransparentZWrite: 1 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat.mat.meta new file mode 100644 index 00000000000..23d4d7bec0c --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2330b7f72cb6e414e988ee52d6d1ef8a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat_Variant.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat_Variant.mat new file mode 100644 index 00000000000..59bf8f79d9f --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat_Variant.mat @@ -0,0 +1,95 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-212447893603212950 +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: 2 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: KeywordGraphMat_Variant + m_Shader: {fileID: -6465566751694194690, guid: be5619756dc67924a96b8c42d04163ef, + type: 3} + m_ShaderKeywords: TESTKEYWORD_ONESTACK + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleTexture2D_E61CDA67_Texture_1: + m_Texture: {fileID: 2800000, guid: 63ca992c464c234489312adaa6c517fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_10927F28_Texture_5: + m_Texture: {fileID: 2800000, guid: 45616a16dd1d6db4c8b22f5f0963c86a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_15ED268D_Texture_5: + m_Texture: {fileID: 2800000, guid: 526f56bddea1ec94abca08e368cb7006, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_9915F6DF_Texture_5: + m_Texture: {fileID: 2800000, guid: 3a5dd8b426778e14cb9f1f2e716841f8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - TESTKEYWORD: 1 + - _AlphaCutoffEnable: 0 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _BlendMode: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 2 + - _DstBlend: 0 + - _EnableFogOnTransparent: 1 + - _ReceivesSSR: 0 + - _ReceivesSSRTransparent: 0 + - _RenderQueueType: 1 + - _RequireSplitLighting: 0 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 0 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 2 + - _StencilRefMV: 32 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SurfaceType: 0 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentSortPriority: 0 + - _TransparentZWrite: 1 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat_Variant.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat_Variant.mat.meta new file mode 100644 index 00000000000..036e5b9ffcc --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/KeywordGraphMat_Variant.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd32f17d440606a4087c07273ee5978c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LightingData.asset b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LightingData.asset new file mode 100644 index 00000000000..943f4c0d893 Binary files /dev/null and b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LightingData.asset differ diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LightingData.asset.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LightingData.asset.meta new file mode 100644 index 00000000000..c5b2324ec8e --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LightingData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf8ca8e1564687f40b494fc1f1490915 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraph.shadergraph b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraph.shadergraph new file mode 100644 index 00000000000..27bf2611575 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraph.shadergraph @@ -0,0 +1,43 @@ +{ + "m_SerializedProperties": [], + "m_SerializedKeywords": [], + "m_SerializableNodes": [ + { + "typeInfo": { + "fullName": "UnityEditor.Rendering.HighDefinition.HDLitMasterNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"509edd25-5c61-4140-a3f0-92f3d9356390\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Lit Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -281.0,\n \"y\": -157.0,\n \"width\": 200.0,\n \"height\": 341.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\\\": \\\"Vertex 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\\\": 33,\\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\\\": 34,\\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\\\": \\\"BaseColor\\\",\\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\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\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\\\": 3,\\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\\\": 11,\\n \\\"m_DisplayName\\\": \\\"CoatMask\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"CoatMask\\\",\\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\\\": 12,\\n \\\"m_DisplayName\\\": \\\"Metallic\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Metallic\\\",\\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\\\": 14,\\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\\\": 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\\\": 15,\\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.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 13,\\n \\\"m_DisplayName\\\": \\\"Emission\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Emission\\\",\\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_ColorMode\\\": 1\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 16,\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_DOTSInstancing\": false,\n \"m_SerializableSubShaders\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.Rendering.HighDefinition.HDLitSubShader\"\n },\n \"JSONnodeData\": \"{}\"\n }\n ],\n \"m_SurfaceType\": 0,\n \"m_AlphaMode\": 0,\n \"m_RenderingPass\": 1,\n \"m_BlendPreserveSpecular\": true,\n \"m_TransparencyFog\": true,\n \"m_DrawBeforeRefraction\": false,\n \"m_RefractionModel\": 0,\n \"m_Distortion\": false,\n \"m_DistortionMode\": 0,\n \"m_DistortionDepthTest\": true,\n \"m_AlphaTest\": false,\n \"m_AlphaTestDepthPrepass\": false,\n \"m_AlphaTestDepthPostpass\": false,\n \"m_TransparentWritesMotionVec\": false,\n \"m_AlphaTestShadow\": false,\n \"m_BackThenFrontRendering\": false,\n \"m_SortPriority\": 0,\n \"m_DoubleSidedMode\": 0,\n \"m_NormalDropOffSpace\": 0,\n \"m_MaterialType\": 0,\n \"m_SSSTransmission\": true,\n \"m_ReceiveDecals\": true,\n \"m_ReceivesSSR\": true,\n \"m_AddPrecomputedVelocity\": false,\n \"m_EnergyConservingSpecular\": true,\n \"m_SpecularAA\": false,\n \"m_SpecularAAScreenSpaceVariance\": 0.0,\n \"m_SpecularAAThreshold\": 0.0,\n \"m_SpecularOcclusionMode\": 0,\n \"m_DiffusionProfile\": 0,\n \"m_overrideBakedGI\": false,\n \"m_depthOffset\": false,\n \"m_ZWrite\": false,\n \"m_transparentCullMode\": 2,\n \"m_ZTest\": 4,\n \"m_SupportLodCrossFade\": false,\n \"m_MaterialNeedsUpdateHash\": 11\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.ShaderGraph.SampleTextureStackNode" + }, + "JSONnodeData": "{\n \"m_GuidSerialized\": \"d0786215-dbe8-495e-bdf7-d0992ff23409\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"TexStack_38945874\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -880.0,\n \"y\": -90.0,\n \"width\": 196.0,\n \"height\": 125.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.UVMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\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.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 2,\\n \\\"m_DisplayName\\\": \\\"Out2\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out2\\\",\\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.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 5,\\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\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"3a5dd8b426778e14cb9f1f2e716841f8\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Texture2DInputMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 6,\\n \\\"m_DisplayName\\\": \\\"Texture2\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Texture2\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Texture\\\": {\\n \\\"m_SerializedTexture\\\": \\\"{\\\\\\\"texture\\\\\\\":{\\\\\\\"fileID\\\\\\\":2800000,\\\\\\\"guid\\\\\\\":\\\\\\\"e793b1c02c4f7ae448a9cc2c39447dd7\\\\\\\",\\\\\\\"type\\\\\\\":3}}\\\",\\n \\\"m_Guid\\\": \\\"\\\"\\n },\\n \\\"m_DefaultType\\\": 3\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector4MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Feedback\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": true,\\n \\\"m_ShaderOutputName\\\": \\\"Feedback\\\",\\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 \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_LodCalculation\": 0,\n \"m_SampleQuality\": 1,\n \"m_NumSlots\": 2,\n \"m_NoFeedback\": false,\n \"m_StackName\": \"\",\n \"m_TextureTypes\": [\n 0,\n 1,\n 0,\n 0\n ],\n \"m_NormalMapSpace\": 0\n}" + } + ], + "m_Groups": [], + "m_StickyNotes": [], + "m_SerializableEdges": [ + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"d0786215-dbe8-495e-bdf7-d0992ff23409\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"509edd25-5c61-4140-a3f0-92f3d9356390\"\n }\n}" + }, + { + "typeInfo": { + "fullName": "UnityEditor.Graphing.Edge" + }, + "JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"d0786215-dbe8-495e-bdf7-d0992ff23409\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 2,\n \"m_NodeGUIDSerialized\": \"509edd25-5c61-4140-a3f0-92f3d9356390\"\n }\n}" + } + ], + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_ActiveOutputNodeGuidSerialized": "509edd25-5c61-4140-a3f0-92f3d9356390" +} \ No newline at end of file diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraph.shadergraph.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraph.shadergraph.meta new file mode 100644 index 00000000000..c4f3ccf31f0 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 725a9a7054c16c84cb0b83d52871dad2 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraphMat.mat b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraphMat.mat new file mode 100644 index 00000000000..ccbbd15a519 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraphMat.mat @@ -0,0 +1,110 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8464309422812162092 +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: 2 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LitGraphMat + m_Shader: {fileID: -6465566751694194690, guid: 725a9a7054c16c84cb0b83d52871dad2, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + MotionVector: User + disabledShaderPasses: + - MOTIONVECTORS + - TransparentBackface + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _SampleTextureStack2_38945874_Texture2_4: + m_Texture: {fileID: 2800000, guid: e793b1c02c4f7ae448a9cc2c39447dd7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack2_38945874_Texture2_6: + m_Texture: {fileID: 2800000, guid: e793b1c02c4f7ae448a9cc2c39447dd7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack2_38945874_Texture_3: + m_Texture: {fileID: 2800000, guid: 3a5dd8b426778e14cb9f1f2e716841f8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleTextureStack2_38945874_Texture_5: + m_Texture: {fileID: 2800000, guid: 3a5dd8b426778e14cb9f1f2e716841f8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_38945874_Texture2_6: + m_Texture: {fileID: 2800000, guid: e793b1c02c4f7ae448a9cc2c39447dd7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SampleVTStack_38945874_Texture_5: + m_Texture: {fileID: 2800000, guid: 3a5dd8b426778e14cb9f1f2e716841f8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStack38945874_38945874_Texture2_6: + m_Texture: {fileID: 2800000, guid: e793b1c02c4f7ae448a9cc2c39447dd7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TexStack38945874_38945874_Texture_5: + m_Texture: {fileID: 2800000, guid: 3a5dd8b426778e14cb9f1f2e716841f8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaCutoffEnable: 0 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _BlendMode: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _DoubleSidedEnable: 0 + - _DoubleSidedNormalMode: 2 + - _DstBlend: 0 + - _EnableFogOnTransparent: 1 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 1 + - _RenderQueueType: 1 + - _RequireSplitLighting: 0 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefDistortionVec: 4 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskDistortionVec: 4 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SurfaceType: 0 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentSortPriority: 0 + - _TransparentZWrite: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraphMat.mat.meta b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraphMat.mat.meta new file mode 100644 index 00000000000..8465cb44d62 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LitGraphMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc84e16d82c586944a35abe7b79273e4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LowResolutionRequester.cs b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LowResolutionRequester.cs new file mode 100644 index 00000000000..a64813df2c1 --- /dev/null +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/9x_Other/9713_VirtualTexturing/LowResolutionRequester.cs @@ -0,0 +1,51 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Rendering = UnityEngine.Experimental.Rendering; + +[ExecuteInEditMode] +public class LowResolutionRequester : MonoBehaviour +{ + public Material materialToRequest; + List properties = new List(); + public int firstMipToRequest; + + // Start is called before the first frame update + void Start() + { + if (materialToRequest == null) return; + Shader shad = materialToRequest.shader; + + // Hack, we simply request all stacks in the shader ideally we would have some way + // to identify a specific stack within a shader. + properties.Clear(); + for ( int i=0;i public string name { get { return m_Name; } } + /// + /// Returns true is MSAA is enabled, false otherwise. + /// + public bool isMSAAEnabled { get { return m_EnableMSAA; } } + // Keep constructor private internal RTHandle(RTHandleSystem owner) { diff --git a/com.unity.render-pipelines.core/ShaderLibrary/GraniteShaderLibBase.h b/com.unity.render-pipelines.core/ShaderLibrary/GraniteShaderLibBase.h new file mode 100644 index 00000000000..3a68ca94f6b --- /dev/null +++ b/com.unity.render-pipelines.core/ShaderLibrary/GraniteShaderLibBase.h @@ -0,0 +1,1252 @@ +//@IGNORE_BEGIN +/** +* Graphine Granite Runtime Shader 3.0 +* +* Copyright (c) 2017 Graphine. All Rights Reserved +* +* This shader library contains all shader functionality to sample +* Granite tile sets. It should be included in the application-specific +* shader code. +* +* -------------- +* FUNCTION CALLS +* -------------- +* +* To sample a layer from a tile set, first perform the lookup: +* +* int Granite_Lookup[_UDIM]( in GraniteConstantBuffers grCB, in gra_Float2 inputTexCoord, +* in GraniteTranslationTexture translationTable, +* out GraniteLookupData graniteLookupData, +* out gra_Float4 resolveResult); +* +* It is now possible to sample from any layer in the tile set: +* +* int Granite_Sample( in GraniteConstantBuffers grCB, +* in GraniteLookupData graniteLookupData, +* in uint layer, +* in GraniteCacheTexture cacheTexture, +* out gra_Float4 result); +* +* +* Depending on you resolve strategy, you will need to do the following +* +* - Separate Resolver: +* +* Calculate only the resolve output in the separate resolver pass: +* +* gra_Float4 Granite_ResolverPixel[_UDIM]( in GraniteConstantBuffers grCB, +* gra_Float2 inputTexCoord); +* +* You can supply a dummy resolveResult parameter to the Granite_Lookup function when sampling. +* +* - MRT Resolver: +* +* Output the resolveResult parameter given by the Granite_Lookup function to the render target. +* +* - RWTexture2D Resolver: +* +* You can write the resolveResult parameter given by the Granite_Lookup function to a RWTexture as follows: +* +* void Granite_DitherResolveOutput( in gra_Float4 resolve, +* in RWTexture2D resolveTexture, +* in gra_Float2 screenPos, +* in float alpha = 1.0f); +* +* Don't forget to set GRA_RWTEXTURE2D_SCALE to the actual scale used! +* +* +* To transform the texture coordinates when using atlassing use: +* +* gra_Float4 Granite_Transform( in GraniteStreamingTextureConstantBuffer grSTCB, +* gra_Float2 inputTexCoord); +* +* If you want to sample from a UDIM streaming texture use the Granite_Lookup_UDIM functions to perform the lookup. +* If you want to sample with explicit derivatives, use the overloaded 'Lookup' and 'Resolve' functions that take additional ddX and ddY parameters. +* If you want to sample with explicit level-of-detail, use the overloaded 'Lookup' and 'Resolve' functions that take an additional LOD parameter. Note that these take a special GraniteLodVTData parameter. +* If you do not want to have texture wrapping of streaming textures when using atlassing, use the overloaded 'PreTransformed' Lookup functions. Call Granite_Transform (or transform the UVs at the CPU) yourself! +* If you want to sample a cube map, use the appropriate 'Lookup'' and 'Sample' functions. +* Pass in the complete texture coordinate ( NOT the fractional part of it) in order to avoid discontinuities! +* +* --------------------- +* INTEGRATION CHECKLIST +* --------------------- +* +* (1.) Define the following preprocessor directives to configure the shader: +* +* define GRA_HLSL_3 1/0 +* Enable/disable HLSL 3 syntax +* Default: disabled +* +* define GRA_HLSL_4 1/0 +* Enable/disable HLSL 4 syntax +* Default: disabled +* +* define GRA_HLSL_5 1/0 +* Enable/disable HLSL 5 syntax +* Default: disabled +* +* define GRA_GLSL_120 1/0 +* Enable/disable GLSL version 1.2 syntax +* Default: disabled +* +* define GRA_GLSL_130 1/0 +* Enable/disable GLSL version 1.3 syntax +* Default: disabled +* +* define GRA_GLSL_330 1/0 +* Enable/disable GLSL version 3.2 syntax +* Default: disabled +* +* define GRA_VERTEX_SHADER 1/0 +* Define that we are compiling a vertex shader and limit the instruction set to valid instructions +* Default: disabled +* +* define GRA_PIXEL_SHADER 1/0 +* Define that we are compiling a pixel shader and limit the instruction set to valid instructions +* Default: disabled +* +* define GRA_HQ_CUBEMAPPING 1/0 +* Enable/disable high quality cubemapping +* Default: disabled +* +* define GRA_DEBUG 0 +* Enable/disable debug mode of shader. It recommended to set this to true when first integrating +* Granite into your engine. It will catch some common mistakes with passing shader parameters etc. +* Default: disabled +* +* define GRA_DEBUG_TILES 1/0 +* Enable/disable visual debug output of tiles +* Default: disabled +* +* define GRA_BGRA 1/0 +* Enable shader output in BGRA format (else RGBA is used) +* Default: disabled (rgba) +* +* define GRA_ROW_MAJOR 1/0 +* Set row major or colum major order of arrays +* Default: enabled (row major) +* +* define GRA_64BIT_RESOLVER 1/0 +* Render the resolver pass to a 64bpp resolver instead of a 32 bit per pixel format. +* Default: disabled +* +* define GRA_RWTEXTURE2D_SCALE [1,16] +* The scale we are resolving at in the RWTexture2D. Must match the resolveScale when creation the RWTexture2D resolver. +* Default: 16 +* +* define GRA_DISABLE_TEX_LOAD 1/0 +* Prefer a texture sample over a texture load (Only has effect on shader models that support the texture load/fetch instruction) +* Default: 0 +* +* define GRA_PACK_RESOLVE_OUTPUT 1/0 +* When enabled, pack the resolve output values. If disabled, you should pack the returned resolve value using Granite_PackTileId. +* Use this when performing multiple VT samples and dithering the resolve output. +* Default: 1 +* +* define GRA_TEXTURE_ARRAY_SUPPORT 1/0 +* Does the graphics API / shader model supports texture arrays ? +* Default: 1 for shader models supporting texture arrays, else 0 +* +* (2.) Include the Shader library, "GraniteShaderLib.h" +* +* (3.) Ensure a nearest-point sampler is passed for the translation texture, +* including the mipmap filter (e.g., D3DTEXF_POINT for D3D9, or +* NearestMipmapNearest for CG) +* +*/ +//@IGNORE_END +// KEEP THESE IGNORE HERE (DO NOT COLLAPSE) +//@IGNORE_BEGIN +#ifndef GRA_HLSL_3 +#define GRA_HLSL_3 0 +#endif + +#ifndef GRA_HLSL_4 +#define GRA_HLSL_4 0 +#endif + +#ifndef GRA_HLSL_5 +#define GRA_HLSL_5 0 +#endif + +#ifndef GRA_GLSL_120 +#define GRA_GLSL_120 0 +#endif + +#ifndef GRA_GLSL_130 +#define GRA_GLSL_130 0 +#endif + +#ifndef GRA_GLSL_330 +#define GRA_GLSL_330 0 +#endif + +#ifndef GRA_VERTEX_SHADER +#define GRA_VERTEX_SHADER 0 +#endif + +#ifndef GRA_PIXEL_SHADER +#define GRA_PIXEL_SHADER 0 +#endif + +#ifndef GRA_HQ_CUBEMAPPING +#define GRA_HQ_CUBEMAPPING 0 +#endif + +#ifndef GRA_DEBUG_TILES +#define GRA_DEBUG_TILES 0 +#endif + +#ifndef GRA_BGRA +#define GRA_BGRA 0 +#endif + +#ifndef GRA_ROW_MAJOR +#define GRA_ROW_MAJOR 1 +#endif + +#ifndef GRA_DEBUG +#define GRA_DEBUG 1 +#endif + +#ifndef GRA_64BIT_RESOLVER +#define GRA_64BIT_RESOLVER 0 +#endif + +#ifndef GRA_RWTEXTURE2D_SCALE +#define GRA_RWTEXTURE2D_SCALE 16 +#endif + +#ifndef GRA_DISABLE_TEX_LOAD +#define GRA_DISABLE_TEX_LOAD 0 +#endif + +#ifndef GRA_PACK_RESOLVE_OUTPUT +#define GRA_PACK_RESOLVE_OUTPUT 1 +#endif + +#ifndef GRA_FORCE_SM3 +#define GRA_FORCE_SM3 0 +#endif + +// Temp workaround for PSSL's lack of unorm. Ideally there would be a whole seperate GRA_PSSL backend. +#ifdef GRA_NO_UNORM + #define GRA_UNORM +#else + #define GRA_UNORM unorm +#endif + +#ifndef GRA_TEXTURE_ARRAY_SUPPORT + #if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) || (GRA_GLSL_330 == 1) + #define GRA_TEXTURE_ARRAY_SUPPORT 1 + #else + #define GRA_TEXTURE_ARRAY_SUPPORT 0 + #endif +#endif + +#define GRA_HLSL_FAMILY ((GRA_HLSL_3 == 1) || (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1)) +#define GRA_GLSL_FAMILY ((GRA_GLSL_120 == 1) || (GRA_GLSL_130 == 1) || (GRA_GLSL_330 == 1)) + +#if GRA_HLSL_FAMILY + #define gra_Float2 float2 + #define gra_Float3 float3 + #define gra_Float4 float4 + #define gra_Int3 int3 + #define gra_Float4x4 float4x4 + #define gra_Unroll [unroll] + #define gra_Branch [branch] +#elif GRA_GLSL_FAMILY + #if (GRA_VERTEX_SHADER == 0) && (GRA_PIXEL_SHADER ==0) + #error GLSL requires knowledge of the shader stage! Neither GRA_VERTEX_SHADER or GRA_PIXEL_SHADER are defined! + #else + #define gra_Float2 vec2 + #define gra_Float3 vec3 + #define gra_Float4 vec4 + #define gra_Int3 ivec3 + #define gra_Float4x4 mat4 + #define gra_Unroll + #define gra_Branch + #if (GRA_VERTEX_SHADER == 1) + #define ddx + #define ddy + #elif (GRA_PIXEL_SHADER == 1) + #define ddx dFdx + #define ddy dFdy + #endif + #define frac fract + #define lerp mix + /** This is not correct (http://stackoverflow.com/questions/7610631/glsl-mod-vs-hlsl-fmod) but it is for our case */ + #define fmod mod + #endif +#else + #error unknown shader architecture +#endif + +#if (GRA_DISABLE_TEX_LOAD!=1) + #if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) || (GRA_GLSL_130 == 1) || (GRA_GLSL_330 == 1) + #define GRA_LOAD_INSTR 1 + #else + #define GRA_LOAD_INSTR 0 + #endif +#else + #define GRA_LOAD_INSTR 0 +#endif + +//@IGNORE_END + +// These are special values that need to be replaced by the shader stripper +//! gra_TranslationTableBias +//! gra_MaxAnisotropyLog2 +//! gra_CalcMiplevelDeltaScale +//! gra_CalcMiplevelDeltaScaleX +//! gra_CalcMiplevelDeltaScaleY +//! gra_LodBiasPow2 +//! gra_TileToCacheScale +//! gra_TileToCacheBias +//! gra_CacheIdxToCacheScale +//! gra_CacheDeltaScale +//! gra_Level0NumTilesX +//! gra_TextureMagic +//! gra_TextureId +//! gra_TransSwiz +//! gra_NumTilesYScale +//! gra_CutoffLevel +//! gra_MetaTiles +//! gra_NumLevels +//! gra_TileContentInTiles +//! gra_RcpCacheInTiles +//! gra_BorderPixelsRcpCache +//! TranslateCoord +//! PackTileId +//! UnpackTileId +//! CalcMiplevelAnisotropic +//! DrawDebugTiles +//! TranslateCoord +//! numPagesOnLevel +//! cacheCoord +//! deltaScale +//! sampDeltaX +//! sampDeltaY +//! lenDxSqr +//! lenDySqr +//! dMaxSqr +//! dMinSqr +//! maxLevel +//! minLevel +//! anisoLog2 +//! borderTemp +//! translationData +//! virtualTilesUv +//! cache +//! ddX +//! ddY +//! faceIdx +//! resultBits +//! swiz +//! level0NumTiles +//! sourceColor +//! borderColor +//! level +//! ddxTc +//! ddyTc +//! availableMips +//! maxAvailableMip +//! lod +//! smoothLevel +//! unused_resolve +//! transform +//! textureCoord +//! resolveResult +//! GranitePrivate +//! pixelLocation +//! screenPos +//! resolveTexture +//! pixelPos +//! writePos +//! dither +//! packedTile +//! cacheOffs +//! offset +//! tileY +//! tileX +//! border +//! tex +//! scale +//! output +//! temp +//! value +//! LOD +//! graniteLookupData +//! numTilesOnLevel +//! cacheX +//! cacheY +//! contTexCoord +//! derivX +//! derivY +//! dVx +//! dVy +//! majorAxis +//! GranitePrivate_CalcMiplevelAnisotropic +//! GranitePrivate_PackTileId +//! GranitePrivate_UnpackTileId +//! GranitePrivate_TranslateCoord +//! GranitePrivate_DrawDebugTiles +//! GranitePrivate_Sample +//! GranitePrivate_SampleLevel +//! GranitePrivate_SampleGrad +//! GranitePrivate_SampleArray +//! GranitePrivate_SampleLevelArray +//! GranitePrivate_SampleGradArray +//! GranitePrivate_SampleBias +//! GranitePrivate_Saturate +//! GranitePrivate_CalculateLevelOfDetail +//! GranitePrivate_Gather +//! GranitePrivate_Load +//! GranitePrivate_FloatAsUint +//! GranitePrivate_Pow2 +//! GranitePrivate_CalcMiplevelLinear +//! GranitePrivate_ResolverPixel +//! GranitePrivate_DitherResolveOutput +//! GranitePrivate_CalculateCubemapCoordinates +//! GranitePrivate_MakeResolveOutput +//! exponent +//! gra_TilesetBuffer +//! gra_TilesetBufferInternal +//! gra_TilesetCacheBuffer +//! gra_StreamingTextureCB +//! gra_StreamingTextureCubeCB +//! gra_Transform +//! gra_CubeTransform +//! gra_StreamingTextureTransform +//! gra_StreamingTextureInfo +//! grCB +//! tsCB +//! grSTCB +//! tileTexCoord +//! transforms +//! GranitePrivate_RepeatUV +//! GranitePrivate_UdimUV +//! GranitePrivate_ClampUV +//! GranitePrivate_MirrorUV +//! gra_AssetWidthRcp +//! gra_AssetHeightRcp + +// These are special values that need to be defined by the shader stripper +//! d floor +//! d frac +//! d fmod +//! d dot +//! d max +//! d min +//! d log2 +//! d ddx +//! d ddy +//! d pow +//! d smoothstep +//! d sqrt +//! d saturate +//! d clamp +//! d float +//! d gra_Float2 +//! d gra_Float3 +//! d gra_Float4 +//! d gra_Float4x4 +//! d int +//! d int2 +//! d uint2 +//! d const +//! d bool +//! d if +//! d else +//! d for +//! d translationTable +//! d cacheTexture +//! d inputTexCoord +//! d tileXY +//! d resolveOutput +//! d result +//! d texCoord +//! d return +//! d paramBlock0 +//! d paramBlock1 +//! d class +//! d in +//! d out +//! d inout +//! d Texture +//! d TextureArray +//! d Sampler +//! d GraniteCacheTexture +//! d GraniteTranslationTexture +//! d GraniteLookupData +//! d GraniteLODLookupData +//! d RWTexture2D +//! d tex2Dlod +//! d tex2D +//! d tex2Dbias +//! d dX +//! d dY +//! d textureCoordinates +//! d translationTableData +//! d layer +//! d cacheLevel +//! d StreamingTextureConstantBuffer +//! d StreamingTextureCubeConstantBuffer +//! d TilesetConstantBuffer +//! d GraniteConstantBuffers +//! d GraniteCubeConstantBuffers + +//@IGNORE_BEGIN + +/** + a cross API texture handle +*/ +#if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + struct GraniteTranslationTexture + { + SamplerState Sampler; + Texture2D Texture; + }; + struct GraniteCacheTexture + { + SamplerState Sampler; + + #if GRA_TEXTURE_ARRAY_SUPPORT + Texture2DArray TextureArray; + #else + Texture2D Texture; + #endif + }; +#elif (GRA_HLSL_3 == 1) || (GRA_GLSL_120 == 1) || (GRA_GLSL_130 == 1) || (GRA_GLSL_330 == 1) + #define GraniteTranslationTexture sampler2D + + #if GRA_TEXTURE_ARRAY_SUPPORT + #define GraniteCacheTexture sampler2DArray + #else + #define GraniteCacheTexture sampler2D + #endif + +#else + #error unknow shader archtecture +#endif + +/** + Struct defining the constant buffer for each streaming texture. + Use IStreamingTexture::GetConstantBuffer to fill this struct. +*/ +struct GraniteStreamingTextureConstantBuffer +{ + #define _grStreamingTextureCBSize 2 + gra_Float4 data[_grStreamingTextureCBSize]; +}; + +/** + Struct defining the constant buffer for each cube streaming texture. + Use multiple calls to IStreamingTexture::GetConstantBuffer this struct (one call for each face). + */ +struct GraniteStreamingTextureCubeConstantBuffer +{ + #define _grStreamingTextureCubeCBSize 6 + GraniteStreamingTextureConstantBuffer data[_grStreamingTextureCubeCBSize]; +}; + +/** + Struct defining the constant buffer for each tileset. + Use ITileSet::GetConstantBuffer to fill this struct. +*/ +struct GraniteTilesetConstantBuffer +{ + #define _grTilesetCBSize 2 + gra_Float4x4 data[_grTilesetCBSize]; +}; + +/** + Utility struct used by the shaderlib to wrap up all required constant buffers needed to perform a VT lookup/sample. + */ +struct GraniteConstantBuffers +{ + GraniteTilesetConstantBuffer tilesetBuffer; + GraniteStreamingTextureConstantBuffer streamingTextureBuffer; +}; + +/** + Utility struct used by the shaderlib to wrap up all required constant buffers needed to perform a Cube VT lookup/sample. + */ +struct GraniteCubeConstantBuffers +{ + GraniteTilesetConstantBuffer tilesetBuffer; + GraniteStreamingTextureCubeConstantBuffer streamingTextureCubeBuffer; +}; + +/** + The Granite lookup data for the different sampling functions. +*/ + +// Granite lookup data for automatic mip level selecting sampling +struct GraniteLookupData +{ + gra_Float4 translationTableData; + gra_Float2 textureCoordinates; + gra_Float2 dX; + gra_Float2 dY; +}; + +// Granite lookup data for explicit level-of-detail sampling +struct GraniteLODLookupData +{ + gra_Float4 translationTableData; + gra_Float2 textureCoordinates; + float cacheLevel; +}; +//@IGNORE_END + +// public interface + +/* + END OF PUBLIC INTERFACE + Everything below this point should be treated as private to GraniteShaderLib.h +*/ + +//@INSERT_DEFINES +#define gra_TilesetBuffer grCB.tilesetBuffer +#define gra_TilesetBufferInternal tsCB.data[0] +#define gra_TilesetCacheBuffer tsCB.data[1] + +#define gra_StreamingTextureCB grCB.streamingTextureBuffer +#define gra_StreamingTextureCubeCB grCB.streamingTextureCubeBuffer + +#define gra_Transform grCB.streamingTextureBuffer.data[0] +#define gra_CubeTransform grCB.streamingTextureCubeBuffer.data + +#define gra_StreamingTextureTransform grSTCB.data[0] +#define gra_StreamingTextureInfo grSTCB.data[1] + +#define gra_NumLevels gra_StreamingTextureInfo.x +#define gra_AssetWidthRcp gra_StreamingTextureInfo.y +#define gra_AssetHeightRcp gra_StreamingTextureInfo.z + +#if GRA_ROW_MAJOR == 1 + + #define gra_TranslationTableBias gra_TilesetBufferInternal[0][0] + #define gra_MaxAnisotropyLog2 gra_TilesetBufferInternal[1][0] + #define gra_CalcMiplevelDeltaScale gra_Float2(gra_TilesetBufferInternal[2][0], gra_TilesetBufferInternal[3][0]) + #define gra_CalcMiplevelDeltaScaleX gra_TilesetBufferInternal[2][0] + #define gra_CalcMiplevelDeltaScaleY gra_TilesetBufferInternal[3][0] + #define gra_LodBiasPow2 gra_TilesetBufferInternal[0][1] + #define gra_TrilinearOffset gra_TilesetBufferInternal[0][2] + #define gra_TileContentInTiles gra_Float2(gra_TilesetBufferInternal[0][2], gra_TilesetBufferInternal[1][2]) + #define gra_Level0NumTilesX gra_TilesetBufferInternal[0][3] + #define gra_NumTilesYScale gra_TilesetBufferInternal[1][3] + #define gra_TextureMagic gra_TilesetBufferInternal[2][3] + #define gra_TextureId gra_TilesetBufferInternal[3][3] + + #define gra_RcpCacheInTiles(l) gra_Float2(gra_TilesetCacheBuffer[0][l], gra_TilesetCacheBuffer[1][l]) + #define gra_BorderPixelsRcpCache(l) gra_Float2(gra_TilesetCacheBuffer[2][l], gra_TilesetCacheBuffer[3][l]) + +#else + + #define gra_TranslationTableBias gra_TilesetBufferInternal[0][0] + #define gra_MaxAnisotropyLog2 gra_TilesetBufferInternal[0][1] + #define gra_CalcMiplevelDeltaScale gra_Float2(gra_TilesetBufferInternal[0][2], gra_TilesetBufferInternal[0][3]) + #define gra_CalcMiplevelDeltaScaleX gra_TilesetBufferInternal[0][2] + #define gra_CalcMiplevelDeltaScaleY gra_TilesetBufferInternal[0][3] + #define gra_LodBiasPow2 gra_TilesetBufferInternal[1][0] + #define gra_TrilinearOffset gra_TilesetBufferInternal[2][0] + #define gra_TileContentInTiles gra_Float2(gra_TilesetBufferInternal[2][0], gra_TilesetBufferInternal[2][1]) + #define gra_Level0NumTilesX gra_TilesetBufferInternal[3][0] + #define gra_NumTilesYScale gra_TilesetBufferInternal[3][1] + #define gra_TextureMagic gra_TilesetBufferInternal[3][2] + #define gra_TextureId gra_TilesetBufferInternal[3][3] + + #define gra_RcpCacheInTiles(l) gra_Float2(gra_TilesetCacheBuffer[l][0], gra_TilesetCacheBuffer[l][1]) + #define gra_BorderPixelsRcpCache(l) gra_Float2(gra_TilesetCacheBuffer[l][2], gra_TilesetCacheBuffer[l][3]) + +#endif + +#if (GRA_GLSL_120==1) + // Extension needed for texture2DLod + #extension GL_ARB_shader_texture_lod : enable + // Extensions needed fot texture2DGrad + #extension GL_EXT_gpu_shader4 : enable + // Extensions needed for bit manipulation + #extension GL_ARB_shader_bit_encoding : enable +#endif + + +#if (GRA_TEXTURE_ARRAY_SUPPORT==1) + gra_Float4 GranitePrivate_SampleArray(in GraniteCacheTexture tex, in gra_Float3 texCoord) + { + #if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + return tex.TextureArray.Sample(tex.Sampler, texCoord); + #elif (GRA_GLSL_330 == 1) + return texture(tex, texCoord); + #else + #error using unsupported function + #endif + } + + gra_Float4 GranitePrivate_SampleGradArray(in GraniteCacheTexture tex, in gra_Float3 texCoord, in gra_Float2 dX, in gra_Float2 dY) + { + #if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + return tex.TextureArray.SampleGrad(tex.Sampler,texCoord,dX,dY); + #elif (GRA_GLSL_330 == 1) + return textureGrad(tex, texCoord, dX, dY); + #else + #error using unsupported function + #endif + } + + gra_Float4 GranitePrivate_SampleLevelArray(in GraniteCacheTexture tex, in gra_Float3 texCoord, in float level) + { + #if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + return tex.TextureArray.SampleLevel(tex.Sampler, texCoord, level); + #elif (GRA_GLSL_330 == 1) + return textureLod(tex, texCoord, level); + #else + #error using unsupported function + #endif + } +#else + gra_Float4 GranitePrivate_Sample(in GraniteCacheTexture tex, in gra_Float2 texCoord) + { + #if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + return tex.Texture.Sample(tex.Sampler,texCoord); + #elif (GRA_HLSL_3 == 1) + return tex2D(tex,texCoord); + #elif (GRA_GLSL_120 == 1) || (GRA_GLSL_130 == 1) + return texture2D(tex, texCoord); + #elif (GRA_GLSL_330 == 1) + return texture(tex, texCoord); + #endif + } + + gra_Float4 GranitePrivate_SampleLevel(in GraniteCacheTexture tex, in gra_Float2 texCoord, in float level) + { + #if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + return tex.Texture.SampleLevel(tex.Sampler, texCoord, level); + #elif (GRA_HLSL_3 == 1) + return tex2Dlod(tex,gra_Float4(texCoord,0.0,level)); + #elif (GRA_GLSL_120 == 1) + return texture2DLod(tex, texCoord, level); + #elif (GRA_GLSL_130 == 1) || (GRA_GLSL_330 == 1) + return textureLod(tex, texCoord, level); + #endif + } + + gra_Float4 GranitePrivate_SampleGrad(in GraniteCacheTexture tex, in gra_Float2 texCoord, in gra_Float2 dX, in gra_Float2 dY) + { + #if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + return tex.Texture.SampleGrad(tex.Sampler,texCoord,dX,dY); + #elif (GRA_HLSL_3 == 1) + return tex2D(tex,texCoord,dX,dY); + #elif (GRA_GLSL_120 == 1) + return texture2DGrad(tex, texCoord, dX, dY); + #elif (GRA_GLSL_130 == 1) || (GRA_GLSL_330 == 1) + return textureGrad(tex, texCoord, dX, dY); + #endif + } +#endif //#if (GRA_TEXTURE_ARRAY_SUPPORT==1) + +#if (GRA_LOAD_INSTR==1) +gra_Float4 GranitePrivate_Load(in GraniteTranslationTexture tex, in gra_Int3 location) +{ +#if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + return tex.Texture.Load(location); +#elif (GRA_GLSL_130 == 1) || (GRA_GLSL_330 == 1) + return texelFetch(tex, location.xy, location.z); +#elif (GRA_HLSL_3 == 1) || (GRA_GLSL_120 == 1) + #error using unsupported function +#endif +} +#endif + +//work-around shader compiler bug +//compiler gets confused with GranitePrivate_SampleLevel taking a GraniteCacheTexture as argument when array support is disabled +//Without array support, GraniteCacheTexture and GraniteTranslationTexture are the same (but still different types!) +//compiler is confused (ERR_AMBIGUOUS_FUNCTION_CALL). Looks like somebody is over enthusiastic optimizing... +gra_Float4 GranitePrivate_SampleLevel_Translation(in GraniteTranslationTexture tex, in gra_Float2 texCoord, in float level) +{ +#if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + return tex.Texture.SampleLevel(tex.Sampler, texCoord, level); +#elif (GRA_HLSL_3 == 1) + return tex2Dlod(tex,gra_Float4(texCoord,0.0,level)); +#elif (GRA_GLSL_120 == 1) + return texture2DLod(tex, texCoord, level); +#elif (GRA_GLSL_130 == 1) || (GRA_GLSL_330 == 1) + return textureLod(tex, texCoord, level); +#endif +} + +float GranitePrivate_Saturate(in float value) +{ +#if GRA_HLSL_FAMILY + return saturate(value); +#elif GRA_GLSL_FAMILY + return clamp(value, 0.0f, 1.0f); +#endif +} + +#if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) || (GRA_GLSL_330 == 1) +uint GranitePrivate_FloatAsUint(float value) +{ +#if (GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) + return asuint(value); +#elif (GRA_GLSL_330 == 1) + return floatBitsToUint(value); +#endif +} +#endif + +float GranitePrivate_Pow2(int exponent) +{ +#if GRA_HLSL_FAMILY + return pow(2.0, exponent); +#else + return pow(2.0, float(exponent)); +#endif +} + +float GranitePrivate_Pow2(uint exponent) +{ +#if GRA_HLSL_FAMILY + return pow(2.0, exponent); +#else + return pow(2.0, float(exponent)); +#endif +} + +gra_Float2 GranitePrivate_RepeatUV(in gra_Float2 uv, in GraniteStreamingTextureConstantBuffer grSTCB) +{ + return frac(uv); +} + +gra_Float2 GranitePrivate_UdimUV(in gra_Float2 uv, in GraniteStreamingTextureConstantBuffer grSTCB) +{ + return uv; +} + +gra_Float2 GranitePrivate_ClampUV(in gra_Float2 uv, in GraniteStreamingTextureConstantBuffer grSTCB) +{ + gra_Float2 epsilon2 = gra_Float2(gra_AssetWidthRcp, gra_AssetHeightRcp); + return clamp(uv, epsilon2, gra_Float2(1,1) - epsilon2); +} + +gra_Float2 GranitePrivate_MirrorUV(in gra_Float2 uv, in GraniteStreamingTextureConstantBuffer grSTCB) +{ + gra_Float2 t = frac(uv*0.5)*2.0; + gra_Float2 l = gra_Float2(1.0,1.0); + return l-abs(t-l); +} + +// function definitons for private functions +gra_Float4 GranitePrivate_PackTileId(in gra_Float2 tileXY, in float level, in float textureID); + +gra_Float4 Granite_DebugPackedTileId64(in gra_Float4 PackedTile) +{ +#if GRA_64BIT_RESOLVER + gra_Float4 output; + + const float scale = 1.0f / 65535.0f; + gra_Float4 temp = PackedTile / scale; + + output.x = fmod(temp.x, 256.0f); + output.y = floor(temp.x / 256.0f) + fmod(temp.y, 16.0f) * 16.0f; + output.z = floor(temp.y / 16.0f); + output.w = temp.z + temp.a * 16.0f; + + return gra_Float4 + ( + (float)output.x / 255.0f, + (float)output.y / 255.0f, + (float)output.z / 255.0f, + (float)output.w / 255.0f + ); +#else + return PackedTile; +#endif +} + +gra_Float3 Granite_UnpackNormal(in gra_Float4 PackedNormal, float scale) +{ + gra_Float2 reconstructed = gra_Float2(PackedNormal.x * PackedNormal.a, PackedNormal.y) * 2.0f - 1.0f; + reconstructed *= scale; + float z = sqrt(1.0f - GranitePrivate_Saturate(dot(reconstructed, reconstructed))); + return gra_Float3(reconstructed, z); +} + +gra_Float3 Granite_UnpackNormal(in gra_Float4 PackedNormal) +{ + return Granite_UnpackNormal(PackedNormal, 1.0); +} + +#if GRA_HLSL_FAMILY +GraniteTilesetConstantBuffer Granite_ApplyResolutionOffset(in GraniteTilesetConstantBuffer INtsCB, in float resolutionOffsetPow2) +{ + GraniteTilesetConstantBuffer tsCB = INtsCB; + gra_LodBiasPow2 *= resolutionOffsetPow2; + //resolutionOffsetPow2 *= resolutionOffsetPow2; //Square it before multiplying it in below + gra_CalcMiplevelDeltaScaleX *= resolutionOffsetPow2; + gra_CalcMiplevelDeltaScaleY *= resolutionOffsetPow2; + return tsCB; +} + +GraniteTilesetConstantBuffer Granite_SetMaxAnisotropy(in GraniteTilesetConstantBuffer INtsCB, in float maxAnisotropyLog2) +{ + GraniteTilesetConstantBuffer tsCB = INtsCB; + gra_MaxAnisotropyLog2 = min(gra_MaxAnisotropyLog2, maxAnisotropyLog2); + return tsCB; +} +#else +void Granite_ApplyResolutionOffset(inout GraniteTilesetConstantBuffer tsCB, in float resolutionOffsetPow2) +{ + gra_LodBiasPow2 *= resolutionOffsetPow2; + //resolutionOffsetPow2 *= resolutionOffsetPow2; //Square it before multiplying it in below + gra_CalcMiplevelDeltaScaleX *= resolutionOffsetPow2; + gra_CalcMiplevelDeltaScaleY *= resolutionOffsetPow2; +} + +void Granite_SetMaxAnisotropy(inout GraniteTilesetConstantBuffer tsCB, in float maxAnisotropyLog2) +{ + gra_MaxAnisotropyLog2 = min(gra_MaxAnisotropyLog2, maxAnisotropyLog2); +} +#endif + +gra_Float2 Granite_Transform(in GraniteStreamingTextureConstantBuffer grSTCB, in gra_Float2 textureCoord) +{ + return textureCoord * gra_StreamingTextureTransform.zw + gra_StreamingTextureTransform.xy; +} + +gra_Float4 Granite_MergeResolveOutputs(in gra_Float4 resolve0, in gra_Float4 resolve1, in gra_Float2 pixelLocation) +{ + gra_Float2 screenPos = frac(pixelLocation * 0.5f); + bool dither = (screenPos.x != screenPos.y); + return (dither) ? resolve0 : resolve1; +} + +gra_Float4 Granite_PackTileId(in gra_Float4 unpackedTileID) +{ + return GranitePrivate_PackTileId(unpackedTileID.xy, unpackedTileID.z, unpackedTileID.w); +} + +#if (GRA_HLSL_5 == 1) +void Granite_DitherResolveOutput(in gra_Float4 resolve, in RWTexture2D resolveTexture, in gra_Float2 screenPos, in float alpha) +{ + const uint2 pixelPos = int2(screenPos); + const uint2 pixelLocation = pixelPos % GRA_RWTEXTURE2D_SCALE; + bool dither = (pixelLocation.x == 0) && (pixelLocation.y == 0); + uint2 writePos = pixelPos / GRA_RWTEXTURE2D_SCALE; + + if ( alpha == 0 ) + { + dither = false; + } + else if (alpha != 1.0) + { + // Do a 4x4 dither patern so alternating pixels resolve to the first or the second texture + gra_Float2 pixelLocationAlpha = frac(screenPos * 0.25f); // We don't scale after the frac so this will give coords 0, 0.25, 0.5, 0.75 + int pixelId = (int)(pixelLocationAlpha.y * 16 + pixelLocationAlpha.x * 4); //faster as a dot2 ? + + // Clamp + // This ensures that for example alpha=0.95 still resolves some tiles of the surfaces behind it + // and alpha=0.05 still resolves some tiles of this surface + alpha = min(max(alpha, 0.0625), 0.9375); + + // Modern hardware supports array indexing with per pixel varying indexes + // on old hardware this will be expanded to a conditional tree by the compiler + const float thresholdMaxtrix[16] = { 1.0f / 17.0f, 9.0f / 17.0f, 3.0f / 17.0f, 11.0f / 17.0f, + 13.0f / 17.0f, 5.0f / 17.0f, 15.0f / 17.0f, 7.0f / 17.0f, + 4.0f / 17.0f, 12.0f / 17.0f, 2.0f / 17.0f, 10.0f / 17.0f, + 16.0f / 17.0f, 8.0f / 17.0f, 14.0f / 17.0f, 6.0f / 17.0f}; + float threshold = thresholdMaxtrix[pixelId]; + + if (alpha < threshold) + { + dither = false; + } + } + + gra_Branch if (dither) + { +#if (GRA_PACK_RESOLVE_OUTPUT==0) + resolveTexture[writePos] = Granite_PackTileId(resolve); +#else + resolveTexture[writePos] = resolve; +#endif + } +} +#endif + +float GranitePrivate_CalcMiplevelAnisotropic(in GraniteTilesetConstantBuffer tsCB, in GraniteStreamingTextureConstantBuffer grSTCB, in gra_Float2 ddxTc, in gra_Float2 ddyTc) +{ + // Calculate the required mipmap level, this uses a similar + // formula as the GL spec. + // To reduce sqrt's and log2's we do some stuff in squared space here and further below in log space + // i.e. we wait with the sqrt untill we can do it for 'free' later during the log2 + + ddxTc *= gra_CalcMiplevelDeltaScale; + ddyTc *= gra_CalcMiplevelDeltaScale; + + float lenDxSqr = dot(ddxTc, ddxTc); + float lenDySqr = dot(ddyTc, ddyTc); + float dMaxSqr = max(lenDxSqr, lenDySqr); + float dMinSqr = min(lenDxSqr, lenDySqr); + + // Calculate mipmap levels directly from sqared distances. This uses log2(sqrt(x)) = 0.5 * log2(x) to save some sqrt's + float maxLevel = 0.5 * log2( dMaxSqr ); + float minLevel = 0.5 * log2( dMinSqr ); + + // Calculate the log2 of the anisotropy and clamp it by the max supported. This uses log2(a/b) = log2(a)-log2(b) and min(log(a),log(b)) = log(min(a,b)) + float anisoLog2 = maxLevel - minLevel; + anisoLog2 = min( anisoLog2, gra_MaxAnisotropyLog2 ); + + // Adjust for anisotropy & clamp to level 0 + float result = max(maxLevel - anisoLog2 - 0.5f, 0.0f); //Subtract 0.5 to compensate for trilinear mipmapping + + // Added clamping to avoid "hot pink" on small tilesets that try to sample past the 1x1 tile miplevel + // This happens if you for example import a relatively small texture and zoom out + return min(result, gra_NumLevels); +} + +float GranitePrivate_CalcMiplevelLinear(in GraniteTilesetConstantBuffer tsCB, in GraniteStreamingTextureConstantBuffer grSTCB, in gra_Float2 ddxTc, in gra_Float2 ddyTc) +{ + // Calculate the required mipmap level, this uses a similar + // formula as the GL spec. + // To reduce sqrt's and log2's we do some stuff in squared space here and further below in log space + // i.e. we wait with the sqrt untill we can do it for 'free' later during the log2 + + ddxTc *= gra_CalcMiplevelDeltaScale; + ddyTc *= gra_CalcMiplevelDeltaScale; + + float lenDxSqr = dot(ddxTc, ddxTc); + float lenDySqr = dot(ddyTc, ddyTc); + float dMaxSqr = max(lenDxSqr, lenDySqr); + + // Calculate mipmap levels directly from squared distances. This uses log2(sqrt(x)) = 0.5 * log2(x) to save some sqrt's + float maxLevel = 0.5 * log2(dMaxSqr) - 0.5f; //Subtract 0.5 to compensate for trilinear mipmapping + + return clamp(maxLevel, 0.0f, gra_NumLevels); +} + +gra_Float4 GranitePrivate_PackTileId(in gra_Float2 tileXY, in float level, in float textureID) +{ +#if GRA_64BIT_RESOLVER == 0 + gra_Float4 resultBits; + + resultBits.x = fmod(tileXY.x, 256.0f); + resultBits.y = floor(tileXY.x / 256.0f) + fmod(tileXY.y, 32.0f) * 8.0f; + resultBits.z = floor(tileXY.y / 32.0f) + fmod(level, 4.0f) * 64.0f; + resultBits.w = floor(level / 4.0f) + textureID * 4.0f; + + const float scale = 1.0f / 255.0f; + +#if GRA_BGRA == 0 + return scale * gra_Float4 + ( + float(resultBits.x), + float(resultBits.y), + float(resultBits.z), + float(resultBits.w) + ); +#else + return scale * gra_Float4 + ( + float(resultBits.z), + float(resultBits.y), + float(resultBits.x), + float(resultBits.w) + ); +#endif +#else + const float scale = 1.0f / 65535.0f; + return gra_Float4(tileXY.x, tileXY.y, level, textureID) * scale; +#endif + +} + +gra_Float4 GranitePrivate_UnpackTileId(in gra_Float4 packedTile) +{ + gra_Float4 swiz; +#if GRA_BGRA == 0 + swiz = packedTile; +#else + swiz = packedTile.zyxw; +#endif + swiz *= 255.0f; + + float tileX = swiz.x + fmod(swiz.y, 16.0f) * 256.0f; + float tileY = floor(swiz.y / 16.0f) + swiz.z * 16.0f; + float level = fmod(swiz.w, 16.0f); + float tex = floor(swiz.w / 16.0f); + + return gra_Float4(tileX, tileY, level, tex); +} + +gra_Float3 GranitePrivate_TranslateCoord(in GraniteTilesetConstantBuffer tsCB, in gra_Float2 inputTexCoord, in gra_Float4 translationData, in int layer, out gra_Float2 numPagesOnLevel) +{ +#if (GRA_FORCE_SM3 == 0) && ((GRA_HLSL_5 == 1) || (GRA_HLSL_4 == 1) || (GRA_GLSL_330 == 1)) + // The translation table contains uint32_t values so we have to get to the individual bits of the float data + uint data = GranitePrivate_FloatAsUint(translationData[layer]); + + // Slice Index: 7 bits, Cache X: 10 bits, Cache Y: 10 bits, Tile Level: 4 bits + uint slice = (data >> 24u) & 0x7Fu; + uint cacheX = (data >> 14u) & 0x3FFu; + uint cacheY = (data >> 4u) & 0x3FFu; + uint revLevel = data & 0xFu; +#else + // The translation table contains integer float values so we have to cast the float value to an int (which works up to 24-bit integer values) + int data = int(translationData[layer]); + + int slice = 0; + int cacheX = (data / 16384); + int cacheY = (data % 16384) / 16; + int revLevel = (data % 16); +#endif + + gra_Float2 numTilesOnLevel; + numTilesOnLevel.x = GranitePrivate_Pow2(revLevel); + numTilesOnLevel.y = numTilesOnLevel.x * gra_NumTilesYScale; + + gra_Float2 tileTexCoord = frac(inputTexCoord * numTilesOnLevel); + + gra_Float2 tileTexCoordCache = tileTexCoord * gra_TileContentInTiles + gra_Float2(cacheX, cacheY); + gra_Float3 final = gra_Float3(tileTexCoordCache * gra_RcpCacheInTiles(layer) + gra_BorderPixelsRcpCache(layer), slice); + + numPagesOnLevel = numTilesOnLevel * gra_TileContentInTiles * gra_RcpCacheInTiles(layer); + + return final; +} + +gra_Float4 GranitePrivate_DrawDebugTiles(in gra_Float4 sourceColor, in gra_Float2 textureCoord, in gra_Float2 numPagesOnLevel) +{ + // Calculate the border values + gra_Float2 cacheOffs = frac(textureCoord * numPagesOnLevel); + float borderTemp = max(cacheOffs.x, 1.0-cacheOffs.x); + borderTemp = max(max(cacheOffs.y, 1.0-cacheOffs.y), borderTemp); + float border = smoothstep(0.98, 0.99, borderTemp); + + // White + gra_Float4 borderColor = gra_Float4(1,1,1,1); + + //Lerp it over the source color + return lerp(sourceColor, borderColor, border); +} + +gra_Float4 GranitePrivate_MakeResolveOutput(in GraniteTilesetConstantBuffer tsCB, in gra_Float2 tileXY, in float level) +{ +#if GRA_PACK_RESOLVE_OUTPUT + return GranitePrivate_PackTileId(tileXY, level, gra_TextureId); +#else + return gra_Float4(tileXY, level, gra_TextureId); +#endif +} + +gra_Float4 GranitePrivate_ResolverPixel(in GraniteTilesetConstantBuffer tsCB, in gra_Float2 inputTexCoord, in float LOD) +{ + float level = floor(LOD + 0.5f); + + // Number of tiles on level zero + gra_Float2 level0NumTiles; + level0NumTiles.x = gra_Level0NumTilesX; + level0NumTiles.y = gra_Level0NumTilesX * gra_NumTilesYScale; + + // Calculate xy of the tiles to load + gra_Float2 virtualTilesUv = floor(inputTexCoord * level0NumTiles * pow(0.5, level)); + + return GranitePrivate_MakeResolveOutput(tsCB, virtualTilesUv, level); +} + +void GranitePrivate_CalculateCubemapCoordinates(in gra_Float3 inputTexCoord, in gra_Float3 dVx, in gra_Float3 dVy, in GraniteStreamingTextureCubeConstantBuffer transforms, out int faceIdx, out gra_Float2 texCoord, out gra_Float2 dX, out gra_Float2 dY) +{ + gra_Float2 contTexCoord; + gra_Float3 derivX; + gra_Float3 derivY; + + float majorAxis; + if (abs(inputTexCoord.z) >= abs(inputTexCoord.x) && abs(inputTexCoord.z) >= abs(inputTexCoord.y)) + { + // Z major axis + if(inputTexCoord.z < 0.0) + { + faceIdx = 5; + texCoord.x = -inputTexCoord.x; + } + else + { + faceIdx = 4; + texCoord.x = inputTexCoord.x; + } + texCoord.y = -inputTexCoord.y; + majorAxis = inputTexCoord.z; + + contTexCoord = gra_Float2(inputTexCoord.x, inputTexCoord.y); + derivX = gra_Float3(dVx.x, dVx.y, dVx.z); + derivY = gra_Float3(dVy.x, dVy.y, dVy.z); + } + else if (abs(inputTexCoord.y) >= abs(inputTexCoord.x)) + { + // Y major axis + if(inputTexCoord.y < 0.0) + { + faceIdx = 3; + texCoord.y = -inputTexCoord.z; + } + else + { + faceIdx = 2; + texCoord.y = inputTexCoord.z; + } + texCoord.x = inputTexCoord.x; + majorAxis = inputTexCoord.y; + + contTexCoord = gra_Float2(inputTexCoord.x, inputTexCoord.z); + derivX = gra_Float3(dVx.x, dVx.z, dVx.y); + derivY = gra_Float3(dVy.x, dVy.z, dVy.y); + } + else + { + // X major axis + if(inputTexCoord.x < 0.0) + { + faceIdx = 1; + texCoord.x = inputTexCoord.z; + } + else + { + faceIdx = 0; + texCoord.x = -inputTexCoord.z; + } + texCoord.y = -inputTexCoord.y; + majorAxis = inputTexCoord.x; + + contTexCoord = gra_Float2(inputTexCoord.z, inputTexCoord.y); + derivX = gra_Float3(dVx.z, dVx.y, dVx.x); + derivY = gra_Float3(dVy.z, dVy.y, dVy.x); + } + texCoord = (texCoord + majorAxis) / (2.0 * abs(majorAxis)); + +#if GRA_HQ_CUBEMAPPING + dX = /*contTexCoord **/ ((contTexCoord + derivX.xy) / ( 2.0 * (majorAxis + derivX.z)) - (contTexCoord / (2.0 * majorAxis))); + dY = /*contTexCoord **/ ((contTexCoord + derivY.xy) / ( 2.0 * (majorAxis + derivY.z)) - (contTexCoord / (2.0 * majorAxis))); +#else + dX = ((/*contTexCoord **/ derivX.xy) / (2.0 * abs(majorAxis))); + dY = ((/*contTexCoord **/ derivY.xy) / (2.0 * abs(majorAxis))); +#endif + + // Now scale the derivatives with the texture transform scale + dX *= transforms.data[faceIdx].data[0].zw; + dY *= transforms.data[faceIdx].data[0].zw; +} + +// Auto-level +void GranitePrivate_CalculateCubemapCoordinates(in gra_Float3 inputTexCoord, in GraniteStreamingTextureCubeConstantBuffer transforms, out int faceIdx, out gra_Float2 texCoord, out gra_Float2 dX, out gra_Float2 dY) +{ + gra_Float3 dVx = ddx(inputTexCoord); + gra_Float3 dVy = ddy(inputTexCoord); + + GranitePrivate_CalculateCubemapCoordinates(inputTexCoord, dVx, dVy, transforms, faceIdx, texCoord, dX, dY); +} + +gra_Float2 Granite_GetTextureDimensions(in GraniteStreamingTextureConstantBuffer grSTCB) +{ + return gra_Float2(1.0 / gra_AssetWidthRcp, 1.0 / gra_AssetHeightRcp); //TODO(ddebaets) use HLSL rcp here +} diff --git a/com.unity.render-pipelines.core/ShaderLibrary/GraniteShaderLibBase.h.meta b/com.unity.render-pipelines.core/ShaderLibrary/GraniteShaderLibBase.h.meta new file mode 100644 index 00000000000..916b7f92db2 --- /dev/null +++ b/com.unity.render-pipelines.core/ShaderLibrary/GraniteShaderLibBase.h.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: c5520328ccc5d6c4e8a923677cbb21cf +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl b/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl new file mode 100644 index 00000000000..81c026df138 --- /dev/null +++ b/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl @@ -0,0 +1,238 @@ +#ifndef TEXTURESTACK_include +#define TEXTURESTACK_include + +#define GRA_HLSL_5 1 +#define GRA_ROW_MAJOR 1 +#define GRA_TEXTURE_ARRAY_SUPPORT 1 +#define GRA_PACK_RESOLVE_OUTPUT 0 +#if SHADER_API_PSSL +#define GRA_NO_UNORM 1 +#endif +#include "VirtualTexturing.hlsl" + +/* + This header adds the following pseudo definitions. Actual types etc may vary depending + on vt- being on or off. + + struct StackInfo { opaque struct ... } + StackInfo PrepareStack(float2 uv, Stack object); + float4 SampleStack(StackInfo info, Texture tex); + + To use this in your materials add the following to various locations in the shader: + + In shaderlab "Properties" section add: + + [TextureStack.MyFancyStack] DiffuseTexture ("DiffuseTexture", 2D) = "white" {} + [TextureStack.MyFancyStack] NormalTexture ("NormalTexture", 2D) = "white" {} + + This will declare a texture stack with two shaders. + + Then add the following to the PerMaterial constant buffer: + + CBUFFER_START(UnityPerMaterial) + ... + DECLARE_STACK_CB(MyFancyStack) + ... + CBUFFER_END + + Then in your shader root add the following: + + ... + + DECLARE_STACK(MyFancyStack, DiffuseTexture) + or + DECLARE_STACK2(MyFancyStack, DiffuseTexture, NormalTexture) + or + DECLARE_STACK3(MyFancyStack, TextureSlot1, TextureSlot2, TextureSlot2) + etc... + + NOTE: The Stack shaderlab property and DECLARE_STACKn define need to match i.e. the same name and same texture slots. + + Then in the pixel shader function (likely somewhere at the beginning) do a call: + + StackInfo info = PrepareStack(uvs, MyFancyStack); + + Then later on when you want to sample the actual texture do a call(s): + + float4 color = SampleStack(info, TextureSlot1); + float4 color2 = SampleStack(info, TextureSlot2); + ... + + The above steps can be repeated for multiple stacks. But be sure that when using the SampleStack you always + pass in the result of the PrepareStack for the correct stack the texture belongs to. + +*/ + +#if defined(UNITY_VIRTUAL_TEXTURING) && !defined(FORCE_VIRTUAL_TEXTURING_OFF) + +struct StackInfo +{ + GraniteLookupData lookupData; + GraniteLODLookupData lookupDataLod; + float4 resolveOutput; +}; + +#ifdef TEXTURESTACK_CLAMP + #define GR_LOOKUP Granite_Lookup_Clamp_Linear + #define GR_LOOKUP_LOD Granite_Lookup_Clamp +#else + #define GR_LOOKUP Granite_Lookup_Anisotropic + #define GR_LOOKUP_LOD Granite_Lookup +#endif + +// This can be used by certain resolver implementations to override screen space derivatives +#ifndef RESOLVE_SCALE_OVERRIDE +#define RESOLVE_SCALE_OVERRIDE float2(1,1) +#endif + +StructuredBuffer _VTTilesetBuffer; + +#define DECLARE_STACK_CB(stackName) \ + float4 stackName##_atlasparams[2] + +#define DECLARE_STACK_BASE(stackName) \ +TEXTURE2D(stackName##_transtab);\ +SAMPLER(sampler##stackName##_transtab);\ +\ +GraniteTilesetConstantBuffer GetConstantBuffer_##stackName() \ +{ \ + int idx = (int)stackName##_atlasparams[1].w; \ + GraniteTilesetConstantBuffer graniteParamBlock; \ + graniteParamBlock = _VTTilesetBuffer[idx]; \ + \ + graniteParamBlock.data[0][2][0] *= RESOLVE_SCALE_OVERRIDE.x; \ + graniteParamBlock.data[0][3][0] *= RESOLVE_SCALE_OVERRIDE.y; \ + \ + return graniteParamBlock; \ +} \ +StackInfo PrepareVT_##stackName(VtInputParameters par)\ +{\ + GraniteStreamingTextureConstantBuffer textureParamBlock;\ + textureParamBlock.data[0] = stackName##_atlasparams[0];\ + textureParamBlock.data[1] = stackName##_atlasparams[1];\ +\ + GraniteTilesetConstantBuffer graniteParamBlock = GetConstantBuffer_##stackName(); \ +\ + GraniteConstantBuffers grCB;\ + grCB.tilesetBuffer = graniteParamBlock;\ + grCB.streamingTextureBuffer = textureParamBlock;\ +\ + GraniteTranslationTexture translationTable;\ + translationTable.Texture = stackName##_transtab;\ + translationTable.Sampler = sampler##stackName##_transtab;\ +\ + StackInfo info;\ + VirtualTexturingLookup(grCB, translationTable, par, info.lookupData, info.resolveOutput);\ + return info;\ +} + +#define jj2(a, b) a##b +#define jj(a, b) jj2(a, b) + +#define DECLARE_STACK_LAYER(stackName, layerSamplerName, layerIndex) \ +TEXTURE2D_ARRAY(stackName##_c##layerIndex);\ +SAMPLER(sampler##stackName##_c##layerIndex);\ +\ +float4 SampleVT_##layerSamplerName(StackInfo info, int lodCalculation, int quality)\ +{\ + GraniteStreamingTextureConstantBuffer textureParamBlock;\ + textureParamBlock.data[0] = stackName##_atlasparams[0];\ + textureParamBlock.data[1] = stackName##_atlasparams[1];\ +\ + GraniteTilesetConstantBuffer graniteParamBlock = GetConstantBuffer_##stackName(); \ +\ + GraniteConstantBuffers grCB;\ + grCB.tilesetBuffer = graniteParamBlock;\ + grCB.streamingTextureBuffer = textureParamBlock;\ +\ + GraniteCacheTexture cache;\ + cache.TextureArray = stackName##_c##layerIndex;\ + cache.Sampler = sampler##stackName##_c##layerIndex;\ +\ + float4 output;\ + VirtualTexturingSample(grCB.tilesetBuffer, info.lookupData, cache, layerIndex, lodCalculation, quality, output);\ + return output;\ +} + +#define DECLARE_STACK(stackName, layer0SamplerName)\ + DECLARE_STACK_BASE(stackName)\ + DECLARE_STACK_LAYER(stackName, layer0SamplerName,0) + +#define DECLARE_STACK2(stackName, layer0SamplerName, layer1SamplerName)\ + DECLARE_STACK_BASE(stackName)\ + DECLARE_STACK_LAYER(stackName, layer0SamplerName,0)\ + DECLARE_STACK_LAYER(stackName, layer1SamplerName,1) + +#define DECLARE_STACK3(stackName, layer0SamplerName, layer1SamplerName, layer2SamplerName)\ + DECLARE_STACK_BASE(stackName)\ + DECLARE_STACK_LAYER(stackName, layer0SamplerName,0)\ + DECLARE_STACK_LAYER(stackName, layer1SamplerName,1)\ + DECLARE_STACK_LAYER(stackName, layer2SamplerName,2) + +#define DECLARE_STACK4(stackName, layer0SamplerName, layer1SamplerName, layer2SamplerName, layer3SamplerName)\ + DECLARE_STACK_BASE(stackName)\ + DECLARE_STACK_LAYER(stackName, layer0SamplerName,0)\ + DECLARE_STACK_LAYER(stackName, layer1SamplerName,1)\ + DECLARE_STACK_LAYER(stackName, layer2SamplerName,2)\ + DECLARE_STACK_LAYER(stackName, layer3SamplerName,3) + +#define PrepareStack(inputParams, stackName) PrepareVT_##stackName(inputParams) +#define SampleStack(info, lodMode, quality, textureName) SampleVT_##textureName(info, lodMode, quality) +#define GetResolveOutput(info) info.resolveOutput +#define PackResolveOutput(output) Granite_PackTileId(output) + +float4 GetPackedVTFeedback(float4 feedback) +{ + return Granite_PackTileId(feedback); +} + +#define VIRTUAL_TEXTURING_SHADER_ENABLED + +#else + +// Stacks amount to nothing when VT is off +#define DECLARE_STACK(stackName, layer0) +#define DECLARE_STACK2(stackName, layer0, layer1) +#define DECLARE_STACK3(stackName, layer0, layer1, layer2) +#define DECLARE_STACK4(stackName, layer0, layer1, layer2, layer3) +#define DECLARE_STACK_CB(stackName) + +// Info is just the uv's +// We could do a straight #defube StackInfo float2 but this makes it a bit more type safe +// and allows us to do things like function overloads,... +struct StackInfo +{ + VtInputParameters vt; +}; + +StackInfo MakeStackInfo(VtInputParameters vt) +{ + StackInfo result; + result.vt = vt; + return result; +} + +// Prepare just passes the texture coord around +#define PrepareStack(inputParams, stackName) MakeStackInfo(inputParams) + +// Sample just samples the texture +#define SampleStack(info, lodMode, quality, texture) \ + (lodMode == VtLevel_Automatic) ?\ + SAMPLE_TEXTURE2D(texture, sampler##texture, info.vt.uv)\ + :( (lodMode == VtLevel_Lod) ?\ + SAMPLE_TEXTURE2D_LOD(texture, sampler##texture, info.vt.uv, info.vt.lodOrOffset)\ + :( (lodMode == VtLevel_Bias) ?\ + SAMPLE_TEXTURE2D_BIAS(texture, sampler##texture, info.vt.uv, info.vt.lodOrOffset)\ + :( /*(lodMode == /VtLevel_Derivatives)*/\ + SAMPLE_TEXTURE2D_GRAD(texture, sampler##texture, info.vt.uv, info.vt.dx, info.vt.dy)\ + ))); + +// Resolve does nothing +#define GetResolveOutput(info) float4(1,1,1,1) +#define PackResolveOutput(output) output +#define GetPackedVTFeedback(feedback) feedback + + +#endif + +#endif //TEXTURESTACK_include diff --git a/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl.meta b/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl.meta new file mode 100644 index 00000000000..a3bc587b6f7 --- /dev/null +++ b/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 79641ba14fe04324b8905bafbf3e82ed +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.core/ShaderLibrary/VirtualTexturing.hlsl b/com.unity.render-pipelines.core/ShaderLibrary/VirtualTexturing.hlsl new file mode 100644 index 00000000000..9b86e4df97c --- /dev/null +++ b/com.unity.render-pipelines.core/ShaderLibrary/VirtualTexturing.hlsl @@ -0,0 +1,206 @@ +#include "GraniteShaderLibBase.h" + +#define VtAddressMode_Wrap 0 +#define VtAddressMode_Clamp 1 +#define VtAddressMode_Udim 2 + +#define VtFilter_Anisotropic 0 + +#define VtLevel_Automatic 0 +#define VtLevel_Lod 1 +#define VtLevel_Bias 2 +#define VtLevel_Derivatives 3 + +#define VtUvSpace_Regular 0 +#define VtUvSpace_PreTransformed 1 + +#define VtSampleQuality_Low 0 +#define VtSampleQuality_High 1 + +struct VtInputParameters +{ + float2 uv; + float lodOrOffset; + float2 dx; + float2 dy; + int addressMode; + int filterMode; + int levelMode; + int uvMode; + int sampleQuality; +}; + +int VirtualTexturingLookup( + in GraniteConstantBuffers grCB, + in GraniteTranslationTexture translationTable, + in VtInputParameters input, + out GraniteLookupData graniteLookupData, + out float4 resolveResult +) +{ + GraniteStreamingTextureConstantBuffer grSTCB = grCB.streamingTextureBuffer; + GraniteTilesetConstantBuffer tsCB = grCB.tilesetBuffer; + + float2 texCoord = input.uv; + float2 dx; + float2 dy; + float mipLevel; //interger + + if (input.levelMode == VtLevel_Automatic) + { + dx = ddx(texCoord); + dy = ddy(texCoord); + } + else if (input.levelMode == VtLevel_Bias) + { + // We can't simply add the bias after the mip-calculation since the derivatives + // are also used when sampling the cache so make sure we apply bias by scaling derivatives + if ( input.sampleQuality == VtSampleQuality_High ) + { + float offsetPow2 = pow(2.0f, input.lodOrOffset); + dx = ddx(texCoord) * offsetPow2; + dy = ddy(texCoord) * offsetPow2; + } + // In low qauality we don't care about cache derivatives and will add the bias later + else + { + dx = ddx(texCoord); + dy = ddy(texCoord); + } + } + else if (input.levelMode == VtLevel_Derivatives) + { + dx = input.dx; + dy = input.dy; + } + else /*input.levelMode == VtLevel_Lod*/ + { + //gra_TrilinearOffset ensures we do round-nearest for no-trilinear and + //round-floor for trilinear. + float clampedLevel = clamp(input.lodOrOffset + gra_TrilinearOffset, 0.0f, gra_NumLevels); + mipLevel = floor(clampedLevel); + dx = float2(frac(clampedLevel), 0.0f); // trilinear blend ratio + dy = float2(0.0f,0.0f); + } + + // Transform the derivatives to atlas space if needed + if (input.uvMode == VtUvSpace_Regular && input.levelMode != VtLevel_Lod) + { + dx = gra_Transform.zw * dx; + dy = gra_Transform.zw * dy; + } + + if (input.levelMode != VtLevel_Lod) + { + mipLevel = GranitePrivate_CalcMiplevelAnisotropic(grCB.tilesetBuffer, grCB.streamingTextureBuffer, dx, dy); + + // Simply add it here derivatives are wrong from this point onwards but not used anymore + if ( input.sampleQuality == VtSampleQuality_Low && input.levelMode == VtLevel_Bias) + { + mipLevel += input.lodOrOffset; + } + + mipLevel = floor(mipLevel + 0.5f); //round nearest + } + + // Apply clamp/wrap mode if needed and transform into atlas space + // If the user passes in pre-transformed texture coords clamping and wrapping should be handled by the user + if (input.uvMode == VtUvSpace_Regular) + { + if (input.addressMode == VtAddressMode_Wrap) + { + texCoord = frac(input.uv); + } + else if (input.addressMode == VtAddressMode_Clamp) + { + float2 epsilon2 = float2(gra_AssetWidthRcp, gra_AssetHeightRcp); + texCoord = clamp(input.uv, epsilon2, float2(1,1) - epsilon2); + } + else if (input.addressMode == VtAddressMode_Udim) + { + // not modified (i.e outside of the 0-1 range, atlas transform below will take care of it) + texCoord = input.uv; + } + + texCoord = Granite_Transform(gra_StreamingTextureCB, texCoord); + } + + // calculate resolver data + float2 level0NumTiles = float2(gra_Level0NumTilesX, gra_Level0NumTilesX*gra_NumTilesYScale); + float2 virtualTilesUv = floor(texCoord * level0NumTiles * pow(0.5, mipLevel)); + resolveResult = GranitePrivate_MakeResolveOutput(tsCB, virtualTilesUv, mipLevel); + + float4 translationTableData; + if (input.levelMode != VtLevel_Lod) + { + // Look up the physical page indexes and the number of pages on the mipmap + // level of the page in the translation texture + // Note: this is equal for both anisotropic and linear sampling + // We could use a sample bias here for 'auto' mip level detection +#if (GRA_LOAD_INSTR==0) + translationTableData = GranitePrivate_SampleLevel_Translation(translationTable, texCoord, mipLevel); +#else + translationTableData = GranitePrivate_Load(translationTable, gra_Int3(virtualTilesUv, mipLevel)); +#endif + } + else + { + // Look up the physical page indexes and the number of pages on the mipmap + // level of the page in the translation texture + // Note: this is equal for both anisotropic and linear sampling + // We could use a sample bias here for 'auto' mip level detection +#if (GRA_LOAD_INSTR==0) + translationTableData = GranitePrivate_SampleLevel_Translation(translationTable, texCoord, mipLevel); +#else + translationTableData = GranitePrivate_Load(translationTable, gra_Int3(virtualTilesUv, mipLevel)); +#endif + } + + graniteLookupData.translationTableData = translationTableData; + graniteLookupData.textureCoordinates = texCoord; + graniteLookupData.dX = dx; + graniteLookupData.dY = dy; + + return 1; +} + +int VirtualTexturingSample( + in GraniteTilesetConstantBuffer tsCB, + in GraniteLookupData graniteLookupData, + in GraniteCacheTexture cacheTexture, + in int layer, + in int levelMode, + in int quality, + out float4 result) +{ + // Convert from pixels to [0-1] and look up in the physical page texture + float2 deltaScale; + float3 cacheCoord = GranitePrivate_TranslateCoord(tsCB, graniteLookupData.textureCoordinates, graniteLookupData.translationTableData, layer, deltaScale); + + if ( levelMode != VtLevel_Lod ) + { + if ( quality == VtSampleQuality_Low ) + { + // This leads to small artefacts at tile borders but is generally not noticable unless the texture + // is greatly magnified + result = GranitePrivate_SampleArray(cacheTexture, cacheCoord); + } + else /* quality == VtSampleQuality_High */ + { + deltaScale *= gra_LodBiasPow2; + + // Calculate the delta scale this works by first converting the [0-1] texcoord deltas to + // pixel deltas on the current mip level, then dividing by the cache size to convert to [0-1] cache deltas + float2 sampDeltaX = graniteLookupData.dX*deltaScale; + float2 sampDeltaY = graniteLookupData.dY*deltaScale; + + result = GranitePrivate_SampleGradArray(cacheTexture, cacheCoord, sampDeltaX, sampDeltaY); + } + } + else + { + result = GranitePrivate_SampleLevelArray(cacheTexture, cacheCoord, graniteLookupData.dX.x); + } + + return 1; +} diff --git a/com.unity.render-pipelines.core/ShaderLibrary/VirtualTexturing.hlsl.meta b/com.unity.render-pipelines.core/ShaderLibrary/VirtualTexturing.hlsl.meta new file mode 100644 index 00000000000..b1533e5f115 --- /dev/null +++ b/com.unity.render-pipelines.core/ShaderLibrary/VirtualTexturing.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6f22d4e29906d3c47892e0c92874b752 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Decal/ShaderGraph/DecalMasterNode.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Decal/ShaderGraph/DecalMasterNode.cs index 7cc71028619..54ac386a063 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Decal/ShaderGraph/DecalMasterNode.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Decal/ShaderGraph/DecalMasterNode.cs @@ -465,5 +465,13 @@ public ToggleData dotsInstancing Dirty(ModificationScope.Graph); } } + + public bool virtualTexturingEnabled + { + get + { + return false; + } + } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Eye/ShaderGraph/EyeMasterNode.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Eye/ShaderGraph/EyeMasterNode.cs index f8c59e1e9a3..5ffbeed3ec1 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Eye/ShaderGraph/EyeMasterNode.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Eye/ShaderGraph/EyeMasterNode.cs @@ -896,5 +896,13 @@ public override void CollectShaderProperties(PropertyCollector collector, Genera base.CollectShaderProperties(collector, generationMode); } + + public bool virtualTexturingEnabled + { + get + { + return true; + } + } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/FabricMasterNode.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/FabricMasterNode.cs index 094fbfcb32a..b325571cb0a 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/FabricMasterNode.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/FabricMasterNode.cs @@ -911,5 +911,13 @@ public override void CollectShaderProperties(PropertyCollector collector, Genera base.CollectShaderProperties(collector, generationMode); } + + public bool virtualTexturingEnabled + { + get + { + return true; + } + } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/FabricPass.template b/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/FabricPass.template index 533454878b1..3b3474a544d 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/FabricPass.template +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/FabricPass.template @@ -284,6 +284,10 @@ Pass $DepthOffset: builtinData.depthOffset = surfaceDescription.DepthOffset; +#if !defined(_SURFACE_TYPE_TRANSPARENT) + $SurfaceDescription.VTPackedFeedback: builtinData.vtPackedFeedback = surfaceDescription.VTPackedFeedback; +#endif + $SurfaceDescription.Emission: builtinData.emissiveColor = surfaceDescription.Emission; PostInitBuiltinData(V, posInput, surfaceData, builtinData); diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairMasterNode.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairMasterNode.cs index e20236fa9fb..af67c97f686 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairMasterNode.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HairMasterNode.cs @@ -1034,5 +1034,13 @@ public override void CollectShaderProperties(PropertyCollector collector, Genera base.CollectShaderProperties(collector, generationMode); } + + public bool virtualTexturingEnabled + { + get + { + return true; + } + } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/HDLitMasterNode.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/HDLitMasterNode.cs index bb447f64ca2..0ed926ac740 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/HDLitMasterNode.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/HDLitMasterNode.cs @@ -1109,7 +1109,7 @@ public ConditionalField[] GetConditionalFields(PassDescriptor pass) // Ideally we do this another way but HDLit needs this for conditional pragmas var shaderProperties = new PropertyCollector(); owner.CollectShaderProperties(shaderProperties, GenerationMode.ForReals); - bool hasDotsProperties = shaderProperties.GetDotsInstancingPropertiesCount(GenerationMode.ForReals) > 0; + bool hasDotsProperties = shaderProperties.DotsInstancingProperties(GenerationMode.ForReals).Any(); return new ConditionalField[] { @@ -1379,5 +1379,13 @@ public override void Setup() } } + + public bool virtualTexturingEnabled + { + get + { + return true; + } + } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/HDLitSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/HDLitSubTarget.cs index be81709a5a5..1d5849869ce 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/HDLitSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/HDLitSubTarget.cs @@ -1,4 +1,4 @@ -using UnityEngine.Rendering.HighDefinition; +using UnityEngine.Rendering.HighDefinition; using UnityEditor.ShaderGraph; namespace UnityEditor.Rendering.HighDefinition.ShaderGraph @@ -90,6 +90,8 @@ public static class LitPasses defines = CoreDefines.ShaderGraphRaytracingHigh, keywords = LitKeywords.GBuffer, includes = LitIncludes.GBuffer, + + virtualTextureFeedback = true, }; public static PassDescriptor META = new PassDescriptor() @@ -328,6 +330,8 @@ public static class LitPasses defines = CoreDefines.Forward, keywords = CoreKeywords.Forward, includes = LitIncludes.Forward, + + virtualTextureFeedback = true, }; public static PassDescriptor TransparentDepthPostpass = new PassDescriptor() diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/LitPass.template b/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/LitPass.template index a6d63a9da3b..e2218d697e3 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/LitPass.template +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Lit/ShaderGraph/LitPass.template @@ -330,6 +330,11 @@ Pass $SurfaceDescription.Emission: builtinData.emissiveColor = surfaceDescription.Emission; + //Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define) + //We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved + //This is a limitation of the current MRT approach. + $SurfaceDescription.VTPackedFeedback: builtinData.vtPackedFeedback = surfaceDescription.VTPackedFeedback; + $DepthOffset: builtinData.depthOffset = surfaceDescription.DepthOffset; #if (SHADERPASS == SHADERPASS_DISTORTION) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRPass.template b/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRPass.template index 1e70670f549..d7d8c934ce7 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRPass.template +++ b/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRPass.template @@ -201,6 +201,11 @@ Pass $SurfaceDescription.Emission: builtinData.emissiveColor = surfaceDescription.Emission; + //Note this will not fully work on transparent surfaces (can check with _SURFACE_TYPE_TRANSPARENT define) + //We will always overwrite vt feeback with the nearest. So behind transparent surfaces vt will not be resolved + //This is a limitation of the current MRT approach. + $SurfaceDescription.VTPackedFeedback: builtinData.vtPackedFeedback = surfaceDescription.VTPackedFeedback; + PostInitBuiltinData(V, posInput, surfaceData, builtinData); } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRSubTarget.cs index 151239b87c5..d2be1829ea3 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRSubTarget.cs @@ -1,4 +1,4 @@ -using UnityEngine.Rendering.HighDefinition; +using UnityEngine.Rendering.HighDefinition; using UnityEditor.ShaderGraph; namespace UnityEditor.Rendering.HighDefinition.ShaderGraph @@ -69,6 +69,8 @@ static class PBRPasses pragmas = CorePragmas.DotsInstancedInV2Only, keywords = PBRKeywords.GBuffer, includes = PBRIncludes.GBuffer, + + virtualTextureFeedback = true, }; public static PassDescriptor META = new PassDescriptor() @@ -228,6 +230,8 @@ static class PBRPasses defines = CoreDefines.Forward, keywords = PBRKeywords.Forward, includes = PBRIncludes.Forward, + + virtualTextureFeedback = true, }; } #endregion diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/StackLit/ShaderGraph/StackLitMasterNode.cs b/com.unity.render-pipelines.high-definition/Editor/Material/StackLit/ShaderGraph/StackLitMasterNode.cs index 9a56ff07d28..926e2eee3cb 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/StackLit/ShaderGraph/StackLitMasterNode.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/StackLit/ShaderGraph/StackLitMasterNode.cs @@ -1765,5 +1765,13 @@ public override void CollectShaderProperties(PropertyCollector collector, Genera base.CollectShaderProperties(collector, generationMode); } + + public bool virtualTexturingEnabled + { + get + { + return true; + } + } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/StackLit/ShaderGraph/StackLitPass.template b/com.unity.render-pipelines.high-definition/Editor/Material/StackLit/ShaderGraph/StackLitPass.template index 76a747253b1..66a40d232c1 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/StackLit/ShaderGraph/StackLitPass.template +++ b/com.unity.render-pipelines.high-definition/Editor/Material/StackLit/ShaderGraph/StackLitPass.template @@ -518,6 +518,10 @@ Pass $SurfaceDescription.Emission: builtinData.emissiveColor = surfaceDescription.Emission; +#if !defined(_SURFACE_TYPE_TRANSPARENT) + $SurfaceDescription.VTPackedFeedback: builtinData.vtPackedFeedback = surfaceDescription.VTPackedFeedback; +#endif + $DepthOffset: builtinData.depthOffset = surfaceDescription.DepthOffset; #if (SHADERPASS == SHADERPASS_DISTORTION) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitMasterNode.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitMasterNode.cs index 86cc022075e..56342e0dca0 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitMasterNode.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitMasterNode.cs @@ -586,5 +586,13 @@ public override void CollectShaderProperties(PropertyCollector collector, Genera base.CollectShaderProperties(collector, generationMode); } + + public bool virtualTexturingEnabled + { + get + { + return true; + } + } } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitPass.template b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitPass.template index 3e24948e532..9dd6792e6ff 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitPass.template +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitPass.template @@ -160,6 +160,10 @@ Pass $SurfaceDescription.Emission: builtinData.emissiveColor = surfaceDescription.Emission; +#if !defined(_SURFACE_TYPE_TRANSPARENT) + $SurfaceDescription.VTPackedFeedback: builtinData.vtPackedFeedback = surfaceDescription.VTPackedFeedback; +#endif + #if (SHADERPASS == SHADERPASS_DISTORTION) builtinData.distortion = surfaceDescription.Distortion; builtinData.distortionBlur = surfaceDescription.DistortionBlur; diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitSubTarget.cs index 64fdfb7b6f0..807cba566b6 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/HDUnlitSubTarget.cs @@ -1,4 +1,4 @@ -using UnityEngine.Rendering.HighDefinition; +using UnityEngine.Rendering.HighDefinition; using UnityEditor.ShaderGraph; namespace UnityEditor.Rendering.HighDefinition.ShaderGraph @@ -243,6 +243,8 @@ static class UnlitPasses pragmas = CorePragmas.DotsInstancedInV2Only, keywords = UnlitKeywords.Forward, includes = UnlitIncludes.ForwardOnly, + + virtualTextureFeedback = true, }; public static PassDescriptor RaytracingIndirect = new PassDescriptor() diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/UnlitPass.template b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/UnlitPass.template index 8a7871510aa..740bb8c4fa7 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/UnlitPass.template +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/UnlitPass.template @@ -118,6 +118,10 @@ Pass // Builtin Data ZERO_INITIALIZE(BuiltinData, builtinData); // No call to InitBuiltinData as we don't have any lighting builtinData.opacity = surfaceDescription.Alpha; + +#if !defined(_SURFACE_TYPE_TRANSPARENT) + $SurfaceDescription.VTPackedFeedback: builtinData.vtPackedFeedback = surfaceDescription.VTPackedFeedback; +#endif } // -------------------------------------------------- diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/UnlitSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/UnlitSubTarget.cs index cda904e70d2..a8901a76f41 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/UnlitSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Unlit/ShaderGraph/UnlitSubTarget.cs @@ -1,4 +1,4 @@ -using UnityEngine.Rendering.HighDefinition; +using UnityEngine.Rendering.HighDefinition; using UnityEditor.ShaderGraph; namespace UnityEditor.Rendering.HighDefinition.ShaderGraph @@ -191,6 +191,8 @@ static class UnlitPasses pragmas = CorePragmas.DotsInstancedInV2Only, keywords = CoreKeywords.DebugDisplay, includes = UnlitIncludes.ForwardOnly, + + virtualTextureFeedback = true, }; } #endregion diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.Skin.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.Skin.cs index 9301be610bf..94671e75b93 100644 --- a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.Skin.cs +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.Skin.cs @@ -23,6 +23,7 @@ public class GeneralSection public static readonly GUIContent materialSectionTitle = EditorGUIUtility.TrTextContent("Material"); public static readonly GUIContent postProcessSectionTitle = EditorGUIUtility.TrTextContent("Post-processing"); public static readonly GUIContent xrTitle = EditorGUIUtility.TrTextContent("XR"); + public static readonly GUIContent virtualTexturingTitle = EditorGUIUtility.TrTextContent("Virtual Texturing"); public static readonly GUIContent lightLoopSubTitle = EditorGUIUtility.TrTextContent("Lights"); public static readonly GUIContent postProcessQualitySubTitle = EditorGUIUtility.TrTextContent("Post-processing Quality Settings"); public static readonly GUIContent lightingQualitySettings = EditorGUIUtility.TrTextContent("Lighting Quality Settings"); diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs index 9b897510d66..8adf975c954 100644 --- a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs @@ -40,6 +40,7 @@ enum Expandable ContactShadowQuality = 1 << 24, LightingQuality = 1 << 25, SSRQuality = 1 << 26, + VirtualTexturing = 1 << 27, } static readonly ExpandedState k_ExpandedState = new ExpandedState(Expandable.CameraFrameSettings | Expandable.General, "HDRP"); @@ -67,6 +68,10 @@ internal enum SelectedFrameSettings internal static SelectedFrameSettings selectedFrameSettings; +#if ENABLE_VIRTUALTEXTURES + internal static VirtualTexturingSettingsUI virtualTexturingSettingsUI = new VirtualTexturingSettingsUI(); +#endif + static HDRenderPipelineUI() { Inspector = CED.Group( @@ -99,6 +104,9 @@ static HDRenderPipelineUI() CED.FoldoutGroup(Styles.chromaticAberrationQualitySettings, Expandable.ChromaticAberrationQuality, k_ExpandedState, FoldoutOption.Indent | FoldoutOption.SubFoldout | FoldoutOption.NoSpaceAtEnd, Drawer_SectionChromaticAberrationQualitySettings) ), CED.FoldoutGroup(Styles.xrTitle, Expandable.XR, k_ExpandedState, Drawer_SectionXRSettings) +#if ENABLE_VIRTUALTEXTURES + ,CED.FoldoutGroup(Styles.virtualTexturingTitle, Expandable.VirtualTexturing, k_ExpandedState, Drawer_SectionVTSettings) +#endif ); // fix init of selection along what is serialized @@ -575,6 +583,13 @@ static void Drawer_SectionXRSettings(SerializedHDRenderPipelineAsset serialized, EditorGUILayout.PropertyField(serialized.renderPipelineSettings.xrSettings.cameraJitter, Styles.XRCameraJitter); } +#if ENABLE_VIRTUALTEXTURES + static void Drawer_SectionVTSettings(SerializedHDRenderPipelineAsset serialized, Editor owner) + { + virtualTexturingSettingsUI.OnGUI(serialized, owner); + } +#endif + static private bool m_ShowDoFLowQualitySection = false; static private bool m_ShowDoFMediumQualitySection = false; static private bool m_ShowDoFHighQualitySection = false; diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedHDRenderPipelineAsset.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedHDRenderPipelineAsset.cs index 1f1572a90e6..e8b64eed36f 100644 --- a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedHDRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedHDRenderPipelineAsset.cs @@ -20,6 +20,7 @@ class SerializedHDRenderPipelineAsset public SerializedFrameSettings defaultFrameSettings; public SerializedFrameSettings defaultBakedOrCustomReflectionFrameSettings; public SerializedFrameSettings defaultRealtimeReflectionFrameSettings; + public SerializedVirtualTexturingSettings virtualTexturingSettings; //RenderPipelineResources not always exist and thus cannot be serialized normally. public bool editorResourceHasMultipleDifferentValues @@ -63,6 +64,8 @@ public SerializedHDRenderPipelineAsset(SerializedObject serializedObject) defaultFrameSettings = new SerializedFrameSettings(serializedObject.FindProperty("m_RenderingPathDefaultCameraFrameSettings"), null); //no overrides in HDRPAsset defaultBakedOrCustomReflectionFrameSettings = new SerializedFrameSettings(serializedObject.FindProperty("m_RenderingPathDefaultBakedOrCustomReflectionFrameSettings"), null); //no overrides in HDRPAsset defaultRealtimeReflectionFrameSettings = new SerializedFrameSettings(serializedObject.FindProperty("m_RenderingPathDefaultRealtimeReflectionFrameSettings"), null); //no overrides in HDRPAsset + + virtualTexturingSettings = new SerializedVirtualTexturingSettings(serializedObject.FindProperty("virtualTexturingSettings")); } public void Update() diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedVirtualTexturingSettings.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedVirtualTexturingSettings.cs new file mode 100644 index 00000000000..62b6b51a4b9 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedVirtualTexturingSettings.cs @@ -0,0 +1,23 @@ +using UnityEditor.Rendering; +using UnityEngine.Rendering.HighDefinition; + +namespace UnityEditor.Rendering.HighDefinition +{ + public sealed class SerializedVirtualTexturingSettings + { + public SerializedProperty root; + + public SerializedProperty cpuCacheSizeInMegaBytes; + public SerializedProperty gpuCacheSizeInMegaBytes; + public SerializedProperty gpuCacheSizeOverridesStreaming; + + public SerializedVirtualTexturingSettings(SerializedProperty root) + { + this.root = root; + + cpuCacheSizeInMegaBytes = root.Find((VirtualTexturingSettingsSRP s) => s.cpuCacheSizeInMegaBytes); + gpuCacheSizeInMegaBytes = root.Find((VirtualTexturingSettingsSRP s) => s.gpuCacheSizeInMegaBytes); + gpuCacheSizeOverridesStreaming = root.Find((VirtualTexturingSettingsSRP s) => s.gpuCacheSizeOverridesStreaming); + } + } +} diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedVirtualTexturingSettings.cs.meta b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedVirtualTexturingSettings.cs.meta new file mode 100644 index 00000000000..d2b9c82d69a --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedVirtualTexturingSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b6b35c2a70589145b2353009c41ecf8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/VirtualTexturingSettingsUI.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/VirtualTexturingSettingsUI.cs new file mode 100644 index 00000000000..12d01aa1163 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/VirtualTexturingSettingsUI.cs @@ -0,0 +1,254 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditorInternal; +using UnityEngine; +using UnityEngine.Experimental.Rendering; +using UnityEngine.Rendering.HighDefinition; +using UnityEngine.Rendering.VirtualTexturing; + +#if ENABLE_VIRTUALTEXTURES +namespace UnityEditor.Rendering.HighDefinition +{ + class VirtualTexturingSettingsUI + { + private ReorderableList m_GPUCacheSizeOverrideListStreaming; + private SerializedProperty m_GPUCacheSizeOverridesPropertyStreaming; + + public SerializedObject serializedObject; + private SerializedHDRenderPipelineAsset serializedRPAsset; + + private const int CPUCacheSizeMinValue = 64; + private const int GPUCacheSizeMinValue = 32; + + public void OnGUI(SerializedHDRenderPipelineAsset serialized, Editor owner) + { + CheckStyles(); + + serializedObject = serialized.serializedObject; + serializedRPAsset = serialized; + + EditorGUILayout.Space(); + + using (var scope = new EditorGUI.ChangeCheckScope()) + { + serialized.virtualTexturingSettings.cpuCacheSizeInMegaBytes.intValue = Mathf.Max(CPUCacheSizeMinValue, EditorGUILayout.DelayedIntField(s_Styles.cpuCacheSize, serialized.virtualTexturingSettings.cpuCacheSizeInMegaBytes.intValue)); + serialized.virtualTexturingSettings.gpuCacheSizeInMegaBytes.intValue = Mathf.Max(GPUCacheSizeMinValue, EditorGUILayout.DelayedIntField(s_Styles.gpuCacheSize, serialized.virtualTexturingSettings.gpuCacheSizeInMegaBytes.intValue)); + + // GPU Cache size overrides + if (m_GPUCacheSizeOverrideListStreaming == null || + m_GPUCacheSizeOverridesPropertyStreaming != serialized.virtualTexturingSettings.gpuCacheSizeOverridesStreaming) + { + m_GPUCacheSizeOverridesPropertyStreaming = serialized.virtualTexturingSettings.gpuCacheSizeOverridesStreaming; + m_GPUCacheSizeOverrideListStreaming = CreateGPUCacheSizeOverrideList(m_GPUCacheSizeOverridesPropertyStreaming, DrawStreamingOverrideElement); + } + + m_GPUCacheSizeOverrideListStreaming.DoLayoutList(); + } + + serialized.serializedObject.ApplyModifiedProperties(); + } + + VirtualTexturingGPUCacheSizeOverrideSRP[] GetGPUCacheSizeOverrideArrayFromProperty(SerializedProperty property) + { + List overrides = new List(); + for (int i = 0; i < property.arraySize; ++i) + { + SerializedProperty overrideProperty = property.GetArrayElementAtIndex(i); + overrides.Add(new VirtualTexturingGPUCacheSizeOverrideSRP() + { format = (GraphicsFormat)overrideProperty.FindPropertyRelative("format").intValue, usage = (VirtualTexturingCacheUsageSRP)overrideProperty.FindPropertyRelative("usage").intValue, sizeInMegaBytes = (uint)overrideProperty.FindPropertyRelative("sizeInMegaBytes").intValue }); + } + + return overrides.ToArray(); + } + + ReorderableList CreateGPUCacheSizeOverrideList(SerializedProperty property, ReorderableList.ElementCallbackDelegate drawCallback) + { + ReorderableList list = new ReorderableList(property.serializedObject, property); + + list.drawHeaderCallback = + (Rect rect) => + { + }; + + list.drawElementCallback = drawCallback; + + list.onAddCallback = (l) => + { + List availableFormats = new List(EditorHelpers.QuerySupportedFormats()); + + // We can't just pass in existing overrides as a parameter to CreateGPUCacheSizeOverrideList() because lambdas can't capture ref params. + VirtualTexturingGPUCacheSizeOverrideSRP[] existingOverrides = GetGPUCacheSizeOverrideArrayFromProperty(serializedRPAsset.virtualTexturingSettings.gpuCacheSizeOverridesStreaming); + RemoveOverriddenFormats(availableFormats, existingOverrides); + + int index = property.arraySize; + property.InsertArrayElementAtIndex(index); + var newItemProperty = property.GetArrayElementAtIndex(index); + newItemProperty.FindPropertyRelative("format").intValue = availableFormats.Count > 0 ? (int)availableFormats[0] : 0; + newItemProperty.FindPropertyRelative("usage").intValue = (int)VirtualTexturingCacheUsage.Streaming; + newItemProperty.FindPropertyRelative("sizeInMegaBytes").intValue = 64; + }; + + return list; + } + + void GraphicsFormatToFormatAndChannelTransformString(GraphicsFormat graphicsFormat, out string format, out string channelTransform) + { + string formatString = graphicsFormat.ToString(); + int lastUnderscore = formatString.LastIndexOf('_'); + if (lastUnderscore < 0) + { + format = "None"; + channelTransform = "None"; + return; + } + format = formatString.Substring(0, lastUnderscore); + channelTransform = formatString.Substring(lastUnderscore + 1); + } + GraphicsFormat FormatAndChannelTransformStringToGraphicsFormat(string format, string channelTransform) + { + return (GraphicsFormat)Enum.Parse(typeof(GraphicsFormat), $"{format}_{channelTransform}"); + } + + void RemoveOverriddenFormats(List formats, VirtualTexturingGPUCacheSizeOverrideSRP[] overrides) + { + foreach (var existingCacheSizeOverride in overrides) + { + formats.Remove(existingCacheSizeOverride.format); + } + } + + void GPUCacheSizeOverridesGUI(Rect rect, int overrideIdx, SerializedProperty overrideListProperty, VirtualTexturingGPUCacheSizeOverrideSRP[] overrideList) + { + var cacheSizeOverrideProperty = overrideListProperty.GetArrayElementAtIndex(overrideIdx); + var cacheSizeOverride = overrideList[overrideIdx]; + + List availableFormats = new List(EditorHelpers.QuerySupportedFormats()); + + RemoveOverriddenFormats(availableFormats, overrideList); + + // Group formats + Dictionary> formatGroups = new Dictionary>(); + foreach (GraphicsFormat graphicsFormat in availableFormats) + { + GraphicsFormatToFormatAndChannelTransformString(graphicsFormat, out var format, out var channelTransform); + if (!formatGroups.ContainsKey(format)) + { + formatGroups.Add(format, new List()); + } + formatGroups[format].Add(channelTransform); + } + + GraphicsFormatToFormatAndChannelTransformString((GraphicsFormat)cacheSizeOverrideProperty.FindPropertyRelative("format").intValue, out string formatString, out string channelTransformString); + + // GUI Drawing + + float overrideWidth = rect.width; + + float spacing = Math.Min(5, overrideWidth * 0.02f); + + overrideWidth -= 2 * spacing; + + float formatLabelWidth = Math.Min(60, overrideWidth * 0.25f); + float formatWidth = overrideWidth * 0.3f; + float channelTransformWidth = overrideWidth * 0.25f; + float sizeLabelWidth = Math.Min(45, overrideWidth * 0.2f); + float sizeWidth = overrideWidth * 0.15f; + + // Format + rect.width = formatLabelWidth; + rect.position += new Vector2(-15, 0); + EditorGUI.LabelField(rect, s_Styles.gpuCacheSizeOverrideFormat); + + rect.position += new Vector2(formatLabelWidth, 0); + rect.width = formatWidth; + if (EditorGUI.DropdownButton(rect, new GUIContent(formatString), FocusType.Keyboard)) + { + GenericMenu menu = new GenericMenu(); + foreach (string possibleFormat in formatGroups.Keys) + { + string localFormat = possibleFormat; + menu.AddItem(new GUIContent(localFormat), formatString == localFormat, () => + { + // Make sure the channelTransform is valid for the format. + List formatGroup = formatGroups[localFormat]; + if (formatGroup.FindIndex((string possibleChannelTransform) => { return possibleChannelTransform == channelTransformString; }) == -1) + { + channelTransformString = formatGroup[0]; + } + + cacheSizeOverrideProperty.FindPropertyRelative("format").intValue = (int)FormatAndChannelTransformStringToGraphicsFormat(localFormat, channelTransformString); + serializedObject.ApplyModifiedProperties(); + }); + } + + menu.ShowAsContext(); + } + + // Channel transform + rect.position += new Vector2(formatWidth, 0); + rect.width = channelTransformWidth; + if (EditorGUI.DropdownButton(rect, new GUIContent(channelTransformString), FocusType.Keyboard)) + { + GenericMenu menu = new GenericMenu(); + if (formatGroups.ContainsKey(formatString)) + { + List possibleChannelTransforms = formatGroups[formatString]; + possibleChannelTransforms.Add(channelTransformString); + possibleChannelTransforms.Sort(); + + foreach (string possibleChannelTransform in possibleChannelTransforms) + { + string localChannelTransform = possibleChannelTransform; + menu.AddItem(new GUIContent(localChannelTransform), localChannelTransform == channelTransformString, () => + { + GraphicsFormat format = FormatAndChannelTransformStringToGraphicsFormat(formatString, localChannelTransform); + cacheSizeOverrideProperty.FindPropertyRelative("format").intValue = (int)format; + serializedObject.ApplyModifiedProperties(); + }); + } + } + menu.ShowAsContext(); + } + + // Size + rect.position += new Vector2(channelTransformWidth + spacing, 0); + rect.width = sizeLabelWidth; + + EditorGUI.LabelField(rect, s_Styles.gpuCacheSizeOverrideSize); + + rect.position += new Vector2(sizeLabelWidth, 0); + rect.width = sizeWidth; + + cacheSizeOverride.sizeInMegaBytes = (uint) Mathf.Max(GPUCacheSizeMinValue, + EditorGUI.DelayedIntField(rect, (int) cacheSizeOverride.sizeInMegaBytes)); + cacheSizeOverrideProperty.FindPropertyRelative("sizeInMegaBytes").intValue = + (int) cacheSizeOverride.sizeInMegaBytes; + } + + void DrawStreamingOverrideElement(Rect rect, int overrideIdx, bool active, bool focused) + { + GPUCacheSizeOverridesGUI(rect, overrideIdx, m_GPUCacheSizeOverridesPropertyStreaming, GetGPUCacheSizeOverrideArrayFromProperty(serializedRPAsset.virtualTexturingSettings.gpuCacheSizeOverridesStreaming)); + } + + sealed class Styles + { + public readonly GUIContent cpuCacheSize = new GUIContent("CPU Cache Size", "Amount of CPU memory (in MB) that can be allocated by the Virtual Texturing system to use to cache texture data."); + public readonly GUIContent gpuCacheSize = new GUIContent("GPU Cache Size per Format", "Amount of GPU memory (in MB) that can be allocated per format by the Virtual Texturing system to cache texture data. Can be overridden to use a different size per format."); + + public readonly GUIContent gpuCacheSizeOverrideFormat = new GUIContent("Format", "Format and channel transform that will be overridden."); + public readonly GUIContent gpuCacheSizeOverrideSize = new GUIContent("Size", "Size (in MB) of the override."); + } + + static Styles s_Styles; + + // Can't use a static initializer in case we need to create GUIStyle in the Styles class as + // these can only be created with an active GUI rendering context + void CheckStyles() + { + if (s_Styles == null) + s_Styles = new Styles(); + } + } +} +#endif diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/VirtualTexturingSettingsUI.cs.meta b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/VirtualTexturingSettingsUI.cs.meta new file mode 100644 index 00000000000..0df3a0bc55d --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/VirtualTexturingSettingsUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33b486c1a65371b4391f4e7c4c53f658 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Editor/ShaderGraph/HDTarget.cs b/com.unity.render-pipelines.high-definition/Editor/ShaderGraph/HDTarget.cs index 1ad6541e5f7..aee3b11375e 100644 --- a/com.unity.render-pipelines.high-definition/Editor/ShaderGraph/HDTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/ShaderGraph/HDTarget.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using UnityEngine.Rendering; @@ -630,6 +630,7 @@ static class CoreIncludes { // CorePregraph const string kCommon = "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"; + const string kTextureStack = "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"; const string kShaderVariables = "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"; const string kFragInputs = "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl"; const string kShaderPass = "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"; @@ -697,6 +698,7 @@ static class CoreIncludes public static IncludeCollection CorePregraph = new IncludeCollection { { kCommon, IncludeLocation.Pregraph }, + { kTextureStack, IncludeLocation.Pregraph }, // TODO: put this on a conditional { kShaderVariables, IncludeLocation.Pregraph }, { kFragInputs, IncludeLocation.Pregraph }, { kShaderPass, IncludeLocation.Pregraph }, diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.cs index 522253ffcca..047bb09be6e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.cs @@ -63,6 +63,9 @@ public struct BuiltinData [SurfaceDataAttributes("Depth Offset")] public float depthOffset; // define the depth in unity unit to add in Z forward direction + + [SurfaceDataAttributes("VT Packed Feedback", precision = FieldPrecision.Real)] + public Vector4 vtPackedFeedback; }; //----------------------------------------------------------------------------- diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.cs.hlsl index e0736c8e31d..e87a10187bf 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.cs.hlsl @@ -21,6 +21,7 @@ #define DEBUGVIEW_BUILTIN_BUILTINDATA_DISTORTION_BLUR (111) #define DEBUGVIEW_BUILTIN_BUILTINDATA_RENDERING_LAYERS (112) #define DEBUGVIEW_BUILTIN_BUILTINDATA_DEPTH_OFFSET (113) +#define DEBUGVIEW_BUILTIN_BUILTINDATA_VT_PACKED_FEEDBACK (114) // Generated from UnityEngine.Rendering.HighDefinition.Builtin+BuiltinData // PackingRules = Exact @@ -40,6 +41,7 @@ struct BuiltinData real distortionBlur; uint renderingLayers; float depthOffset; + real4 vtPackedFeedback; }; // Generated from UnityEngine.Rendering.HighDefinition.Builtin+LightTransportData @@ -101,6 +103,9 @@ void GetGeneratedBuiltinDataDebug(uint paramId, BuiltinData builtindata, inout f case DEBUGVIEW_BUILTIN_BUILTINDATA_DEPTH_OFFSET: result = builtindata.depthOffset.xxx; break; + case DEBUGVIEW_BUILTIN_BUILTINDATA_VT_PACKED_FEEDBACK: + result = builtindata.vtPackedFeedback.xyz; + break; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/GBufferManager.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/GBufferManager.cs index bf9f9d62706..5e6ff71f87a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/GBufferManager.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/GBufferManager.cs @@ -10,6 +10,9 @@ enum GBufferUsage Normal, LightLayers, ShadowMask + #if ENABLE_VIRTUALTEXTURES + ,VTFeedback + #endif } class GBufferManager : MRTBufferManager @@ -20,6 +23,9 @@ class GBufferManager : MRTBufferManager // This is the index of the gbuffer use for shadowmask and lightlayers, if any protected int m_ShadowMaskIndex = -1; protected int m_LightLayers = -1; + #if ENABLE_VIRTUALTEXTURES + protected int m_VTFeedbackIndex = -1; + #endif protected HDRenderPipelineAsset m_asset; // We need to store current set of RT to bind exactly, as we can have dynamic RT (LightLayers, ShadowMask), we allocated an array for each possible size (to avoid garbage collect pressure) protected RenderTargetIdentifier[][] m_RTIDsArray = new RenderTargetIdentifier[8][]; @@ -54,6 +60,10 @@ public override void CreateBuffers() m_ShadowMaskIndex = gbufferIndex; else if (m_GBufferUsage[gbufferIndex] == GBufferUsage.LightLayers) m_LightLayers = gbufferIndex; +#if ENABLE_VIRTUALTEXTURES + else if (m_GBufferUsage[gbufferIndex] == GBufferUsage.VTFeedback) + m_VTFeedbackIndex = gbufferIndex; +#endif } } @@ -147,5 +157,15 @@ public RTHandle GetSubsurfaceScatteringBuffer(int index) return null; } +#if ENABLE_VIRTUALTEXTURES + public RTHandle GetVTFeedbackBuffer() + { + if (m_VTFeedbackIndex != -1) + { + return m_RTs[m_VTFeedbackIndex]; + } + return null; + } +#endif } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.cs index 3ec1640b95a..1658e771ca9 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.cs @@ -197,6 +197,9 @@ protected void GetGBufferOptions(HDRenderPipelineAsset asset, out int gBufferCou supportShadowMask = asset.currentPlatformRenderPipelineSettings.supportShadowMask; supportLightLayers = asset.currentPlatformRenderPipelineSettings.supportLightLayers; gBufferCount = 4 + (supportShadowMask ? 1 : 0) + (supportLightLayers ? 1 : 0); +#if ENABLE_VIRTUALTEXTURES + gBufferCount++; +#endif } // This must return the number of GBuffer to allocate @@ -234,7 +237,15 @@ public override void GetMaterialGBufferDescription(HDRenderPipelineAsset asset, gBufferUsage[3] = GBufferUsage.None; enableWrite[3] = true; - int index = 4; + #if ENABLE_VIRTUALTEXTURES + int index = 4; + RTFormat[index] = VTBufferManager.GetFeedbackBufferFormat(); + gBufferUsage[index] = GBufferUsage.VTFeedback; + enableWrite[index] = false; + index++; + #else + int index = 4; + #endif if (supportLightLayers) { 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 0e8b1ecd022..8dadce11752 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 @@ -43,8 +43,10 @@ TEXTURE2D_X(_GBufferTexture0); TEXTURE2D_X(_GBufferTexture1); TEXTURE2D_X(_GBufferTexture2); TEXTURE2D_X(_GBufferTexture3); // Bake lighting and/or emissive -TEXTURE2D_X(_GBufferTexture4); // Light layer or shadow mask -TEXTURE2D_X(_GBufferTexture5); // shadow mask +TEXTURE2D_X(_GBufferTexture4); // VTFeedbakc or Light layer or shadow mask +TEXTURE2D_X(_GBufferTexture5); // Light layer or shadow mask +TEXTURE2D_X(_GBufferTexture6); // shadow mask + TEXTURE2D_X(_LightLayersTexture); #ifdef SHADOWS_SHADOWMASK @@ -58,13 +60,22 @@ TEXTURE2D_X(_ShadowMaskTexture); // Alias for shadow mask, so we don't need to k // Definition //----------------------------------------------------------------------------- +#ifdef UNITY_VIRTUAL_TEXTURING +#define OUT_GBUFFER_VTFEEDBACK outGBuffer4 +#define OUT_GBUFFER_OPTIONAL_SLOT_1 outGBuffer5 +#define OUT_GBUFFER_OPTIONAL_SLOT_2 outGBuffer6 +#else +#define OUT_GBUFFER_OPTIONAL_SLOT_1 outGBuffer4 +#define OUT_GBUFFER_OPTIONAL_SLOT_2 outGBuffer5 +#endif + #if defined(LIGHT_LAYERS) && defined(SHADOWS_SHADOWMASK) -#define OUT_GBUFFER_LIGHT_LAYERS outGBuffer4 -#define OUT_GBUFFER_SHADOWMASK outGBuffer5 +#define OUT_GBUFFER_LIGHT_LAYERS OUT_GBUFFER_OPTIONAL_SLOT_1 +#define OUT_GBUFFER_SHADOWMASK OUT_GBUFFER_OPTIONAL_SLOT_2 #elif defined(LIGHT_LAYERS) -#define OUT_GBUFFER_LIGHT_LAYERS outGBuffer4 +#define OUT_GBUFFER_LIGHT_LAYERS OUT_GBUFFER_OPTIONAL_SLOT_1 #elif defined(SHADOWS_SHADOWMASK) -#define OUT_GBUFFER_SHADOWMASK outGBuffer4 +#define OUT_GBUFFER_SHADOWMASK OUT_GBUFFER_OPTIONAL_SLOT_1 #endif #define HAS_REFRACTION (defined(_REFRACTION_PLANE) || defined(_REFRACTION_SPHERE) || defined(_REFRACTION_THIN)) @@ -529,6 +540,9 @@ void EncodeIntoGBuffer( SurfaceData surfaceData #endif #if GBUFFERMATERIAL_COUNT > 5 , out GBufferType5 outGBuffer5 +#endif +#if GBUFFERMATERIAL_COUNT > 6 + , out GBufferType5 outGBuffer6 #endif ) { @@ -671,6 +685,10 @@ void EncodeIntoGBuffer( SurfaceData surfaceData #ifdef SHADOWS_SHADOWMASK OUT_GBUFFER_SHADOWMASK = BUILTIN_DATA_SHADOW_MASK; #endif + +#ifdef UNITY_VIRTUAL_TEXTURING + OUT_GBUFFER_VTFEEDBACK = builtinData.vtPackedFeedback; +#endif } // Fills the BSDFData. Also returns the (per-pixel) material feature flags inferred diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialGBufferMacros.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialGBufferMacros.hlsl index 528862c5603..47cbd8abfbd 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialGBufferMacros.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialGBufferMacros.hlsl @@ -11,6 +11,7 @@ #define GBufferType3 float4 #define GBufferType4 float4 #define GBufferType5 float4 +#define GBufferType6 float4 #ifdef LIGHT_LAYERS #define GBUFFERMATERIAL_LIGHT_LAYERS 1 @@ -33,8 +34,14 @@ #define GBUFFER_LIT_ANISOTROPIC 4 #define GBUFFER_LIT_IRIDESCENCE 5 // TODO +#ifdef UNITY_VIRTUAL_TEXTURING +#define GBUFFERMATERIAL_VTFEEDBACK 1 +#else +#define GBUFFERMATERIAL_VTFEEDBACK 0 +#endif + // Caution: This must be in sync with Lit.cs GetMaterialGBufferCount() -#define GBUFFERMATERIAL_COUNT (4 + GBUFFERMATERIAL_LIGHT_LAYERS + GBUFFERMATERIAL_SHADOWMASK) +#define GBUFFERMATERIAL_COUNT (4 + GBUFFERMATERIAL_VTFEEDBACK + GBUFFERMATERIAL_LIGHT_LAYERS + GBUFFERMATERIAL_SHADOWMASK) // Only one deferred layout is allowed for a HDRenderPipeline, this will be detect by the redefinition of GBUFFERMATERIAL_COUNT // If GBUFFERMATERIAL_COUNT is define two time, the shaders will not compile diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/SubsurfaceScattering/SubsurfaceScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/SubsurfaceScattering/SubsurfaceScattering.hlsl index 3c094cdc5cc..b4dca08b2a5 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/SubsurfaceScattering/SubsurfaceScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/SubsurfaceScattering/SubsurfaceScattering.hlsl @@ -91,8 +91,13 @@ void DecodeFromSSSBuffer(uint2 positionSS, out SSSData sssData) DecodeFromSSSBuffer(sssBuffer, positionSS, sssData); } -// OUTPUT_SSSBUFFER start from SV_Target2 as SV_Target0 and SV_Target1 are used for lighting buffer -#define OUTPUT_SSSBUFFER(NAME) out SSSBufferType0 MERGE_NAME(NAME, 0) : SV_Target2 +// OUTPUT_SSSBUFFER start from SV_Target2 as SV_Target0 and SV_Target1 are used for lighting buffer, shifts to SV_Target3 if VT is enabled +#ifdef UNITY_VIRTUAL_TEXTURING + #define OUTPUT_SSSBUFFER(NAME) out SSSBufferType0 MERGE_NAME(NAME, 0) : SV_Target3 +#else + #define OUTPUT_SSSBUFFER(NAME) out SSSBufferType0 MERGE_NAME(NAME, 0) : SV_Target2 +#endif + #define ENCODE_INTO_SSSBUFFER(SURFACE_DATA, UNPOSITIONSS, NAME) EncodeIntoSSSBuffer(ConvertSurfaceDataToSSSData(SURFACE_DATA), UNPOSITIONSS, MERGE_NAME(NAME, 0)) #define DECODE_FROM_SSSBUFFER(UNPOSITIONSS, SSS_DATA) DecodeFromSSSBuffer(UNPOSITIONSS, SSS_DATA) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/VTBufferManager.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/VTBufferManager.cs new file mode 100644 index 00000000000..1ec4e4e4b2b --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/VTBufferManager.cs @@ -0,0 +1,110 @@ +#if ENABLE_VIRTUALTEXTURES +using VirtualTexturing = UnityEngine.Rendering.VirtualTexturing; +using UnityEngine.Experimental.Rendering; + +namespace UnityEngine.Rendering.HighDefinition +{ + public class VTBufferManager + { + public static GraphicsFormat GetFeedbackBufferFormat() + { + return GraphicsFormat.R8G8B8A8_UNorm; + } + + RTHandle m_VTFeedbackBuffer; + VirtualTexturing.Resolver m_Resolver = new VirtualTexturing.Resolver(); + public static int AdditionalForwardRT = 1; + const int resolveScaleFactor = 16; + Vector2 resolverScale = new Vector2(1.0f / (float)resolveScaleFactor, 1.0f / (float)resolveScaleFactor); + RTHandle lowresResolver; + ComputeShader downSampleCS; + + public VTBufferManager(HDRenderPipelineAsset asset) + { + downSampleCS = asset.renderPipelineResources.shaders.VTFeedbackDownsample; + } + + public void CreateBuffers(RenderPipelineSettings settings) + { + if (settings.supportMSAA || settings.supportedLitShaderMode == RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly) + { + // Our processing handles both MSAA and regular buffers so we don't need to explicitly resolve here saving a buffer + m_VTFeedbackBuffer = RTHandles.Alloc(Vector2.one, TextureXR.slices, dimension: TextureXR.dimension, colorFormat: GraphicsFormat.R8G8B8A8_UNorm, bindTextureMS: true, + enableMSAA: settings.supportMSAA, useDynamicScale: true, name: "VTFeedbackForwardMSAA"); + } + + lowresResolver = RTHandles.Alloc(resolverScale, colorFormat: GraphicsFormat.R8G8B8A8_UNorm, enableRandomWrite: true, autoGenerateMips: false, name: "VTFeedback lowres"); + } + + public void BeginRender(int width, int height) + { + GetResolveDimensions(ref width, ref height); + m_Resolver.UpdateSize(width, height); + } + + public void Resolve(CommandBuffer cmd, RTHandle rt, int width, int height) + { + if (rt != null) + { + ResolveVTDispatch(cmd, rt, width, height ); + } + + if (m_VTFeedbackBuffer != null) + { + ResolveVTDispatch(cmd, m_VTFeedbackBuffer, width, height ); + } + } + + void ResolveVTDispatch(CommandBuffer cmd, RTHandle buffer, int width, int height) + { + // We allow only resolving a sub-rectangle of a larger allocated buffer but not the other way around. + Debug.Assert(width <= buffer.referenceSize.x && height <= buffer.referenceSize.y); + + int lowResWidth = width; + int lowResHeight = height; + GetResolveDimensions(ref lowResWidth, ref lowResHeight); + Debug.Assert(lowResWidth <= m_Resolver.CurrentWidth && lowResHeight <= m_Resolver.CurrentHeight); + Debug.Assert(lowResWidth <= lowresResolver.referenceSize.x && lowResHeight <= lowresResolver.referenceSize.y); + + string mainFunction = (buffer.isMSAAEnabled) ? "KMainMSAA" : "KMain"; + int inputID = (buffer.isMSAAEnabled) ? HDShaderIDs._InputTextureMSAA : HDShaderIDs._InputTexture; + + int kernel = downSampleCS.FindKernel(mainFunction); + cmd.SetComputeTextureParam(downSampleCS, kernel, inputID, buffer.nameID); + cmd.SetComputeTextureParam(downSampleCS, kernel, HDShaderIDs._OutputTexture, lowresResolver.nameID); + var resolveCounter = 0; + var startOffsetX = (resolveCounter % resolveScaleFactor); + var startOffsetY = (resolveCounter / resolveScaleFactor) % resolveScaleFactor; + cmd.SetComputeVectorParam(downSampleCS, HDShaderIDs._Params, new Vector4(resolveScaleFactor, startOffsetX, startOffsetY, /*unused*/-1)); + cmd.SetComputeVectorParam(downSampleCS, HDShaderIDs._Params1, new Vector4(width, height, lowResWidth, lowResHeight)); + var TGSize = 8; //Match shader + cmd.DispatchCompute(downSampleCS, kernel, ((int)lowResWidth + (TGSize - 1)) / TGSize, ((int)lowResHeight + (TGSize - 1)) / TGSize, 1); + + m_Resolver.Process(cmd, lowresResolver.nameID, 0, lowResWidth, 0, lowResHeight, 0, 0); + } + + void GetResolveDimensions(ref int w, ref int h) + { + w = Mathf.Max(Mathf.RoundToInt(resolverScale.x * w), 1); + h = Mathf.Max(Mathf.RoundToInt(resolverScale.y * h), 1); + } + + public void DestroyBuffers() + { + RTHandles.Release(m_VTFeedbackBuffer); + RTHandles.Release(lowresResolver); + m_VTFeedbackBuffer = null; + lowresResolver = null; + m_Resolver.Dispose(); + } + + // This may be null in some cases where this buffer can be shared with the one used by the Gbuffer + public RTHandle GetFeedbackBuffer() + { + return m_VTFeedbackBuffer; + } + + + } +} +#endif diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/VTBufferManager.cs.meta b/com.unity.render-pipelines.high-definition/Runtime/Material/VTBufferManager.cs.meta new file mode 100644 index 00000000000..c9f52af805c --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/VTBufferManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3155270212bf5cb4ebc62bc95bb8138c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Accumulation/Shaders.meta b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Accumulation/Shaders.meta index 870e312a410..b3eb26ca90a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Accumulation/Shaders.meta +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Accumulation/Shaders.meta @@ -1,5 +1,9 @@ fileFormatVersion: 2 +<<<<<<< HEAD:com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing/Shaders.meta +guid: 968a10978df084e459eb939d1458edbf +======= guid: a3dedab66a32c7a4f81978ba0b448948 +>>>>>>> origin/master:com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Accumulation/Shaders.meta folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDProfileId.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDProfileId.cs index 8d369531b2a..d43fb0c89af 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDProfileId.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDProfileId.cs @@ -192,5 +192,9 @@ internal enum HDProfileId ProbeVolumeDebug, BuildGPULightListProbeVolumes, PushProbeVolumeLightListGlobalParameters, + +#if ENABLE_VIRTUALTEXTURES + VTFeedbackClear, +#endif } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs index 3c489e118fd..6335adfecab 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs @@ -96,6 +96,9 @@ internal static Volume GetOrCreateDefaultVolume() readonly GBufferManager m_GbufferManager; readonly DBufferManager m_DbufferManager; +#if ENABLE_VIRTUALTEXTURES + readonly VTBufferManager m_VtBufferManager; +#endif readonly SharedRTManager m_SharedRTManager = new SharedRTManager(); internal SharedRTManager sharedRTManager { get { return m_SharedRTManager; } } @@ -284,7 +287,12 @@ internal int GetMaxScreenSpaceShadows() CameraCache<(Transform viewer, HDProbe probe, int face)>(); RenderTargetIdentifier[] m_MRTTransparentMotionVec; +#if ENABLE_VIRTUALTEXTURES + RenderTargetIdentifier[] m_MRTWithSSS = new RenderTargetIdentifier[3 + VTBufferManager.AdditionalForwardRT]; // Specular, (optional) VT, diffuse, sss buffer; note: vt is alway on slot 1 to keep in sync with unlit. + RenderTargetIdentifier[] m_MRTWithVTFeedback = new RenderTargetIdentifier[2]; +#else RenderTargetIdentifier[] m_MRTWithSSS = new RenderTargetIdentifier[3]; // Specular, diffuse, sss buffer; +#endif RenderTargetIdentifier[] mMRTSingle = new RenderTargetIdentifier[1]; string m_ForwardPassProfileName; @@ -371,6 +379,17 @@ public HDRenderPipeline(HDRenderPipelineAsset asset, HDRenderPipelineAsset defau return; } +#if ENABLE_VIRTUALTEXTURES + if (asset.virtualTexturingSettings != null) + { + VirtualTexturing.System.ApplyVirtualTexturingSettings(asset.virtualTexturingSettings.GetSettings()); + } + else + { + VirtualTexturing.System.ApplyVirtualTexturingSettings(VirtualTexturingSettingsSRP.Default); + } +#endif + // Initial state of the RTHandle system. // Tells the system that we will require MSAA or not so that we can avoid wasteful render texture allocation. // TODO: Might want to initialize to at least the window resolution to avoid un-necessary re-alloc in the player @@ -402,6 +421,9 @@ public HDRenderPipeline(HDRenderPipelineAsset asset, HDRenderPipelineAsset defau m_GbufferManager = new GBufferManager(asset, m_DeferredMaterial); m_DbufferManager = new DBufferManager(); m_DbufferManager.InitializeHDRPResouces(asset); +#if ENABLE_VIRTUALTEXTURES + m_VtBufferManager = new VTBufferManager(asset); +#endif m_SharedRTManager.Build(asset); m_PostProcessSystem = new PostProcessSystem(asset, defaultResources); @@ -476,7 +498,13 @@ public HDRenderPipeline(HDRenderPipelineAsset asset, HDRenderPipelineAsset defau // Propagate it to the debug menu m_DebugDisplaySettings.data.msaaSamples = m_MSAASamples; +#if ENABLE_VIRTUALTEXTURES + Debug.Log("Scriptable renderpipeline VT enabled"); + m_MRTTransparentMotionVec = new RenderTargetIdentifier[2 + VTBufferManager.AdditionalForwardRT]; +#else + Debug.Log("Scriptable renderpipeline VT disabled"); m_MRTTransparentMotionVec = new RenderTargetIdentifier[2]; +#endif if (m_RayTracingSupported) { @@ -576,6 +604,10 @@ void InitializeRenderTextures() if (settings.supportDecals) m_DbufferManager.CreateBuffers(); +#if ENABLE_VIRTUALTEXTURES + m_VtBufferManager.CreateBuffers(settings); +#endif + InitSSSBuffers(); m_SharedRTManager.InitSharedBuffers(m_GbufferManager, m_Asset.currentPlatformRenderPipelineSettings, defaultResources); @@ -634,6 +666,9 @@ void DestroyRenderTextures() { m_GbufferManager.DestroyBuffers(); m_DbufferManager.DestroyBuffers(); +#if ENABLE_VIRTUALTEXTURES + m_VtBufferManager.DestroyBuffers(); +#endif m_MipGenerator.Release(); RTHandles.Release(m_CameraColorBuffer); @@ -1875,6 +1910,10 @@ AOVRequestData aovRequest CullForRayTracing(cmd, hdCamera); } +#if ENABLE_VIRTUALTEXTURES + m_VtBufferManager.BeginRender(hdCamera.actualWidth, hdCamera.actualHeight); +#endif + using (ListPool.Get(out var aovBuffers)) using (ListPool.Get(out var aovCustomPassBuffers)) { @@ -2422,6 +2461,10 @@ void Callback(CommandBuffer c, HDCamera cam) #endif } +#if ENABLE_VIRTUALTEXTURES + m_VtBufferManager.Resolve(cmd, m_GbufferManager.GetVTFeedbackBuffer(), hdCamera.actualWidth, hdCamera.actualHeight); + VirtualTexturing.System.Update(); +#endif // At this point, m_CameraColorBuffer has been filled by either debug views are regular rendering so we can push it here. PushColorPickerDebugTexture(cmd, hdCamera, m_CameraColorBuffer); @@ -3124,6 +3167,9 @@ void RenderGBuffer(CullingResults cull, HDCamera hdCamera, ScriptableRenderConte DrawOpaqueRendererList(renderContext, cmd, hdCamera.frameSettings, rendererList); m_GbufferManager.BindBufferAsTextures(cmd); +#if ENABLE_VIRTUALTEXTURES + cmd.ClearRandomWriteTargets(); +#endif } } @@ -3520,13 +3566,26 @@ void RenderForwardOpaque(CullingResults cullResults, HDCamera hdCamera, Scriptab { renderTarget = m_MRTWithSSS; renderTarget[0] = msaa ? m_CameraColorMSAABuffer : m_CameraColorBuffer; // Store the specular color - renderTarget[1] = msaa ? m_CameraSssDiffuseLightingMSAABuffer : m_CameraSssDiffuseLightingBuffer; - renderTarget[2] = msaa ? GetSSSBufferMSAA() : GetSSSBuffer(); + +#if ENABLE_VIRTUALTEXTURES + renderTarget[1] = GetVTFeedbackBufferForForward(hdCamera); + const int offset = 2; +#else + const int offset = 1; +#endif + renderTarget[offset+0] = msaa ? m_CameraSssDiffuseLightingMSAABuffer : m_CameraSssDiffuseLightingBuffer; + renderTarget[offset+1] = msaa ? GetSSSBufferMSAA() : GetSSSBuffer(); } else { +#if ENABLE_VIRTUALTEXTURES + renderTarget = m_MRTWithVTFeedback; + renderTarget[0] = msaa ? m_CameraColorMSAABuffer : m_CameraColorBuffer; + renderTarget[1] = GetVTFeedbackBufferForForward(hdCamera); +#else renderTarget = mMRTSingle; renderTarget[0] = msaa ? m_CameraColorMSAABuffer : m_CameraColorBuffer; +#endif } RenderForwardRendererList(hdCamera.frameSettings, @@ -3535,6 +3594,10 @@ void RenderForwardOpaque(CullingResults cullResults, HDCamera hdCamera, Scriptab m_SharedRTManager.GetDepthStencilBuffer(msaa), useFptl ? m_TileAndClusterData.lightList : m_TileAndClusterData.perVoxelLightLists, true, renderContext, cmd); + +#if ENABLE_VIRTUALTEXTURES + cmd.ClearRandomWriteTargets(); +#endif } } @@ -3599,7 +3662,14 @@ void RenderForwardTransparent(CullingResults cullResults, HDCamera hdCamera, boo cmd.SetGlobalInt(HDShaderIDs._ColorMaskTransparentVel, renderMotionVecForTransparent ? (int)ColorWriteMask.All : 0); m_MRTTransparentMotionVec[0] = msaa ? m_CameraColorMSAABuffer : m_CameraColorBuffer; - m_MRTTransparentMotionVec[1] = renderMotionVecForTransparent ? m_SharedRTManager.GetMotionVectorsBuffer(hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA)) + +#if ENABLE_VIRTUALTEXTURES + m_MRTTransparentMotionVec[1] = GetVTFeedbackBufferForForward(hdCamera); + const int offset = 2; +#else + const int offset = 1; +#endif + m_MRTTransparentMotionVec[offset] = renderMotionVecForTransparent ? m_SharedRTManager.GetMotionVectorsBuffer(hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA)) // It doesn't really matter what gets bound here since the color mask state set will prevent this from ever being written to. However, we still need to bind something // to avoid warnings about unbound render targets. The following rendertarget could really be anything if renderVelocitiesForTransparent, here the normal buffer // as it is guaranteed to exist and to have the same size. @@ -4477,6 +4547,24 @@ void ClearBuffers(HDCamera hdCamera, CommandBuffer cmd) } } +#if ENABLE_VIRTUALTEXTURES + using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.VTFeedbackClear))) + { + RTHandle alreadyCleared = null; + if (m_GbufferManager?.GetVTFeedbackBuffer() != null) + { + alreadyCleared = m_GbufferManager.GetVTFeedbackBuffer(); + CoreUtils.SetRenderTarget(cmd, alreadyCleared, ClearFlag.Color, Color.white); + } + + // If the forward buffer is different from the GBuffer clear it also + if (GetVTFeedbackBufferForForward(hdCamera) != alreadyCleared) + { + CoreUtils.SetRenderTarget(cmd, GetVTFeedbackBufferForForward(hdCamera), ClearFlag.Color, Color.white); + } + } +#endif + // We don't need to clear the GBuffers as scene is rewrite and we are suppose to only access valid data (invalid data are tagged with StencilUsage.Clear in the stencil), // This is to save some performance if (hdCamera.frameSettings.litShaderMode == LitShaderMode.Deferred) @@ -4719,5 +4807,20 @@ void SendColorGraphicsBuffer(CommandBuffer cmd, HDCamera hdCamera) VFXManager.SetCameraBuffer(hdCamera.camera, VFXCameraBufferTypes.Color, colorBuffer, 0, 0, hdCamera.actualWidth, hdCamera.actualHeight); } } + +#if ENABLE_VIRTUALTEXTURES + RTHandle GetVTFeedbackBufferForForward(HDCamera hdCamera) + { + var res = m_VtBufferManager.GetFeedbackBuffer(); + if (res != null) + { + return res; + } + else + { + return m_GbufferManager.GetVTFeedbackBuffer(); + } + } +#endif } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs index de83731a0eb..947879a4cb7 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs @@ -15,11 +15,12 @@ enum ShaderVariantLogLevel /// High Definition Render Pipeline asset. /// [HelpURL(Documentation.baseURL + Documentation.version + Documentation.subURL + "HDRP-Asset" + Documentation.endURL)] - public partial class HDRenderPipelineAsset : RenderPipelineAsset + public partial class HDRenderPipelineAsset : RenderPipelineAsset, IVirtualTexturingEnabledRenderPipeline { HDRenderPipelineAsset() { + } void Reset() => OnValidate(); @@ -251,6 +252,8 @@ public override Shader defaultShader internal List beforePostProcessCustomPostProcesses = new List(); [SerializeField] internal List afterPostProcessCustomPostProcesses = new List(); + [SerializeField] + public VirtualTexturingSettingsSRP virtualTexturingSettings = new VirtualTexturingSettingsSRP(); #if UNITY_EDITOR /// HDRP default material. @@ -361,5 +364,8 @@ internal bool AddDiffusionProfile(DiffusionProfileSettings profile) } } #endif + + // Implement IVirtualTexturingEnabledRenderPipeline + public bool virtualTexturingEnabled { get { return true; } } } } 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 cc02abb2680..fe6cf013eb3 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs @@ -598,6 +598,7 @@ static class HDShaderIDs public static readonly int _ExposureCurveTexture = Shader.PropertyToID("_ExposureCurveTexture"); public static readonly int _Variants = Shader.PropertyToID("_Variants"); public static readonly int _InputTexture = Shader.PropertyToID("_InputTexture"); + public static readonly int _InputTextureMSAA = Shader.PropertyToID("_InputTextureMSAA"); public static readonly int _OutputTexture = Shader.PropertyToID("_OutputTexture"); public static readonly int _SourceTexture = Shader.PropertyToID("_SourceTexture"); public static readonly int _InputHistoryTexture = Shader.PropertyToID("_InputHistoryTexture"); diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPipelineResources.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPipelineResources.cs index c6ed498e656..d7e08e342c8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPipelineResources.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPipelineResources.cs @@ -274,6 +274,10 @@ public sealed class ShaderResources [Reload("Runtime/PostProcessing/Shaders/ContrastAdaptiveSharpen.compute")] public ComputeShader contrastAdaptiveSharpenCS; +#if ENABLE_VIRTUALTEXTURES + [Reload("Runtime/VirtualTexturing/Shaders/DownsampleVTFeedback.compute")] + public ComputeShader VTFeedbackDownsample; +#endif // Accumulation [Reload("Runtime/RenderPipeline/Accumulation/Shaders/Accumulation.compute")] diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForward.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForward.hlsl index ad576d1c074..92648e0a2ba 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForward.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForward.hlsl @@ -60,20 +60,33 @@ PackedVaryingsToPS VertTesselation(VaryingsToDS input) #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/TessellationShare.hlsl" #endif -void Frag(PackedVaryingsToPS packedInput, -#ifdef OUTPUT_SPLIT_LIGHTING - out float4 outColor : SV_Target0, // outSpecularLighting - out float4 outDiffuseLighting : SV_Target1, - OUTPUT_SSSBUFFER(outSSSBuffer) +#ifdef UNITY_VIRTUAL_TEXTURING +#define VT_BUFFER_TARGET SV_Target1 +#define EXTRA_BUFFER_TARGET SV_Target2 #else - out float4 outColor : SV_Target0 -#ifdef _WRITE_TRANSPARENT_MOTION_VECTOR - , out float4 outMotionVec : SV_Target1 -#endif // _WRITE_TRANSPARENT_MOTION_VECTOR -#endif // OUTPUT_SPLIT_LIGHTING -#ifdef _DEPTHOFFSET_ON - , out float outputDepth : SV_Depth +#define EXTRA_BUFFER_TARGET SV_Target1 #endif + +void Frag(PackedVaryingsToPS packedInput, + #ifdef OUTPUT_SPLIT_LIGHTING + out float4 outColor : SV_Target0, // outSpecularLighting + #ifdef UNITY_VIRTUAL_TEXTURING + out float4 outVTFeedback : VT_BUFFER_TARGET, + #endif + out float4 outDiffuseLighting : EXTRA_BUFFER_TARGET, + OUTPUT_SSSBUFFER(outSSSBuffer) + #else + out float4 outColor : SV_Target0 + #ifdef UNITY_VIRTUAL_TEXTURING + ,out float4 outVTFeedback : VT_BUFFER_TARGET + #endif + #ifdef _WRITE_TRANSPARENT_MOTION_VECTOR + , out float4 outMotionVec : EXTRA_BUFFER_TARGET + #endif // _WRITE_TRANSPARENT_MOTION_VECTOR + #endif // OUTPUT_SPLIT_LIGHTING + #ifdef _DEPTHOFFSET_ON + , out float outputDepth : SV_Depth + #endif ) { #ifdef _WRITE_TRANSPARENT_MOTION_VECTOR @@ -231,4 +244,8 @@ void Frag(PackedVaryingsToPS packedInput, #ifdef _DEPTHOFFSET_ON outputDepth = posInput.deviceDepth; #endif + +#ifdef UNITY_VIRTUAL_TEXTURING + outVTFeedback = builtinData.vtPackedFeedback; +#endif } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForwardUnlit.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForwardUnlit.hlsl index 8ceb9ecfaa5..4ef55c8e9d2 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForwardUnlit.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForwardUnlit.hlsl @@ -24,7 +24,12 @@ PackedVaryingsToPS VertTesselation(VaryingsToDS input) #endif // TESSELLATION_ON -float4 Frag(PackedVaryingsToPS packedInput) : SV_Target +void Frag(PackedVaryingsToPS packedInput, + out float4 outResult : SV_Target0 +#ifdef UNITY_VIRTUAL_TEXTURING + ,out float4 outVTFeedback : SV_Target1 +#endif +) { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(packedInput); FragInputs input = UnpackVaryingsMeshToFragInputs(packedInput.vmesh); @@ -93,5 +98,9 @@ float4 Frag(PackedVaryingsToPS packedInput) : SV_Target #endif - return outColor; + outResult = outColor; + +#ifdef UNITY_VIRTUAL_TEXTURING + outVTFeedback = builtinData.vtPackedFeedback; +#endif } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassGBuffer.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassGBuffer.hlsl index b4684b92a6f..aacfad5bb7a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassGBuffer.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassGBuffer.hlsl @@ -53,4 +53,5 @@ void Frag( PackedVaryingsToPS packedInput, #ifdef _DEPTHOFFSET_ON outputDepth = posInput.deviceDepth; #endif + } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/VirtualTexturingSettingsSRP.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/VirtualTexturingSettingsSRP.cs new file mode 100644 index 00000000000..d643ac85aa0 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/VirtualTexturingSettingsSRP.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.Rendering; +using UnityEngine.Experimental.Rendering; +using UnityEngine.Rendering.VirtualTexturing; + +namespace UnityEngine.Rendering.HighDefinition +{ + [HelpURL(Documentation.baseURL + Documentation.version + Documentation.subURL + "VirtualTexturing - Settings" + Documentation.endURL)] + [Serializable] + public sealed class VirtualTexturingSettingsSRP + { + public int cpuCacheSizeInMegaBytes = 256; + public int gpuCacheSizeInMegaBytes = 64; + + // On the UI side we only expose the overrides used for streaming. + public List gpuCacheSizeOverridesStreaming = new List(); + +#if ENABLE_VIRTUALTEXTURES + // Returns settings as passed to the Virtual Texturing API. + public VirtualTexturing.VirtualTexturingSettings GetSettings() + { + VirtualTexturing.VirtualTexturingSettings settings = new VirtualTexturing.VirtualTexturingSettings(); + + settings.cpuCache.sizeInMegaBytes = (uint) cpuCacheSizeInMegaBytes; + + List overrides = new List(); + + foreach (VirtualTexturingGPUCacheSizeOverrideSRP setting in gpuCacheSizeOverridesStreaming) + { + overrides.Add(setting.GetNative()); + } + + settings.gpuCache.sizeOverrides = overrides.ToArray(); + + settings.gpuCache.sizeInMegaBytes = (uint) gpuCacheSizeInMegaBytes; + + return settings; + } + + public static UnityEngine.Rendering.VirtualTexturing.VirtualTexturingSettings Default + { + get + { + UnityEngine.Rendering.VirtualTexturing.VirtualTexturingSettings settings = new UnityEngine.Rendering.VirtualTexturing.VirtualTexturingSettings(); + settings.cpuCache.sizeInMegaBytes = 64; + settings.gpuCache.sizeInMegaBytes = 256; + return settings; + } + } +#endif + } + + + // HDRP side version of VirtualTexturingGPUCacheSizeOverride that is always available to be serialized even if VT is disabled. + [Serializable] + public struct VirtualTexturingGPUCacheSizeOverrideSRP + { + public VirtualTexturingCacheUsageSRP usage; + public GraphicsFormat format; + public uint sizeInMegaBytes; + +#if ENABLE_VIRTUALTEXTURES + public VirtualTexturingGPUCacheSizeOverride GetNative() + { + return new VirtualTexturingGPUCacheSizeOverride(){format = format, sizeInMegaBytes = sizeInMegaBytes, usage = (VirtualTexturingCacheUsage)(int)usage}; + } +#endif + } + + [Serializable] + public enum VirtualTexturingCacheUsageSRP + { + Any, + Streaming, + Procedural, + } +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/VirtualTexturingSettingsSRP.cs.meta b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/VirtualTexturingSettingsSRP.cs.meta new file mode 100644 index 00000000000..392dfcfb8b0 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/VirtualTexturingSettingsSRP.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0f8c6d5fdfd2044f8b9c09a8fc27ebc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing.meta b/com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing.meta new file mode 100644 index 00000000000..b045541faa8 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 81f992beea544eb4f83796d5f75cd799 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing/Shaders/DownsampleVTFeedback.compute b/com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing/Shaders/DownsampleVTFeedback.compute new file mode 100644 index 00000000000..934f6f76e48 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing/Shaders/DownsampleVTFeedback.compute @@ -0,0 +1,71 @@ +// Each #kernel tells which function to compile; you can have many kernels +#pragma kernel KMain +#pragma kernel KMainMSAA + +#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/Builtin/BuiltinData.hlsl" + +RW_TEXTURE2D(float4, _OutputTexture); +TEXTURE2D_X(_InputTexture); +TEXTURE2D_X_MSAA(float4, _InputTextureMSAA); + +CBUFFER_START(cb0) + float4 _Params; + float4 _Params1; +CBUFFER_END + +#define Scale _Params.x +#define startOffsetX _Params.y +#define startOffsetY _Params.z +#define srcWidth _Params1.x +#define srcHeight _Params1.y +#define dstWidth _Params1.z +#define dstHeight _Params1.w + + +static const uint TGSize = 8; + +[numthreads(TGSize, TGSize, 1)] +void KMain(uint3 dispatchThreadId : SV_DispatchThreadID) +{ + const uint2 samplePos = dispatchThreadId.xy; + const uint2 startOffset = uint2(startOffsetX, startOffsetY); + const uint2 offset = (startOffset + samplePos) % Scale;// startOffset jitters the offset per frame, mixing in samplePos jitters within the macroblocks in a frame + + // At the edges we have a few threads due to round-up which are immediately terminated + if (samplePos.x >= (uint)dstWidth || samplePos.y >= (uint)dstHeight) + { + return; + } + + // Clamp to source rect + uint2 srcPos = samplePos * Scale + offset; + srcPos.x = min(srcPos.x, (uint)srcWidth - 1); + srcPos.y = min(srcPos.y, (uint)srcHeight - 1); + + float4 value = LOAD_TEXTURE2D_X(_InputTexture, srcPos); + _OutputTexture[samplePos] = value; +} + +[numthreads(TGSize, TGSize, 1)] +void KMainMSAA(uint3 dispatchThreadId : SV_DispatchThreadID) +{ + const uint2 samplePos = dispatchThreadId.xy; + const uint2 startOffset = uint2(startOffsetX, startOffsetY); + const uint2 offset = (startOffset + samplePos) % Scale; + + // At the edges we have a few threads due to round-up which are immediately terminated + if (samplePos.x >= (uint)dstWidth || samplePos.y >= (uint)dstHeight) + { + return; + } + + // Clamp to source rect + uint2 srcPos = samplePos * Scale + offset; + srcPos.x = min(srcPos.x, (uint)srcWidth - 1); + srcPos.y = min(srcPos.y, (uint)srcHeight - 1); + + float4 value = LOAD_TEXTURE2D_X_MSAA(_InputTextureMSAA, srcPos, 0); + _OutputTexture[samplePos] = value; +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing/Shaders/DownsampleVTFeedback.compute.meta b/com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing/Shaders/DownsampleVTFeedback.compute.meta new file mode 100644 index 00000000000..e18ec83f2ff --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/VirtualTexturing/Shaders/DownsampleVTFeedback.compute.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32d963548086c2c439aeb23a93e9a00a +ComputeShaderImporter: + externalObjects: {} + currentAPIMask: 4 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/MasterNodes/SpriteLitMasterNode.cs b/com.unity.render-pipelines.universal/Editor/ShaderGraph/MasterNodes/SpriteLitMasterNode.cs index 721c6db5858..b8feb6a6557 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/MasterNodes/SpriteLitMasterNode.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/MasterNodes/SpriteLitMasterNode.cs @@ -153,5 +153,13 @@ public NeededCoordinateSpace RequiresTangent(ShaderStageCapability stageCapabili } return validSlots.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresTangent(stageCapability)); } + + public bool virtualTexturingEnabled + { + get + { + return false; + } + } } } diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/MasterNodes/SpriteUnlitMasterNode.cs b/com.unity.render-pipelines.universal/Editor/ShaderGraph/MasterNodes/SpriteUnlitMasterNode.cs index 6e0a0f02931..e610f2c1c39 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/MasterNodes/SpriteUnlitMasterNode.cs +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/MasterNodes/SpriteUnlitMasterNode.cs @@ -145,5 +145,13 @@ public NeededCoordinateSpace RequiresTangent(ShaderStageCapability stageCapabili } return validSlots.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresTangent(stageCapability)); } + + public bool virtualTexturingEnabled + { + get + { + return false; + } + } } } diff --git a/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl b/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl index 6a9d7fedd0a..2a784bb1b2a 100644 --- a/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl +++ b/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl @@ -1,6 +1,10 @@ #ifndef UNIVERSAL_PIPELINE_CORE_INCLUDED #define UNIVERSAL_PIPELINE_CORE_INCLUDED +// VT is not supported in URP (for now) this ensures any shaders using the VT +// node work by falling to regular texture sampling. +#define FORCE_VIRTUAL_TEXTURING_OFF 1 + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Packing.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Version.hlsl" diff --git a/com.unity.shadergraph/CHANGELOG.md b/com.unity.shadergraph/CHANGELOG.md index 992c8ce3c3a..c2ce5bd18c6 100644 --- a/com.unity.shadergraph/CHANGELOG.md +++ b/com.unity.shadergraph/CHANGELOG.md @@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] ### Added +- Added new graph nodes that allow sampling Virtual Textures - Added samples for Procedural Patterns to the package. - You can now use the right-click context menu to delete Sticky Notes. - You can now save your graph as a new Asset. diff --git a/com.unity.shadergraph/Editor/Data/Graphs/AbstractShaderProperty.cs b/com.unity.shadergraph/Editor/Data/Graphs/AbstractShaderProperty.cs index d8e4f026bf9..e2ed4488b5a 100644 --- a/com.unity.shadergraph/Editor/Data/Graphs/AbstractShaderProperty.cs +++ b/com.unity.shadergraph/Editor/Data/Graphs/AbstractShaderProperty.cs @@ -37,8 +37,13 @@ internal void ValidateConcretePrecision(ConcretePrecision graphPrecision) m_ConcretePrecision = (precision == Precision.Inherit) ? graphPrecision : precision.ToConcrete(); } + // the simple interface for simple properties internal abstract bool isBatchable { get; } + // the more complex interface for complex properties (defaulted for simple properties) + internal virtual bool hasBatchableProperties { get { return isBatchable; } } + internal virtual bool hasNonBatchableProperties { get { return !isBatchable; } } + [SerializeField] bool m_Hidden = false; @@ -55,12 +60,27 @@ internal virtual string GetPropertyBlockString() return string.Empty; } + // the simple interface for simple properties internal virtual string GetPropertyDeclarationString(string delimiter = ";") { SlotValueType type = ConcreteSlotValueType.Vector4.ToSlotValueType(); return $"{concreteShaderValueType.ToShaderString(concretePrecision.ToShaderString())} {referenceName}{delimiter}"; } + // the more complex interface for complex properties (defaulted for simple properties) + internal virtual void AppendBatchablePropertyDeclarations(ShaderStringBuilder builder, string delimiter = ";") + { + if (isBatchable) + builder.AppendLine(GetPropertyDeclarationString(delimiter)); + } + + // the more complex interface for complex properties (defaulted for simple properties) + internal virtual void AppendNonBatchablePropertyDeclarations(ShaderStringBuilder builder, string delimiter = ";") + { + if (!isBatchable) + builder.AppendLine(GetPropertyDeclarationString(delimiter)); + } + internal virtual string GetPropertyAsArgumentString() { return GetPropertyDeclarationString(string.Empty); diff --git a/com.unity.shadergraph/Editor/Data/Graphs/GraphValidation.cs b/com.unity.shadergraph/Editor/Data/Graphs/GraphValidation.cs index 42bc474bb24..b444569dc7c 100644 --- a/com.unity.shadergraph/Editor/Data/Graphs/GraphValidation.cs +++ b/com.unity.shadergraph/Editor/Data/Graphs/GraphValidation.cs @@ -14,6 +14,7 @@ public static void ValidateNode(AbstractMaterialNode node) public static void ValidateGraph(GraphData graph) { GraphDataUtils.ApplyActionLeafFirst(graph, ValidateNode); + SampleTextureStackNode.ValidateTextureStacks(graph); } } } diff --git a/com.unity.shadergraph/Editor/Data/Graphs/SerializableVirtualTexture.cs b/com.unity.shadergraph/Editor/Data/Graphs/SerializableVirtualTexture.cs new file mode 100644 index 00000000000..fcd08fc143c --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Graphs/SerializableVirtualTexture.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.ShaderGraph.Internal +{ + [Serializable] + public sealed class SerializableVirtualTexture : ISerializationCallbackReceiver + { + [SerializeField] + public List layerNames = new List(); + + [SerializeField] + public List layerTextures = new List(); + + [SerializeField] + public bool procedural; + + public void OnBeforeSerialize() + { + } + + public void OnAfterDeserialize() + { + } + } +} + diff --git a/com.unity.shadergraph/Editor/Data/Graphs/SerializableVirtualTexture.cs.meta b/com.unity.shadergraph/Editor/Data/Graphs/SerializableVirtualTexture.cs.meta new file mode 100644 index 00000000000..67d39cff202 --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Graphs/SerializableVirtualTexture.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46a51e4c13978a8458c259f50331fc7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Data/Graphs/ShaderGraphRequirements.cs b/com.unity.shadergraph/Editor/Data/Graphs/ShaderGraphRequirements.cs index b52cf907233..d329648d784 100644 --- a/com.unity.shadergraph/Editor/Data/Graphs/ShaderGraphRequirements.cs +++ b/com.unity.shadergraph/Editor/Data/Graphs/ShaderGraphRequirements.cs @@ -21,6 +21,7 @@ public struct ShaderGraphRequirements [SerializeField] bool m_RequiresCameraOpaqueTexture; [SerializeField] bool m_RequiresTime; [SerializeField] bool m_RequiresVertexSkinning; + [SerializeField] bool m_RequiresPixelCoordinate; internal static ShaderGraphRequirements none { @@ -111,6 +112,12 @@ public bool requiresVertexSkinning internal set { m_RequiresVertexSkinning = value; } } + public bool requiresPixelCoordinate + { + get { return m_RequiresPixelCoordinate; } + internal set { m_RequiresPixelCoordinate = value; } + } + internal bool NeedsTangentSpace() { var compoundSpaces = m_RequiresBitangent | m_RequiresNormal | m_RequiresPosition @@ -135,6 +142,7 @@ internal ShaderGraphRequirements Union(ShaderGraphRequirements other) newReqs.m_RequiresCameraOpaqueTexture = other.m_RequiresCameraOpaqueTexture | m_RequiresCameraOpaqueTexture; newReqs.m_RequiresTime = other.m_RequiresTime | m_RequiresTime; newReqs.m_RequiresVertexSkinning = other.m_RequiresVertexSkinning | m_RequiresVertexSkinning; + newReqs.m_RequiresPixelCoordinate = other.m_RequiresPixelCoordinate | m_RequiresPixelCoordinate; newReqs.m_RequiresMeshUVs = new List(); @@ -145,7 +153,7 @@ internal ShaderGraphRequirements Union(ShaderGraphRequirements other) return newReqs; } - internal static ShaderGraphRequirements FromNodes(List nodes, ShaderStageCapability stageCapability = ShaderStageCapability.All, bool includeIntermediateSpaces = true) + internal static ShaderGraphRequirements FromNodes(List nodes, ShaderStageCapability stageCapability = ShaderStageCapability.All, bool includeIntermediateSpaces = true, bool vtFeedbackRequiresScreenposition = false) where T : AbstractMaterialNode { NeededCoordinateSpace requiresNormal = nodes.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresNormal(stageCapability)); @@ -153,13 +161,14 @@ internal static ShaderGraphRequirements FromNodes(List nodes, ShaderStageC NeededCoordinateSpace requiresTangent = nodes.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresTangent(stageCapability)); NeededCoordinateSpace requiresViewDir = nodes.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresViewDirection(stageCapability)); NeededCoordinateSpace requiresPosition = nodes.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresPosition(stageCapability)); - bool requiresScreenPosition = nodes.OfType().Any(x => x.RequiresScreenPosition()); + bool requiresScreenPosition = nodes.OfType().Any(x => x.RequiresScreenPosition()) || vtFeedbackRequiresScreenposition; bool requiresVertexColor = nodes.OfType().Any(x => x.RequiresVertexColor()); bool requiresFaceSign = nodes.OfType().Any(x => x.RequiresFaceSign()); bool requiresDepthTexture = nodes.OfType().Any(x => x.RequiresDepthTexture()); bool requiresCameraOpaqueTexture = nodes.OfType().Any(x => x.RequiresCameraOpaqueTexture()); bool requiresTime = nodes.Any(x => x.RequiresTime()); bool requiresVertexSkinning = nodes.OfType().Any(x => x.RequiresVertexSkinning(stageCapability)); + bool requiresPixelCoordinate = nodes.OfType().Any(x => x.RequiresPixelCoordinate()); var meshUV = new List(); for (int uvIndex = 0; uvIndex < ShaderGeneratorNames.UVCount; ++uvIndex) @@ -200,10 +209,11 @@ internal static ShaderGraphRequirements FromNodes(List nodes, ShaderStageC m_RequiresDepthTexture = requiresDepthTexture, m_RequiresCameraOpaqueTexture = requiresCameraOpaqueTexture, m_RequiresTime = requiresTime, - m_RequiresVertexSkinning = requiresVertexSkinning + m_RequiresVertexSkinning = requiresVertexSkinning, + m_RequiresPixelCoordinate = requiresPixelCoordinate }; return reqs; } } -} \ No newline at end of file +} diff --git a/com.unity.shadergraph/Editor/Data/Graphs/StackShaderProperty.cs b/com.unity.shadergraph/Editor/Data/Graphs/StackShaderProperty.cs new file mode 100644 index 00000000000..275cb129c2e --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Graphs/StackShaderProperty.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEditor.Graphing; +using UnityEditor.ShaderGraph.Internal; +using UnityEngine; + +namespace UnityEditor.ShaderGraph +{ + [Serializable] + // Node a StackShaderProperty has no user settable values it is only used to ensure correct data is emitted into the shader. So we use a dummy value of "int" type. + class StackShaderProperty : AbstractShaderProperty + { + public StackShaderProperty() + { + displayName = "Stack"; + slotNames = new List(); + slotNames.Add("Dummy"); + generatePropertyBlock = true; + } + + public override PropertyType propertyType + { + get { return PropertyType.Vector1; } + } + + internal override bool isBatchable + { + get { return referenceName.EndsWith("_cb"); } + } + + internal override bool isRenamable + { + get { return false; } + } + + internal override bool isExposable + { + get { return false; } + } + + public List slotNames; + + private string GetSlotNamesString(string delimiter=",") + { + var result = new StringBuilder(); + + for (int i = 0; i < slotNames.Count; i++) + { + if (i != 0) result.Append(delimiter); + result.Append(slotNames[i]); + } + + return result.ToString(); + } + + internal override string GetPropertyBlockString() + { + return ""; + } + + internal override string GetPropertyDeclarationString(string delimiter = ";") + { + // This just emits a define which declares several property variables. We split here over things that fit in a constant buffer + // (i.e. float arrays) and thing that don't (texture samplers). + int numSlots = slotNames.Count; + + if (referenceName.EndsWith("_cb")) + { + return string.Format("DECLARE_STACK_CB({0}){1}", referenceName.Substring(0, referenceName.Length - 3), delimiter); + } + else + { + return string.Format("DECLARE_STACK{0}({1}, {2}){3}", (numSlots <= 1) ? "" : "" + numSlots, referenceName, GetSlotNamesString(), delimiter); + } + } + + internal override string GetPropertyAsArgumentString() + { + throw new NotImplementedException(); + } + + internal override PreviewProperty GetPreviewMaterialProperty() + { + return new PreviewProperty(PropertyType.Vector1) + { + name = referenceName, + floatValue = 1.0f + }; + } + + internal override AbstractMaterialNode ToConcreteNode() + { + return null; + } + + internal override ShaderInput Copy() + { + var copied = new StackShaderProperty(); + copied.displayName = displayName; + copied.value = value; + return copied; + } + } +} diff --git a/com.unity.shadergraph/Editor/Data/Graphs/StackShaderProperty.cs.meta b/com.unity.shadergraph/Editor/Data/Graphs/StackShaderProperty.cs.meta new file mode 100644 index 00000000000..db3779cfec0 --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Graphs/StackShaderProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43c012a66d59ea54e85e56f52e873bc9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Data/Graphs/Texture2DShaderProperty.cs b/com.unity.shadergraph/Editor/Data/Graphs/Texture2DShaderProperty.cs index 621a5c2c8a9..0abe2b2c61c 100644 --- a/com.unity.shadergraph/Editor/Data/Graphs/Texture2DShaderProperty.cs +++ b/com.unity.shadergraph/Editor/Data/Graphs/Texture2DShaderProperty.cs @@ -24,10 +24,11 @@ internal Texture2DShaderProperty() internal override bool isRenamable => true; internal string modifiableTagString => modifiable ? "" : "[NonModifiableTextureData]"; + internal string textureStackTagString => string.IsNullOrEmpty(textureStack) ? "" : "[TextureStack." + textureStack + "]"; internal override string GetPropertyBlockString() { - return $"{hideTagString}{modifiableTagString}[NoScaleOffset]{referenceName}(\"{displayName}\", 2D) = \"{defaultType.ToString().ToLower()}\" {{}}"; + return $"{hideTagString}{modifiableTagString}{textureStackTagString}[NoScaleOffset]{referenceName}(\"{displayName}\", 2D) = \"{defaultType.ToString().ToLower()}\" {{}}"; } internal override string GetPropertyDeclarationString(string delimiter = ";") @@ -58,6 +59,15 @@ public DefaultType defaultType set { m_DefaultType = value; } } + [SerializeField] + string m_TextureStack; + + public string textureStack + { + get { return m_TextureStack; } + set { m_TextureStack = value; } + } + internal override AbstractMaterialNode ToConcreteNode() { return new Texture2DAssetNode { texture = value.texture }; diff --git a/com.unity.shadergraph/Editor/Data/Graphs/VirtualTextureShaderProperty.cs b/com.unity.shadergraph/Editor/Data/Graphs/VirtualTextureShaderProperty.cs new file mode 100644 index 00000000000..88df4e907b3 --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Graphs/VirtualTextureShaderProperty.cs @@ -0,0 +1,123 @@ +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using UnityEditor.ShaderGraph.Drawing.Controls; +using UnityEngine; +using UnityEditor.Graphing; +using UnityEditor.ShaderGraph.Internal; + +namespace UnityEditor.ShaderGraph +{ + [Serializable] + class VirtualTextureShaderProperty : AbstractShaderProperty + { + public VirtualTextureShaderProperty() + { + displayName = "VirtualTexture"; + value = new SerializableVirtualTexture(); + + // add at least one layer + value.layerNames.Add("Layer0"); + value.layerTextures.Add(new SerializableTexture()); + } + + public override PropertyType propertyType => PropertyType.VirtualTexture; + + // isBatchable should never be called of we override hasBatchable / hasNonBatchableProperties + internal override bool isBatchable + { + get { throw new NotImplementedException(); } + } + + internal override bool hasBatchableProperties => true; + internal override bool hasNonBatchableProperties => true; + + internal override bool isExposable => true; // the textures are exposable at least.. + internal override bool isRenamable => true; + + // this is used for properties exposed to the Material in the shaderlab Properties{} block + internal override string GetPropertyBlockString() + { + // something along the lines of: + // [TextureStack.MyStack(0)] [NoScaleOffset] Layer0("Layer0", 2D) = "white" {} + string result = ""; + for (int layer= 0; layer < value.layerNames.Count; layer++) + { + string layerName = value.layerNames[layer]; + result += $"[TextureStack.{referenceName}({layer})] [NoScaleOffset] {layerName}(\"{layerName}\", 2D) = \"white\" {{}}{Environment.NewLine}"; + } + return result; + } + + internal override void AppendBatchablePropertyDeclarations(ShaderStringBuilder builder, string delimiter = ";") + { + int numLayers = value.layerNames.Count; + if (numLayers > 0) + { + builder.Append("DECLARE_STACK_CB("); + builder.Append(referenceName); + builder.Append(")"); + builder.AppendLine(delimiter); + } + } + + internal override void AppendNonBatchablePropertyDeclarations(ShaderStringBuilder builder, string delimiter = ";") + { + int numLayers = value.layerNames.Count; + if (numLayers > 0) + { + builder.Append("DECLARE_STACK"); + builder.Append((numLayers <= 1) ? "" : numLayers.ToString()); + builder.Append("("); + builder.Append(referenceName); + builder.Append(","); + for (int i = 0; i < value.layerNames.Count; i++) + { + if (i != 0) builder.Append(","); + builder.Append(value.layerNames[i]); + } + builder.Append(")"); + builder.AppendLine(delimiter); // TODO: don't like delimiter, pretty sure it's not necessary if we invert the defaults on GEtPropertyDeclaration / GetPropertyArgument string + } + } + + internal override string GetPropertyDeclarationString(string delimiter = ";") + { + throw new NotImplementedException(); + } + + // argument string used to pass this property to a subgraph + internal override string GetPropertyAsArgumentString() + { + // throw new NotImplementedException(); + return "VirtualTexturePropertyArgumentStringGoesHere " + referenceName; + } + + // if a blackboard property is deleted, all node instances of it are replaced with this: + internal override AbstractMaterialNode ToConcreteNode() + { + // TODO: + return null; // new GradientNode { }; + } + + internal override PreviewProperty GetPreviewMaterialProperty() + { + return new PreviewProperty(propertyType) + { + name = referenceName + }; + } + + internal override ShaderInput Copy() + { + return new VirtualTextureShaderProperty + { + displayName = displayName, + hidden = hidden, + value = value, + precision = precision + }; + } + } +} diff --git a/com.unity.shadergraph/Editor/Data/Graphs/VirtualTextureShaderProperty.cs.meta b/com.unity.shadergraph/Editor/Data/Graphs/VirtualTextureShaderProperty.cs.meta new file mode 100644 index 00000000000..8887967a2a9 --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Graphs/VirtualTextureShaderProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca7d3a56d2cd0c840b76155c0a92eaca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesFunction.cs.meta b/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesFunction.cs.meta index c2800954837..77333ef0f67 100644 --- a/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesFunction.cs.meta +++ b/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesFunction.cs.meta @@ -1,8 +1,11 @@ fileFormatVersion: 2 guid: cd53f18c76af5ab40bad30c1af8e06a0 MonoImporter: + externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesInclude.cs b/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesInclude.cs new file mode 100644 index 00000000000..0c3d2ca9473 --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesInclude.cs @@ -0,0 +1,7 @@ +namespace UnityEditor.ShaderGraph +{ + interface IGeneratesInclude + { + void GenerateNodeInclude(IncludeCollection registry, GenerationMode generationMode); + } +} diff --git a/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesInclude.cs.meta b/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesInclude.cs.meta new file mode 100644 index 00000000000..4f5151a70da --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Interfaces/IGeneratesInclude.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fbd98c96da729b24ea19fdfd3ba3196a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireRequirePixelCoordinate.cs b/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireRequirePixelCoordinate.cs new file mode 100644 index 00000000000..fa15f7b9fa2 --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireRequirePixelCoordinate.cs @@ -0,0 +1,25 @@ +using UnityEditor.Graphing; + +namespace UnityEditor.ShaderGraph +{ + // Checks if the fragment shader needs access to the screen pixel coordinate built-in shader value + // AKA: SV_POSITION, VPOS, gl_FragCoord, ... + interface IMayRequireRequirePixelCoordinate + { + bool RequiresPixelCoordinate(ShaderStageCapability stageCapability = ShaderStageCapability.Fragment); + } + + static class MayRequirePixelCoordinateExtensions + { + public static bool RequiresPixelCoordinate(this AbstractMaterialNode node) + { + return node is IMayRequireRequirePixelCoordinate mayRequirePixelCoordinate && mayRequirePixelCoordinate.RequiresPixelCoordinate(); + } + + public static bool RequiresPixelCoordinate(this ISlot slot) + { + var mayRequirePixelCoordinate = slot as IMayRequireRequirePixelCoordinate; + return mayRequirePixelCoordinate != null && mayRequirePixelCoordinate.RequiresPixelCoordinate(); + } + } +} diff --git a/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireRequirePixelCoordinate.cs.meta b/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireRequirePixelCoordinate.cs.meta new file mode 100644 index 00000000000..cd1b7e49372 --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireRequirePixelCoordinate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2edd3878e3fa16241bf36a8d2c375f11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Data/MasterNodes/PBRMasterNode.cs b/com.unity.shadergraph/Editor/Data/MasterNodes/PBRMasterNode.cs index 7616842492e..d024bf26e47 100644 --- a/com.unity.shadergraph/Editor/Data/MasterNodes/PBRMasterNode.cs +++ b/com.unity.shadergraph/Editor/Data/MasterNodes/PBRMasterNode.cs @@ -339,5 +339,15 @@ public NeededCoordinateSpace RequiresTangent(ShaderStageCapability stageCapabili } return validSlots.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresTangent(stageCapability)); } + + public bool virtualTexturingEnabled + { + get + { + // This means if a render pipeline clams to support vt it at least needs to support the PBRMasterNode with VT + var vtRp = UnityEngine.Rendering.GraphicsSettings.currentRenderPipeline as UnityEngine.Rendering.IVirtualTexturingEnabledRenderPipeline; + return (vtRp != null) && vtRp.virtualTexturingEnabled; + } + } } } diff --git a/com.unity.shadergraph/Editor/Data/MasterNodes/UnlitMasterNode.cs b/com.unity.shadergraph/Editor/Data/MasterNodes/UnlitMasterNode.cs index 4ce5d080ffb..52598121202 100644 --- a/com.unity.shadergraph/Editor/Data/MasterNodes/UnlitMasterNode.cs +++ b/com.unity.shadergraph/Editor/Data/MasterNodes/UnlitMasterNode.cs @@ -262,5 +262,14 @@ public NeededCoordinateSpace RequiresTangent(ShaderStageCapability stageCapabili } return validSlots.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresTangent(stageCapability)); } + + public bool virtualTexturingEnabled + { + get { + // This means if a render pipeline clams to support vt it at least needs to support the PBRMasterNode with VT + var vtRp = UnityEngine.Rendering.GraphicsSettings.currentRenderPipeline as UnityEngine.Rendering.IVirtualTexturingEnabledRenderPipeline; + return (vtRp != null) && vtRp.virtualTexturingEnabled; + } + } } } diff --git a/com.unity.shadergraph/Editor/Data/MasterNodes/VfxMasterNode.cs b/com.unity.shadergraph/Editor/Data/MasterNodes/VfxMasterNode.cs index 2e7b9ac714d..7ecf09112be 100644 --- a/com.unity.shadergraph/Editor/Data/MasterNodes/VfxMasterNode.cs +++ b/com.unity.shadergraph/Editor/Data/MasterNodes/VfxMasterNode.cs @@ -177,5 +177,13 @@ public NeededCoordinateSpace RequiresPosition(ShaderStageCapability stageCapabil } return validSlots.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresPosition(stageCapability)); } + + public bool virtualTexturingEnabled + { + get + { + return false; + } + } } } diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Input/PropertyNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Input/PropertyNode.cs index 8712d974b12..c0f062ebfa9 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/Input/PropertyNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/Input/PropertyNode.cs @@ -111,6 +111,13 @@ void AddOutputSlot(AbstractShaderProperty property) AddSlot(new GradientMaterialSlot(OutputSlotId, property.displayName, "Out", SlotType.Output)); RemoveSlotsNameNotMatching(new[] { OutputSlotId }); break; + case ConcreteSlotValueType.VirtualTexture: + // TODO: implement VT slot type + AddSlot(new Texture2DMaterialSlot(OutputSlotId, property.displayName, "Out", SlotType.Output)); + RemoveSlotsNameNotMatching(new[] { OutputSlotId }); + // AddSlot(new VirtualTextureSlot(OutputSlotId, property.displayName, "Out", SlotType.Output)); + // RemoveSlotsNameNotMatching(new[] { OutputSlotId }); + break; default: throw new ArgumentOutOfRangeException(); } diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs new file mode 100644 index 00000000000..3e22f19b592 --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs @@ -0,0 +1,1103 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor.Graphing; +using UnityEditor.Graphing.Util; +using UnityEditor.Rendering; +using UnityEditor.ShaderGraph.Drawing; +using UnityEditor.ShaderGraph.Internal; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.UIElements; + +namespace UnityEditor.ShaderGraph +{ + [Title("Input", "Texture", SampleTextureStackNode.DefaultNodeTitle)] + [FormerName("UnityEditor.ShaderGraph.SampleTextureStackNodeBase")] + [FormerName("UnityEditor.ShaderGraph.SampleTextureStackNode2")] + [FormerName("UnityEditor.ShaderGraph.SampleTextureStackNode3")] + [FormerName("UnityEditor.ShaderGraph.SampleTextureStackNode4")] + class SampleTextureStackNode : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireMeshUV, IHasSettings, IGeneratesInclude, IMayRequireTime + { + public const string DefaultNodeTitle = "Sample VT Stack"; + + public const int UVInputId = 0; + [NonSerialized] + public readonly int[] OutputSlotIds = new int[] { 1, 2, 3, 4 }; + [NonSerialized] + public readonly int[] TextureInputIds = new int[] { 5, 6, 7, 8 }; + public const int FeedbackSlotId = 9; + public const int LODInputId = 10; + public const int BiasInputId = 11; + public const int DxInputId = 12; + public const int DyInputId = 13; + + static string[] OutputSlotNames = { "Out", "Out2", "Out3", "Out4" }; + static string[] TextureInputNames = { "Texture", "Texture2", "Texture3", "Texture4" }; + const string UVInputNAme = "UV"; + const string FeedbackSlotName = "Feedback"; + const string LODSlotName = "Lod"; + const string BiasSlotName = "Bias"; + const string DxSlotName = "Dx"; + const string DySlotName = "Dy"; + + public override bool hasPreview { get { return false; } } + bool isProcedural;// set internally only + + // Keep these in sync with "VirtualTexturing.hlsl" + public enum LodCalculation + { + [InspectorName("Automatic")] + VtLevel_Automatic = 0, + [InspectorName("Lod Level")] + VtLevel_Lod = 1, + [InspectorName("Lod Bias")] + VtLevel_Bias = 2, + [InspectorName("Derivatives")] + VtLevel_Derivatives = 3 + } + + public enum AddresMode + { + [InspectorName("Wrap")] + VtAddressMode_Wrap = 0, + [InspectorName("Clamp")] + VtAddressMode_Clamp = 1, + [InspectorName("Udim")] + VtAddressMode_Udim = 2 + } + + public enum FilterMode + { + [InspectorName("Anisotropic")] + VtFilter_Anisotropic = 0 + } + + public enum UvSpace + { + [InspectorName("Regular")] + VtUvSpace_Regular = 0, + [InspectorName("Pre Transformed")] + VtUvSpace_PreTransformed = 1 + } + + public enum QualityMode + { + [InspectorName("Low")] + VtSampleQuality_Low = 0, + [InspectorName("High")] + VtSampleQuality_High = 1 + } + + [SerializeField] + LodCalculation m_LodCalculation = LodCalculation.VtLevel_Automatic; + public LodCalculation lodCalculation + { + get + { + return m_LodCalculation; + } + set + { + if (m_LodCalculation == value) + return; + + m_LodCalculation = value; + UpdateNodeAfterDeserialization(); + Dirty(ModificationScope.Topological); + } + } + + [SerializeField] + QualityMode m_SampleQuality = QualityMode.VtSampleQuality_High; + public QualityMode sampleQuality + { + get + { + return m_SampleQuality; + } + set + { + if (m_SampleQuality == value) + return; + + m_SampleQuality = value; + Dirty(ModificationScope.Node); + } + } + + [SerializeField] + int m_NumSlots = 1; + + public int numSlots + { + get + { + return m_NumSlots; + } + set + { + int cappedSlots = value; + if (cappedSlots > 4) cappedSlots = 4; + + if (m_NumSlots == cappedSlots) + return; + + m_NumSlots = cappedSlots; + UpdateNodeAfterDeserialization(); + Dirty(ModificationScope.Topological); + } + } + + [SerializeField] + bool m_NoFeedback; + + public bool noFeedback + { + get + { + return m_NoFeedback; + } + set + { + if (m_NoFeedback == value) + return; + + // No resolve affects the availability in the vertex shader of the node so we need to trigger a full + // topo change. + m_NoFeedback = value; + UpdateNodeAfterDeserialization(); + Dirty(ModificationScope.Topological); + } + } + + [SerializeField] + string m_StackName = ""; + + public string stackName + { + get + { + return m_StackName; + } + set + { + if (m_StackName == value) + return; + + m_StackName = value; + UpdateNodeAfterDeserialization(); + Dirty(ModificationScope.Topological); + } + } + + [SerializeField] + protected TextureType[] m_TextureTypes = { TextureType.Default, TextureType.Default, TextureType.Default, TextureType.Default }; + + // We have one normal/object space field for all layers for now, probably a nice compromise + // between lots of settings and user flexibility? + [SerializeField] + private NormalMapSpace m_NormalMapSpace = NormalMapSpace.Tangent; + + public NormalMapSpace normalMapSpace + { + get { return m_NormalMapSpace; } + set + { + if (m_NormalMapSpace == value) + return; + + m_NormalMapSpace = value; + Dirty(ModificationScope.Graph); + } + } + + protected string CleanupStackName(string name) + { + // Procedural stacks allow sharing the same name. This means they will sample the same data as well. + // This also allows sampling the same stack both from VS and PS. + + if (isProcedural) return name; + + // Make sure there is no other node with the same name + // if there is patch the current name by adding "_" so it's unique + var stacks = owner.GetNodes(); + int tries = stacks.Count(); + + for (int i = 0; i < tries; i++) + { + bool conflict = false; + foreach (var node in stacks) + { + if (node == this) continue; + // Check if the names as emitted in the shader will clash + if (node.GetStackName() == this.ProcessStackName(name) ) + { + conflict = true; + break; + } + } + if (!conflict) + { + return name; + } + // Try again to find a free one + name = name + "_"; + } + + return name; + } + + /* + True if the masternode of the graph this node is currently in supports virtual texturing. + */ + private bool supportedByMasterNode + { + get + { + var masterNode = owner?.GetNodes().FirstOrDefault(); + return masterNode?.virtualTexturingEnabled ?? false; + } + } + + /* + The panel behind the cogweel node settings + */ + class TextureStackNodeSettingsView : VisualElement + { + SampleTextureStackNode m_Node; + public TextureStackNodeSettingsView(SampleTextureStackNode node) + { + m_Node = node; + + PropertySheet ps = new PropertySheet(); + + ps.Add(new PropertyRow(new Label("Stack Name")), (row) => + { + row.Add(new IdentifierField(), (field) => + { + field.value = m_Node.stackName; + field.isDelayed = true; + field.RegisterValueChangedCallback(evt => + { + var clean = m_Node.CleanupStackName(evt.newValue); + if (m_Node.stackName == clean) + return; + + m_Node.owner.owner.RegisterCompleteObjectUndo("Stack Name Change"); + m_Node.stackName = (string)clean; + field.SetValueWithoutNotify(m_Node.stackName);// Make sure the cleaned up name is used + }); + }); + }); + + ps.Add(new PropertyRow(new Label("Lod Mode")), (row) => + { + row.Add(new UIElements.EnumField(m_Node.lodCalculation), (field) => + { + field.value = m_Node.lodCalculation; + field.RegisterValueChangedCallback(evt => + { + if (m_Node.lodCalculation == (LodCalculation)evt.newValue) + return; + + m_Node.owner.owner.RegisterCompleteObjectUndo("Lod Mode Change"); + m_Node.lodCalculation = (LodCalculation)evt.newValue; + }); + }); + }); + + ps.Add(new PropertyRow(new Label("Quality")), (row) => + { + row.Add(new UIElements.EnumField(m_Node.sampleQuality), (field) => + { + field.value = m_Node.sampleQuality; + field.RegisterValueChangedCallback(evt => + { + if (m_Node.sampleQuality == (QualityMode)evt.newValue) + return; + + m_Node.owner.owner.RegisterCompleteObjectUndo("Quality Change"); + m_Node.sampleQuality = (QualityMode)evt.newValue; + }); + }); + }); + + ps.Add(new PropertyRow(new Label("Num Slots")), (row) => + { + row.Add(new UIElements.IntegerField(), (field) => + { + field.value = m_Node.numSlots; + field.isDelayed = true; + field.RegisterValueChangedCallback(evt => + { + if (Equals(m_Node.numSlots, evt.newValue)) + return; + + m_Node.owner.owner.RegisterCompleteObjectUndo("NumSlots Flow Change"); + m_Node.numSlots = evt.newValue; + field.SetValueWithoutNotify(m_Node.numSlots);//This may be clamped + }); + }); + }); + + ps.Add(new PropertyRow(new Label("No Feedback")), (row) => + { + row.Add(new UnityEngine.UIElements.Toggle(), (field) => + { + field.value = m_Node.noFeedback; + field.RegisterValueChangedCallback(evt => + { + if (m_Node.noFeedback == evt.newValue) + return; + + m_Node.owner.owner.RegisterCompleteObjectUndo("Feedback Settings Change"); + m_Node.noFeedback = evt.newValue; + }); + }); + }); + + for (int i = 0; i < node.numSlots; i++) + { + int currentIndex = i; //to make lambda by-ref capturing happy + ps.Add(new PropertyRow(new Label("Layer " + (i + 1) + " Type")), (row) => + { + row.Add(new UIElements.EnumField(m_Node.m_TextureTypes[i]), (field) => + { + field.value = m_Node.m_TextureTypes[i]; + field.RegisterValueChangedCallback(evt => + { + if (m_Node.m_TextureTypes[currentIndex] == (TextureType)evt.newValue) + return; + + m_Node.owner.owner.RegisterCompleteObjectUndo("Texture Type Change"); + m_Node.m_TextureTypes[currentIndex] = (TextureType)evt.newValue; + m_Node.Dirty(ModificationScope.Graph); + }); + }); + }); + } + + ps.Add(new PropertyRow(new Label("Space")), (row) => + { + row.Add(new UIElements.EnumField(m_Node.normalMapSpace), (field) => + { + field.value = m_Node.normalMapSpace; + field.RegisterValueChangedCallback(evt => + { + if (m_Node.normalMapSpace == (NormalMapSpace)evt.newValue) + return; + + m_Node.owner.owner.RegisterCompleteObjectUndo("Normal Map space Change"); + m_Node.normalMapSpace = (NormalMapSpace)evt.newValue; + }); + }); + }); + +#if !ENABLE_VIRTUALTEXTURES + ps.Add(new HelpBoxRow(MessageType.Warning), (row) => row.Add(new Label("VT is disabled, this node will do regular 2D sampling."))); +#endif + if (!m_Node.supportedByMasterNode) + { + ps.Add(new HelpBoxRow(MessageType.Warning), (row) => row.Add(new Label("The current master node does not support VT, this node will do regular 2D sampling."))); + } + + IVirtualTexturingEnabledRenderPipeline vtRp = GraphicsSettings.currentRenderPipeline as IVirtualTexturingEnabledRenderPipeline; + if (vtRp == null || vtRp.virtualTexturingEnabled == false) + { + ps.Add(new HelpBoxRow(MessageType.Warning), (row) => row.Add(new Label("The current render pipeline does not support VT." + ((vtRp ==null) ? "(Interface not implemented by" + GraphicsSettings.currentRenderPipeline.GetType().Name + ")" : "(virtualTexturingEnabled == false)")))); + } + + Add(ps); + } + } + + public VisualElement CreateSettingsElement() + { + return new TextureStackNodeSettingsView(this); + } + + public SampleTextureStackNode() : this(1) { } + + public SampleTextureStackNode(int numSlots, bool procedural = false, bool isLod = false, bool noResolve = false) + { + isProcedural = procedural; + + if (numSlots > 4) + { + throw new System.Exception("Maximum 4 slots supported"); + } + this.numSlots = numSlots; + name = "Sample Texture Stack"; + + UpdateNodeAfterDeserialization(); + } + + public override void UpdateNodeAfterDeserialization() + { + List usedSlots = new List(); + usedSlots.Add(UVInputId); + + for (int i = 0; i < numSlots; i++) + { + usedSlots.Add(OutputSlotIds[i]); + if (!isProcedural) + usedSlots.Add(TextureInputIds[i]); + } + + if (!noFeedback) + { + usedSlots.Add(FeedbackSlotId); + } + + // Create slots + AddSlot(new UVMaterialSlot(UVInputId, UVInputNAme, UVInputNAme, UVChannel.UV0)); + + for (int i = 0; i < numSlots; i++) + { + AddSlot(new Vector4MaterialSlot(OutputSlotIds[i], OutputSlotNames[i], OutputSlotNames[i], SlotType.Output, Vector4.zero, (noFeedback && m_LodCalculation == LodCalculation.VtLevel_Lod) ? ShaderStageCapability.All : ShaderStageCapability.Fragment)); + } + + if (!isProcedural) + { + for (int i = 0; i < numSlots; i++) + { + AddSlot(new Texture2DInputMaterialSlot(TextureInputIds[i], TextureInputNames[i], TextureInputNames[i])); + } + } + + if (m_LodCalculation == LodCalculation.VtLevel_Lod) + { + var slot = new Vector1MaterialSlot(LODInputId, LODSlotName, LODSlotName, SlotType.Input, 0.0f, ShaderStageCapability.All, LODSlotName); + usedSlots.Add(LODInputId); + AddSlot(slot); + } + + if (m_LodCalculation == LodCalculation.VtLevel_Bias) + { + var slot = new Vector1MaterialSlot(BiasInputId, BiasSlotName, BiasSlotName, SlotType.Input, 0.0f, ShaderStageCapability.Fragment, BiasSlotName); + usedSlots.Add(BiasInputId); + AddSlot(slot); + } + + if (m_LodCalculation == LodCalculation.VtLevel_Derivatives) + { + var slot1 = new Vector2MaterialSlot(DxInputId, DxSlotName, DxSlotName, SlotType.Input, Vector2.one, ShaderStageCapability.All, DxSlotName); + var slot2 = new Vector2MaterialSlot(DyInputId, DySlotName, DySlotName, SlotType.Input, Vector2.one, ShaderStageCapability.All, DySlotName); + usedSlots.Add(DxInputId); + usedSlots.Add(DyInputId); + AddSlot(slot1); + AddSlot(slot2); + } + + if (!noFeedback) + { + var slot = new Vector4MaterialSlot(FeedbackSlotId, FeedbackSlotName, FeedbackSlotName, SlotType.Output, Vector4.zero, ShaderStageCapability.Fragment); + slot.hidden = true; + AddSlot(slot); + } + + RemoveSlotsNameNotMatching(usedSlots, true); + name = String.IsNullOrEmpty(m_StackName) ? DefaultNodeTitle : m_StackName; + } + + public static bool SubGraphHasStacks(SubGraphNode node) + { + var asset = node.asset; + foreach (var input in asset.inputs) + { + var texInput = input as Texture2DShaderProperty; + if (texInput != null && !string.IsNullOrEmpty(texInput.textureStack)) + { + return true; + } + } + return false; + } + + public static List GetSubGraphInputStacks(SubGraphNode node) + { + // There could be more stacks in the subgraph but as they are not part of inputs they don't + // leak out so we don't case about those. + List result = new List(); //todo pooled list + var asset = node.asset; + foreach (var input in asset.inputs) + { + var texInput = input as Texture2DShaderProperty; + if (texInput != null && !string.IsNullOrEmpty(texInput.textureStack)) + { + result.Add(texInput.textureStack); + } + } + return result; + } + + // Texture stacks have some additional 'global' validation to do on the whole graph. This validates this. + public static void ValidateTextureStacks(GraphData d) + { + var nodes = d.GetNodes(); + var subNodes = d.GetNodes(); + var valueNameLookup = new Dictionary(); + var nodeNames = new HashSet(); + + foreach (SampleTextureStackNode node in nodes) + { + if (nodeNames.Contains(node.GetStackName()) && !node.isProcedural) + { + // Add a validation error, values need to be unique + node.owner.AddValidationError(node.guid, $"Some stack nodes have the same name '{node.GetStackName()}', please ensure all stack nodes have unique names.", ShaderCompilerMessageSeverity.Error); + } + else + { + // Procedural nodes are still added here as we disallow procedural and regular nodes with the same name... + nodeNames.Add(node.GetStackName()); + } + + for (int i = 0; i < node.numSlots; i++) + { + if (!node.isProcedural) + { + string value = node.GetSlotValue(node.TextureInputIds[i], GenerationMode.ForReals); + string name = node.FindSlot(node.TextureInputIds[i]).displayName; + + // Check if there is already a slot with the same value + string displayName; + if (valueNameLookup.TryGetValue(value, out displayName)) + { + // Add a validation error, values need to be unique + node.owner.AddValidationError(node.guid, $"Input slot '{name}' shares it's value '{value}' with another stack '{displayName}'. Please make sure every slot has unique input textures attached to it.", ShaderCompilerMessageSeverity.Error); + } + else + { + // Save it for checking against other slots + valueNameLookup.Add(value, node.GetStackName() + " (slot " + name + ")"); + } + } + } + } + + foreach (SubGraphNode node in subNodes) + { + var subStacks = GetSubGraphInputStacks(node); + foreach (var subStack in subStacks) + { + // Todo how to exclude procedurals in subgraphs? + if (nodeNames.Contains(subStack)) + { + node.owner.AddValidationError(node.guid, $"A stack node in a subgraph which is exposed through a texture argument has the same name '{subStack}', please ensure all stack nodes have unique names across the whole shader using them.", ShaderCompilerMessageSeverity.Error); + } + else + { + nodeNames.Add(subStack); + } + } + + Dictionary valueToStackLookup = node.GetValueToTextureStackDictionary(GenerationMode.ForReals); + foreach (var kvp in valueToStackLookup) + { + // Check if there is already a slot with the same value + string stackName; + if (valueNameLookup.TryGetValue(kvp.Key, out stackName)) + { + // Add a validation error, values need to be unique + node.owner.AddValidationError(node.guid, $"Stack '{kvp.Value}' shares it's value '{kvp.Key}' with another stack '{stackName}'. Please make sure every slot has unique input textures attached to it.", ShaderCompilerMessageSeverity.Error); + } + else + { + // Save it for checking against other slots + valueNameLookup.Add(kvp.Key, kvp.Value); + } + } + } + } + + public override void ValidateNode() + { + if (isProcedural) return; + + for (int i = 0; i < numSlots; i++) + { + var textureSlot = FindInputSlot(TextureInputIds[i]); + if (textureSlot != null) + { + textureSlot.defaultType = (m_TextureTypes[i] == TextureType.Normal ? Texture2DShaderProperty.DefaultType.Bump : Texture2DShaderProperty.DefaultType.White); + } + } + base.ValidateNode(); + } + + public override PreviewMode previewMode + { + get { return PreviewMode.Preview3D; } + } + + protected virtual string ProcessStackName(string potentialName) + { + // We do a poor man's namespacing here since the user's entered name could clash with existing symbols defined in the shaders or templates + // adding variables in templates later could also suddenly break user's stacks so any stacks are prefixed by a "namespace". + if (!string.IsNullOrEmpty(potentialName)) + { + return "StackNodeNamespace_" + potentialName; + } + else + { + return string.Format("TexStack_{0}", GuidEncoder.Encode(guid)); + } + } + + protected virtual string GetStackName() + { + return ProcessStackName(m_StackName); + } + + public string GetFeedbackVariableName() + { + return GetVariableNameForNode() + "_fb"; + } + + private string GetTextureName(int layerIndex, GenerationMode generationMode) + { + if (isProcedural) + { + return GetStackName() + "_stacks_are_not_supported_with_vt_off_" + layerIndex; + } + else + { + return GetSlotValue(TextureInputIds[layerIndex], generationMode); + } + } + + string MakeVtParameters(string variableName, string uvExpr, string lodExpr, string dxExpr, string dyExpr, AddresMode address, FilterMode filter, LodCalculation lod, UvSpace space, QualityMode quality) + { + const string VTParametersInputTemplate = @" + VtInputParameters {0}; + {0}.uv = {1}; + {0}.lodOrOffset = {2}; + {0}.dx = {3}; + {0}.dy = {4}; + {0}.addressMode = {5}; + {0}.filterMode = {6}; + {0}.levelMode = {7}; + {0}.uvMode = {8}; + {0}.sampleQuality = {9}; +#if defined(SHADER_STAGE_RAY_TRACING) + if ({0}.levelMode == VtLevel_Automatic || {0}.levelMode == VtLevel_Bias) + {{ + {0}.levelMode = VtLevel_Lod; + {0}.lodOrOffset = 0.0f; + }} +#endif + "; + + return string.Format(VTParametersInputTemplate, + variableName, + uvExpr, + (string.IsNullOrEmpty(lodExpr)) ? "0.0f" : lodExpr, + (string.IsNullOrEmpty(dxExpr)) ? "float2(0.0f, 0.0f)" : dxExpr, + (string.IsNullOrEmpty(dyExpr)) ? "float2(0.0f, 0.0f)" : dyExpr, + address.ToString(), + filter.ToString(), + lod.ToString(), + space.ToString(), + quality.ToString()); + } + + string MakeVtSample(string infoVariable, string textureName, string outputVariableName, LodCalculation lod, QualityMode quality) + { + const string SampleTemplate = @"$precision4 {0} = SampleStack({1}, {2}, {3}, {4});"; + + return string.Format(SampleTemplate, + outputVariableName, + infoVariable, + lod.ToString(), + quality.ToString(), + textureName); + } + + // Node generations + public virtual void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMode) + { + // Not all outputs may be connected (well one is or we wouldn't get called) so we are careful to + // only generate code for connected outputs + + string stackName = GetStackName(); + string localVariablePrefix = GetVariableNameForNode(); + string parametersVariableNme = localVariablePrefix + "_pars"; + string infoVariableName = localVariablePrefix + "_info"; + + bool anyConnected = false; + for (int i = 0; i < numSlots; i++) + { + if (IsSlotConnected(OutputSlotIds[i])) + { + anyConnected = true; + break; + } + } + bool feedbackConnected = IsSlotConnected(FeedbackSlotId); ; + anyConnected |= feedbackConnected; + + if (anyConnected) + { + sb.Append(MakeVtParameters( + parametersVariableNme, + GetSlotValue(UVInputId, generationMode), + (lodCalculation == LodCalculation.VtLevel_Lod) ? GetSlotValue(LODInputId, generationMode) : GetSlotValue(BiasInputId, generationMode), + GetSlotValue(DxInputId, generationMode), + GetSlotValue(DyInputId, generationMode), + AddresMode.VtAddressMode_Wrap, + FilterMode.VtFilter_Anisotropic, + m_LodCalculation, + UvSpace.VtUvSpace_Regular, + m_SampleQuality)); + + sb.AppendLine(string.Format("StackInfo {0} = PrepareStack({1}, {2});" + , infoVariableName + , parametersVariableNme + , stackName)); + } + + for (int i = 0; i < numSlots; i++) + { + if (IsSlotConnected(OutputSlotIds[i])) + { + var textureName = GetTextureName(i, generationMode); + /*string resultLayer = string.Format("$precision4 {1} = {3}({0}_info, {2});" + , stackName + , GetVariableNameForSlot(OutputSlotIds[i]) + , textureName + , GetSampleFunction()); + sb.AppendLine(resultLayer);*/ + sb.AppendLine(MakeVtSample(infoVariableName, textureName, GetVariableNameForSlot(OutputSlotIds[i]), m_LodCalculation, m_SampleQuality)); + } + } + + for (int i = 0; i < numSlots; i++) + { + if (IsSlotConnected(OutputSlotIds[i])) + { + + if (m_TextureTypes[i] == TextureType.Normal) + { + if (normalMapSpace == NormalMapSpace.Tangent) + { + sb.AppendLine(string.Format("{0}.rgb = UnpackNormalmapRGorAG({0});", GetVariableNameForSlot(OutputSlotIds[i]))); + } + else + { + sb.AppendLine(string.Format("{0}.rgb = UnpackNormalRGB({0});", GetVariableNameForSlot(OutputSlotIds[i]))); + } + } + } + } + + if (!noFeedback) + { + //TODO: Investigate if the feedback pass can use halfs + string feedBackCode = string.Format("float4 {0} = GetResolveOutput({1});", + GetFeedbackVariableName(), + infoVariableName); + sb.AppendLine(feedBackCode); + } + } + + public void GenerateNodeInclude(IncludeCollection registry, GenerationMode generationMode) + { + // This is not in templates or headers so this error only gets checked in shaders actually using the VT node + // as vt headers get included even if there are no vt nodes yet. + IVirtualTexturingEnabledRenderPipeline vtRp = GraphicsSettings.currentRenderPipeline as IVirtualTexturingEnabledRenderPipeline; + + /*if (!supportedByMasterNode) + { + // The master node is not white listed for VT just use regular textures even if vt is on for this project. + registry.ProvideIncludeBlock("disable-vt-if-unsupported-node", "#define FORCE_VIRTUAL_TEXTURING_OFF 1"); + } + else if (vtRp == null || vtRp.virtualTexturingEnabled == false) + { + // The master render pipeline does not support VT just use regular textures even if vt is on for this project. + registry.ProvideIncludeBlock("disable-vt-if-unsupported-node", "#define FORCE_VIRTUAL_TEXTURING_OFF 1"); + } + else + { + // The master node supports VT but certain keyword settings in child materials may still break it. We catch this here. + registry.ProvideIncludeBlock("disable-vt-if-unsupported", @"#if defined(_SURFACE_TYPE_TRANSPARENT) +#define FORCE_VIRTUAL_TEXTURING_OFF 1 +#error VT cannot be used on transparent surfaces. +#endif"); + }*/ + + // Always include the header even if vt is off this ensures the macros providing fallbacks are existing. + registry.Add("Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl", IncludeLocation.Pregraph); + } + + public override void CollectShaderProperties(PropertyCollector properties, GenerationMode generationMode) + { + base.CollectShaderProperties(properties, generationMode); + + // Get names of connected textures + List slotNames = new List(); + for (int i = 0; i < numSlots; i++) + { + var id = GetTextureName(i, generationMode); + slotNames.Add(id); + } + + string stackName = GetStackName(); + + // Add texture stack attributes to any connected textures + if (!isProcedural) + { + int found = 0; + foreach (var prop in properties.properties.OfType()) + { + int layerIdx = 0; + foreach (var inputTex in slotNames) + { + if (string.Compare(inputTex, prop.referenceName) == 0) + { + prop.textureStack = stackName + "(" + layerIdx + ")"; + found++; + } + layerIdx++; + } + } + + if (found != slotNames.Count) + { + Debug.LogWarning("Could not find some texture properties for stack " + stackName); + } + } + + properties.AddShaderProperty(new StackShaderProperty() + { + overrideReferenceName = stackName + "_cb", + slotNames = slotNames + }); + + properties.AddShaderProperty(new StackShaderProperty() + { + overrideReferenceName = stackName, + slotNames = slotNames + }); + } + + public bool RequiresMeshUV(Internal.UVChannel channel, ShaderStageCapability stageCapability) + { + using (var tempSlots = PooledList.Get()) + { + GetInputSlots(tempSlots); + foreach (var slot in tempSlots) + { + if (slot.RequiresMeshUV(channel)) + return true; + } + return false; + } + } + + public bool RequiresTime() + { + return true; //HACK: This ensures we repaint in shadergraph so data that gets streamed in also becomes visible. + } + } + + static class VirtualTexturingFeedbackUtils + { + public const string FeedbackSurfaceDescriptionVariableName = "VTPackedFeedback"; + + public static int CountFeedbackVariables( + List activeNodesForPass) + { + int result = 0; + + foreach (var node in activeNodesForPass) + { + if (node is SampleTextureStackNode stNode) + { + result += (stNode.noFeedback) ? 0 : 1; + } + + if (node is SubGraphNode sgNode) + { + if (sgNode.asset == null) continue; + result += sgNode.asset.vtFeedbackVariables.Count; + } + } + + return result; + } + + public static void GenerateVirtualTextureFeedback( + List downstreamNodesIncludingRoot, + List[] keywordPermutationsPerNode, + ShaderStringBuilder surfaceDescriptionFunction, + KeywordCollector shaderKeywords) + { + // A note on how we handle vt feedback in combination with keywords: + // We essentially generate a fully separate feedback path for each permutation of keywords + // so per permutation we gather variables contribution to feedback and we generate + // feedback gathering for each permutation individually. + + var feedbackVariablesPerPermutation = PooledList>.Get(); + try + { + if (shaderKeywords.permutations.Count >= 1) + { + for (int i = 0; i < shaderKeywords.permutations.Count; i++) + { + feedbackVariablesPerPermutation.Add(PooledList.Get()); + } + } + else + { + // Create a dummy single permutation + feedbackVariablesPerPermutation.Add(PooledList.Get()); + } + + int index = 0; //for keywordPermutationsPerNode + foreach (var node in downstreamNodesIncludingRoot) + { + if (node is SampleTextureStackNode stNode) + { + if (stNode.noFeedback) continue; + if (keywordPermutationsPerNode[index] == null) + { + Debug.Assert(shaderKeywords.permutations.Count == 0, $"Shader has {shaderKeywords.permutations.Count} permutations but keywordPermutationsPerNode of some nodes are null." ); + feedbackVariablesPerPermutation[0].Add(stNode.GetFeedbackVariableName()); + } + else + { + foreach (int perm in keywordPermutationsPerNode[index]) + { + feedbackVariablesPerPermutation[perm].Add(stNode.GetFeedbackVariableName()); + } + } + } + + if (node is SubGraphNode sgNode) + { + if (sgNode.asset == null) continue; + if (keywordPermutationsPerNode[index] == null) + { + Debug.Assert(shaderKeywords.permutations.Count == 0, $"Shader has {shaderKeywords.permutations.Count} permutations but keywordPermutationsPerNode of some nodes are null."); + foreach (var feedbackSlot in sgNode.asset.vtFeedbackVariables) + { + + feedbackVariablesPerPermutation[0].Add(node.GetVariableNameForNode() + "_" + feedbackSlot); + } + } + else + { + foreach (var feedbackSlot in sgNode.asset.vtFeedbackVariables) + { + foreach (int perm in keywordPermutationsPerNode[index]) + { + feedbackVariablesPerPermutation[perm].Add(node.GetVariableNameForNode() + "_" + feedbackSlot); + } + } + } + } + + index++; + } + + index = 0; + foreach (var feedbackVariables in feedbackVariablesPerPermutation) + { + // If it's a dummy single always-on permutation don't put an ifdef around the code + if (shaderKeywords.permutations.Count >= 1) + { + surfaceDescriptionFunction.AppendLine(KeywordUtil.GetKeywordPermutationConditional(index)); + } + + if (feedbackVariables.Count == 0) + { + string feedBackCode = $"surface.VTPackedFeedback = float4(1.0f,1.0f,1.0f,.0f);"; + surfaceDescriptionFunction.AppendLine(feedBackCode); + } + else if (feedbackVariables.Count == 1) + { + string feedBackCode = $"surface.VTPackedFeedback = GetPackedVTFeedback({feedbackVariables[0]});"; + surfaceDescriptionFunction.AppendLine(feedBackCode); + } + else if (feedbackVariables.Count > 1) + { + string arrayName = $"VTFeedback_array"; + surfaceDescriptionFunction.AppendLine($"float4 {arrayName}[{feedbackVariables.Count}];"); + + int arrayIndex = 0; + foreach (var variable in feedbackVariables) + { + string code = $"{arrayName}[{arrayIndex}] = {variable};"; + surfaceDescriptionFunction.AppendLine(code); + arrayIndex++; + } + + string feedBackCode = $"surface.{FeedbackSurfaceDescriptionVariableName} = GetPackedVTFeedback({arrayName}[ (IN.{ShaderGeneratorNames.ScreenPosition}.x + _FrameCount )% (uint){feedbackVariables.Count}]);"; + + surfaceDescriptionFunction.AppendLine(feedBackCode); + } + + if (shaderKeywords.permutations.Count >= 1) + { + surfaceDescriptionFunction.AppendLine("#endif"); + } + + index++; + } + } + finally + { + foreach (var list in feedbackVariablesPerPermutation) + { + list.Dispose(); + } + feedbackVariablesPerPermutation.Dispose(); + } + } + + // Automatically add a streaming feedback node and correctly connect it to stack samples are connected to it and it is connected to the master node output + public static List GetFeedbackVariables(SubGraphOutputNode masterNode) + { + var stackNodes = GraphUtil.FindDownStreamNodesOfType(masterNode); + var subGraphNodes = GraphUtil.FindDownStreamNodesOfType(masterNode); + List result = new List(); + + // Early out if there are no VT nodes in the graph + if (stackNodes.Count <= 0 && subGraphNodes.Count <= 0) + { + Debug.Log("No vt in subgr"); + return result; + } + + // Add inputs to feedback node + foreach (var node in stackNodes) + { + if (node.noFeedback) continue; + result.Add(node.GetFeedbackVariableName()); + } + + foreach (var node in subGraphNodes) + { + if (node.asset == null) continue; + foreach (var feedbackSlot in node.asset.vtFeedbackVariables) + { + result.Add(node.GetVariableNameForNode() + "_" + feedbackSlot); + } + } + + return result; + } + } + +#if PROCEDURAL_VT_IN_GRAPH + [Title("Input", "Texture", "Sample Procedural VT Texture Stack")] + [FormerName("UnityEditor.ShaderGraph.SampleTextureStackProcedural")] + [FormerName("UnityEditor.ShaderGraph.SampleTextureStackProcedural2")] + class SampleTextureStackProceduralNode : SampleTextureStackNode + { + public SampleTextureStackProceduralNode() : base(1, true) + { } + } +#endif +} diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs.meta b/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs.meta new file mode 100644 index 00000000000..c43a05471d4 --- /dev/null +++ b/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2db046575851ad4c806c1fb14f28290 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Data/Nodes/SlotValue.cs b/com.unity.shadergraph/Editor/Data/Nodes/SlotValue.cs index ef5642db70e..11581f57140 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/SlotValue.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/SlotValue.cs @@ -41,7 +41,8 @@ enum ConcreteSlotValueType Vector3, Vector2, Vector1, - Boolean + Boolean, + VirtualTexture } static class SlotValueHelper diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Utility/SubGraphNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Utility/SubGraphNode.cs index 19608636643..473a5217630 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/Utility/SubGraphNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/Utility/SubGraphNode.cs @@ -13,6 +13,7 @@ class SubGraphNode : AbstractMaterialNode , IGeneratesBodyCode , IOnAssetEnabled , IGeneratesFunction + , IGeneratesInclude , IMayRequireNormal , IMayRequireTangent , IMayRequireBitangent @@ -25,6 +26,7 @@ class SubGraphNode : AbstractMaterialNode , IMayRequireFaceSign , IMayRequireCameraOpaqueTexture , IMayRequireDepthTexture + , IMayRequireRequirePixelCoordinate { [Serializable] public class MinimalSubGraphNode : IHasDependencies @@ -223,6 +225,13 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo foreach (var outSlot in asset.outputs) arguments.Add(GetVariableNameForSlot(outSlot.id)); + foreach (var feedbackSlot in asset.vtFeedbackVariables) + { + string feedbackVar = GetVariableNameForNode() + "_" + feedbackSlot; + sb.AppendLine("{0} {1};", ConcreteSlotValueType.Vector4.ToShaderString(ConcretePrecision.Float), feedbackVar); + arguments.Add(feedbackVar); + } + sb.AppendLine("{0}({1});", asset.functionName, arguments.Aggregate((current, next) => string.Format("{0}, {1}", current, next))); } @@ -397,8 +406,10 @@ public virtual void UpdateSlots() foreach (var slot in asset.outputs) { - AddSlot(MaterialSlot.CreateMaterialSlot(slot.valueType, slot.id, slot.RawDisplayName(), - slot.shaderOutputName, SlotType.Output, Vector4.zero, outputStage)); + var newSlot = MaterialSlot.CreateMaterialSlot(slot.valueType, slot.id, slot.RawDisplayName(), + slot.shaderOutputName, SlotType.Output, Vector4.zero, outputStage); + newSlot.hidden = slot.hidden; + AddSlot(newSlot); validNames.Add(slot.id); } @@ -454,6 +465,28 @@ public override void ValidateNode() ValidateShaderStage(); } + public Dictionary GetValueToTextureStackDictionary(GenerationMode generationMode) + { + // Get the stack names for the texture values conected to inputs of the sub graph + Dictionary valueToStackLookup = new Dictionary(); + for (int propertyIndex = 0; propertyIndex < m_PropertyIds.Count; propertyIndex++) + { + int slotId = m_PropertyIds[propertyIndex]; + if (FindInputSlot(slotId) != null) + { + var value = GetSlotValue(slotId, generationMode); + var guid = m_PropertyGuids[propertyIndex]; + var input = asset.inputs.First(el => el.guid == Guid.Parse(guid)) as Texture2DShaderProperty; + if (input != null && !string.IsNullOrEmpty(input.textureStack)) + { + valueToStackLookup.Add(value, input.textureStack); + } + + } + } + return valueToStackLookup; + } + public override void CollectShaderProperties(PropertyCollector visitor, GenerationMode generationMode) { base.CollectShaderProperties(visitor, generationMode); @@ -465,6 +498,19 @@ public override void CollectShaderProperties(PropertyCollector visitor, Generati { visitor.AddShaderProperty(property); } + + // Get the stack names for the texture values conected to inputs of the sub graph + Dictionary valueToStackLookup = GetValueToTextureStackDictionary(generationMode); + + // Set textureStacks of any texture properties matching the connected textures + foreach (var prop in visitor.properties.OfType()) + { + string stackName; + if (valueToStackLookup.TryGetValue(prop.referenceName, out stackName)) + { + prop.textureStack = stackName; + } + } } public void CollectShaderKeywords(KeywordCollector keywords, GenerationMode generationMode) @@ -505,6 +551,25 @@ public virtual void GenerateNodeFunction(FunctionRegistry registry, GenerationMo } } + public virtual void GenerateNodeInclude(IncludeCollection registry, GenerationMode generationMode) + { + if (asset == null || hasError) + return; + + foreach (var include in asset.includes) + { + IncludeLocation location; + if ( Enum.TryParse(include.location, out location) ) + { + registry.Add(include.value, location); + } + else + { + Debug.LogError($"Error in Graph at \"{AssetDatabase.GUIDToAssetPath(subGraphGuid)}\": Sub Graph contains an include with an unknown include location {include.location}.", asset); + } + } + } + public NeededCoordinateSpace RequiresNormal(ShaderStageCapability stageCapability) { if (asset == null) @@ -569,6 +634,14 @@ public bool RequiresFaceSign(ShaderStageCapability stageCapability) return asset.requirements.requiresFaceSign; } + public bool RequiresPixelCoordinate(ShaderStageCapability stageCapability) + { + if (asset == null) + return false; + + return asset.requirements.requiresPixelCoordinate; + } + public NeededCoordinateSpace RequiresBitangent(ShaderStageCapability stageCapability) { if (asset == null) diff --git a/com.unity.shadergraph/Editor/Data/SubGraph/SubGraphAsset.cs b/com.unity.shadergraph/Editor/Data/SubGraph/SubGraphAsset.cs index 7b461c45db3..4e8a34efe46 100644 --- a/com.unity.shadergraph/Editor/Data/SubGraph/SubGraphAsset.cs +++ b/com.unity.shadergraph/Editor/Data/SubGraph/SubGraphAsset.cs @@ -19,7 +19,20 @@ public FunctionPair(string key, string value) this.value = value; } } - + + [Serializable] + struct SubGraphInclude + { + public string value; + public string location; + + public SubGraphInclude(string value, string location) + { + this.value = value; + this.location = location; + } + } + class SubGraphAsset : ScriptableObject, ISerializationCallbackReceiver { public bool isValid; @@ -42,6 +55,10 @@ class SubGraphAsset : ScriptableObject, ISerializationCallbackReceiver public List functions = new List(); + public List includes = new List(); + + public List vtFeedbackVariables = new List(); + [NonSerialized] public List inputs = new List(); @@ -93,4 +110,4 @@ public void OnAfterDeserialize() outputs = SerializationHelper.Deserialize(m_SerializedOutputs, typeSerializationInfos); } } -} \ No newline at end of file +} diff --git a/com.unity.shadergraph/Editor/Data/Util/GraphUtil.cs b/com.unity.shadergraph/Editor/Data/Util/GraphUtil.cs index 3c6dc32af58..f5b29d6603f 100644 --- a/com.unity.shadergraph/Editor/Data/Util/GraphUtil.cs +++ b/com.unity.shadergraph/Editor/Data/Util/GraphUtil.cs @@ -368,5 +368,48 @@ public static string CurrentPipelinePreferredShaderGUI(IMasterNode masterNode) return null; } + /* + Find all nodes of the given type downstream from the given node + Returns a unique list. So even if a node can be reached through different paths it will be present only once. + */ + public static List FindDownStreamNodesOfType(AbstractMaterialNode node) where NodeType : AbstractMaterialNode + { + // Should never be called without a node + Debug.Assert(node != null); + + List visitedNodes = new List(); + List vtNodes = new List(); + Queue nodeStack = new Queue(); + nodeStack.Enqueue(node); + visitedNodes.Add(node.guid); + + while (nodeStack.Count > 0) + { + AbstractMaterialNode visit = nodeStack.Dequeue(); + + // Flood fill through all the nodes + foreach (var slot in visit.GetInputSlots()) + { + foreach (var edge in visit.owner.GetEdges(slot.slotReference)) + { + var inputNode = visit.owner.GetNodeFromGuid(edge.outputSlot.nodeGuid); + if (!visitedNodes.Contains(inputNode.guid)) + { + nodeStack.Enqueue(inputNode); + visitedNodes.Add(inputNode.guid); + } + } + } + + // Extract vt node + if (visit is NodeType) + { + NodeType vtNode = visit as NodeType; + vtNodes.Add(vtNode); + } + } + + return vtNodes; + } } } diff --git a/com.unity.shadergraph/Editor/Data/Util/KeywordUtil.cs b/com.unity.shadergraph/Editor/Data/Util/KeywordUtil.cs index 491083eeed7..4cd748d2c63 100644 --- a/com.unity.shadergraph/Editor/Data/Util/KeywordUtil.cs +++ b/com.unity.shadergraph/Editor/Data/Util/KeywordUtil.cs @@ -143,6 +143,11 @@ public static string GetKeywordPermutationSetConditional(List permutationSe return sb.ToString(); } + public static string GetKeywordPermutationConditional(int permutation) + { + return $"#if defined(KEYWORD_PERMUTATION_{permutation})"; + } + public static void GetKeywordPermutationDeclarations(ShaderStringBuilder sb, List>> permutations) { if (permutations.Count == 0) diff --git a/com.unity.shadergraph/Editor/Data/Util/PropertyUtil.cs b/com.unity.shadergraph/Editor/Data/Util/PropertyUtil.cs index 4ae1c9a2b81..381a4b8ad55 100644 --- a/com.unity.shadergraph/Editor/Data/Util/PropertyUtil.cs +++ b/com.unity.shadergraph/Editor/Data/Util/PropertyUtil.cs @@ -40,6 +40,8 @@ public static ConcreteSlotValueType ToConcreteShaderValueType(this PropertyType return ConcreteSlotValueType.Boolean; case PropertyType.Color: return ConcreteSlotValueType.Vector4; + case PropertyType.VirtualTexture: + return ConcreteSlotValueType.VirtualTexture; default: throw new ArgumentOutOfRangeException(); } diff --git a/com.unity.shadergraph/Editor/Drawing/Blackboard/BlackboardFieldPropertyView.cs b/com.unity.shadergraph/Editor/Drawing/Blackboard/BlackboardFieldPropertyView.cs index 3ec1dab5322..5ebddeb2229 100644 --- a/com.unity.shadergraph/Editor/Drawing/Blackboard/BlackboardFieldPropertyView.cs +++ b/com.unity.shadergraph/Editor/Drawing/Blackboard/BlackboardFieldPropertyView.cs @@ -72,6 +72,9 @@ public override void BuildCustomFields(ShaderInput input) case GradientShaderProperty gradientProperty: BuildGradientPropertyField(gradientProperty); break; + case VirtualTextureShaderProperty virtualTextureProperty: + BuildVirtualTexturePropertyField(virtualTextureProperty); + break; default: throw new ArgumentOutOfRangeException(); } @@ -331,6 +334,19 @@ void BuildTexture2DPropertyField(Texture2DShaderProperty property) AddRow("Mode", defaultModeField, !graph.isSubGraph && property.generatePropertyBlock); } + void BuildVirtualTexturePropertyField(VirtualTextureShaderProperty property) + { + Toggle proceduralToggle = new Toggle { value = property.value.procedural }; + proceduralToggle.OnToggleChanged(evt => + { + graph.owner.RegisterCompleteObjectUndo("Change VT Procedural Toggle"); + property.value.procedural = evt.newValue; + DirtyNodes(ModificationScope.Graph); + }); + AddRow("Procedural", proceduralToggle); + // TODO: add layer names and texture assignments view here (could we re-use the TextureShaderProperty custom builder?) + } + void BuildTexture2DArrayPropertyField(Texture2DArrayShaderProperty property) { var field = new ObjectField { value = property.value.textureArray, objectType = typeof(Texture2DArray) }; diff --git a/com.unity.shadergraph/Editor/Drawing/Blackboard/BlackboardProvider.cs b/com.unity.shadergraph/Editor/Drawing/Blackboard/BlackboardProvider.cs index 33774d6b2b6..0434f455bdc 100644 --- a/com.unity.shadergraph/Editor/Drawing/Blackboard/BlackboardProvider.cs +++ b/com.unity.shadergraph/Editor/Drawing/Blackboard/BlackboardProvider.cs @@ -213,6 +213,7 @@ void AddPropertyItems(GenericMenu gm) gm.AddItem(new GUIContent($"Texture2D Array"), false, () => AddInputRow(new Texture2DArrayShaderProperty(), true)); gm.AddItem(new GUIContent($"Texture3D"), false, () => AddInputRow(new Texture3DShaderProperty(), true)); gm.AddItem(new GUIContent($"Cubemap"), false, () => AddInputRow(new CubemapShaderProperty(), true)); + gm.AddItem(new GUIContent($"Virtual Texture"), false, () => AddInputRow(new VirtualTextureShaderProperty(), true)); gm.AddItem(new GUIContent($"Boolean"), false, () => AddInputRow(new BooleanShaderProperty(), true)); gm.AddItem(new GUIContent($"Matrix2x2"), false, () => AddInputRow(new Matrix2ShaderProperty(), true)); gm.AddItem(new GUIContent($"Matrix3x3"), false, () => AddInputRow(new Matrix3ShaderProperty(), true)); diff --git a/com.unity.shadergraph/Editor/Drawing/PreviewManager.cs b/com.unity.shadergraph/Editor/Drawing/PreviewManager.cs index fbfaee3168b..e2789b5a801 100644 --- a/com.unity.shadergraph/Editor/Drawing/PreviewManager.cs +++ b/com.unity.shadergraph/Editor/Drawing/PreviewManager.cs @@ -502,6 +502,43 @@ void UpdateTimedNodeList() m_RefreshTimedNodes = false; } + void RequestVTData(Material mat) + { +#if ENABLE_VIRTUALTEXTURES + Shader shad = mat.shader; + for (int i = 0; i < shad.GetPropertyCount(); i++) + { + if (shad.GetPropertyType(i) != UnityEngine.Rendering.ShaderPropertyType.Texture) continue; + + string name; + int layer; + + if (shad.FindTextureStack(i, out name, out layer)) + { + int stackPropertyId = Shader.PropertyToID(name); + try + { + // Ensure we always request the mip sized 256x256 + int width, height; + UnityEngine.Rendering.VirtualTexturing.System.GetTextureStackSize(mat, stackPropertyId, out width, out height); + int textureMip = (int)Math.Max(Mathf.Log(width, 2f), Mathf.Log(height, 2f)); + const int baseMip = 8; + int mip = Math.Max(textureMip - baseMip, 0); + UnityEngine.Rendering.VirtualTexturing.System.RequestRegion(mat, stackPropertyId, new Rect(0.0f, 0.0f, 1.0f, 1.0f), mip, UnityEngine.Rendering.VirtualTexturing.System.AllMips); + } + catch (InvalidOperationException) + { + // This gets thrown when the system is in an indeterminate state (like a material with no textures assigned which can obviously never have a texture stack streamed). + // This is valid in this case as we're still authoring the material. + } + } + } + + // If only shadergraph windows are visible HDRP will may render cameras and VT won't tick. So always to a tick here just to be sure. + UnityEngine.Rendering.VirtualTexturing.System.Update(); +#endif + } + void RenderPreview(PreviewRenderData renderData, Mesh mesh, Matrix4x4 transform) { var node = renderData.shaderData.node; @@ -513,6 +550,8 @@ void RenderPreview(PreviewRenderData renderData, Mesh mesh, Matrix4x4 transform) return; } + RequestVTData(renderData.shaderData.mat); + var previousRenderTexture = RenderTexture.active; //Temp workaround for alpha previews... diff --git a/com.unity.shadergraph/Editor/Drawing/Views/HelpBoxRow.cs b/com.unity.shadergraph/Editor/Drawing/Views/HelpBoxRow.cs new file mode 100644 index 00000000000..321f897a082 --- /dev/null +++ b/com.unity.shadergraph/Editor/Drawing/Views/HelpBoxRow.cs @@ -0,0 +1,49 @@ +using System.Linq; +using UnityEngine; +using UnityEngine.UIElements; + +namespace UnityEditor.ShaderGraph.Drawing +{ + // Similar in function to the old EditorGUILayout.HelpBox + class HelpBoxRow : VisualElement + { + VisualElement m_ContentContainer; + VisualElement m_LabelContainer; + + public override VisualElement contentContainer + { + get { return m_ContentContainer; } + } + + public HelpBoxRow(MessageType type) + { + styleSheets.Add(Resources.Load("Styles/HelpBoxRow")); + VisualElement container = new VisualElement {name = "container"}; + m_ContentContainer = new VisualElement { name = "content" }; + m_LabelContainer = new VisualElement {name = "label" }; + + switch (type) + { + case MessageType.None: + container.AddToClassList("help-box-row-style-info"); + break; + case MessageType.Info: + container.AddToClassList("help-box-row-style-info"); + break; + case MessageType.Warning: + container.AddToClassList("help-box-row-style-warning"); + break; + case MessageType.Error: + container.AddToClassList("help-box-row-style-error"); + break; + default: + break; + } + + container.Add(m_LabelContainer); + container.Add(m_ContentContainer); + + hierarchy.Add(container); + } + } +} diff --git a/com.unity.shadergraph/Editor/Drawing/Views/HelpBoxRow.cs.meta b/com.unity.shadergraph/Editor/Drawing/Views/HelpBoxRow.cs.meta new file mode 100644 index 00000000000..61da493f791 --- /dev/null +++ b/com.unity.shadergraph/Editor/Drawing/Views/HelpBoxRow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2193a2e210bbc714d9db73d1ba2c6587 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Drawing/Views/IdentifierField.cs b/com.unity.shadergraph/Editor/Drawing/Views/IdentifierField.cs new file mode 100644 index 00000000000..82553e8f086 --- /dev/null +++ b/com.unity.shadergraph/Editor/Drawing/Views/IdentifierField.cs @@ -0,0 +1,94 @@ +using System; +using UnityEngine; +using UnityEngine.UIElements; + +namespace UnityEditor.ShaderGraph.Drawing +{ + /* + Field that allows entering a valid HLSL identifier. + (variable name, function name, ...) this means + no spaces, no funny characters, never starts with a number, ... + */ + public class IdentifierField : UIElements.TextValueField + { + IdentifierInput tsInput => (IdentifierInput)textInputBase; + + public new class UxmlFactory : UxmlFactory { } + public new class UxmlTraits : UIElements.TextValueFieldTraits { } + + protected override string ValueToString(string v) + { + return v; + } + + protected override string StringToValue(string str) + { + // Make sure this is a valid hlsl identifier. Allowed characters already ensures the characters are valid + // but identifiers can't start with a number so fix this here. + if (Char.IsDigit(str[0])) + { + return "_" + str; + } + else + { + return str; + } + } + + public new static readonly string ussClassName = "unity-identifierfield-field"; + public new static readonly string labelUssClassName = ussClassName + "__label"; + public new static readonly string inputUssClassName = ussClassName + "__input"; + + public IdentifierField() : this((string)null) { } + + public IdentifierField(string label) : base(label, -1, new IdentifierInput()) + { + AddToClassList(ussClassName); + labelElement.AddToClassList(labelUssClassName); + tsInput.AddToClassList(inputUssClassName); + } + + public override void ApplyInputDeviceDelta(Vector3 delta, UIElements.DeltaSpeed speed, string startValue) + { + tsInput.ApplyInputDeviceDelta(delta, speed, startValue); + } + + class IdentifierInput : TextValueInput + { + IdentifierField parentField => (IdentifierField)parent; + + internal IdentifierInput() + { + formatString = null; + } + + protected override string allowedCharacters + { + get { return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; } + } + + public override void ApplyInputDeviceDelta(Vector3 delta, UIElements.DeltaSpeed speed, string startValue) + { + } + + protected override string ValueToString(string v) + { + return v; + } + + protected override string StringToValue(string str) + { + // Make sure this is a valid hlsl identifier. Allowed characters already ensures the characters are valid + // but identifiers can't start with a number so fix this here. + if (Char.IsDigit(str[0])) + { + return "_" + str; + } + else + { + return str; + } + } + } + } +} diff --git a/com.unity.shadergraph/Editor/Drawing/Views/IdentifierField.cs.meta b/com.unity.shadergraph/Editor/Drawing/Views/IdentifierField.cs.meta new file mode 100644 index 00000000000..7c07d8ea4ff --- /dev/null +++ b/com.unity.shadergraph/Editor/Drawing/Views/IdentifierField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 991f68f49473a9d45a1586045c1e649c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Descriptors/PassDescriptor.cs b/com.unity.shadergraph/Editor/Generation/Descriptors/PassDescriptor.cs index 93000bb629e..8c42012a062 100644 --- a/com.unity.shadergraph/Editor/Generation/Descriptors/PassDescriptor.cs +++ b/com.unity.shadergraph/Editor/Generation/Descriptors/PassDescriptor.cs @@ -1,4 +1,4 @@ -namespace UnityEditor.ShaderGraph +namespace UnityEditor.ShaderGraph { [GenerationAPI] internal struct PassDescriptor @@ -8,6 +8,7 @@ internal struct PassDescriptor public string referenceName; public string lightMode; public bool useInPreview; + public bool virtualTextureFeedback; // Templates public string passTemplatePath; diff --git a/com.unity.shadergraph/Editor/Generation/Enumerations/PropertyType.cs b/com.unity.shadergraph/Editor/Generation/Enumerations/PropertyType.cs index 27a61878e13..8536749b539 100644 --- a/com.unity.shadergraph/Editor/Generation/Enumerations/PropertyType.cs +++ b/com.unity.shadergraph/Editor/Generation/Enumerations/PropertyType.cs @@ -1,4 +1,4 @@ -namespace UnityEditor.ShaderGraph.Internal +namespace UnityEditor.ShaderGraph.Internal { [GenerationAPI] public enum PropertyType @@ -17,6 +17,7 @@ public enum PropertyType Matrix2, Matrix3, Matrix4, - SamplerState + SamplerState, + VirtualTexture } } diff --git a/com.unity.shadergraph/Editor/Generation/Interface/IMasterNode.cs b/com.unity.shadergraph/Editor/Generation/Interface/IMasterNode.cs index 5d89a845bb4..8ee6c9acf8b 100644 --- a/com.unity.shadergraph/Editor/Generation/Interface/IMasterNode.cs +++ b/com.unity.shadergraph/Editor/Generation/Interface/IMasterNode.cs @@ -10,6 +10,7 @@ internal interface IMasterNode { string renderQueueTag { get; } string renderTypeTag { get; } + bool virtualTexturingEnabled { get; } ConditionalField[] GetConditionalFields(PassDescriptor pass); void ProcessPreviewMaterial(Material material); } diff --git a/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs b/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs index 419b341e2d3..b85068c0164 100644 --- a/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs +++ b/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs @@ -282,6 +282,9 @@ internal static void GetActiveFieldsAndPermutationsForNodes(AbstractMaterialNode NodeUtils.DepthFirstCollectNodesFromNode(localVertexNodes, outputNode, NodeUtils.IncludeSelf.Include, pass.vertexPorts, keywordCollector.permutations[i]); NodeUtils.DepthFirstCollectNodesFromNode(localPixelNodes, outputNode, NodeUtils.IncludeSelf.Include, pass.pixelPorts, keywordCollector.permutations[i]); + // This will ensure we only need screenpos for permutations that need vt feedback for more than one sample + bool vtFeedbackRequiresScreenPos = VirtualTexturingFeedbackUtils.CountFeedbackVariables(localPixelNodes) > 0; + // Track each vertex node in this permutation foreach(AbstractMaterialNode vertexNode in localVertexNodes) { @@ -304,7 +307,7 @@ internal static void GetActiveFieldsAndPermutationsForNodes(AbstractMaterialNode // Get requirements for this permutation vertexRequirements[i].SetRequirements(ShaderGraphRequirements.FromNodes(localVertexNodes, ShaderStageCapability.Vertex, false)); - pixelRequirements[i].SetRequirements(ShaderGraphRequirements.FromNodes(localPixelNodes, ShaderStageCapability.Fragment, false)); + pixelRequirements[i].SetRequirements(ShaderGraphRequirements.FromNodes(localPixelNodes, ShaderStageCapability.Fragment, false, vtFeedbackRequiresScreenPos)); // Add active fields var conditionalFields = GetActiveFieldsFromConditionals(GetConditionalFieldsFromGraphRequirements(vertexRequirements[i].requirements, activeFields[i])); @@ -318,9 +321,11 @@ internal static void GetActiveFieldsAndPermutationsForNodes(AbstractMaterialNode // No Keywords else { + bool vtFeedbackRequiresScreenPos = VirtualTexturingFeedbackUtils.CountFeedbackVariables(pixelNodes) > 0; + // Get requirements vertexRequirements.baseInstance.SetRequirements(ShaderGraphRequirements.FromNodes(vertexNodes, ShaderStageCapability.Vertex, false)); - pixelRequirements.baseInstance.SetRequirements(ShaderGraphRequirements.FromNodes(pixelNodes, ShaderStageCapability.Fragment, false)); + pixelRequirements.baseInstance.SetRequirements(ShaderGraphRequirements.FromNodes(pixelNodes, ShaderStageCapability.Fragment, false, vtFeedbackRequiresScreenPos)); // Add active fields var conditionalFields = GetActiveFieldsFromConditionals(GetConditionalFieldsFromGraphRequirements(vertexRequirements.baseInstance.requirements, activeFields.baseInstance)); @@ -690,7 +695,7 @@ internal static void GenerateSurfaceInputTransferCode(ShaderStringBuilder sb, Sh } } - internal static void GenerateSurfaceDescriptionStruct(ShaderStringBuilder surfaceDescriptionStruct, List slots, string structName = "SurfaceDescription", IActiveFieldsSet activeFields = null, bool isSubgraphOutput = false) + internal static void GenerateSurfaceDescriptionStruct(ShaderStringBuilder surfaceDescriptionStruct, List slots, string structName = "SurfaceDescription", IActiveFieldsSet activeFields = null, bool isSubgraphOutput = false, bool virtualTextureFeedback = false) { surfaceDescriptionStruct.AppendLine("struct {0}", structName); using (surfaceDescriptionStruct.BlockSemicolonScope()) @@ -726,6 +731,17 @@ internal static void GenerateSurfaceDescriptionStruct(ShaderStringBuilder surfac } } } + + if (virtualTextureFeedback) + { + surfaceDescriptionStruct.AppendLine("{0} {1};", ConcreteSlotValueType.Vector4.ToShaderString(ConcretePrecision.Float), VirtualTexturingFeedbackUtils.FeedbackSurfaceDescriptionVariableName); + + if (!isSubgraphOutput && activeFields != null) + { + var structField = new FieldDescriptor(structName, VirtualTexturingFeedbackUtils.FeedbackSurfaceDescriptionVariableName, ""); + activeFields.AddAll(structField); + } + } } } @@ -735,6 +751,7 @@ internal static void GenerateSurfaceDescriptionFunction( AbstractMaterialNode rootNode, GraphData graph, ShaderStringBuilder surfaceDescriptionFunction, + IncludeCollection includes, FunctionRegistry functionRegistry, PropertyCollector shaderProperties, KeywordCollector shaderKeywords, @@ -743,7 +760,8 @@ internal static void GenerateSurfaceDescriptionFunction( string surfaceDescriptionName = "SurfaceDescription", Vector1ShaderProperty outputIdProperty = null, IEnumerable slots = null, - string graphInputStructName = "SurfaceDescriptionInputs") + string graphInputStructName = "SurfaceDescriptionInputs", + bool virtualTextureFeedback = false) { if (graph == null) return; @@ -756,7 +774,7 @@ internal static void GenerateSurfaceDescriptionFunction( surfaceDescriptionFunction.AppendLine("{0} surface = ({0})0;", surfaceDescriptionName); for(int i = 0; i < nodes.Count; i++) { - GenerateDescriptionForNode(nodes[i], keywordPermutationsPerNode[i], functionRegistry, surfaceDescriptionFunction, + GenerateDescriptionForNode(nodes[i], keywordPermutationsPerNode[i], includes, functionRegistry, surfaceDescriptionFunction, shaderProperties, shaderKeywords, graph, mode); } @@ -767,6 +785,14 @@ internal static void GenerateSurfaceDescriptionFunction( GenerateSurfaceDescriptionRemap(graph, rootNode, slots, surfaceDescriptionFunction, mode); + if (virtualTextureFeedback) + { + VirtualTexturingFeedbackUtils.GenerateVirtualTextureFeedback(nodes, + keywordPermutationsPerNode, + surfaceDescriptionFunction, + shaderKeywords); + } + surfaceDescriptionFunction.AppendLine("return surface;"); } } @@ -774,6 +800,7 @@ internal static void GenerateSurfaceDescriptionFunction( static void GenerateDescriptionForNode( AbstractMaterialNode activeNode, List keywordPermutations, + IncludeCollection includes, FunctionRegistry functionRegistry, ShaderStringBuilder descriptionFunction, PropertyCollector shaderProperties, @@ -781,6 +808,11 @@ static void GenerateDescriptionForNode( GraphData graph, GenerationMode mode) { + if (activeNode is IGeneratesInclude includeNode) + { + includeNode.GenerateNodeInclude(includes, mode); + } + if (activeNode is IGeneratesFunction functionNode) { functionRegistry.builder.currentNode = activeNode; @@ -880,6 +912,7 @@ internal static void GenerateVertexDescriptionStruct(ShaderStringBuilder builder internal static void GenerateVertexDescriptionFunction( GraphData graph, ShaderStringBuilder builder, + IncludeCollection includes, FunctionRegistry functionRegistry, PropertyCollector shaderProperties, KeywordCollector shaderKeywords, @@ -903,7 +936,7 @@ internal static void GenerateVertexDescriptionFunction( builder.AppendLine("{0} description = ({0})0;", graphOutputStructName); for(int i = 0; i < nodes.Count; i++) { - GenerateDescriptionForNode(nodes[i], keywordPermutationsPerNode[i], functionRegistry, builder, + GenerateDescriptionForNode(nodes[i], keywordPermutationsPerNode[i], includes, functionRegistry, builder, shaderProperties, shaderKeywords, graph, mode); } diff --git a/com.unity.shadergraph/Editor/Generation/Processors/Generator.cs b/com.unity.shadergraph/Editor/Generation/Processors/Generator.cs index c81f78e8432..3f543429043 100644 --- a/com.unity.shadergraph/Editor/Generation/Processors/Generator.cs +++ b/com.unity.shadergraph/Editor/Generation/Processors/Generator.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.IO; @@ -245,6 +245,7 @@ void GenerateShaderPass(int targetIndex, PassDescriptor pass, ActiveFields activ // Function Registry var functionBuilder = new ShaderStringBuilder(); var functionRegistry = new FunctionRegistry(functionBuilder); + var graphIncludes = new IncludeCollection(); // Hash table of named $splice(name) commands // Key: splice token @@ -328,36 +329,6 @@ void GenerateShaderPass(int targetIndex, PassDescriptor pass, ActiveFields activ spliceCommands.Add("PassPragmas", command); } - // Includes - using (var preGraphIncludeBuilder = new ShaderStringBuilder()) - { - if(pass.includes != null) - { - foreach(IncludeCollection.Item include in pass.includes.Where(x => x.descriptor.location == IncludeLocation.Pregraph)) - { - if(include.TestActive(activeFields)) - preGraphIncludeBuilder.AppendLine(include.value); - } - } - - string command = GenerationUtils.GetSpliceCommand(preGraphIncludeBuilder.ToCodeBlock(), "PreGraphIncludes"); - spliceCommands.Add("PreGraphIncludes", command); - } - using (var postGraphIncludeBuilder = new ShaderStringBuilder()) - { - if(pass.includes != null) - { - foreach(IncludeCollection.Item include in pass.includes.Where(x => x.descriptor.location == IncludeLocation.Postgraph)) - { - if(include.TestActive(activeFields)) - postGraphIncludeBuilder.AppendLine(include.value); - } - } - - string command = GenerationUtils.GetSpliceCommand(postGraphIncludeBuilder.ToCodeBlock(), "PostGraphIncludes"); - spliceCommands.Add("PostGraphIncludes", command); - } - // Keywords using (var passKeywordBuilder = new ShaderStringBuilder()) { @@ -477,6 +448,7 @@ void GenerateShaderPass(int targetIndex, PassDescriptor pass, ActiveFields activ GenerationUtils.GenerateVertexDescriptionFunction( m_GraphData, vertexGraphFunctionBuilder, + graphIncludes, functionRegistry, propertyCollector, keywordCollector, @@ -512,10 +484,7 @@ void GenerateShaderPass(int targetIndex, PassDescriptor pass, ActiveFields activ // Build pixel graph outputs // Add struct fields to active fields - if (m_OutputNode is SubGraphOutputNode) - GenerationUtils.GenerateSurfaceDescriptionStruct(pixelGraphOutputBuilder, pixelSlots, pixelGraphOutputName, activeFields.baseInstance, true); - else - GenerationUtils.GenerateSurfaceDescriptionStruct(pixelGraphOutputBuilder, pixelSlots, pixelGraphOutputName, activeFields.baseInstance); + GenerationUtils.GenerateSurfaceDescriptionStruct(pixelGraphOutputBuilder, pixelSlots, pixelGraphOutputName, activeFields.baseInstance, m_OutputNode is SubGraphOutputNode, pass.virtualTextureFeedback); // Build pixel graph functions from ShaderPass pixel port mask GenerationUtils.GenerateSurfaceDescriptionFunction( @@ -524,6 +493,7 @@ void GenerateShaderPass(int targetIndex, PassDescriptor pass, ActiveFields activ m_OutputNode, m_GraphData, pixelGraphFunctionBuilder, + graphIncludes, functionRegistry, propertyCollector, keywordCollector, @@ -532,7 +502,8 @@ void GenerateShaderPass(int targetIndex, PassDescriptor pass, ActiveFields activ pixelGraphOutputName, null, pixelSlots, - pixelGraphInputName); + pixelGraphInputName, + pass.virtualTextureFeedback); using (var pixelBuilder = new ShaderStringBuilder()) { @@ -547,10 +518,53 @@ void GenerateShaderPass(int targetIndex, PassDescriptor pass, ActiveFields activ spliceCommands.Add("GraphPixel", pixelBuilder.ToCodeBlock()); } + // -------------------------------------------------- + // Includes (including Graph Includes) + using (var preGraphIncludeBuilder = new ShaderStringBuilder()) + { + if (pass.includes != null) + { + foreach (IncludeCollection.Item include in pass.includes.Where(x => x.descriptor.location == IncludeLocation.Pregraph)) + { + if (include.TestActive(activeFields)) + preGraphIncludeBuilder.AppendLine(include.value); + } + } + + foreach (IncludeCollection.Item include in graphIncludes.Where(x => x.descriptor.location == IncludeLocation.Pregraph)) + { + if (include.TestActive(activeFields)) + preGraphIncludeBuilder.AppendLine(include.value); + } + + string command = GenerationUtils.GetSpliceCommand(preGraphIncludeBuilder.ToCodeBlock(), "PreGraphIncludes"); + spliceCommands.Add("PreGraphIncludes", command); + } + using (var postGraphIncludeBuilder = new ShaderStringBuilder()) + { + if (pass.includes != null) + { + foreach (IncludeCollection.Item include in pass.includes.Where(x => x.descriptor.location == IncludeLocation.Postgraph)) + { + if (include.TestActive(activeFields)) + postGraphIncludeBuilder.AppendLine(include.value); + } + } + + foreach (IncludeCollection.Item include in graphIncludes.Where(x => x.descriptor.location == IncludeLocation.Pregraph)) + { + if (include.TestActive(activeFields)) + postGraphIncludeBuilder.AppendLine(include.value); + } + + string command = GenerationUtils.GetSpliceCommand(postGraphIncludeBuilder.ToCodeBlock(), "PostGraphIncludes"); + spliceCommands.Add("PostGraphIncludes", command); + } + // -------------------------------------------------- // Graph Functions - if(functionBuilder.length == 0) + if (functionBuilder.length == 0) functionBuilder.AppendLine("// GraphFunctions: "); spliceCommands.Add("GraphFunctions", functionBuilder.ToCodeBlock()); @@ -579,10 +593,10 @@ void GenerateShaderPass(int targetIndex, PassDescriptor pass, ActiveFields activ // -------------------------------------------------- // Dots Instanced Graph Properties - int instancedPropCount = propertyCollector.GetDotsInstancingPropertiesCount(m_Mode); + bool hasDotsInstancedProps = propertyCollector.DotsInstancingProperties(m_Mode).Any(); using (var dotsInstancedPropertyBuilder = new ShaderStringBuilder()) { - if (instancedPropCount > 0) + if (hasDotsInstancedProps) dotsInstancedPropertyBuilder.AppendLines(propertyCollector.GetDotsInstancingPropertiesDeclaration(m_Mode)); else dotsInstancedPropertyBuilder.AppendLine("// HybridV1InjectedBuiltinProperties: "); @@ -598,7 +612,7 @@ void GenerateShaderPass(int targetIndex, PassDescriptor pass, ActiveFields activ // if the shader graph has a nonzero amount of DOTS instanced properties. // This can be removed once Hybrid V1 is removed. #if !ENABLE_HYBRID_RENDERER_V2 - if (instancedPropCount > 0) + if (hasDotsInstancedProps) { dotsInstancingOptionsBuilder.AppendLine("#if SHADER_TARGET >= 35 && (defined(SHADER_API_D3D11) || defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE) || defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) || defined(SHADER_API_VULKAN) || defined(SHADER_API_METAL))"); dotsInstancingOptionsBuilder.AppendLine(" #define UNITY_SUPPORT_INSTANCING"); diff --git a/com.unity.shadergraph/Editor/Generation/Processors/PropertyCollector.cs b/com.unity.shadergraph/Editor/Generation/Processors/PropertyCollector.cs index 7ee47c40d24..39a7a4ce78d 100644 --- a/com.unity.shadergraph/Editor/Generation/Processors/PropertyCollector.cs +++ b/com.unity.shadergraph/Editor/Generation/Processors/PropertyCollector.cs @@ -25,68 +25,81 @@ public void AddShaderProperty(AbstractShaderProperty chunk) public void GetPropertiesDeclaration(ShaderStringBuilder builder, GenerationMode mode, ConcretePrecision inheritedPrecision) { - // Hybrid V1 generates a special version of UnityPerMaterial, which has dummy constants for - // instanced properties, and regular constants for other properties. - // Hybrid V2 generates a perfectly normal UnityPerMaterial, but needs to append - // a UNITY_DOTS_INSTANCING_START/END block after it that contains the instanced properties. - #if !ENABLE_HYBRID_RENDERER_V2 foreach (var prop in properties) { prop.ValidateConcretePrecision(inheritedPrecision); } - var batchAll = mode == GenerationMode.Preview; + if (mode == GenerationMode.Preview) + { + builder.AppendLine("CBUFFER_START(UnityPerMaterial)"); + foreach (var prop in properties.Where(p => !p.gpuInstanced)) // all non-gpu instanced properties (even non-batchable ones) - preview is weird + { + prop.AppendBatchablePropertyDeclarations(builder); + prop.AppendNonBatchablePropertyDeclarations(builder); + } + var GPUInstancedProperties = properties.Where(p => p.gpuInstanced); + if (GPUInstancedProperties.Any()) + { + builder.AppendLine("#ifdef UNITY_HYBRID_V1_INSTANCING_ENABLED"); + foreach (var prop in GPUInstancedProperties) + { + prop.AppendBatchablePropertyDeclarations(builder, "_dummy;"); + } + builder.AppendLine("#else"); + foreach (var prop in GPUInstancedProperties) + { + prop.AppendBatchablePropertyDeclarations(builder); + } + builder.AppendLine("#endif"); + } + builder.AppendLine("CBUFFER_END"); + return; + } + + // Hybrid V1 generates a special version of UnityPerMaterial, which has dummy constants for + // instanced properties, and regular constants for other properties. + // Hybrid V2 generates a perfectly normal UnityPerMaterial, but needs to append + // a UNITY_DOTS_INSTANCING_START/END block after it that contains the instanced properties. + +#if !ENABLE_HYBRID_RENDERER_V2 builder.AppendLine("CBUFFER_START(UnityPerMaterial)"); - int instancedCount = 0; - foreach (var prop in properties.Where(n => batchAll || (n.generatePropertyBlock && n.isBatchable))) + + // non-GPU instanced properties go first in the UnityPerMaterial cbuffer + var batchableProperties = properties.Where(n => n.generatePropertyBlock && n.hasBatchableProperties); + foreach (var prop in batchableProperties) { if (!prop.gpuInstanced) - builder.AppendLine(prop.GetPropertyDeclarationString()); - else - instancedCount++; + prop.AppendBatchablePropertyDeclarations(builder); } - if (instancedCount > 0) + var batchableGPUInstancedProperties = batchableProperties.Where(p => p.gpuInstanced); + if (batchableGPUInstancedProperties.Any()) { builder.AppendLine("#ifdef UNITY_HYBRID_V1_INSTANCING_ENABLED"); - foreach (var prop in properties.Where(n => batchAll || (n.generatePropertyBlock && n.isBatchable))) + foreach (var prop in batchableGPUInstancedProperties) { - if (prop.gpuInstanced) - builder.AppendLine(prop.GetPropertyDeclarationString("_dummy;")); + // TODO: why is this inserting a dummy value? this won't work on complex properties... + prop.AppendBatchablePropertyDeclarations(builder, "_dummy;"); } builder.AppendLine("#else"); - foreach (var prop in properties.Where(n => batchAll || (n.generatePropertyBlock && n.isBatchable))) + foreach (var prop in batchableGPUInstancedProperties) { - if (prop.gpuInstanced) - builder.AppendLine(prop.GetPropertyDeclarationString()); + prop.AppendBatchablePropertyDeclarations(builder); } builder.AppendLine("#endif"); } builder.AppendLine("CBUFFER_END"); +#else + // TODO: need to test this path with HYBRID_RENDERER_V2 ... - if (batchAll) - return; - - foreach (var prop in properties.Where(n => !n.isBatchable || !n.generatePropertyBlock)) - { - builder.AppendLine(prop.GetPropertyDeclarationString()); - } - - #else - - foreach (var prop in properties) - { - prop.ValidateConcretePrecision(inheritedPrecision); - } - - var batchAll = mode == GenerationMode.Preview; builder.AppendLine("CBUFFER_START(UnityPerMaterial)"); int instancedCount = 0; - foreach (var prop in properties.Where(n => batchAll || (n.generatePropertyBlock && n.isBatchable))) + foreach (var prop in properties.Where(n => n.generatePropertyBlock && n.hasBatchableProperties)) { if (!prop.gpuInstanced) - builder.AppendLine(prop.GetPropertyDeclarationString()); + prop.AppendBatchablePropertyDeclarations(builder); else instancedCount++; } @@ -94,10 +107,10 @@ public void GetPropertiesDeclaration(ShaderStringBuilder builder, GenerationMode if (instancedCount > 0) { builder.AppendLine("// Hybrid instanced properties"); - foreach (var prop in properties.Where(n => batchAll || (n.generatePropertyBlock && n.isBatchable))) + foreach (var prop in properties.Where(n => n.generatePropertyBlock && n.hasBatchableProperties)) { if (prop.gpuInstanced) - builder.AppendLine(prop.GetPropertyDeclarationString()); + prop.AppendBatchablePropertyDeclarations(builder); } } builder.AppendLine("CBUFFER_END"); @@ -108,7 +121,7 @@ public void GetPropertiesDeclaration(ShaderStringBuilder builder, GenerationMode builder.AppendLine("// DOTS instancing definitions"); builder.AppendLine("UNITY_DOTS_INSTANCING_START(MaterialPropertyMetadata)"); - foreach (var prop in properties.Where(n => batchAll || (n.generatePropertyBlock && n.isBatchable))) + foreach (var prop in properties.Where(n => n.generatePropertyBlock && n.hasBatchableProperties)) { if (prop.gpuInstanced) { @@ -120,7 +133,7 @@ public void GetPropertiesDeclaration(ShaderStringBuilder builder, GenerationMode builder.AppendLine("UNITY_DOTS_INSTANCING_END(MaterialPropertyMetadata)"); builder.AppendLine("// DOTS instancing usage macros"); - foreach (var prop in properties.Where(n => batchAll || (n.generatePropertyBlock && n.isBatchable))) + foreach (var prop in properties.Where(n => n.generatePropertyBlock && n.hasBatchableProperties)) { if (prop.gpuInstanced) { @@ -129,25 +142,26 @@ public void GetPropertiesDeclaration(ShaderStringBuilder builder, GenerationMode builder.AppendLine($"#define {n} UNITY_ACCESS_DOTS_INSTANCED_PROP_FROM_MACRO({type}, Metadata_{n})"); } } - builder.AppendLine("#endif"); } +#endif - if (batchAll) - return; - - foreach (var prop in properties.Where(n => !n.isBatchable || !n.generatePropertyBlock)) + // declare non-batchable properties + builder.AppendLine("// START Non-batchable properties:"); + foreach (var prop in properties.Where(n => n.hasNonBatchableProperties || !n.generatePropertyBlock)) { - builder.AppendLine(prop.GetPropertyDeclarationString()); - } + prop.AppendNonBatchablePropertyDeclarations(builder); - #endif + if (prop.hasBatchableProperties && !prop.generatePropertyBlock) // batchable properties that don't generate property block can't be instanced, get put here + prop.AppendBatchablePropertyDeclarations(builder); + } + builder.AppendLine("// END Non-batchable properties:"); } - public int GetDotsInstancingPropertiesCount(GenerationMode mode) + public IEnumerable DotsInstancingProperties(GenerationMode mode) { - var batchAll = mode == GenerationMode.Preview; - return properties.Where(n => (batchAll || (n.generatePropertyBlock && n.isBatchable)) && n.gpuInstanced).Count(); + var previewMode = (mode == GenerationMode.Preview); + return properties.Where(n => (previewMode || (n.generatePropertyBlock && n.hasBatchableProperties)) && n.gpuInstanced); } public string GetDotsInstancingPropertiesDeclaration(GenerationMode mode) @@ -159,34 +173,28 @@ public string GetDotsInstancingPropertiesDeclaration(GenerationMode mode) var builder = new ShaderStringBuilder(); var batchAll = mode == GenerationMode.Preview; - int instancedCount = GetDotsInstancingPropertiesCount(mode); + var dotsInstancingProperties = DotsInstancingProperties(mode); - if (instancedCount > 0) + if (dotsInstancingProperties.Any()) { builder.AppendLine("#if defined(UNITY_HYBRID_V1_INSTANCING_ENABLED)"); builder.Append("#define HYBRID_V1_CUSTOM_ADDITIONAL_MATERIAL_VARS\t"); int count = 0; - foreach (var prop in properties.Where(n => batchAll || (n.generatePropertyBlock && n.isBatchable))) + foreach (var prop in dotsInstancingProperties) { - if (prop.gpuInstanced) - { - string varName = $"{prop.referenceName}_Array"; - string sType = prop.concreteShaderValueType.ToShaderString(prop.concretePrecision); - builder.Append("UNITY_DEFINE_INSTANCED_PROP({0}, {1})", sType, varName); - if (count < instancedCount - 1) - builder.Append("\\"); - builder.AppendLine(""); - count++; - } + string varName = $"{prop.referenceName}_Array"; + string sType = prop.concreteShaderValueType.ToShaderString(prop.concretePrecision); + builder.Append("UNITY_DEFINE_INSTANCED_PROP({0}, {1})", sType, varName); +// if (count < instancedCount - 1) +// builder.Append("\\"); + builder.AppendLine(""); + count++; } - foreach (var prop in properties.Where(n => batchAll || (n.generatePropertyBlock && n.isBatchable))) + foreach (var prop in dotsInstancingProperties) { - if (prop.gpuInstanced) - { - string varName = $"{prop.referenceName}_Array"; - builder.AppendLine("#define {0} UNITY_ACCESS_INSTANCED_PROP(unity_Builtins0, {1})", prop.referenceName, varName); - } + string varName = $"{prop.referenceName}_Array"; + builder.AppendLine("#define {0} UNITY_ACCESS_INSTANCED_PROP(unity_Builtins0, {1})", prop.referenceName, varName); } } builder.AppendLine("#endif"); diff --git a/com.unity.shadergraph/Editor/Generation/Processors/ShaderGeneratorNames.cs b/com.unity.shadergraph/Editor/Generation/Processors/ShaderGeneratorNames.cs index e62382ed0dd..111ce852d67 100644 --- a/com.unity.shadergraph/Editor/Generation/Processors/ShaderGeneratorNames.cs +++ b/com.unity.shadergraph/Editor/Generation/Processors/ShaderGeneratorNames.cs @@ -12,6 +12,7 @@ static class ShaderGeneratorNames public const string VertexColor = "VertexColor"; public const string FaceSign = "FaceSign"; public const string TimeParameters = "TimeParameters"; + public const string PixelCoordinate = "PixelCoordinate"; public static string GetUVName(this UVChannel channel) { diff --git a/com.unity.shadergraph/Editor/Generation/Targets/PreviewTarget.cs b/com.unity.shadergraph/Editor/Generation/Targets/PreviewTarget.cs index 762d9e19ea7..b28487257cb 100644 --- a/com.unity.shadergraph/Editor/Generation/Targets/PreviewTarget.cs +++ b/com.unity.shadergraph/Editor/Generation/Targets/PreviewTarget.cs @@ -1,4 +1,4 @@ -using UnityEngine.Rendering; +using UnityEngine.Rendering; namespace UnityEditor.ShaderGraph { @@ -71,6 +71,7 @@ static class Passes { // Pre-graph { "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl", IncludeLocation.Pregraph }, + { "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl", IncludeLocation.Pregraph }, // TODO: put this on a conditional { "Packages/com.unity.render-pipelines.core/ShaderLibrary/Packing.hlsl", IncludeLocation.Pregraph }, { "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl", IncludeLocation.Pregraph }, { "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl", IncludeLocation.Pregraph }, diff --git a/com.unity.shadergraph/Editor/Generation/Templates/PassMesh.template b/com.unity.shadergraph/Editor/Generation/Templates/PassMesh.template index 6e13b0cbe81..1fdb927d11f 100644 --- a/com.unity.shadergraph/Editor/Generation/Templates/PassMesh.template +++ b/com.unity.shadergraph/Editor/Generation/Templates/PassMesh.template @@ -75,6 +75,9 @@ Pass // -------------------------------------------------- // Graph + // Graph Includes + $splice(GraphIncludes) + // Graph Properties $splice(GraphProperties) diff --git a/com.unity.shadergraph/Editor/Importers/ShaderSubGraphImporter.cs b/com.unity.shadergraph/Editor/Importers/ShaderSubGraphImporter.cs index fb97f37ba0b..1cef108f318 100644 --- a/com.unity.shadergraph/Editor/Importers/ShaderSubGraphImporter.cs +++ b/com.unity.shadergraph/Editor/Importers/ShaderSubGraphImporter.cs @@ -77,8 +77,10 @@ public override void OnImportAsset(AssetImportContext ctx) static void ProcessSubGraph(SubGraphAsset asset, GraphData graph) { + var includes = new IncludeCollection(); var registry = new FunctionRegistry(new ShaderStringBuilder(), true); registry.names.Clear(); + asset.includes.Clear(); asset.functions.Clear(); asset.nodeProperties.Clear(); asset.isValid = true; @@ -112,7 +114,9 @@ static void ProcessSubGraph(SubGraphAsset asset, GraphData graph) } } - asset.requirements = ShaderGraphRequirements.FromNodes(nodes, asset.effectiveShaderStage, false); + asset.vtFeedbackVariables = VirtualTexturingFeedbackUtils.GetFeedbackVariables(outputNode); + + asset.requirements = ShaderGraphRequirements.FromNodes(nodes, asset.effectiveShaderStage, false, asset.vtFeedbackVariables.Count > 1); asset.inputs = graph.properties.ToList(); asset.keywords = graph.keywords.ToList(); asset.graphPrecision = graph.concretePrecision; @@ -161,6 +165,10 @@ static void ProcessSubGraph(SubGraphAsset asset, GraphData graph) generatesFunction.GenerateNodeFunction(registry, GenerationMode.ForReals); registry.builder.ReplaceInCurrentMapping(PrecisionUtil.Token, node.concretePrecision.ToShaderString()); } + if (node is IGeneratesInclude generatesInclude) + { + generatesInclude.GenerateNodeInclude(includes, GenerationMode.ForReals); + } } registry.ProvideFunction(asset.functionName, sb => @@ -183,6 +191,10 @@ static void ProcessSubGraph(SubGraphAsset asset, GraphData graph) foreach (var output in asset.outputs) arguments.Add($"out {output.concreteValueType.ToShaderString(asset.outputPrecision)} {output.shaderOutputName}_{output.id}"); + // Vt Feedback arguments + foreach (var output in asset.vtFeedbackVariables) + arguments.Add($"out {ConcreteSlotValueType.Vector4.ToShaderString(ConcretePrecision.Float)} {output}_out"); + // Create the function prototype from the arguments sb.AppendLine("void {0}({1})" , asset.functionName @@ -206,9 +218,15 @@ static void ProcessSubGraph(SubGraphAsset asset, GraphData graph) { sb.AppendLine($"{slot.shaderOutputName}_{slot.id} = {outputNode.GetSlotValue(slot.id, GenerationMode.ForReals, asset.outputPrecision)};"); } + + foreach (var slot in asset.vtFeedbackVariables) + { + sb.AppendLine($"{slot}_out = {slot};"); + } } }); + asset.includes.AddRange(includes.Select(x => new SubGraphInclude(x.descriptor.value, "" + x.descriptor.location))); asset.functions.AddRange(registry.names.Select(x => new FunctionPair(x, registry.sources[x].code))); var collector = new PropertyCollector(); diff --git a/com.unity.shadergraph/Editor/Resources/Styles/HelpBoxRow.uss b/com.unity.shadergraph/Editor/Resources/Styles/HelpBoxRow.uss new file mode 100644 index 00000000000..d090df104f1 --- /dev/null +++ b/com.unity.shadergraph/Editor/Resources/Styles/HelpBoxRow.uss @@ -0,0 +1,54 @@ +HelpBoxRow > #container{ + flex-grow: 1; + padding-left: 8px; + padding-right: 8px; + flex-direction: row; +} + +HelpBoxRow > #container > #label { + width : 20px; + height : 20px; + align-self: center; + margin-right: 8px; +} + +HelpBoxRow > #container > #content { + flex-grow: 1; + justify-content: center; +} + +HelpBoxRow > * +{ + color:#584308; + white-space: normal; +} + +.help-box-row-style-info +{ + background-color: #6ed7fc; +} + +.help-box-row-style-info #label +{ + background-image : resource("console.infoicon"); +} + +.help-box-row-style-warning +{ + background-color: #fcd76e; +} + +.help-box-row-style-warning #label +{ + background-image : resource("console.warnicon"); +} + +.help-box-row-style-error +{ + background-color: #fc6e6e; +} + +.help-box-row-style-error #label +{ + background-image : resource("console.erroricon"); +} diff --git a/com.unity.shadergraph/Editor/Resources/Styles/HelpBoxRow.uss.meta b/com.unity.shadergraph/Editor/Resources/Styles/HelpBoxRow.uss.meta new file mode 100644 index 00000000000..68ff459546d --- /dev/null +++ b/com.unity.shadergraph/Editor/Resources/Styles/HelpBoxRow.uss.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0c3b27af341d91469183b16b7d6638b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} + disableValidation: 0 diff --git a/com.unity.testing.hdrp/Scripts/VirtualTexturingTestSceneController.cs b/com.unity.testing.hdrp/Scripts/VirtualTexturingTestSceneController.cs new file mode 100644 index 00000000000..b3699a14e20 --- /dev/null +++ b/com.unity.testing.hdrp/Scripts/VirtualTexturingTestSceneController.cs @@ -0,0 +1,116 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class VirtualTexturingTestSceneController : MonoBehaviour +{ + // Scene control isn't activated until a key is pressed. + private bool activated = false; + + // Rotational directional light + public GameObject dirLight; + public bool rotateLight = true; + public float rotationDegPerS = 45.0f; + + // Camera movement + private bool cameraMovement = true; + protected GameObject cameraGO; + + // Rotation + public float sensitivity = 30.0f; + public float maxX = 88.0f; + public float minX = -5.0f; + private float rotX = 0.0f; + private float rotY = 0.0f; + + // Zoom + public float minCameraDist = 1.0f; + public float maxCameraDist = 15.0f; + private float currentDist = 5.0f; + private float scrollSensitivity = 4.5f; + + void Start() + { + cameraGO = Camera.main.gameObject; + currentDist = Vector3.Distance(cameraGO.transform.position, transform.position); + rotX = cameraGO.transform.eulerAngles.x; + rotY = cameraGO.transform.eulerAngles.y; + } + + public void Update() + { + + // Don't do anything until this has been actived, which is done with any input. + if (Input.anyKeyDown) + { + activated = true; + } + else if (!activated) + { + return; + } + + if (Input.GetKeyDown("z")) + { + rotateLight = !rotateLight; + if (dirLight == null) Debug.LogWarning("Warning: dirLight == null"); + } + if (Input.GetKeyDown("x")) + { + cameraMovement = !cameraMovement; + } + if (Input.GetKeyDown("t")) + { +#if ENABLE_VIRTUALTEXTURES + UnityEngine.Rendering.VirtualTexturing.Debugging.debugTilesEnabled = !UnityEngine.Rendering.VirtualTexturing.Debugging.debugTilesEnabled; +#endif + } + + if (dirLight != null && rotateLight) + { + dirLight.transform.eulerAngles += new Vector3(0.0f, (rotationDegPerS * Time.deltaTime), 0.0f); + } + + // Camera distance + currentDist -= Input.GetAxis("Mouse ScrollWheel") * scrollSensitivity; + if (currentDist < minCameraDist) currentDist = minCameraDist; + if (currentDist > maxCameraDist) currentDist = maxCameraDist; + + // Camera movement + if (cameraMovement) MoveCamera(); + } + + private void MoveCamera() + { + // Set rotation + float gainX = Input.GetAxis("Mouse Y"); + float gainY = Input.GetAxis("Mouse X"); + + rotX += (gainX * Time.deltaTime * sensitivity); + rotY -= (gainY * Time.deltaTime * sensitivity); + if (rotX < minX) rotX = minX; + if (rotX > maxX) rotX = maxX; + rotY %= 360.0f; + if (rotY < 0.0f) rotY += 360.0f; + + cameraGO.transform.eulerAngles = new Vector3(rotX, rotY, 0.0f); + + // Set position + float sinY = Mathf.Sin(rotY * Mathf.Deg2Rad); + float sinX = Mathf.Sin(rotX * Mathf.Deg2Rad); + float cosY = Mathf.Cos(rotY * Mathf.Deg2Rad); + float cosX = Mathf.Cos(rotX * Mathf.Deg2Rad); + cameraGO.transform.position = + GetRotationPointGameObj().transform.position + + new Vector3( + (currentDist * -sinY) * cosX, + (currentDist * sinX), + (currentDist * -cosY) * cosX); + } + + protected virtual GameObject GetRotationPointGameObj() + { + return gameObject; + } + +} diff --git a/com.unity.testing.hdrp/Scripts/VirtualTexturingTestSceneController.cs.meta b/com.unity.testing.hdrp/Scripts/VirtualTexturingTestSceneController.cs.meta new file mode 100644 index 00000000000..40faad83641 --- /dev/null +++ b/com.unity.testing.hdrp/Scripts/VirtualTexturingTestSceneController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0a0fe6dffef10d418605b143e1a8e4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: