diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/CommonAssets/Materials/BI-UV Map.mat b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/CommonAssets/Materials/BI-UV Map.mat new file mode 100644 index 00000000000..aa2441548f3 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/CommonAssets/Materials/BI-UV Map.mat @@ -0,0 +1,180 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2777798440943170135 +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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BI-UV Map + m_Shader: {fileID: -6465566751694194690, guid: 7e26e8f04c77cf7429bd7efa3d80141e, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AmbientOcclusion: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 2800000, guid: b4ea3eedbbeab5c4fb300fb5293a93c5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ClearCoatMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicSpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _BUILTIN_AlphaClip: 0 + - _BUILTIN_Blend: 0 + - _BUILTIN_CullMode: 2 + - _BUILTIN_DstBlend: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _BUILTIN_SrcBlend: 1 + - _BUILTIN_Surface: 0 + - _BUILTIN_ZTest: 4 + - _BUILTIN_ZWrite: 1 + - _BUILTIN_ZWriteControl: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ClearCoat: 0 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossinessSource: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueControl: -1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _ReflectionSource: 0 + - _Shininess: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - Tiling: {r: 1, g: 1, b: 0, a: 0} + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _Offset: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &2496664280657295510 +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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 5 diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/CommonAssets/Materials/BI-UV Map.mat.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/CommonAssets/Materials/BI-UV Map.mat.meta new file mode 100644 index 00000000000..c3d3533fc44 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/CommonAssets/Materials/BI-UV Map.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 84ee8f1b8a5e55f498d61cd54afce293 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/070_FullscreenEffects.png b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/070_FullscreenEffects.png new file mode 100644 index 00000000000..236a6f980d7 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/070_FullscreenEffects.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e518e5ae8c5bc2ad003a3e3fd040c06120013e8dc928553852cf110f0e632ac +size 114578 diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/070_FullscreenEffects.png.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/070_FullscreenEffects.png.meta new file mode 100644 index 00000000000..02ed96fbafa --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/070_FullscreenEffects.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 1298828cb3c693a47b96758986b57b38 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects.meta new file mode 100644 index 00000000000..72f30335bb9 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 27fdebc771916e849aca4098892f878d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects.unity b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects.unity new file mode 100644 index 00000000000..5ec638ecb5c --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects.unity @@ -0,0 +1,2219 @@ +%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: 10304, guid: 0000000000000000f000000000000000, type: 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.18385503, g: 0.22906253, b: 0.30347347, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + 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: 0 + 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: 112000002, guid: 0443133b73b356f449027ce62f5cc170, + type: 2} + m_LightingSettings: {fileID: 4890085278179872738, guid: 2c3dbc93abd102a4990ba5f7b15fc33e, + 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 &55781357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 55781358} + - component: {fileID: 55781361} + - component: {fileID: 55781360} + - component: {fileID: 55781359} + m_Layer: 0 + m_Name: Sphere (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &55781358 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55781357} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.08, y: -1, z: 3.674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &55781359 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55781357} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &55781360 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55781357} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, 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: 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 &55781361 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55781357} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &75551322 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 75551323} + - component: {fileID: 75551326} + - component: {fileID: 75551325} + - component: {fileID: 75551324} + m_Layer: 0 + m_Name: Sphere (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &75551323 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75551322} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.6729999, y: -3.5, z: 3.674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &75551324 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75551322} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &75551325 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75551322} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, 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: 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 &75551326 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75551322} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &132935364 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 132935365} + - component: {fileID: 132935367} + - component: {fileID: 132935366} + m_Layer: 5 + m_Name: BlueTint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &132935365 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132935364} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 390770347} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &132935366 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132935364} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 8400000, guid: c7402e76ade7cb54fabb71e9db1bde5a, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &132935367 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132935364} + m_CullTransparentMesh: 1 +--- !u!1 &324526213 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 324526214} + - component: {fileID: 324526217} + - component: {fileID: 324526216} + - component: {fileID: 324526215} + m_Layer: 0 + m_Name: Sphere (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &324526214 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 324526213} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.577, y: -1.75, z: 3.674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &324526215 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 324526213} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &324526216 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 324526213} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, 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: 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 &324526217 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 324526213} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &390770346 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 390770347} + - component: {fileID: 390770349} + - component: {fileID: 390770348} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &390770347 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390770346} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 132935365} + - {fileID: 1184374070} + - {fileID: 1707275100} + - {fileID: 440491750} + m_Father: {fileID: 1849218150} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &390770348 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390770346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 200, y: 200} + m_Spacing: {x: 0, y: 0} + m_Constraint: 0 + m_ConstraintCount: 2 +--- !u!222 &390770349 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390770346} + m_CullTransparentMesh: 1 +--- !u!1 &423064482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 423064486} + - component: {fileID: 423064485} + - component: {fileID: 423064484} + - component: {fileID: 423064483} + m_Layer: 0 + m_Name: Position + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &423064483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 423064482} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a2689fc717e65c94c88ced6e08e35908, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: -876546973899608171, guid: 29291f02465ceda4fad2fa7d2422698e, + type: 3} +--- !u!81 &423064484 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 423064482} + m_Enabled: 1 +--- !u!20 &423064485 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 423064482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + 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.3 + far clip plane: 10 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 8400000, guid: 814843923a04487408e5e33ea06ceca4, type: 2} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &423064486 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 423064482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.94, y: 2.11, z: -2.730823} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &440491749 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 440491750} + - component: {fileID: 440491752} + - component: {fileID: 440491751} + m_Layer: 5 + m_Name: ViewDIr + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &440491750 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440491749} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 390770347} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &440491751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440491749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 8400000, guid: ac88441584a4add4a9066ed004fde47b, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &440491752 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440491749} + m_CullTransparentMesh: 1 +--- !u!1 &584638284 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 584638288} + - component: {fileID: 584638287} + - component: {fileID: 584638286} + - component: {fileID: 584638285} + m_Layer: 0 + m_Name: ViewDir + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &584638285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 584638284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a2689fc717e65c94c88ced6e08e35908, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: -876546973899608171, guid: b5f611447d8b5f14a80b6d53bf04d1ba, + type: 3} +--- !u!81 &584638286 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 584638284} + m_Enabled: 1 +--- !u!20 &584638287 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 584638284} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + 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.3 + far clip plane: 10 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 8400000, guid: ac88441584a4add4a9066ed004fde47b, type: 2} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &584638288 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 584638284} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.0770967, y: 0.35829902, z: -2.730823} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &656724707 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 656724711} + - component: {fileID: 656724710} + - component: {fileID: 656724709} + - component: {fileID: 656724708} + m_Layer: 0 + m_Name: BlueTintCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &656724708 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656724707} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a2689fc717e65c94c88ced6e08e35908, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: -876546973899608171, guid: 3ef4ebc2ab231ca4da3433365dfee29a, + type: 3} +--- !u!81 &656724709 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656724707} + m_Enabled: 1 +--- !u!20 &656724710 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656724707} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + 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.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 8400000, guid: c7402e76ade7cb54fabb71e9db1bde5a, type: 2} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &656724711 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656724707} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.0770967, y: 0.35829902, z: -2.730823} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &687823239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 687823240} + - component: {fileID: 687823243} + - component: {fileID: 687823242} + - component: {fileID: 687823241} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &687823240 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687823239} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.577, y: 0, z: 3.674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &687823241 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687823239} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &687823242 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687823239} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, 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: 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 &687823243 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687823239} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &705939300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 705939301} + - component: {fileID: 705939304} + - component: {fileID: 705939303} + - component: {fileID: 705939302} + m_Layer: 0 + m_Name: Sphere (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &705939301 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705939300} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.923, y: -2, z: 3.674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &705939302 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705939300} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &705939303 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705939300} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, 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: 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 &705939304 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705939300} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &971756569 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 971756575} + - component: {fileID: 971756574} + - component: {fileID: 971756572} + - component: {fileID: 971756571} + - component: {fileID: 971756570} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &971756570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971756569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} + m_Name: + m_EditorClassIdentifier: + ImageComparisonSettings: + TargetWidth: 640 + TargetHeight: 360 + PerPixelCorrectnessThreshold: 0.005 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 + AverageCorrectnessThreshold: 0.001 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 0 + ImageResolution: 0 + ActiveImageTests: 1 + ActivePixelTests: 7 + WaitFrames: 0 + XRCompatible: 1 +--- !u!81 &971756571 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971756569} + m_Enabled: 1 +--- !u!124 &971756572 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971756569} + m_Enabled: 1 +--- !u!20 &971756574 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971756569} + 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.3 + far clip plane: 10 + field of view: 35 + orthographic: 0 + orthographic size: 1 + 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!4 &971756575 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971756569} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1161206970 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1161206972} + - component: {fileID: 1161206971} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1161206971 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161206970} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.86381423, b: 0.5801887, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + 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: 0 + 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_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1161206972 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161206970} + m_LocalRotation: {x: 0.24272357, y: -0.37172696, z: 0.10134439, w: 0.8902998} + m_LocalPosition: {x: 3.0529494, y: 0.4445052, z: 2.1566381} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 30.5, y: -45.324, z: 0} +--- !u!1 &1184374069 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1184374070} + - component: {fileID: 1184374072} + - component: {fileID: 1184374071} + m_Layer: 5 + m_Name: Depth + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1184374070 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1184374069} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 390770347} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1184374071 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1184374069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 8400000, guid: 990b3546722118b458c4dcbf976c2565, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &1184374072 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1184374069} + m_CullTransparentMesh: 1 +--- !u!1 &1401141290 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1401141291} + - component: {fileID: 1401141294} + - component: {fileID: 1401141293} + - component: {fileID: 1401141292} + m_Layer: 0 + m_Name: Sphere (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1401141291 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401141290} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.923, y: 0.25, z: 3.674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &1401141292 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401141290} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1401141293 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401141290} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, 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: 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 &1401141294 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401141290} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1566265836 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1566265837} + - component: {fileID: 1566265840} + - component: {fileID: 1566265839} + - component: {fileID: 1566265838} + m_Layer: 0 + m_Name: Sphere (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1566265837 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566265836} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.577, y: -4, z: 3.674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &1566265838 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566265836} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1566265839 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566265836} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, 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: 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 &1566265840 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566265836} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1586390644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1586390645} + m_Layer: 0 + m_Name: Scene + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1586390645 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1586390644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.0829494, y: 2.5554948, z: -2.216638} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 687823240} + - {fileID: 75551323} + - {fileID: 55781358} + - {fileID: 705939301} + - {fileID: 324526214} + - {fileID: 1566265837} + - {fileID: 1883972696} + - {fileID: 1677414596} + - {fileID: 1401141291} + - {fileID: 1161206972} + - {fileID: 1590297430} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1590297426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1590297430} + - component: {fileID: 1590297429} + - component: {fileID: 1590297428} + - component: {fileID: 1590297427} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!64 &1590297427 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1590297426} + 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 &1590297428 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1590297426} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 84ee8f1b8a5e55f498d61cd54afce293, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 0.5 + 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 &1590297429 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1590297426} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1590297430 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1590297426} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 3.0829494, y: -2.5554948, z: 4.236638} + m_LocalScale: {x: 2.12303, y: 3.0329003, z: 1.5164502} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!1 &1677414595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1677414596} + - component: {fileID: 1677414599} + - component: {fileID: 1677414598} + - component: {fileID: 1677414597} + m_Layer: 0 + m_Name: Sphere (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1677414596 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677414595} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.077, y: 0, z: 3.674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &1677414597 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677414595} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1677414598 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677414595} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, 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: 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 &1677414599 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677414595} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1707275099 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1707275100} + - component: {fileID: 1707275102} + - component: {fileID: 1707275101} + m_Layer: 5 + m_Name: Position + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1707275100 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707275099} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 390770347} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1707275101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707275099} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 8400000, guid: 814843923a04487408e5e33ea06ceca4, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &1707275102 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1707275099} + m_CullTransparentMesh: 1 +--- !u!1 &1823639353 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1823639357} + - component: {fileID: 1823639356} + - component: {fileID: 1823639355} + - component: {fileID: 1823639354} + m_Layer: 0 + m_Name: DepthCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1823639354 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823639353} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a2689fc717e65c94c88ced6e08e35908, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: -876546973899608171, guid: 0a4dbcc78ae8c684aa9954ed82a13c9f, + type: 3} +--- !u!81 &1823639355 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823639353} + m_Enabled: 1 +--- !u!20 &1823639356 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823639353} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + 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.3 + far clip plane: 10 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 8400000, guid: 990b3546722118b458c4dcbf976c2565, type: 2} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1823639357 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823639353} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.0770967, y: 0.35829902, z: -2.730823} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1849218146 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1849218150} + - component: {fileID: 1849218149} + - component: {fileID: 1849218148} + - component: {fileID: 1849218147} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1849218147 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1849218146} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1849218148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1849218146} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1849218149 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1849218146} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 971756574} + m_PlaneDistance: 1 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1849218150 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1849218146} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 390770347} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1883972695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1883972696} + - component: {fileID: 1883972699} + - component: {fileID: 1883972698} + - component: {fileID: 1883972697} + m_Layer: 0 + m_Name: Sphere (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1883972696 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1883972695} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.8270001, y: -2.75, z: 3.674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1586390645} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &1883972697 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1883972695} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1883972698 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1883972695} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, 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: 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 &1883972699 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1883972695} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects.unity.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects.unity.meta new file mode 100644 index 00000000000..9e92319b74d --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 973136f6e85b5aa408b497d12825f950 +labels: +- TestRunnerBake +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/BlueTint.renderTexture b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/BlueTint.renderTexture new file mode 100644 index 00000000000..cb09e94e7b6 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/BlueTint.renderTexture @@ -0,0 +1,39 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!84 &8400000 +RenderTexture: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BlueTint + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 5 + m_Width: 256 + m_Height: 256 + m_AntiAliasing: 1 + m_MipCount: -1 + m_DepthStencilFormat: 0 + m_ColorFormat: 8 + m_MipMap: 0 + m_GenerateMips: 1 + m_SRGB: 0 + m_UseDynamicScale: 0 + m_BindMS: 0 + m_EnableCompatibleFormat: 1 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 0 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_Dimension: 2 + m_VolumeDepth: 1 + m_ShadowSamplingMode: 2 diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/BlueTint.renderTexture.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/BlueTint.renderTexture.meta new file mode 100644 index 00000000000..f1bea06f2e6 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/BlueTint.renderTexture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7402e76ade7cb54fabb71e9db1bde5a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects.meta new file mode 100644 index 00000000000..f54deecb69b --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d0d472109b12b70479c91664abd96d7d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/BlueTint.shadergraph b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/BlueTint.shadergraph new file mode 100644 index 00000000000..fde1b0cde95 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/BlueTint.shadergraph @@ -0,0 +1,894 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "4703b42838ec4f37bc8d8070294bc32c", + "m_Properties": [ + { + "m_Id": "f966897221e1489d96fd269700e5cdc4" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "1516a5cc5e364eb2bb88883e73e795a0" + } + ], + "m_Nodes": [ + { + "m_Id": "d4f8fd4027964e4cb860c4bb25efbc48" + }, + { + "m_Id": "a3eadd8853e34a87a17bb5606c2354de" + }, + { + "m_Id": "61eeddf50f71431ebc58b73a051050e0" + }, + { + "m_Id": "bed70ebaaedb475baee4e125b3042634" + }, + { + "m_Id": "9961d6b5fb2947ac9285a35d8506cf62" + }, + { + "m_Id": "491999b6539d4dbdb35e66b111dc2986" + }, + { + "m_Id": "e8ce1ee185774612ba37424b28d54de3" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "491999b6539d4dbdb35e66b111dc2986" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9961d6b5fb2947ac9285a35d8506cf62" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "61eeddf50f71431ebc58b73a051050e0" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bed70ebaaedb475baee4e125b3042634" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9961d6b5fb2947ac9285a35d8506cf62" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d4f8fd4027964e4cb860c4bb25efbc48" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bed70ebaaedb475baee4e125b3042634" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9961d6b5fb2947ac9285a35d8506cf62" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8ce1ee185774612ba37424b28d54de3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9961d6b5fb2947ac9285a35d8506cf62" + }, + "m_SlotId": 2 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 156.0, + "y": 105.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 156.0, + "y": 305.0 + }, + "m_Blocks": [ + { + "m_Id": "d4f8fd4027964e4cb860c4bb25efbc48" + }, + { + "m_Id": "a3eadd8853e34a87a17bb5606c2354de" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "6ecd847a446e43d9b8e9d11cb120c9fd" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "0617bdbd40c441609f614b9bc22f821b", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.13568639755249024, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "0920e1f93061432387aadce557d92dad", + "m_Id": 0, + "m_DisplayName": "_MainTex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0d74a81ce17d4c4b8bb700d42cc5a0d5", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "1516a5cc5e364eb2bb88883e73e795a0", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "f966897221e1489d96fd269700e5cdc4" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "15f45a152739428c8c76c5df8aab27f6", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Fullscreen.ShaderGraph.FullscreenData", + "m_ObjectId": "1c308cf1bf44498788c64fa67ef88cb4", + "m_Version": 0, + "m_fullscreenMode": 0, + "m_BlendMode": 0, + "m_SrcColorBlendMode": 0, + "m_DstColorBlendMode": 1, + "m_ColorBlendOperation": 0, + "m_SrcAlphaBlendMode": 0, + "m_DstAlphaBlendMode": 1, + "m_AlphaBlendOperation": 0, + "m_EnableStencil": false, + "m_StencilReference": 0, + "m_StencilReadMask": 255, + "m_StencilWriteMask": 255, + "m_StencilCompareFunction": 8, + "m_StencilPassOperation": 0, + "m_StencilFailOperation": 0, + "m_StencilDepthFailOperation": 0, + "m_DepthWrite": false, + "m_depthWriteMode": 0, + "m_AllowMaterialOverride": false, + "m_DepthTestMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "23d711cadcfa4342b839d4b869e1c466", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "35a1707d114d43dfa74fd8a2bc7dc504", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "491999b6539d4dbdb35e66b111dc2986", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -397.0, + "y": 397.0, + "width": 208.0, + "height": 127.0 + } + }, + "m_Slots": [ + { + "m_Id": "15f45a152739428c8c76c5df8aab27f6" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 0.14122533798217774, + "g": 0.0, + "b": 1.0, + "a": 0.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "5213e99ddce14ea9ae8bbad3d8008a96", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "61eeddf50f71431ebc58b73a051050e0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -531.0, + "y": 149.0, + "width": 134.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "0920e1f93061432387aadce557d92dad" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f966897221e1489d96fd269700e5cdc4" + } +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInTarget", + "m_ObjectId": "6ecd847a446e43d9b8e9d11cb120c9fd", + "m_SubTargetData": [ + { + "m_Id": "1c308cf1bf44498788c64fa67ef88cb4" + } + ], + "m_ActiveSubTarget": { + "m_Id": "bea377201c734498a42e56bd7ab99191" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZWriteControl": 0, + "m_ZTestMode": 4, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "814f47bf328a4afbb3f3544176f48fe2", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "83e5719e54d143faa2a80753c0b8f7e8", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8cbe61b854c644e9a5ceec284f868d10", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "942e008c4be74b8daedd766ff9482432", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "9961d6b5fb2947ac9285a35d8506cf62", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -87.0, + "y": 277.0, + "width": 130.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "f31f0eb970ec4f1a9c4766e3a16baf68" + }, + { + "m_Id": "814f47bf328a4afbb3f3544176f48fe2" + }, + { + "m_Id": "db0f2b9956f74b42821e02c5a8b718d7" + }, + { + "m_Id": "e7803a31502548ef89759bd3cfa2ff5e" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a3eadd8853e34a87a17bb5606c2354de", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a9d3fccbc5c4457888de0c3cc7da46f6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a9d3fccbc5c4457888de0c3cc7da46f6", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInFullscreenSubTarget", + "m_ObjectId": "bea377201c734498a42e56bd7ab99191" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "bed70ebaaedb475baee4e125b3042634", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -382.0, + "y": 115.0, + "width": 183.0, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "83e5719e54d143faa2a80753c0b8f7e8" + }, + { + "m_Id": "f978a2dac07e47159672a0763a63376c" + }, + { + "m_Id": "8cbe61b854c644e9a5ceec284f868d10" + }, + { + "m_Id": "35a1707d114d43dfa74fd8a2bc7dc504" + }, + { + "m_Id": "23d711cadcfa4342b839d4b869e1c466" + }, + { + "m_Id": "942e008c4be74b8daedd766ff9482432" + }, + { + "m_Id": "f2da9d5288d74471a2a0daf3bd5fad93" + }, + { + "m_Id": "5213e99ddce14ea9ae8bbad3d8008a96" + } + ], + "synonyms": [ + "tex2d" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d4f8fd4027964e4cb860c4bb25efbc48", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "0617bdbd40c441609f614b9bc22f821b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "db0f2b9956f74b42821e02c5a8b718d7", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e7803a31502548ef89759bd3cfa2ff5e", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1Node", + "m_ObjectId": "e8ce1ee185774612ba37424b28d54de3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Float", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -325.0, + "y": 546.0, + "width": 126.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "f069b01a020b4b5cae9cb3158c34ab26" + }, + { + "m_Id": "0d74a81ce17d4c4b8bb700d42cc5a0d5" + } + ], + "synonyms": [ + "Vector 1", + "1", + "v1", + "vec1", + "scalar" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": 0.0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f069b01a020b4b5cae9cb3158c34ab26", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.5, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "f2da9d5288d74471a2a0daf3bd5fad93", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f31f0eb970ec4f1a9c4766e3a16baf68", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "f966897221e1489d96fd269700e5cdc4", + "m_Guid": { + "m_GuidSerialized": "cda9fee5-88a1-4a42-ac13-15c59000fafc" + }, + "m_Name": "_MainTex", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_MainTex", + "m_DefaultReferenceName": "_MainTex", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f978a2dac07e47159672a0763a63376c", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/BlueTint.shadergraph.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/BlueTint.shadergraph.meta new file mode 100644 index 00000000000..58e013a2a1f --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/BlueTint.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3ef4ebc2ab231ca4da3433365dfee29a +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Depth.shadergraph b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Depth.shadergraph new file mode 100644 index 00000000000..ac156da1138 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Depth.shadergraph @@ -0,0 +1,570 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "d90f842bb50940d0898cc0b1672e40c7", + "m_Properties": [ + { + "m_Id": "95faf0c60d83409e9a14d804800e2ef5" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "bf9c98344459461d9b16983355e7bff6" + } + ], + "m_Nodes": [ + { + "m_Id": "a7962bdeae494b5da074e4817f625114" + }, + { + "m_Id": "e5bc309f2e9441f79839f40d57b85928" + }, + { + "m_Id": "c92cbbfb65a74873986c38a798c50f03" + }, + { + "m_Id": "5ddc3a5040794841b416534f8d7a7005" + }, + { + "m_Id": "a14a2592d34a41dc836eadbdb9c586cc" + }, + { + "m_Id": "ffdbc5cb9ea346f5accac639490d4e10" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ffdbc5cb9ea346f5accac639490d4e10" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a7962bdeae494b5da074e4817f625114" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "c92cbbfb65a74873986c38a798c50f03" + }, + { + "m_Id": "5ddc3a5040794841b416534f8d7a7005" + }, + { + "m_Id": "a14a2592d34a41dc836eadbdb9c586cc" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "a7962bdeae494b5da074e4817f625114" + }, + { + "m_Id": "e5bc309f2e9441f79839f40d57b85928" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "18690e6cecb1442ea84378e37c34a182" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ScreenPositionMaterialSlot", + "m_ObjectId": "183dc11aec134074be2c7bb589938a72", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_ScreenSpaceType": 0 +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInTarget", + "m_ObjectId": "18690e6cecb1442ea84378e37c34a182", + "m_SubTargetData": [ + { + "m_Id": "c9a38d23340040689146bab6fa8db3d7" + } + ], + "m_ActiveSubTarget": { + "m_Id": "3a80f3c6e4f3468d9f7fc967ca907c32" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZWriteControl": 0, + "m_ZTestMode": 4, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "33540e5e9a35475a8e5712cd72467969", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInFullscreenSubTarget", + "m_ObjectId": "3a80f3c6e4f3468d9f7fc967ca907c32" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "5ddc3a5040794841b416534f8d7a7005", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f1121601d4bb42e8b5d988d0c70a0e1d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "85e3c32d9692433aac48d1647db8dc5c", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "95faf0c60d83409e9a14d804800e2ef5", + "m_Guid": { + "m_GuidSerialized": "2891762a-caff-46b8-886a-a60f9076d254" + }, + "m_Name": "_CameraDepthNormalsTexture", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_CameraDepthNormalsTexture", + "m_DefaultReferenceName": "_CameraDepthNormalsTexture", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "9ec592304c3c45ceab688d3d116eaa8b", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a14a2592d34a41dc836eadbdb9c586cc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9ec592304c3c45ceab688d3d116eaa8b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a7962bdeae494b5da074e4817f625114", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "85e3c32d9692433aac48d1647db8dc5c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b3fb6f13466b4b33a6471b91d5414fd5", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "bf9c98344459461d9b16983355e7bff6", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "95faf0c60d83409e9a14d804800e2ef5" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "c92cbbfb65a74873986c38a798c50f03", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d91a8a45275c4bcdabfa2a91d9164154" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Fullscreen.ShaderGraph.FullscreenData", + "m_ObjectId": "c9a38d23340040689146bab6fa8db3d7", + "m_Version": 0, + "m_fullscreenMode": 0, + "m_BlendMode": 0, + "m_SrcColorBlendMode": 0, + "m_DstColorBlendMode": 1, + "m_ColorBlendOperation": 0, + "m_SrcAlphaBlendMode": 0, + "m_DstAlphaBlendMode": 1, + "m_AlphaBlendOperation": 0, + "m_EnableStencil": false, + "m_StencilReference": 0, + "m_StencilReadMask": 255, + "m_StencilWriteMask": 255, + "m_StencilCompareFunction": 8, + "m_StencilPassOperation": 0, + "m_StencilFailOperation": 0, + "m_StencilDepthFailOperation": 0, + "m_DepthWrite": false, + "m_depthWriteMode": 0, + "m_AllowMaterialOverride": false, + "m_DepthTestMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "d91a8a45275c4bcdabfa2a91d9164154", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e5bc309f2e9441f79839f40d57b85928", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b3fb6f13466b4b33a6471b91d5414fd5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "f1121601d4bb42e8b5d988d0c70a0e1d", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SceneDepthNode", + "m_ObjectId": "ffdbc5cb9ea346f5accac639490d4e10", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Scene Depth", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -335.0, + "y": 171.0, + "width": 145.0, + "height": 112.0 + } + }, + "m_Slots": [ + { + "m_Id": "183dc11aec134074be2c7bb589938a72" + }, + { + "m_Id": "33540e5e9a35475a8e5712cd72467969" + } + ], + "synonyms": [ + "zbuffer", + "zdepth" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_DepthSamplingMode": 0 +} + diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Depth.shadergraph.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Depth.shadergraph.meta new file mode 100644 index 00000000000..544ba9d0cb9 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Depth.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0a4dbcc78ae8c684aa9954ed82a13c9f +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Position.shadergraph b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Position.shadergraph new file mode 100644 index 00000000000..137ac85aedd --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Position.shadergraph @@ -0,0 +1,549 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "d90f842bb50940d0898cc0b1672e40c7", + "m_Properties": [ + { + "m_Id": "95faf0c60d83409e9a14d804800e2ef5" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "bf9c98344459461d9b16983355e7bff6" + } + ], + "m_Nodes": [ + { + "m_Id": "a7962bdeae494b5da074e4817f625114" + }, + { + "m_Id": "e5bc309f2e9441f79839f40d57b85928" + }, + { + "m_Id": "c92cbbfb65a74873986c38a798c50f03" + }, + { + "m_Id": "5ddc3a5040794841b416534f8d7a7005" + }, + { + "m_Id": "a14a2592d34a41dc836eadbdb9c586cc" + }, + { + "m_Id": "fd6762317d3d47e9bdfc4ad861b48607" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "fd6762317d3d47e9bdfc4ad861b48607" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a7962bdeae494b5da074e4817f625114" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "c92cbbfb65a74873986c38a798c50f03" + }, + { + "m_Id": "5ddc3a5040794841b416534f8d7a7005" + }, + { + "m_Id": "a14a2592d34a41dc836eadbdb9c586cc" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "a7962bdeae494b5da074e4817f625114" + }, + { + "m_Id": "e5bc309f2e9441f79839f40d57b85928" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "18690e6cecb1442ea84378e37c34a182" + } + ] +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInTarget", + "m_ObjectId": "18690e6cecb1442ea84378e37c34a182", + "m_SubTargetData": [ + { + "m_Id": "c9a38d23340040689146bab6fa8db3d7" + } + ], + "m_ActiveSubTarget": { + "m_Id": "3a80f3c6e4f3468d9f7fc967ca907c32" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZWriteControl": 0, + "m_ZTestMode": 4, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInFullscreenSubTarget", + "m_ObjectId": "3a80f3c6e4f3468d9f7fc967ca907c32" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "5ddc3a5040794841b416534f8d7a7005", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f1121601d4bb42e8b5d988d0c70a0e1d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "85e3c32d9692433aac48d1647db8dc5c", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "95faf0c60d83409e9a14d804800e2ef5", + "m_Guid": { + "m_GuidSerialized": "2891762a-caff-46b8-886a-a60f9076d254" + }, + "m_Name": "_CameraDepthNormalsTexture", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_CameraDepthNormalsTexture", + "m_DefaultReferenceName": "_CameraDepthNormalsTexture", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "9ec592304c3c45ceab688d3d116eaa8b", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a14a2592d34a41dc836eadbdb9c586cc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9ec592304c3c45ceab688d3d116eaa8b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a7962bdeae494b5da074e4817f625114", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "85e3c32d9692433aac48d1647db8dc5c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b3fb6f13466b4b33a6471b91d5414fd5", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "b9d8fd7390bf46148db332b330856323", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "bf9c98344459461d9b16983355e7bff6", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "95faf0c60d83409e9a14d804800e2ef5" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "c92cbbfb65a74873986c38a798c50f03", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d91a8a45275c4bcdabfa2a91d9164154" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Fullscreen.ShaderGraph.FullscreenData", + "m_ObjectId": "c9a38d23340040689146bab6fa8db3d7", + "m_Version": 0, + "m_fullscreenMode": 0, + "m_BlendMode": 0, + "m_SrcColorBlendMode": 0, + "m_DstColorBlendMode": 1, + "m_ColorBlendOperation": 0, + "m_SrcAlphaBlendMode": 0, + "m_DstAlphaBlendMode": 1, + "m_AlphaBlendOperation": 0, + "m_EnableStencil": false, + "m_StencilReference": 0, + "m_StencilReadMask": 255, + "m_StencilWriteMask": 255, + "m_StencilCompareFunction": 8, + "m_StencilPassOperation": 0, + "m_StencilFailOperation": 0, + "m_StencilDepthFailOperation": 0, + "m_DepthWrite": false, + "m_depthWriteMode": 0, + "m_AllowMaterialOverride": false, + "m_DepthTestMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "d91a8a45275c4bcdabfa2a91d9164154", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e5bc309f2e9441f79839f40d57b85928", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b3fb6f13466b4b33a6471b91d5414fd5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "f1121601d4bb42e8b5d988d0c70a0e1d", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.PositionNode", + "m_ObjectId": "fd6762317d3d47e9bdfc4ad861b48607", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -310.0, + "y": 226.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b9d8fd7390bf46148db332b330856323" + } + ], + "synonyms": [ + "location" + ], + "m_Precision": 1, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 4, + "m_PositionSource": 0 +} + diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Position.shadergraph.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Position.shadergraph.meta new file mode 100644 index 00000000000..cd8a34d1234 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/Position.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 29291f02465ceda4fad2fa7d2422698e +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/ViewDIr.shadergraph b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/ViewDIr.shadergraph new file mode 100644 index 00000000000..9c57ad0563d --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/ViewDIr.shadergraph @@ -0,0 +1,548 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "d90f842bb50940d0898cc0b1672e40c7", + "m_Properties": [ + { + "m_Id": "95faf0c60d83409e9a14d804800e2ef5" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "bf9c98344459461d9b16983355e7bff6" + } + ], + "m_Nodes": [ + { + "m_Id": "a7962bdeae494b5da074e4817f625114" + }, + { + "m_Id": "e5bc309f2e9441f79839f40d57b85928" + }, + { + "m_Id": "c92cbbfb65a74873986c38a798c50f03" + }, + { + "m_Id": "5ddc3a5040794841b416534f8d7a7005" + }, + { + "m_Id": "a14a2592d34a41dc836eadbdb9c586cc" + }, + { + "m_Id": "c1662016c9094f98ba5a18ee77b287cb" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c1662016c9094f98ba5a18ee77b287cb" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a7962bdeae494b5da074e4817f625114" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "c92cbbfb65a74873986c38a798c50f03" + }, + { + "m_Id": "5ddc3a5040794841b416534f8d7a7005" + }, + { + "m_Id": "a14a2592d34a41dc836eadbdb9c586cc" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "a7962bdeae494b5da074e4817f625114" + }, + { + "m_Id": "e5bc309f2e9441f79839f40d57b85928" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "18690e6cecb1442ea84378e37c34a182" + } + ] +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInTarget", + "m_ObjectId": "18690e6cecb1442ea84378e37c34a182", + "m_SubTargetData": [ + { + "m_Id": "c9a38d23340040689146bab6fa8db3d7" + } + ], + "m_ActiveSubTarget": { + "m_Id": "3a80f3c6e4f3468d9f7fc967ca907c32" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZWriteControl": 0, + "m_ZTestMode": 4, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInFullscreenSubTarget", + "m_ObjectId": "3a80f3c6e4f3468d9f7fc967ca907c32" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "5ddc3a5040794841b416534f8d7a7005", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f1121601d4bb42e8b5d988d0c70a0e1d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "85e3c32d9692433aac48d1647db8dc5c", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "95faf0c60d83409e9a14d804800e2ef5", + "m_Guid": { + "m_GuidSerialized": "2891762a-caff-46b8-886a-a60f9076d254" + }, + "m_Name": "_CameraDepthNormalsTexture", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "_CameraDepthNormalsTexture", + "m_DefaultReferenceName": "_CameraDepthNormalsTexture", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "9cef1273d9bd4433a743baec7d388179", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "9ec592304c3c45ceab688d3d116eaa8b", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a14a2592d34a41dc836eadbdb9c586cc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9ec592304c3c45ceab688d3d116eaa8b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a7962bdeae494b5da074e4817f625114", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "85e3c32d9692433aac48d1647db8dc5c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b3fb6f13466b4b33a6471b91d5414fd5", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "bf9c98344459461d9b16983355e7bff6", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "95faf0c60d83409e9a14d804800e2ef5" + } + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", + "m_ObjectId": "c1662016c9094f98ba5a18ee77b287cb", + "m_Group": { + "m_Id": "" + }, + "m_Name": "View Direction", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -297.0, + "y": 200.0, + "width": 208.0, + "height": 315.0 + } + }, + "m_Slots": [ + { + "m_Id": "9cef1273d9bd4433a743baec7d388179" + } + ], + "synonyms": [ + "eye direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "c92cbbfb65a74873986c38a798c50f03", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d91a8a45275c4bcdabfa2a91d9164154" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Fullscreen.ShaderGraph.FullscreenData", + "m_ObjectId": "c9a38d23340040689146bab6fa8db3d7", + "m_Version": 0, + "m_fullscreenMode": 0, + "m_BlendMode": 0, + "m_SrcColorBlendMode": 0, + "m_DstColorBlendMode": 1, + "m_ColorBlendOperation": 0, + "m_SrcAlphaBlendMode": 0, + "m_DstAlphaBlendMode": 1, + "m_AlphaBlendOperation": 0, + "m_EnableStencil": false, + "m_StencilReference": 0, + "m_StencilReadMask": 255, + "m_StencilWriteMask": 255, + "m_StencilCompareFunction": 8, + "m_StencilPassOperation": 0, + "m_StencilFailOperation": 0, + "m_StencilDepthFailOperation": 0, + "m_DepthWrite": false, + "m_depthWriteMode": 0, + "m_AllowMaterialOverride": false, + "m_DepthTestMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "d91a8a45275c4bcdabfa2a91d9164154", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e5bc309f2e9441f79839f40d57b85928", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b3fb6f13466b4b33a6471b91d5414fd5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "f1121601d4bb42e8b5d988d0c70a0e1d", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/ViewDIr.shadergraph.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/ViewDIr.shadergraph.meta new file mode 100644 index 00000000000..1a22c2d08bd --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/CameraEffects/ViewDIr.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b5f611447d8b5f14a80b6d53bf04d1ba +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Depth.renderTexture b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Depth.renderTexture new file mode 100644 index 00000000000..4e26bf7d993 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Depth.renderTexture @@ -0,0 +1,39 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!84 &8400000 +RenderTexture: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Depth + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 5 + m_Width: 256 + m_Height: 256 + m_AntiAliasing: 1 + m_MipCount: -1 + m_DepthStencilFormat: 0 + m_ColorFormat: 8 + m_MipMap: 0 + m_GenerateMips: 1 + m_SRGB: 0 + m_UseDynamicScale: 0 + m_BindMS: 0 + m_EnableCompatibleFormat: 1 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 0 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_Dimension: 2 + m_VolumeDepth: 1 + m_ShadowSamplingMode: 2 diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Depth.renderTexture.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Depth.renderTexture.meta new file mode 100644 index 00000000000..e4730383706 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Depth.renderTexture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 990b3546722118b458c4dcbf976c2565 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ImageEffects.cs b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ImageEffects.cs new file mode 100644 index 00000000000..7c44c333da0 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ImageEffects.cs @@ -0,0 +1,29 @@ +using System; +using UnityEngine; +using UnityEngine.Rendering; + +[RequireComponent(typeof(Camera))] +[ExecuteInEditMode] +public class ImageEffects : MonoBehaviour +{ + public Material material; + + void Start() + { + if (null == material || null == material.shader || + !material.shader.isSupported) + { + enabled = false; + return; + } + GetComponent().depthTextureMode = DepthTextureMode.DepthNormals; + } + + void OnRenderImage(RenderTexture source, RenderTexture destination) + { + var cmd = new CommandBuffer(); + // cmd.SetGlobalTexture("_CameraDepthNormalsTexture", new RenderTargetIdentifier(BuiltinRenderTextureType.DepthNormals)); + cmd.Blit(source, destination, material, 1); + Graphics.ExecuteCommandBuffer(cmd); + } +} diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ImageEffects.cs.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ImageEffects.cs.meta new file mode 100644 index 00000000000..ead5c74314f --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ImageEffects.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a2689fc717e65c94c88ced6e08e35908 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/LightingData.asset b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/LightingData.asset new file mode 100644 index 00000000000..d8dfe704a40 Binary files /dev/null and b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/LightingData.asset differ diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/LightingData.asset.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/LightingData.asset.meta new file mode 100644 index 00000000000..bf038f7bf6d --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/LightingData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0443133b73b356f449027ce62f5cc170 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 6475696996188705980 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_dir.png b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_dir.png new file mode 100644 index 00000000000..908954c7c4a --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_dir.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9313e05a8a7cc6802f826b59ce7579f3399eb80e37ea2ea86f172dff0d02ddc +size 122290 diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_dir.png.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_dir.png.meta new file mode 100644 index 00000000000..1d28d58a74c --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_dir.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 4ad728ba888e9564f9b11d227720d309 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 1 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 3 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 12 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_light.exr b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_light.exr new file mode 100644 index 00000000000..70d1e7251eb Binary files /dev/null and b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_light.exr differ diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_light.exr.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_light.exr.meta new file mode 100644 index 00000000000..c84ffbde70e --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Lightmap-0_comp_light.exr.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 0909e283ea7e5c347b2051348739a273 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 1 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 3 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 6 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Position.renderTexture b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Position.renderTexture new file mode 100644 index 00000000000..bb293cadeb6 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Position.renderTexture @@ -0,0 +1,39 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!84 &8400000 +RenderTexture: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Position + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 5 + m_Width: 256 + m_Height: 256 + m_AntiAliasing: 1 + m_MipCount: -1 + m_DepthStencilFormat: 0 + m_ColorFormat: 8 + m_MipMap: 0 + m_GenerateMips: 1 + m_SRGB: 0 + m_UseDynamicScale: 0 + m_BindMS: 0 + m_EnableCompatibleFormat: 1 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 0 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_Dimension: 2 + m_VolumeDepth: 1 + m_ShadowSamplingMode: 2 diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Position.renderTexture.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Position.renderTexture.meta new file mode 100644 index 00000000000..0142cf88d09 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/Position.renderTexture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 814843923a04487408e5e33ea06ceca4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ReflectionProbe-0.exr b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ReflectionProbe-0.exr new file mode 100644 index 00000000000..cd56a4e921b Binary files /dev/null and b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ReflectionProbe-0.exr differ diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ReflectionProbe-0.exr.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ReflectionProbe-0.exr.meta new file mode 100644 index 00000000000..e915df2f02b --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ReflectionProbe-0.exr.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 58283f4ad2597c94db7ed96968285c9f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ViewDir.renderTexture b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ViewDir.renderTexture new file mode 100644 index 00000000000..efeba5b999b --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ViewDir.renderTexture @@ -0,0 +1,39 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!84 &8400000 +RenderTexture: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ViewDir + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 + serializedVersion: 5 + m_Width: 256 + m_Height: 256 + m_AntiAliasing: 1 + m_MipCount: -1 + m_DepthStencilFormat: 0 + m_ColorFormat: 8 + m_MipMap: 0 + m_GenerateMips: 1 + m_SRGB: 0 + m_UseDynamicScale: 0 + m_BindMS: 0 + m_EnableCompatibleFormat: 1 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 0 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_Dimension: 2 + m_VolumeDepth: 1 + m_ShadowSamplingMode: 2 diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ViewDir.renderTexture.meta b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ViewDir.renderTexture.meta new file mode 100644 index 00000000000..7b34b59f729 --- /dev/null +++ b/TestProjects/BuiltInGraphicsTest_Foundation/Assets/Scenes/070_FullscreenEffects/ViewDir.renderTexture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac88441584a4add4a9066ed004fde47b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/BuiltInGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset b/TestProjects/BuiltInGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset index f7ac0a0b9b7..a182cc8fe2e 100644 --- a/TestProjects/BuiltInGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset +++ b/TestProjects/BuiltInGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset @@ -71,4 +71,6 @@ EditorBuildSettings: - enabled: 1 path: Assets/Scenes/063_Lighting_BasicVertexPosition.unity guid: e2daf39e5a0f09744a2a6851d38e7081 - m_configObjects: {} + - enabled: 1 + path: Assets/Scenes/070_FullscreenEffects.unity + guid: 973136f6e85b5aa408b497d12825f950 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/Fullscreen.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/Fullscreen.png new file mode 100644 index 00000000000..cc1fb9d108a --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/Fullscreen.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:561826874c3c607d291fecde6eec1acf4a9726748dbb3aa6b8de9bcc68d0aeb2 +size 15364 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/Fullscreen.png.meta b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/Fullscreen.png.meta new file mode 100644 index 00000000000..8d3fefecce2 --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/Fullscreen.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 2cf07196957a85d49b59d9b054e1499d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/Fullscreen.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/Fullscreen.png new file mode 100644 index 00000000000..eba76015e39 --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/Fullscreen.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b936b49ea69ef35140c92c12d8f7cb4b07bd596be89302e6ec451bdcf316766 +size 15556 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/Fullscreen.png.meta b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/Fullscreen.png.meta new file mode 100644 index 00000000000..e97fe9fae75 --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/Fullscreen.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 2637faaeac8ba03429e503bd67a16297 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/Fullscreen.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/Fullscreen.png new file mode 100644 index 00000000000..eba76015e39 --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/Fullscreen.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b936b49ea69ef35140c92c12d8f7cb4b07bd596be89302e6ec451bdcf316766 +size 15556 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/Fullscreen.png.meta b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/Fullscreen.png.meta new file mode 100644 index 00000000000..df358d9f821 --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/Fullscreen.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 2a49cd2e9d90ed746885af7ee937f653 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.core/Runtime/Utilities/Blitter.cs b/com.unity.render-pipelines.core/Runtime/Utilities/Blitter.cs index d87b4447738..18a72c6f72e 100644 --- a/com.unity.render-pipelines.core/Runtime/Utilities/Blitter.cs +++ b/com.unity.render-pipelines.core/Runtime/Utilities/Blitter.cs @@ -239,6 +239,22 @@ public static void BlitTexture(CommandBuffer cmd, RTHandle source, Vector4 scale DrawTriangle(cmd, material, pass); } + /// + /// Blit a Texture with a specified material. The reference name "_BlitTexture" will be used to bind the input texture. + /// + /// Command Buffer used for rendering. + /// Source render target. + /// Destination render target. + /// Material to invoke when blitting. + /// Pass idx within the material to invoke. + public static void BlitTexture(CommandBuffer cmd, RenderTargetIdentifier source, RenderTargetIdentifier destination, Material material, int pass) + { + // Unfortunately there is no function bind a RenderTargetIdentifier with a property block so we have to bind it globally. + cmd.SetGlobalTexture(BlitShaderIDs._BlitTexture, source); + cmd.SetRenderTarget(destination); + DrawTriangle(cmd, material, pass); + } + /// /// Blit a RTHandle to another RTHandle. /// This will properly account for partial usage (in term of resolution) of the texture for the current viewport. diff --git a/com.unity.shadergraph/Editor/Extensions/StencilExtensions.cs b/com.unity.shadergraph/Editor/Extensions/StencilExtensions.cs index efb194a2f6c..6b5b86ade5f 100644 --- a/com.unity.shadergraph/Editor/Extensions/StencilExtensions.cs +++ b/com.unity.shadergraph/Editor/Extensions/StencilExtensions.cs @@ -15,6 +15,8 @@ public static string ToShaderString(this StencilDescriptor descriptor) string failBack = descriptor.FailBack != null && descriptor.FailBack.Length > 0 ? descriptor.FailBack : descriptor.Fail; string passBack = descriptor.PassBack != null && descriptor.PassBack.Length > 0 ? descriptor.PassBack : descriptor.Pass; + if (descriptor.ReadMask != null && descriptor.ReadMask.Length > 0) + builder.AppendLine($"ReadMask {descriptor.ReadMask}"); if (descriptor.WriteMask != null && descriptor.WriteMask.Length > 0) builder.AppendLine($"WriteMask {descriptor.WriteMask}"); if (descriptor.Ref != null && descriptor.Ref.Length > 0) diff --git a/com.unity.shadergraph/Editor/Generation/Descriptors/StencilDescriptor.cs b/com.unity.shadergraph/Editor/Generation/Descriptors/StencilDescriptor.cs index 2e6e80c757b..d54a3c15bf9 100644 --- a/com.unity.shadergraph/Editor/Generation/Descriptors/StencilDescriptor.cs +++ b/com.unity.shadergraph/Editor/Generation/Descriptors/StencilDescriptor.cs @@ -3,6 +3,7 @@ namespace UnityEditor.ShaderGraph [GenerationAPI] internal struct StencilDescriptor { + public string ReadMask; public string WriteMask; public string Ref; public string Comp; diff --git a/com.unity.shadergraph/Editor/Generation/Processors/Generator.cs b/com.unity.shadergraph/Editor/Generation/Processors/Generator.cs index 5463c4f8b64..bfa38c22eb0 100644 --- a/com.unity.shadergraph/Editor/Generation/Processors/Generator.cs +++ b/com.unity.shadergraph/Editor/Generation/Processors/Generator.cs @@ -219,18 +219,16 @@ void BuildShader() GenerateSubShader(i, subShader, subShaderProperties); } - var customEditor = context.defaultShaderGUI; - if (customEditor != null && m_Targets[i].WorksWithSRP(GraphicsSettings.currentRenderPipeline)) - { - m_Builder.AppendLine("CustomEditor \"" + customEditor + "\""); - } - foreach (var rpCustomEditor in context.customEditorForRenderPipelines) { m_Builder.AppendLine($"CustomEditorForRenderPipeline \"{rpCustomEditor.shaderGUI}\" \"{rpCustomEditor.renderPipelineAssetType}\""); } - m_Builder.AppendLine("CustomEditor \"" + typeof(GenericShaderGraphMaterialGUI).FullName + "\""); + var customEditor = context.defaultShaderGUI; + if (customEditor != null) + m_Builder.AppendLine("CustomEditor \"" + customEditor + "\""); + else + m_Builder.AppendLine("CustomEditor \"" + typeof(GenericShaderGraphMaterialGUI).FullName + "\""); } m_Builder.AppendLine(@"FallBack ""Hidden/Shader Graph/FallbackError"""); diff --git a/com.unity.shadergraph/Editor/Generation/SubTarget.cs b/com.unity.shadergraph/Editor/Generation/SubTarget.cs index d7ee0739266..47df99aa966 100644 --- a/com.unity.shadergraph/Editor/Generation/SubTarget.cs +++ b/com.unity.shadergraph/Editor/Generation/SubTarget.cs @@ -22,6 +22,7 @@ internal abstract class SubTarget : JsonObject public virtual void CollectShaderProperties(PropertyCollector collector, GenerationMode generationMode) { } public virtual void ProcessPreviewMaterial(Material material) { } public virtual object saveContext => null; + public virtual bool IsNodeAllowedBySubTarget(Type nodeType) => true; } [GenerationAPI] // TODO: Public diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/AssetCallbacks/CreateFullscreenShaderGraph.cs b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/AssetCallbacks/CreateFullscreenShaderGraph.cs new file mode 100644 index 00000000000..fa2d1bac838 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/AssetCallbacks/CreateFullscreenShaderGraph.cs @@ -0,0 +1,25 @@ +using System; +using UnityEditor.ShaderGraph; +using UnityEngine.Rendering; +using UnityEditor.Rendering.Fullscreen.ShaderGraph; + +namespace UnityEditor.Rendering.BuiltIn.ShaderGraph +{ + static class CreateFullscreenShaderGraph + { + [MenuItem("Assets/Create/Shader Graph/BuiltIn/Fullscreen Shader Graph", priority = CoreUtils.Sections.section1 + CoreUtils.Priorities.assetsCreateShaderMenuPriority + 2)] + public static void CreateFullscreenGraph() + { + var target = (BuiltInTarget)Activator.CreateInstance(typeof(BuiltInTarget)); + target.TrySetActiveSubTarget(typeof(BuiltInFullscreenSubTarget)); + + var blockDescriptors = new[] + { + BlockFields.SurfaceDescription.BaseColor, + BlockFields.SurfaceDescription.Alpha, + }; + + GraphUtil.CreateNewGraphWithOutputs(new[] { target }, blockDescriptors); + } + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/AssetCallbacks/CreateFullscreenShaderGraph.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/AssetCallbacks/CreateFullscreenShaderGraph.cs.meta new file mode 100644 index 00000000000..1899ab157c3 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/AssetCallbacks/CreateFullscreenShaderGraph.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b21e44f5d6b2a2f41bda30a18a433533 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/BuiltInProperties.cs b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/BuiltInProperties.cs index 92419fa78d2..a5898a85bc5 100644 --- a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/BuiltInProperties.cs +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/BuiltInProperties.cs @@ -71,7 +71,7 @@ internal static class Keyword internal static class BuiltInMaterialInspectorUtilities { - internal static void AddFloatProperty(this PropertyCollector collector, string referenceName, float defaultValue, HLSLDeclaration declarationType = HLSLDeclaration.DoNotDeclare) + internal static void AddFloatProperty(this PropertyCollector collector, string referenceName, float defaultValue, HLSLDeclaration declarationType = HLSLDeclaration.DoNotDeclare, bool generatePropertyBlock = true) { collector.AddShaderProperty(new Vector1ShaderProperty { @@ -80,6 +80,7 @@ internal static void AddFloatProperty(this PropertyCollector collector, string r overrideHLSLDeclaration = true, hlslDeclarationOverride = declarationType, value = defaultValue, + generatePropertyBlock = generatePropertyBlock, overrideReferenceName = referenceName, }); } diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenBlit.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenBlit.hlsl new file mode 100644 index 00000000000..4ef6e47bd2e --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenBlit.hlsl @@ -0,0 +1,13 @@ +PackedVaryings vert(Attributes input) +{ + Varyings output = (Varyings)0; + output.positionCS = GetBlitVertexPosition(input.vertexID); + BuildVaryingsWithoutInverseProjection(input, output); + PackedVaryings packedOutput = PackVaryings(output); + return packedOutput; +} + +FragOutput frag(PackedVaryings packedInput) +{ + return DefaultFullscreenFragmentShader(packedInput); +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenBlit.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenBlit.hlsl.meta new file mode 100644 index 00000000000..6603adc2824 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenBlit.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f367227261484eb45a7536634abc524a +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenDrawProcedural.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenDrawProcedural.hlsl new file mode 100644 index 00000000000..eff46a4e977 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenDrawProcedural.hlsl @@ -0,0 +1,13 @@ +PackedVaryings vert(Attributes input) +{ + Varyings output = (Varyings)0; + output.positionCS = GetDrawProceduralVertexPosition(input.vertexID); + BuildVaryingsWithoutInverseProjection(input, output); + PackedVaryings packedOutput = PackVaryings(output); + return packedOutput; +} + +FragOutput frag(PackedVaryings packedInput) +{ + return DefaultFullscreenFragmentShader(packedInput); +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenDrawProcedural.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenDrawProcedural.hlsl.meta new file mode 100644 index 00000000000..69695c04ee7 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/FullscreenDrawProcedural.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2ce2dd97f9cccb84486a31e307b435ed +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInLitSubTarget.cs b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInLitSubTarget.cs index 9ef5126cd3a..b4aa94cbdd5 100644 --- a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInLitSubTarget.cs +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInLitSubTarget.cs @@ -95,6 +95,8 @@ public override void GetFields(ref TargetFieldContext context) public override void GetActiveBlocks(ref TargetActiveBlockContext context) { + base.GetActiveBlocks(ref context); + context.AddBlock(BlockFields.SurfaceDescription.Smoothness); context.AddBlock(BlockFields.SurfaceDescription.NormalOS, normalDropOffSpace == NormalDropOffSpace.Object); context.AddBlock(BlockFields.SurfaceDescription.NormalTS, normalDropOffSpace == NormalDropOffSpace.Tangent); diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInSubTarget.cs b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInSubTarget.cs index 14a0f97c5bc..f0c686c7d52 100644 --- a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInSubTarget.cs +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInSubTarget.cs @@ -23,6 +23,15 @@ public virtual ScriptableObject GetMetadataObject() return bultInMetadata; } + public override void GetActiveBlocks(ref TargetActiveBlockContext context) + { + // Core blocks + context.AddBlock(BlockFields.VertexDescription.Position); + context.AddBlock(BlockFields.VertexDescription.Normal); + context.AddBlock(BlockFields.VertexDescription.Tangent); + context.AddBlock(BlockFields.SurfaceDescription.BaseColor); + } + public override object saveContext { get diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInTarget.cs b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInTarget.cs index ee227802fed..eac0f3d2ba2 100644 --- a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInTarget.cs +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInTarget.cs @@ -81,6 +81,10 @@ sealed class BuiltInTarget : Target, IHasMetadata List m_SubTargetNames; int activeSubTargetIndex => m_SubTargets.IndexOf(m_ActiveSubTarget); + // Subtarget Data + [SerializeField] + List> m_SubTargetData = new List>(); + // View PopupField m_SubTargetField; TextField m_CustomGUIField; @@ -122,6 +126,7 @@ public BuiltInTarget() m_SubTargets = TargetUtils.GetSubTargets(this); m_SubTargetNames = m_SubTargets.Select(x => x.displayName).ToList(); TargetUtils.ProcessSubTargetList(ref m_ActiveSubTarget, ref m_SubTargets); + ProcessSubTargetDatas(m_ActiveSubTarget.value); } public string renderType @@ -247,6 +252,7 @@ public override void Setup(ref TargetSetupContext context) if (m_ActiveSubTarget.value == null) return; m_ActiveSubTarget.value.target = this; + ProcessSubTargetDatas(m_ActiveSubTarget.value); m_ActiveSubTarget.value.Setup(ref context); // Override EditorGUI @@ -276,12 +282,6 @@ public override void GetFields(ref TargetFieldContext context) public override void GetActiveBlocks(ref TargetActiveBlockContext context) { - // Core blocks - context.AddBlock(BlockFields.VertexDescription.Position); - context.AddBlock(BlockFields.VertexDescription.Normal); - context.AddBlock(BlockFields.VertexDescription.Tangent); - context.AddBlock(BlockFields.SurfaceDescription.BaseColor); - // SubTarget blocks m_ActiveSubTarget.value.GetActiveBlocks(ref context); } @@ -316,6 +316,7 @@ public override void GetPropertiesGUI(ref TargetPropertyGUIContext context, Acti registerUndo("Change Material"); m_ActiveSubTarget = m_SubTargets[m_SubTargetField.index]; + ProcessSubTargetDatas(m_ActiveSubTarget.value); onChange(); }); @@ -425,6 +426,7 @@ public bool TrySetActiveSubTarget(Type subTargetType) if (subTarget.GetType().Equals(subTargetType)) { m_ActiveSubTarget = subTarget; + ProcessSubTargetDatas(m_ActiveSubTarget); return true; } } @@ -432,6 +434,62 @@ public bool TrySetActiveSubTarget(Type subTargetType) return false; } + void ProcessSubTargetDatas(SubTarget subTarget) + { + var typeCollection = TypeCache.GetTypesDerivedFrom(); + foreach (var type in typeCollection) + { + if (type.IsGenericType) + continue; + + // Data requirement interfaces need generic type arguments + // Therefore we need to use reflections to call the method + var methodInfo = typeof(BuiltInTarget).GetMethod(nameof(SetDataOnSubTarget)); + var genericMethodInfo = methodInfo.MakeGenericMethod(type); + genericMethodInfo.Invoke(this, new object[] { subTarget }); + } + } + + void ClearUnusedData() + { + for (int i = 0; i < m_SubTargetData.Count; i++) + { + var data = m_SubTargetData[i]; + var type = data.value.GetType(); + + // Data requirement interfaces need generic type arguments + // Therefore we need to use reflections to call the method + var methodInfo = typeof(BuiltInTarget).GetMethod(nameof(ValidateDataForSubTarget)); + var genericMethodInfo = methodInfo.MakeGenericMethod(type); + genericMethodInfo.Invoke(this, new object[] { m_ActiveSubTarget.value, data.value }); + } + } + + public void SetDataOnSubTarget(SubTarget subTarget) where T : JsonObject + { + if (!(subTarget is IRequiresData requiresData)) + return; + + // Ensure data object exists in list + var data = m_SubTargetData.SelectValue().FirstOrDefault(x => x.GetType().Equals(typeof(T))) as T; + if (data == null) + { + data = Activator.CreateInstance(typeof(T)) as T; + m_SubTargetData.Add(data); + } + + // Apply data object to SubTarget + requiresData.data = data; + } + + public void ValidateDataForSubTarget(SubTarget subTarget, T data) where T : JsonObject + { + if (!(subTarget is IRequiresData requiresData)) + { + m_SubTargetData.Remove(data); + } + } + public override bool WorksWithSRP(RenderPipelineAsset scriptableRenderPipeline) { return scriptableRenderPipeline == null; diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInUnlitSubTarget.cs b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInUnlitSubTarget.cs index 78c98e214a0..2b4bc82aa52 100644 --- a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInUnlitSubTarget.cs +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltInUnlitSubTarget.cs @@ -66,6 +66,8 @@ public override void GetFields(ref TargetFieldContext context) public override void GetActiveBlocks(ref TargetActiveBlockContext context) { + base.GetActiveBlocks(ref context); + context.AddBlock(BlockFields.SurfaceDescription.Alpha, (target.surfaceType == SurfaceType.Transparent || target.alphaClip) || target.allowMaterialOverride); context.AddBlock(BlockFields.SurfaceDescription.AlphaClipThreshold, target.alphaClip || target.allowMaterialOverride); } diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltinFullscreenSubTarget.cs b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltinFullscreenSubTarget.cs new file mode 100644 index 00000000000..d388ea8eb5b --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltinFullscreenSubTarget.cs @@ -0,0 +1,50 @@ +using UnityEditor.ShaderGraph; +using UnityEngine; +using static UnityEditor.Rendering.BuiltIn.ShaderUtils; +using UnityEditor.Rendering.BuiltIn; +using System; +using UnityEditor.Rendering.Fullscreen.ShaderGraph; + +namespace UnityEditor.Rendering.BuiltIn.ShaderGraph +{ + class BuiltInFullscreenSubTarget : FullscreenSubTarget, IRequiresData + { + static readonly GUID kSourceCodeGuid = new GUID("3107a8a084c35ab4cb765b37e0699ce3"); // BuiltInFullscreenSubTarget.cs + + // In builtin there is no inverse view projection matrix, so we need to compute it in the vertex shader + protected override string fullscreenDrawProceduralInclude => "Packages/com.unity.shadergraph/Editor/Generation/Targets/Builtin/Editor/ShaderGraph/Includes/FullscreenDrawProcedural.hlsl"; + protected override string fullscreenBlitInclude => "Packages/com.unity.shadergraph/Editor/Generation/Targets/Builtin/Editor/ShaderGraph/Includes/FullscreenBlit.hlsl"; + + public override void Setup(ref TargetSetupContext context) + { + base.Setup(ref context); + context.AddAssetDependency(kSourceCodeGuid, AssetCollection.Flags.SourceDependency); + } + + // We don't need the save context / update materials for now + public override object saveContext => null; + + protected override string pipelineTag => ""; // Buitin is enabled by having an empty tag + + public override IncludeCollection GetPreGraphIncludes() + { + return new IncludeCollection + { + { kFullscreenShaderPass, IncludeLocation.Pregraph }, // For VR + { CoreIncludes.CorePregraph }, + { CoreIncludes.ShaderGraphPregraph }, + { kSpaceTransforms, IncludeLocation.Pregraph }, + }; + } + + protected override DefineCollection GetPassDefines(FullscreenCompatibility compatibility) + { + return CoreDefines.BuiltInTargetAPI; + } + + public BuiltInFullscreenSubTarget() + { + displayName = "Fullscreen"; + } + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltinFullscreenSubTarget.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltinFullscreenSubTarget.cs.meta new file mode 100644 index 00000000000..6492eb439a4 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Targets/BuiltinFullscreenSubTarget.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3107a8a084c35ab4cb765b37e0699ce3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture.meta b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture.meta new file mode 100644 index 00000000000..6fcda6fe46d --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d5720fee1395a0469d470106d06823e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CreateCustomRenderTextureShaderGraph.cs b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CreateCustomRenderTextureShaderGraph.cs new file mode 100644 index 00000000000..8f9a429f0f8 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CreateCustomRenderTextureShaderGraph.cs @@ -0,0 +1,24 @@ +using System; +using UnityEditor.ShaderGraph; +using UnityEngine.Rendering; + +namespace UnityEditor.Rendering.CustomRenderTexture.ShaderGraph +{ + public static class CustomTextureShaderGraphMenu + { + [MenuItem("Assets/Create/Shader Graph/Custom Render Texture", priority = CoreUtils.Sections.section3 + CoreUtils.Priorities.assetsCreateShaderMenuPriority)] + public static void CreateCustomTextureShaderGraph() + { + var target = (CustomRenderTextureTarget)Activator.CreateInstance(typeof(CustomRenderTextureTarget)); + target.TrySetActiveSubTarget(typeof(CustomTextureSubTarget)); + + var blockDescriptors = new[] + { + BlockFields.SurfaceDescription.BaseColor, + BlockFields.SurfaceDescription.Alpha, + }; + + GraphUtil.CreateNewGraphWithOutputs(new[] { target }, blockDescriptors); + } + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CreateCustomRenderTextureShaderGraph.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CreateCustomRenderTextureShaderGraph.cs.meta new file mode 100644 index 00000000000..3f5277f5e28 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CreateCustomRenderTextureShaderGraph.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 592fd794cdd703e4ca365fbf30d4ca8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomRenderTextureTarget.cs b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomRenderTextureTarget.cs new file mode 100644 index 00000000000..e5980188ce5 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomRenderTextureTarget.cs @@ -0,0 +1,239 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.UIElements; +using UnityEditor; +using UnityEditor.ShaderGraph; +using UnityEditor.UIElements; +using UnityEditor.ShaderGraph.Serialization; +using SubTargetListPool = UnityEngine.Rendering.ListPool; +using System.Reflection; + +namespace UnityEditor.Rendering.CustomRenderTexture.ShaderGraph +{ + sealed class CustomRenderTextureTarget : Target + { + // Constants + const string kAssetGuid = "a0bae34258e39cd4899b63278c24c086"; // FullscreenPassTarget.cs + + // SubTarget + List m_SubTargets; + List m_SubTargetNames; + int activeSubTargetIndex => m_SubTargets.IndexOf(m_ActiveSubTarget); + + // View + PopupField m_SubTargetField; + TextField m_CustomGUIField; + + [SerializeField] + JsonData m_ActiveSubTarget; + + [SerializeField] + string m_CustomEditorGUI; + + public CustomRenderTextureTarget() + { + displayName = "Custom Render Texture"; + isHidden = false; + m_SubTargets = GetSubTargets(this); + m_SubTargetNames = m_SubTargets.Select(x => x.displayName).ToList(); + ProcessSubTargetList(ref m_ActiveSubTarget, ref m_SubTargets); + } + + public static void ProcessSubTargetList(ref JsonData activeSubTarget, ref List subTargets) + { + if (subTargets == null || subTargets.Count == 0) + return; + + // assign the initial sub-target, if none is assigned yet + if (activeSubTarget.value == null) + activeSubTarget = subTargets[0]; + + // Update SubTarget list with active SubTarget + var activeSubTargetType = activeSubTarget.value.GetType(); + var activeSubTargetCurrent = subTargets.FirstOrDefault(x => x.GetType() == activeSubTargetType); + var index = subTargets.IndexOf(activeSubTargetCurrent); + subTargets[index] = activeSubTarget; + } + + public static List GetSubTargets(T target) where T : Target + { + // Get Variants + var subTargets = SubTargetListPool.Get(); + var typeCollection = TypeCache.GetTypesDerivedFrom(); + foreach (var type in typeCollection) + { + if (type.IsAbstract || !type.IsClass) + continue; + + var subTarget = (SubTarget)Activator.CreateInstance(type); + if (!subTarget.isHidden && subTarget.targetType.Equals(typeof(T))) + { + subTarget.target = target; + subTargets.Add(subTarget); + } + } + + return subTargets; + } + + public SubTarget activeSubTarget + { + get => m_ActiveSubTarget; + set => m_ActiveSubTarget = value; + } + + public string customEditorGUI + { + get => m_CustomEditorGUI; + set => m_CustomEditorGUI = value; + } + + public override bool IsActive() => activeSubTarget.IsActive(); + + public override void Setup(ref TargetSetupContext context) + { + // Setup the Target + context.AddAssetDependency(new GUID(kAssetGuid), AssetCollection.Flags.SourceDependency); + + // Setup the active SubTarget + ProcessSubTargetList(ref m_ActiveSubTarget, ref m_SubTargets); + m_ActiveSubTarget.value.target = this; + m_ActiveSubTarget.value.Setup(ref context); + + // Override EditorGUI + if (!string.IsNullOrEmpty(m_CustomEditorGUI)) + { + context.SetDefaultShaderGUI(m_CustomEditorGUI); + } + } + + public override void GetFields(ref TargetFieldContext context) + { + var descs = context.blocks.Select(x => x.descriptor); + // Core fields + context.AddField(Fields.GraphVertex, descs.Contains(BlockFields.VertexDescription.Position) || + descs.Contains(BlockFields.VertexDescription.Normal) || + descs.Contains(BlockFields.VertexDescription.Tangent)); + context.AddField(Fields.GraphPixel); + + // SubTarget fields + m_ActiveSubTarget.value.GetFields(ref context); + } + + public override void GetActiveBlocks(ref TargetActiveBlockContext context) + { + // SubTarget blocks + m_ActiveSubTarget.value.GetActiveBlocks(ref context); + } + + public override void GetPropertiesGUI(ref TargetPropertyGUIContext context, Action onChange, Action registerUndo) + { + // Core properties + m_SubTargetField = new PopupField(m_SubTargetNames, activeSubTargetIndex); + context.AddProperty("Material", m_SubTargetField, (evt) => + { + if (Equals(activeSubTargetIndex, m_SubTargetField.index)) + return; + + registerUndo("Change Material"); + m_ActiveSubTarget = m_SubTargets[m_SubTargetField.index]; + onChange(); + }); + + // SubTarget properties + m_ActiveSubTarget.value.GetPropertiesGUI(ref context, onChange, registerUndo); + + // Custom Editor GUI + // Requires FocusOutEvent + m_CustomGUIField = new TextField("") { value = customEditorGUI }; + m_CustomGUIField.RegisterCallback(s => + { + if (Equals(customEditorGUI, m_CustomGUIField.value)) + return; + + registerUndo("Change Custom Editor GUI"); + customEditorGUI = m_CustomGUIField.value; + onChange(); + }); + context.AddProperty("Custom Editor GUI", m_CustomGUIField, (evt) => { }); + } + + public bool TrySetActiveSubTarget(Type subTargetType) + { + if (!subTargetType.IsSubclassOf(typeof(SubTarget))) + return false; + + foreach (var subTarget in m_SubTargets) + { + if (subTarget.GetType().Equals(subTargetType)) + { + m_ActiveSubTarget = subTarget; + return true; + } + } + + return false; + } + + public override bool WorksWithSRP(RenderPipelineAsset scriptableRenderPipeline) => true; + + public override bool IsNodeAllowedByTarget(System.Type nodeType) + { + SRPFilterAttribute srpFilter = NodeClassCache.GetAttributeOnNodeType(nodeType); + bool allowed = true; + + if (srpFilter != null) + allowed = false; + + return allowed; + } + } + + static class FullscreePasses + { + public static PassDescriptor CustomRenderTexture = new PassDescriptor + { + // Definition + referenceName = "SHADERPASS_CUSTOM_RENDER_TEXTURE", + useInPreview = true, + + // Template + passTemplatePath = AssetDatabase.GUIDToAssetPath("afa536a0de48246de92194c9e987b0b8"), // CustomTextureSubShader.template + + // Port Mask + validVertexBlocks = new BlockFieldDescriptor[] + { + BlockFields.VertexDescription.Position, + BlockFields.VertexDescription.Normal, + BlockFields.VertexDescription.Tangent, + }, + validPixelBlocks = new BlockFieldDescriptor[] + { + BlockFields.SurfaceDescription.BaseColor, + BlockFields.SurfaceDescription.Alpha, + }, + + // Fields + structs = new StructCollection + { + { Structs.Attributes }, + { Structs.SurfaceDescriptionInputs }, + { Structs.VertexDescriptionInputs }, + }, + requiredFields = new FieldCollection() + { + StructFields.Attributes.color, + StructFields.Attributes.uv0, + StructFields.Varyings.color, + StructFields.Varyings.texCoord0, + }, + fieldDependencies = new DependencyCollection() + { + { FieldDependencies.Default }, + }, + }; + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomRenderTextureTarget.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomRenderTextureTarget.cs.meta new file mode 100644 index 00000000000..b2178d23fff --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomRenderTextureTarget.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a0bae34258e39cd4899b63278c24c086 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTexture.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTexture.hlsl new file mode 100644 index 00000000000..d2fe9b5662a --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTexture.hlsl @@ -0,0 +1,279 @@ +// Ported from CGinc version + +#ifndef UNITY_CUSTOM_TEXTURE_INCLUDED +#define UNITY_CUSTOM_TEXTURE_INCLUDED + +#ifndef UNITY_PI +#define UNITY_PI 3.14159265358979323846 +#endif + +// Keep in sync with CustomRenderTexture.h +#define kCustomTextureBatchSize 16 + +#define CRT_DIMENSION_2D 0.0 +#define CRT_DIMENSION_3D 1.0 +#define CRT_DIMENSION_CUBE 2.0 + +struct appdata_customrendertexture +{ + uint vertexID : SV_VertexID; +}; + +// User facing vertex to fragment shader structure +struct v2f_customrendertexture +{ + float4 vertex : SV_POSITION; + float3 localTexcoord : TEXCOORD0; // Texcoord local to the update zone (== globalTexcoord if no partial update zone is specified) + float3 globalTexcoord : TEXCOORD1; // Texcoord relative to the complete custom texture + uint primitiveID : TEXCOORD2; // Index of the update zone (correspond to the index in the updateZones of the Custom Texture) + float3 direction : TEXCOORD3; // For cube textures, direction of the pixel being rendered in the cubemap +}; + +float2 CustomRenderTextureRotate2D(float2 pos, float angle) +{ + float sn = sin(angle); + float cs = cos(angle); + + return float2( pos.x * cs - pos.y * sn, pos.x * sn + pos.y * cs); +} + +// Built-in unity functions and matrices: + +float4 _Time, _SinTime, _CosTime, unity_DeltaTime; + +// ================================ +// PER FRAME CONSTANTS +// ================================ +#if defined(USING_STEREO_MATRICES) + #define glstate_matrix_projection unity_StereoMatrixP[unity_StereoEyeIndex] + #define unity_MatrixV unity_StereoMatrixV[unity_StereoEyeIndex] + #define unity_MatrixInvV unity_StereoMatrixInvV[unity_StereoEyeIndex] + #define unity_MatrixVP unity_StereoMatrixVP[unity_StereoEyeIndex] + + #define unity_CameraProjection unity_StereoCameraProjection[unity_StereoEyeIndex] + #define unity_CameraInvProjection unity_StereoCameraInvProjection[unity_StereoEyeIndex] + #define unity_WorldToCamera unity_StereoWorldToCamera[unity_StereoEyeIndex] + #define unity_CameraToWorld unity_StereoCameraToWorld[unity_StereoEyeIndex] +#else + #if !defined(USING_STEREO_MATRICES) + float4x4 glstate_matrix_projection; + float4x4 unity_MatrixV; + float4x4 unity_MatrixInvV; + float4x4 unity_MatrixVP; + float4x4 unity_ObjectToWorld; + float4 unity_StereoScaleOffset; + #endif +#endif + +// Internal +float4 CustomRenderTextureCenters[kCustomTextureBatchSize]; +float4 CustomRenderTextureSizesAndRotations[kCustomTextureBatchSize]; +float CustomRenderTexturePrimitiveIDs[kCustomTextureBatchSize]; + +float4 CustomRenderTextureParameters; +#define CustomRenderTextureUpdateSpace CustomRenderTextureParameters.x // Normalized(0)/PixelSpace(1) +#define CustomRenderTexture3DTexcoordW CustomRenderTextureParameters.y +#define CustomRenderTextureIs3D (CustomRenderTextureParameters.z == CRT_DIMENSION_3D) +#define CustomRenderTextureDimension CustomRenderTextureParameters.z + +// User facing uniform variables +float4 _CustomRenderTextureInfo; // x = width, y = height, z = depth, w = face/3DSlice + +// Helpers +#define _CustomRenderTextureWidth _CustomRenderTextureInfo.x +#define _CustomRenderTextureHeight _CustomRenderTextureInfo.y +#define _CustomRenderTextureDepth _CustomRenderTextureInfo.z + +// Those two are mutually exclusive so we can use the same slot +#define _CustomRenderTextureCubeFace _CustomRenderTextureInfo.w +#define _CustomRenderTexture3DSlice _CustomRenderTextureInfo.w + +float _CustomRenderTextureMipLevel; + +Texture2D _SelfTexture2D; +float4 _SelfTexture2D_TexelSize; +sampler sampler_SelfTexture2D; + +TextureCube _SelfTextureCube; +float4 _SelfTextureCube_TexelSize; +sampler sampler_SelfTextureCube; + +Texture3D _SelfTexture3D; +float4 _SelfTexture3D_TexelSize; +sampler sampler_SelfTexture3D; + +float3 ComputeCubemapDirectionFromUV(float2 uv, int cubeFace) +{ + float2 xy = uv * 2.0 - 1.0; + float3 direction; + if(cubeFace == 0.0) + { + direction = normalize(float3(1.0, -xy.y, -xy.x)); + } + else if(cubeFace == 1.0) + { + direction = normalize(float3(-1.0, -xy.y, xy.x)); + } + else if(cubeFace == 2.0) + { + direction = normalize(float3(xy.x, 1.0, xy.y)); + } + else if(cubeFace == 3.0) + { + direction = normalize(float3(xy.x, -1.0, -xy.y)); + } + else if(cubeFace == 4.0) + { + direction = normalize(float3(xy.x, -xy.y, 1.0)); + } + else if(cubeFace == 5.0) + { + direction = normalize(float3(-xy.x, -xy.y, -1.0)); + } + else + { + direction = float3(0, 0, 0); + } + + return direction; +} + +float3 CustomRenderTextureComputeCubeDirection(float2 globalTexcoord) +{ + return ComputeCubemapDirectionFromUV(globalTexcoord, _CustomRenderTextureCubeFace); +} + +// standard custom texture vertex shader that should always be used +v2f_customrendertexture CustomRenderTextureVertexShader(appdata_customrendertexture IN) +{ + v2f_customrendertexture OUT; + +#if UNITY_UV_STARTS_AT_TOP + const float2 vertexPositions[6] = + { + { -1.0f, 1.0f }, + { -1.0f, -1.0f }, + { 1.0f, -1.0f }, + { 1.0f, 1.0f }, + { -1.0f, 1.0f }, + { 1.0f, -1.0f } + }; + + const float2 texCoords[6] = + { + { 0.0f, 0.0f }, + { 0.0f, 1.0f }, + { 1.0f, 1.0f }, + { 1.0f, 0.0f }, + { 0.0f, 0.0f }, + { 1.0f, 1.0f } + }; +#else + const float2 vertexPositions[6] = + { + { 1.0f, 1.0f }, + { -1.0f, -1.0f }, + { -1.0f, 1.0f }, + { -1.0f, -1.0f }, + { 1.0f, 1.0f }, + { 1.0f, -1.0f } + }; + + const float2 texCoords[6] = + { + { 1.0f, 1.0f }, + { 0.0f, 0.0f }, + { 0.0f, 1.0f }, + { 0.0f, 0.0f }, + { 1.0f, 1.0f }, + { 1.0f, 0.0f } + }; +#endif + + uint primitiveID = IN.vertexID / 6; + uint vertexID = IN.vertexID % 6; + float3 updateZoneCenter = CustomRenderTextureCenters[primitiveID].xyz; + float3 updateZoneSize = CustomRenderTextureSizesAndRotations[primitiveID].xyz; + float rotation = CustomRenderTextureSizesAndRotations[primitiveID].w * UNITY_PI / 180.0f; + +#if !UNITY_UV_STARTS_AT_TOP + rotation = -rotation; +#endif + + // Normalize rect if needed + if (CustomRenderTextureUpdateSpace > 0.0) // Pixel space + { + // Normalize xy because we need it in clip space. + updateZoneCenter.xy /= _CustomRenderTextureInfo.xy; + updateZoneSize.xy /= _CustomRenderTextureInfo.xy; + } + else // normalized space + { + // Un-normalize depth because we need actual slice index for culling + updateZoneCenter.z *= _CustomRenderTextureInfo.z; + updateZoneSize.z *= _CustomRenderTextureInfo.z; + } + + // Compute rotation + + // Compute quad vertex position + float2 clipSpaceCenter = updateZoneCenter.xy * 2.0 - 1.0; + float2 pos = vertexPositions[vertexID] * updateZoneSize.xy; + pos = CustomRenderTextureRotate2D(pos, rotation); + pos.x += clipSpaceCenter.x; +#if UNITY_UV_STARTS_AT_TOP + pos.y += clipSpaceCenter.y; +#else + pos.y -= clipSpaceCenter.y; +#endif + + // For 3D texture, cull quads outside of the update zone + // This is neeeded in additional to the preliminary minSlice/maxSlice done on the CPU because update zones can be disjointed. + // ie: slices [1..5] and [10..15] for two differents zones so we need to cull out slices 0 and [6..9] + if (CustomRenderTextureIs3D) + { + int minSlice = (int)(updateZoneCenter.z - updateZoneSize.z * 0.5); + int maxSlice = minSlice + (int)updateZoneSize.z; + if (_CustomRenderTexture3DSlice < minSlice || _CustomRenderTexture3DSlice >= maxSlice) + { + pos.xy = float2(1000.0, 1000.0); // Vertex outside of ncs + } + } + + OUT.vertex = float4(pos, 0.0, 1.0); + OUT.primitiveID = asuint(CustomRenderTexturePrimitiveIDs[primitiveID]); + OUT.localTexcoord = float3(texCoords[vertexID], CustomRenderTexture3DTexcoordW); + OUT.globalTexcoord = float3(pos.xy * 0.5 + 0.5, CustomRenderTexture3DTexcoordW); +#if UNITY_UV_STARTS_AT_TOP + OUT.globalTexcoord.y = 1.0 - OUT.globalTexcoord.y; +#endif + OUT.direction = CustomRenderTextureComputeCubeDirection(OUT.globalTexcoord.xy); + + return OUT; +} + +struct appdata_init_customrendertexture +{ + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; +}; + +// User facing vertex to fragment structure for initialization materials +struct v2f_init_customrendertexture +{ + float4 vertex : SV_POSITION; + float3 texcoord : TEXCOORD0; + float3 direction : TEXCOORD1; +}; + +// standard custom texture vertex shader that should always be used for initialization shaders +v2f_init_customrendertexture InitCustomRenderTextureVertexShader (appdata_init_customrendertexture v) +{ + v2f_init_customrendertexture o; + o.vertex = v.vertex; + o.texcoord = float3(v.texcoord.xy, CustomRenderTexture3DTexcoordW); + o.direction = CustomRenderTextureComputeCubeDirection(v.texcoord.xy); + return o; +} + +#endif // UNITY_CUSTOM_TEXTURE_INCLUDED diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTexture.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTexture.hlsl.meta new file mode 100644 index 00000000000..6a2dc397e15 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTexture.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8f43a880cf1819049aa196a7696ee562 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureGraph.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureGraph.hlsl new file mode 100644 index 00000000000..0126093920e --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureGraph.hlsl @@ -0,0 +1,41 @@ +#ifndef CUSTOM_TEXTURE_GTRAPH +#define CUSTOM_TEXTURE_GTRAPH + +float4 SRGBToLinear( float4 c ) { return c; } +float3 SRGBToLinear( float3 c ) { return c; } + +// This function exists in ShaderGraph +#ifndef UNITY_GRAPHFUNCTIONS_INCLUDED +bool IsGammaSpace() +{ +#ifdef UNITY_COLORSPACE_GAMMA + return true; +#else + return false; +#endif +} +#endif + +// Unpack normal as DXT5nm (1, y, 1, x) or BC5 (x, y, 0, 1) +// Note neutral texture like "bump" is (0, 0, 1, 1) to work with both plain RGB normal and DXT5nm/BC5 +float3 UnpackNormalmapRGorAG(float4 packednormal) +{ + // This do the trick + packednormal.x *= packednormal.w; + + float3 normal; + normal.xy = packednormal.xy * 2 - 1; + normal.z = sqrt(1 - saturate(dot(normal.xy, normal.xy))); + return normal; +} + +inline float3 UnpackNormal(float4 packednormal) +{ +#if defined(UNITY_NO_DXT5nm) + return packednormal.xyz * 2 - 1; +#else + return UnpackNormalmapRGorAG(packednormal); +#endif +} + +#endif // CUSTOM_TEXTURE_GTRAPH diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureGraph.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureGraph.hlsl.meta new file mode 100644 index 00000000000..d4b4100c917 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureGraph.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 96a8b300b2dfb474bb4fd8118749fdec +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureNodes.cs b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureNodes.cs new file mode 100644 index 00000000000..c8ed3184395 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureNodes.cs @@ -0,0 +1,170 @@ +using UnityEngine; +using UnityEditor.ShaderGraph; +using UnityEditor.Graphing; +using UnityEditor.ShaderGraph.Internal; + +namespace UnityEditor.Rendering.CustomRenderTexture.ShaderGraph +{ + [Title("Custom Render Texture", "Size")] + [SubTargetFilter(typeof(CustomTextureSubTarget))] + class CustomTextureSize : AbstractMaterialNode, IGeneratesFunction + { + private const string kOutputSlotWidthName = "Texture Width"; + private const string kOutputSlotHeightName = "Texture Height"; + private const string kOutputSlotDepthName = "Texture Depth"; + + public const int OutputSlotWidthId = 0; + public const int OutputSlotHeightId = 1; + public const int OutputSlotDepthId = 2; + + public CustomTextureSize() + { + name = "Custom Render Texture Size"; + UpdateNodeAfterDeserialization(); + } + + protected int[] validSlots => new[] { OutputSlotWidthId, OutputSlotHeightId, OutputSlotDepthId }; + + public sealed override void UpdateNodeAfterDeserialization() + { + AddSlot(new Vector1MaterialSlot(OutputSlotWidthId, kOutputSlotWidthName, kOutputSlotWidthName, SlotType.Output, 0)); + AddSlot(new Vector1MaterialSlot(OutputSlotHeightId, kOutputSlotHeightName, kOutputSlotHeightName, SlotType.Output, 0)); + AddSlot(new Vector1MaterialSlot(OutputSlotDepthId, kOutputSlotDepthName, kOutputSlotDepthName, SlotType.Output, 0)); + RemoveSlotsNameNotMatching(validSlots); + } + + public override string GetVariableNameForSlot(int slotId) + { + switch (slotId) + { + case OutputSlotHeightId: + return "_CustomRenderTextureHeight"; + case OutputSlotDepthId: + return "_CustomRenderTextureDepth"; + default: + return "_CustomRenderTextureWidth"; + } + } + + public void GenerateNodeFunction(FunctionRegistry registry, GenerationMode generationMode) + { + // For preview only we declare CRT defines + if (generationMode == GenerationMode.Preview) + { + registry.builder.AppendLine("#define _CustomRenderTextureHeight 1.0"); + registry.builder.AppendLine("#define _CustomRenderTextureWidth 1.0"); + registry.builder.AppendLine("#define _CustomRenderTextureDepth 1.0"); + } + } + } + + [Title("Custom Render Texture", "Slice Index / Cubemap Face")] + [SubTargetFilter(typeof(CustomTextureSubTarget))] + class CustomTextureSlice : AbstractMaterialNode, IGeneratesFunction + { + private const string kOutputSlotCubeFaceName = "Texture Cube Face"; + private const string kOutputSlot3DSliceName = "Texture 3D Slice"; + + public const int OutputSlotCubeFaceId = 3; + public const int OutputSlot3DSliceId = 4; + + public CustomTextureSlice() + { + name = "Slice Index / Cubemap Face"; + UpdateNodeAfterDeserialization(); + } + + protected int[] validSlots => new[] { OutputSlotCubeFaceId, OutputSlot3DSliceId }; + + public sealed override void UpdateNodeAfterDeserialization() + { + AddSlot(new Vector1MaterialSlot(OutputSlotCubeFaceId, kOutputSlotCubeFaceName, kOutputSlotCubeFaceName, SlotType.Output, 0)); + AddSlot(new Vector1MaterialSlot(OutputSlot3DSliceId, kOutputSlot3DSliceName, kOutputSlot3DSliceName, SlotType.Output, 0)); + RemoveSlotsNameNotMatching(validSlots); + } + + public override string GetVariableNameForSlot(int slotId) + { + switch (slotId) + { + case OutputSlotCubeFaceId: + return "_CustomRenderTextureCubeFace"; + default: + case OutputSlot3DSliceId: + return "_CustomRenderTexture3DSlice"; + } + } + + public void GenerateNodeFunction(FunctionRegistry registry, GenerationMode generationMode) + { + // For preview only we declare CRT defines + if (generationMode == GenerationMode.Preview) + { + registry.builder.AppendLine("#define _CustomRenderTextureCubeFace 0.0"); + registry.builder.AppendLine("#define _CustomRenderTexture3DSlice 0.0"); + } + } + } + + [Title("Custom Render Texture", "Self")] + [SubTargetFilter(typeof(CustomTextureSubTarget))] + class CustomTextureSelf : AbstractMaterialNode, IGeneratesFunction + { + private const string kOutputSlotSelf2DName = "Self Texture 2D"; + private const string kOutputSlotSelfCubeName = "Self Texture Cube"; + private const string kOutputSlotSelf3DName = "Self Texture 3D"; + + public const int OutputSlotSelf2DId = 5; + public const int OutputSlotSelfCubeId = 6; + public const int OutputSlotSelf3DId = 7; + + public CustomTextureSelf() + { + name = "Custom Render Texture Self"; + UpdateNodeAfterDeserialization(); + } + + protected int[] validSlots => new[] { OutputSlotSelf2DId, OutputSlotSelfCubeId, OutputSlotSelf3DId }; + + public sealed override void UpdateNodeAfterDeserialization() + { + AddSlot(new Texture2DMaterialSlot(OutputSlotSelf2DId, kOutputSlotSelf2DName, kOutputSlotSelf2DName, SlotType.Output, ShaderStageCapability.Fragment, false) { bareResource = true }); + AddSlot(new CubemapMaterialSlot(OutputSlotSelfCubeId, kOutputSlotSelfCubeName, kOutputSlotSelfCubeName, SlotType.Output, ShaderStageCapability.Fragment, false) { bareResource = true }); + AddSlot(new Texture3DMaterialSlot(OutputSlotSelf3DId, kOutputSlotSelf3DName, kOutputSlotSelf3DName, SlotType.Output, ShaderStageCapability.Fragment, false) { bareResource = true }); + RemoveSlotsNameNotMatching(validSlots); + } + + public override string GetVariableNameForSlot(int slotId) + { + switch (slotId) + { + case OutputSlotSelf2DId: + return "UnityBuildTexture2DStructNoScale(_SelfTexture2D)"; + case OutputSlotSelfCubeId: + return "UnityBuildTextureCubeStruct(_SelfTextureCube)"; + default: + return "UnityBuildTexture3DStruct(_SelfTexture3D)"; + } + } + + public void GenerateNodeFunction(FunctionRegistry registry, GenerationMode generationMode) + { + // For preview only we declare CRT defines + if (generationMode == GenerationMode.Preview) + { + registry.builder.AppendLine("#if !defined(UNITY_CRT_PREVIEW_TEXTURE) && !defined(UNITY_CUSTOM_TEXTURE_INCLUDED)"); + registry.builder.AppendLine("#define UNITY_CRT_PREVIEW_TEXTURE"); + registry.builder.AppendLine("TEXTURE2D(_SelfTexture2D);"); + registry.builder.AppendLine("SAMPLER(sampler_SelfTexture2D);"); + registry.builder.AppendLine("float4 _SelfTexture2D_TexelSize;"); + registry.builder.AppendLine("TEXTURECUBE(_SelfTextureCube);"); + registry.builder.AppendLine("SAMPLER(sampler_SelfTextureCube);"); + registry.builder.AppendLine("float4 _SelfTextureCube_TexelSize;"); + registry.builder.AppendLine("TEXTURE3D(_SelfTexture3D);"); + registry.builder.AppendLine("SAMPLER(sampler_SelfTexture3D);"); + registry.builder.AppendLine("float4 sampler_SelfTexture3D_TexelSize;"); + registry.builder.AppendLine("#endif"); + } + } + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureNodes.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureNodes.cs.meta new file mode 100644 index 00000000000..ae900600b2c --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureNodes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 72b77c287dc624a48a85dea2fb04eeb7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubShader.template b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubShader.template new file mode 100644 index 00000000000..f685960f675 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubShader.template @@ -0,0 +1,131 @@ +Pass +{ + $splice(PassName) + Tags + { + $splice(LightMode) + } + + // Debug + $splice(Debug) + + // -------------------------------------------------- + // Pass + + Lighting Off + Blend One Zero + + HLSLPROGRAM + #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl" + #undef SAMPLE_DEPTH_TEXTURE + #undef SAMPLE_DEPTH_TEXTURE_LOD + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" + #include "Packages/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTexture.hlsl" + #include "Packages/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureGraph.hlsl" + #pragma vertex CustomRenderTextureVertexShader + #pragma fragment frag + #pragma target 3.0 + + // Pragmas + $splice(PassPragmas) + + // Keywords + $splice(PassKeywords) + $splice(GraphKeywords) + + struct SurfaceDescriptionInputs + { + // update input values + float4 uv0; + float4 uv1; + uint primitiveID; + float3 direction; + + // ShaderGraph accessors: + float3 WorldSpaceViewDirection; + float3 ObjectSpaceViewDirection; + float3 ObjectSpacePosition; + float3 TimeParameters; + float3 WorldSpaceNormal; + float3 ObjectSpaceNormal; + float2 NDCPosition; + float4 ScreenPosition; + }; + + SurfaceDescriptionInputs ConvertV2FToSurfaceInputs( v2f_customrendertexture IN ) + { + SurfaceDescriptionInputs o; + + o.uv0 = float4(IN.localTexcoord, 0); + o.uv1 = float4(IN.globalTexcoord, 0); + o.primitiveID = IN.primitiveID; + o.direction = normalize(IN.direction); + + // other space of view direction are not supported + $SurfaceDescriptionInputs.WorldSpaceViewDirection: o.WorldSpaceViewDirection = o.direction; + $SurfaceDescriptionInputs.ObjectSpaceViewDirection: o.ObjectSpaceViewDirection = o.direction; + $SurfaceDescriptionInputs.ObjectSpacePosition: o.ObjectSpacePosition = o.direction; + $SurfaceDescriptionInputs.TimeParameters: o.TimeParameters = float3(_Time.y, _SinTime.x, _CosTime.y); + $SurfaceDescriptionInputs.WorldSpaceNormal: o.WorldSpaceNormal = o.direction; + $SurfaceDescriptionInputs.ObjectSpaceNormal o.ObjectSpaceNormal = o.direction; + $SurfaceDescriptionInputs.NDCPosition: o.NDCPosition = o.uv0.xy; + $SurfaceDescriptionInputs.ScreenPosition: o.ScreenPosition = float4(o.uv0.xy, 0, 1); + + // Unsupported properties: + $SurfaceDescriptionInputs.WorldSpaceBiTangent: #error 'WorldSpaceBiTangent' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ViewSpaceNormal: #error 'ViewSpaceNormal' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.TangentSpaceNormal: #error 'TangentSpaceNormal' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.WorldSpaceTangent: #error 'WorldSpaceTangent' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.WorldSpaceBiTangent: #error 'WorldSpaceBiTangent' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ObjectSpaceTangent: #error 'ObjectSpaceTangent' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ViewSpaceTangent: #error 'ViewSpaceTangent' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.TangentSpaceTangent: #error 'TangentSpaceTangent' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ObjectSpaceBiTangent: #error 'ObjectSpaceBiTangent' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ViewSpaceBiTangent: #error 'ViewSpaceBiTangent' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.TangentSpaceBiTangent: #error 'TangentSpaceBiTangent' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ViewSpaceViewDirection: #error 'ViewSpaceViewDirection' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.TangentSpaceViewDirection: #error 'TangentSpaceViewDirection' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ViewSpacePosition: #error ViewSpacePosition'' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.TangentSpacePosition: #error 'TangentSpacePosition' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.WorldSpacePositionPredisplacement: #error 'WorldSpacePositionPredisplacement' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ObjectSpacePositionPredisplacement: #error 'ObjectSpacePositionPredisplacement' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ViewSpacePositionPredisplacement: #error 'ViewSpacePositionPredisplacement' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.TangentSpacePositionPredisplacement: #error 'TangentSpacePositionPredisplacement' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.AbsoluteWorldSpacePositionPredisplacement: #error 'AbsoluteWorldSpacePositionPredisplacement' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.uv2: #error 'uv2' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.uv3: #error 'uv3' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.VertexColor: #error 'VertexColor' is not available in Custom Render Textures. + + // We can't fake the positions because we can't differentiate Cube and 2D custom render textures + $SurfaceDescriptionInputs.WorldSpacePosition: #error 'WorldSpacePosition' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.ObjectSpacePosition: #error 'ObjectSpacePosition' is not available in Custom Render Textures. + $SurfaceDescriptionInputs.AbsoluteWorldSpacePosition: #error 'AbsoluteWorldSpacePosition' is not available in Custom Render Textures. + + return o; + } + + // -------------------------------------------------- + // Graph + + // Graph Properties + $splice(GraphProperties) + + // Graph Includes + $splice(GraphIncludes) + + // Graph Functions + $splice(GraphFunctions) + + // Graph Pixel + $splice(GraphPixel) + + float4 frag(v2f_customrendertexture IN) : COLOR + { + SurfaceDescriptionInputs surfaceInput = ConvertV2FToSurfaceInputs(IN); + SurfaceDescription surface = SurfaceDescriptionFunction(surfaceInput); + + return float4(surface.BaseColor, surface.Alpha); + } + ENDHLSL +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubShader.template.meta b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubShader.template.meta new file mode 100644 index 00000000000..fed3124f382 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubShader.template.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: afa536a0de48246de92194c9e987b0b8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubTarget.cs b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubTarget.cs new file mode 100644 index 00000000000..09f03ef082a --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubTarget.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.ShaderGraph; +using UnityEditor.ShaderGraph.Legacy; + +namespace UnityEditor.Rendering.CustomRenderTexture.ShaderGraph +{ + sealed class CustomTextureSubTarget : SubTarget + { + const string kAssetGuid = "5b2d4724a38a5485ba5e7dc2f7d86f1a"; // CustomTextureSubTarget.cs + + internal static FieldDescriptor colorField = new FieldDescriptor(String.Empty, "Color", string.Empty); + + public CustomTextureSubTarget() + { + isHidden = false; + displayName = "Custom Render Texture"; + } + + public override bool IsActive() => true; + + public override void Setup(ref TargetSetupContext context) + { + context.AddAssetDependency(new GUID(kAssetGuid), AssetCollection.Flags.SourceDependency); + context.AddSubShader(SubShaders.CustomRenderTexture); + } + + public override void GetFields(ref TargetFieldContext context) + { + context.AddField(colorField, true); + } + + public override void GetActiveBlocks(ref TargetActiveBlockContext context) + { + context.AddBlock(BlockFields.SurfaceDescription.BaseColor); + context.AddBlock(BlockFields.SurfaceDescription.Alpha); + } + + public override void GetPropertiesGUI(ref TargetPropertyGUIContext context, Action onChange, Action registerUndo) + { + } + + static class SubShaders + { + public static SubShaderDescriptor CustomRenderTexture = new SubShaderDescriptor() + { + generatesPreview = true, + passes = new PassCollection + { + { FullscreePasses.CustomRenderTexture }, + }, + }; + } + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubTarget.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubTarget.cs.meta new file mode 100644 index 00000000000..763bcc9d552 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/CustomRenderTexture/CustomTextureSubTarget.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b2d4724a38a5485ba5e7dc2f7d86f1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen.meta new file mode 100644 index 00000000000..29be796022a --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b08719eeefb3f464f9c08fa512667b40 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenData.cs b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenData.cs new file mode 100644 index 00000000000..da060e0b556 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenData.cs @@ -0,0 +1,189 @@ +using UnityEditor.ShaderGraph; +using UnityEngine; +using static UnityEditor.Rendering.BuiltIn.ShaderUtils; +using UnityEditor.Rendering.BuiltIn; +using System; +using UnityEditor.ShaderGraph.Serialization; +using UnityEngine.Rendering; +using BlendMode = UnityEngine.Rendering.BlendMode; +using BlendOp = UnityEditor.ShaderGraph.BlendOp; + +namespace UnityEditor.Rendering.Fullscreen.ShaderGraph +{ + internal class FullscreenData : JsonObject + { + public enum Version + { + Initial, + } + + [SerializeField] + Version m_Version = Version.Initial; + public Version version + { + get => m_Version; + set => m_Version = value; + } + + [SerializeField] + FullscreenMode m_fullscreenMode; + public FullscreenMode fullscreenMode + { + get => m_fullscreenMode; + set => m_fullscreenMode = value; + } + + [SerializeField] + FullscreenBlendMode m_BlendMode = FullscreenBlendMode.Disabled; + public FullscreenBlendMode blendMode + { + get => m_BlendMode; + set => m_BlendMode = value; + } + + [SerializeField] + BlendMode m_SrcColorBlendMode = BlendMode.Zero; + public BlendMode srcColorBlendMode + { + get => m_SrcColorBlendMode; + set => m_SrcColorBlendMode = value; + } + + [SerializeField] + BlendMode m_DstColorBlendMode = BlendMode.One; + public BlendMode dstColorBlendMode + { + get => m_DstColorBlendMode; + set => m_DstColorBlendMode = value; + } + + [SerializeField] + BlendOp m_ColorBlendOperation = BlendOp.Add; + public BlendOp colorBlendOperation + { + get => m_ColorBlendOperation; + set => m_ColorBlendOperation = value; + } + + [SerializeField] + BlendMode m_SrcAlphaBlendMode = BlendMode.Zero; + public BlendMode srcAlphaBlendMode + { + get => m_SrcAlphaBlendMode; + set => m_SrcAlphaBlendMode = value; + } + + [SerializeField] + BlendMode m_DstAlphaBlendMode = BlendMode.One; + public BlendMode dstAlphaBlendMode + { + get => m_DstAlphaBlendMode; + set => m_DstAlphaBlendMode = value; + } + + [SerializeField] + BlendOp m_AlphaBlendOperation = BlendOp.Add; + public BlendOp alphaBlendOperation + { + get => m_AlphaBlendOperation; + set => m_AlphaBlendOperation = value; + } + + [SerializeField] + bool m_EnableStencil = false; + public bool enableStencil + { + get => m_EnableStencil; + set => m_EnableStencil = value; + } + + [SerializeField] + int m_StencilReference = 0; + public int stencilReference + { + get => m_StencilReference; + set => m_StencilReference = Mathf.Clamp(value, 0, 255); + } + + [SerializeField] + int m_StencilReadMask = 255; + public int stencilReadMask + { + get => m_StencilReadMask; + set => m_StencilReadMask = Mathf.Clamp(value, 0, 255); + } + + [SerializeField] + int m_StencilWriteMask = 255; + public int stencilWriteMask + { + get => m_StencilWriteMask; + set => m_StencilWriteMask = Mathf.Clamp(value, 0, 255); + } + + [SerializeField] + CompareFunction m_StencilCompareFunction = CompareFunction.Always; + public CompareFunction stencilCompareFunction + { + get => m_StencilCompareFunction; + set => m_StencilCompareFunction = value; + } + + [SerializeField] + StencilOp m_StencilPassOperation = StencilOp.Keep; + public StencilOp stencilPassOperation + { + get => m_StencilPassOperation; + set => m_StencilPassOperation = value; + } + + [SerializeField] + StencilOp m_StencilFailOperation = StencilOp.Keep; + public StencilOp stencilFailOperation + { + get => m_StencilFailOperation; + set => m_StencilFailOperation = value; + } + + [SerializeField] + StencilOp m_StencilDepthFailOperation = StencilOp.Keep; + public StencilOp stencilDepthTestFailOperation + { + get => m_StencilDepthFailOperation; + set => m_StencilDepthFailOperation = value; + } + + [SerializeField] + bool m_DepthWrite = false; + public bool depthWrite + { + get => m_DepthWrite; + set => m_DepthWrite = value; + } + + [SerializeField] + FullscreenDepthWriteMode m_depthWriteMode = FullscreenDepthWriteMode.LinearEye; + public FullscreenDepthWriteMode depthWriteMode + { + get => m_depthWriteMode; + set => m_depthWriteMode = value; + } + + // When checked, allows the material to control ALL surface settings (uber shader style) + [SerializeField] + bool m_AllowMaterialOverride = false; + public bool allowMaterialOverride + { + get => m_AllowMaterialOverride; + set => m_AllowMaterialOverride = value; + } + + [SerializeField] + CompareFunction m_DepthTestMode = CompareFunction.Disabled; + public CompareFunction depthTestMode + { + get => m_DepthTestMode; + set => m_DepthTestMode = value; + } + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenData.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenData.cs.meta new file mode 100644 index 00000000000..93ea57f7f22 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 72e6c41bd91e94645bd050543cb17d62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenMetaData.cs b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenMetaData.cs new file mode 100644 index 00000000000..96afacbe506 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenMetaData.cs @@ -0,0 +1,19 @@ +using System; +using UnityEngine; +using UnityEditor.Rendering.BuiltIn; + +namespace UnityEditor.Rendering.Fullscreen.ShaderGraph +{ + [Serializable] + sealed class FullscreenMetaData : ScriptableObject + { + [SerializeField] + FullscreenMode m_FullscreenMode; + + public FullscreenMode fullscreenMode + { + get => m_FullscreenMode; + set => m_FullscreenMode = value; + } + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenMetaData.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenMetaData.cs.meta new file mode 100644 index 00000000000..900c66d7336 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenMetaData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e392ecea19f8779438f0b90905fdee13 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenShaderGUI.cs b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenShaderGUI.cs new file mode 100644 index 00000000000..b6ee3f63013 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenShaderGUI.cs @@ -0,0 +1,240 @@ +using System; +using UnityEngine; +using UnityEngine.Rendering; +using RenderQueue = UnityEngine.Rendering.RenderQueue; +using UnityEditor.ShaderGraph.Drawing; + +namespace UnityEditor.Rendering.Fullscreen.ShaderGraph +{ + public class FullscreenShaderGUI : ShaderGUI + { + [Flags] + protected enum Expandable + { + SurfaceOptions = 1 << 0, + SurfaceInputs = 1 << 1, + } + + protected class Styles + { + // Categories + public static readonly GUIContent SurfaceOptions = + EditorGUIUtility.TrTextContent("Surface Options", "Controls the rendering states of the fullscreen material."); + public static readonly GUIContent SurfaceInputs = EditorGUIUtility.TrTextContent("Surface Inputs", + "These settings describe the look and feel of the surface itself."); + + public static readonly GUIContent blendingMode = EditorGUIUtility.TrTextContent("Blending Mode", + "Controls how the color of the Transparent surface blends with the Material color in the background."); + public static readonly GUIContent srcColorBlendMode = EditorGUIUtility.TrTextContent("Src Color", + "Describes how the input color will be blended."); + public static readonly GUIContent dstColorBlendMode = EditorGUIUtility.TrTextContent("Dst Color", + "Describes how the destination color will be blended."); + public static readonly GUIContent colorBlendOperation = EditorGUIUtility.TrTextContent("Color Blend Op", + "Tell which operation to use when blending the colors. Default is Add."); + public static readonly GUIContent srcAlphaBlendMode = EditorGUIUtility.TrTextContent("Src Alpha", + "Describes how the input alpha will be blended."); + public static readonly GUIContent dstAlphaBlendMode = EditorGUIUtility.TrTextContent("Dst Alpha", + "Describes how the input alpha will be blended."); + public static readonly GUIContent alphaBlendOperation = EditorGUIUtility.TrTextContent("Alpha Blend Op", + "Tell which operation to use when blending the alpha channel. Default is Add."); + public static readonly GUIContent depthWrite = EditorGUIUtility.TrTextContent("Depth Write", + "Controls whether the shader writes depth."); + public static readonly GUIContent depthTest = EditorGUIUtility.TrTextContent("Depth Test", + "Specifies the depth test mode. The default is Always."); + + public static readonly GUIContent stencil = EditorGUIUtility.TrTextContent("Stencil Override", "Enable the stencil block in the shader."); + public static readonly GUIContent stencilRef = EditorGUIUtility.TrTextContent("Reference", "Reference value use for comparison and operations."); + public static readonly GUIContent stencilReadMask = EditorGUIUtility.TrTextContent("Read Mask", "Tells which bit are allowed to be read during the stencil test."); + public static readonly GUIContent stencilWriteMask = EditorGUIUtility.TrTextContent("Write Mask", "Tells which bit are allowed to be written during the stencil test."); + public static readonly GUIContent stencilComparison = EditorGUIUtility.TrTextContent("Comparison", "Tells which function to use when doing the stencil test."); + public static readonly GUIContent stencilPass = EditorGUIUtility.TrTextContent("Pass", "Tells what to do when the stencil test succeed."); + public static readonly GUIContent stencilFail = EditorGUIUtility.TrTextContent("Fail", "Tells what to do when the stencil test fails."); + public static readonly GUIContent stencilDepthFail = EditorGUIUtility.TrTextContent("Depth Fail", "Tells what to do when the depth test fails."); + } + + public bool m_FirstTimeApply = true; + + // By default, everything is expanded + readonly MaterialHeaderScopeList m_MaterialScopeList = new MaterialHeaderScopeList(uint.MaxValue); + + // These have to be stored due to how MaterialHeaderScopeList callbacks work (they don't provide this data in the callbacks) + MaterialEditor m_MaterialEditor; + MaterialProperty[] m_Properties; + + private const int queueOffsetRange = 50; + + override public void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) + { + m_MaterialEditor = materialEditor; + m_Properties = properties; + + Material targetMat = materialEditor.target as Material; + + if (m_FirstTimeApply) + { + OnOpenGUI(targetMat, materialEditor, properties); + m_FirstTimeApply = false; + } + + ShaderPropertiesGUI(materialEditor, targetMat, properties); + } + + public virtual void OnOpenGUI(Material material, MaterialEditor materialEditor, MaterialProperty[] properties) + { + // Generate the foldouts + m_MaterialScopeList.RegisterHeaderScope(Styles.SurfaceOptions, (uint)Expandable.SurfaceOptions, DrawSurfaceOptions); + m_MaterialScopeList.RegisterHeaderScope(Styles.SurfaceInputs, (uint)Expandable.SurfaceInputs, DrawSurfaceInputs); + } + + public override void AssignNewShaderToMaterial(Material material, Shader oldShader, Shader newShader) + { + // Clear all keywords for fresh start + // Note: this will nuke user-selected custom keywords when they change shaders + material.shaderKeywords = null; + + base.AssignNewShaderToMaterial(material, oldShader, newShader); + + // Setup keywords based on the new shader + UnityEditor.Rendering.BuiltIn.ShaderUtils.ResetMaterialKeywords(material); + } + + void ShaderPropertiesGUI(MaterialEditor materialEditor, Material material, MaterialProperty[] properties) + { + m_MaterialScopeList.DrawHeaders(materialEditor, material); + } + + protected virtual void DrawSurfaceOptions(Material material) + { + var materialEditor = m_MaterialEditor; + var properties = m_Properties; + + var blendMode = FindProperty(FullscreenUniforms.blendModeProperty, properties, false); + var srcColorBlend = FindProperty(FullscreenUniforms.srcColorBlendProperty, properties, false); + var dstColorBlend = FindProperty(FullscreenUniforms.dstColorBlendProperty, properties, false); + var srcAlphaBlend = FindProperty(FullscreenUniforms.srcAlphaBlendProperty, properties, false); + var dstAlphaBlend = FindProperty(FullscreenUniforms.dstAlphaBlendProperty, properties, false); + var colorBlendOp = FindProperty(FullscreenUniforms.colorBlendOperationProperty, properties, false); + var alphaBlendOp = FindProperty(FullscreenUniforms.alphaBlendOperationProperty, properties, false); + var depthWrite = FindProperty(FullscreenUniforms.depthWriteProperty, properties, false); + var depthTest = FindProperty(FullscreenUniforms.depthTestProperty, properties, false); + var stencilEnable = FindProperty(FullscreenUniforms.stencilEnableProperty, properties, false); + var stencilRef = FindProperty(FullscreenUniforms.stencilReferenceProperty, properties, false); + var stencilReadMask = FindProperty(FullscreenUniforms.stencilReadMaskProperty, properties, false); + var stencilWriteMask = FindProperty(FullscreenUniforms.stencilWriteMaskProperty, properties, false); + var stencilComp = FindProperty(FullscreenUniforms.stencilComparisonProperty, properties, false); + var stencilPass = FindProperty(FullscreenUniforms.stencilPassProperty, properties, false); + var stencilFail = FindProperty(FullscreenUniforms.stencilFailProperty, properties, false); + var stencilDepthFail = FindProperty(FullscreenUniforms.stencilDepthFailProperty, properties, false); + + if (material.HasProperty(FullscreenUniforms.blendModeProperty)) + { + EditorGUI.BeginChangeCheck(); + m_MaterialEditor.ShaderProperty(blendMode, Styles.blendingMode); + FullscreenBlendMode blendModeValue = (FullscreenBlendMode)blendMode.floatValue; + if (EditorGUI.EndChangeCheck()) + SetBlendMode(blendModeValue); + + if (blendModeValue == FullscreenBlendMode.Custom) + { + m_MaterialEditor.ShaderProperty(srcColorBlend, Styles.srcColorBlendMode, 1); + m_MaterialEditor.ShaderProperty(dstColorBlend, Styles.dstColorBlendMode, 1); + m_MaterialEditor.ShaderProperty(colorBlendOp, Styles.colorBlendOperation, 1); + m_MaterialEditor.ShaderProperty(srcAlphaBlend, Styles.srcAlphaBlendMode, 1); + m_MaterialEditor.ShaderProperty(dstAlphaBlend, Styles.dstAlphaBlendMode, 1); + m_MaterialEditor.ShaderProperty(alphaBlendOp, Styles.alphaBlendOperation, 1); + } + } + + if (material.HasProperty(FullscreenUniforms.depthWriteProperty)) + m_MaterialEditor.ShaderProperty(depthWrite, Styles.depthWrite); + if (material.HasProperty(FullscreenUniforms.depthTestProperty)) + m_MaterialEditor.ShaderProperty(depthTest, Styles.depthTest); + + if (material.HasProperty(FullscreenUniforms.stencilEnableProperty)) + { + EditorGUI.BeginChangeCheck(); + m_MaterialEditor.ShaderProperty(stencilEnable, Styles.stencil); + bool stencilEnableValue = stencilEnable.floatValue > 0.5f; + if (EditorGUI.EndChangeCheck()) + SetStencilEnable(stencilEnableValue); + if (stencilEnableValue) + { + m_MaterialEditor.ShaderProperty(stencilRef, Styles.stencilRef, 1); + m_MaterialEditor.ShaderProperty(stencilReadMask, Styles.stencilReadMask, 1); + m_MaterialEditor.ShaderProperty(stencilWriteMask, Styles.stencilWriteMask, 1); + m_MaterialEditor.ShaderProperty(stencilComp, Styles.stencilComparison, 1); + m_MaterialEditor.ShaderProperty(stencilPass, Styles.stencilPass, 1); + m_MaterialEditor.ShaderProperty(stencilFail, Styles.stencilFail, 1); + m_MaterialEditor.ShaderProperty(stencilDepthFail, Styles.stencilDepthFail, 1); + } + } + + void SetStencilEnable(bool enabled) + { + if (!enabled) + { + stencilComp.floatValue = (float)CompareFunction.Always; + stencilPass.floatValue = (float)StencilOp.Keep; + stencilFail.floatValue = (float)StencilOp.Keep; + stencilDepthFail.floatValue = (float)StencilOp.Keep; + } + } + + void SetBlendMode(FullscreenBlendMode blendMode) + { + // Note that we can't disable the blend mode from here + if (blendMode == FullscreenBlendMode.Alpha || blendMode == FullscreenBlendMode.Disabled) + { + srcColorBlend.floatValue = (float)BlendMode.SrcAlpha; + dstColorBlend.floatValue = (float)BlendMode.OneMinusSrcAlpha; + srcAlphaBlend.floatValue = (float)BlendMode.One; + dstAlphaBlend.floatValue = (float)BlendMode.OneMinusSrcAlpha; + } + else if (blendMode == FullscreenBlendMode.Premultiply) + { + srcColorBlend.floatValue = (float)BlendMode.One; + dstColorBlend.floatValue = (float)BlendMode.OneMinusSrcAlpha; + srcAlphaBlend.floatValue = (float)BlendMode.One; + dstAlphaBlend.floatValue = (float)BlendMode.OneMinusSrcAlpha; + } + else if (blendMode == FullscreenBlendMode.Additive) + { + srcColorBlend.floatValue = (float)BlendMode.SrcAlpha; + dstColorBlend.floatValue = (float)BlendMode.One; + srcAlphaBlend.floatValue = (float)BlendMode.One; + dstAlphaBlend.floatValue = (float)BlendMode.One; + } + else if (blendMode == FullscreenBlendMode.Multiply) + { + srcColorBlend.floatValue = (float)BlendMode.DstColor; + dstColorBlend.floatValue = (float)BlendMode.Zero; + srcAlphaBlend.floatValue = (float)BlendMode.One; + dstAlphaBlend.floatValue = (float)BlendMode.OneMinusSrcAlpha; + } + + colorBlendOp.floatValue = (float)BlendOp.Add; + alphaBlendOp.floatValue = (float)BlendOp.Add; + } + } + + protected virtual void DrawSurfaceInputs(Material material) + { + DrawShaderGraphProperties(m_MaterialEditor, material, m_Properties); + } + + static void DrawShaderGraphProperties(MaterialEditor materialEditor, Material material, MaterialProperty[] properties) + { + if (properties == null) + return; + + ShaderGraphPropertyDrawers.DrawShaderGraphGUI(materialEditor, properties); + } + + public override void ValidateMaterial(Material material) => SetupSurface(material); + + public static void SetupSurface(Material material) + { + // For now there is no keyword in FullScreenShader. + } + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenShaderGUI.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenShaderGUI.cs.meta new file mode 100644 index 00000000000..31e63d4a781 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenShaderGUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8397526cd944664f841668eeee04055 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenSubTarget.cs b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenSubTarget.cs new file mode 100644 index 00000000000..cd89a849ba6 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenSubTarget.cs @@ -0,0 +1,858 @@ +using UnityEditor.ShaderGraph; +using UnityEngine; +using System; +using UnityEditor.ShaderGraph.Internal; +using System.Linq; +using BlendMode = UnityEngine.Rendering.BlendMode; +using BlendOp = UnityEditor.ShaderGraph.BlendOp; +using UnityEngine.UIElements; +using UnityEditor.UIElements; +using UnityEngine.Rendering; + +namespace UnityEditor.Rendering.Fullscreen.ShaderGraph +{ + [GenerateBlocks("Fullscreen")] + internal struct FullscreenBlocks + { + public static BlockFieldDescriptor color = new BlockFieldDescriptor(BlockFields.SurfaceDescription.name, "FullscreenColor", "Color", + "SURFACEDESCRIPTION_COLOR", new ColorControl(UnityEngine.Color.grey, true), ShaderStage.Fragment); + public static BlockFieldDescriptor eyeDepth = new BlockFieldDescriptor(BlockFields.SurfaceDescription.name, "FullscreenEyeDepth", "Eye Depth", + "SURFACEDESCRIPTION_EYE_DEPTH", new FloatControl(0), ShaderStage.Fragment); + public static BlockFieldDescriptor linear01Depth = new BlockFieldDescriptor(BlockFields.SurfaceDescription.name, "FullscreenLinear01Depth", "Linear01 Depth", + "SURFACEDESCRIPTION_LINEAR01_DEPTH", new FloatControl(0), ShaderStage.Fragment); + public static BlockFieldDescriptor rawDepth = new BlockFieldDescriptor(BlockFields.SurfaceDescription.name, "FullscreenRawDepth", "Raw Depth", + "SURFACEDESCRIPTION_RAW_DEPTH", new FloatControl(0), ShaderStage.Fragment); + } + + [GenerationAPI] + internal struct FullscreenFields + { + public static FieldDescriptor depth = new FieldDescriptor("OUTPUT", "depth", "OUTPUT_DEPTH"); + } + + internal enum FullscreenMode + { + FullScreen, + CustomRenderTexture, + } + + internal enum FullscreenCompatibility + { + Blit, + DrawProcedural, + } + + internal enum FullscreenBlendMode + { + Disabled, + Alpha, + Premultiply, + Additive, + Multiply, + Custom, + } + + internal enum FullscreenDepthWriteMode + { + LinearEye, + Linear01, + Raw, + } + + internal static class FullscreenUniforms + { + public static readonly string blendModeProperty = "_Fullscreen_BlendMode"; + public static readonly string srcColorBlendProperty = "_Fullscreen_SrcColorBlend"; + public static readonly string dstColorBlendProperty = "_Fullscreen_DstColorBlend"; + public static readonly string srcAlphaBlendProperty = "_Fullscreen_SrcAlphaBlend"; + public static readonly string dstAlphaBlendProperty = "_Fullscreen_DstAlphaBlend"; + public static readonly string colorBlendOperationProperty = "_Fullscreen_ColorBlendOperation"; + public static readonly string alphaBlendOperationProperty = "_Fullscreen_AlphaBlendOperation"; + public static readonly string depthWriteProperty = "_Fullscreen_DepthWrite"; + public static readonly string depthTestProperty = "_Fullscreen_DepthTest"; + public static readonly string stencilEnableProperty = "_Fullscreen_Stencil"; + public static readonly string stencilReferenceProperty = "_Fullscreen_StencilReference"; + public static readonly string stencilReadMaskProperty = "_Fullscreen_StencilReadMask"; + public static readonly string stencilWriteMaskProperty = "_Fullscreen_StencilWriteMask"; + public static readonly string stencilComparisonProperty = "_Fullscreen_StencilComparison"; + public static readonly string stencilPassProperty = "_Fullscreen_StencilPass"; + public static readonly string stencilFailProperty = "_Fullscreen_StencilFail"; + public static readonly string stencilDepthFailProperty = "_Fullscreen_StencilDepthFail"; + + public static readonly string srcColorBlend = "[" + srcColorBlendProperty + "]"; + public static readonly string dstColorBlend = "[" + dstColorBlendProperty + "]"; + public static readonly string srcAlphaBlend = "[" + srcAlphaBlendProperty + "]"; + public static readonly string dstAlphaBlend = "[" + dstAlphaBlendProperty + "]"; + public static readonly string colorBlendOperation = "[" + colorBlendOperationProperty + "]"; + public static readonly string alphaBlendOperation = "[" + alphaBlendOperationProperty + "]"; + public static readonly string depthWrite = "[" + depthWriteProperty + "]"; + public static readonly string depthTest = "[" + depthTestProperty + "]"; + public static readonly string stencilReference = "[" + stencilReferenceProperty + "]"; + public static readonly string stencilReadMask = "[" + stencilReadMaskProperty + "]"; + public static readonly string stencilWriteMask = "[" + stencilWriteMaskProperty + "]"; + public static readonly string stencilComparison = "[" + stencilComparisonProperty + "]"; + public static readonly string stencilPass = "[" + stencilPassProperty + "]"; + public static readonly string stencilFail = "[" + stencilFailProperty + "]"; + public static readonly string stencilDepthFail = "[" + stencilDepthFailProperty + "]"; + } + + internal abstract class FullscreenSubTarget : SubTarget, IRequiresData, IHasMetadata where T : Target + { + static readonly GUID kSourceCodeGuid = new GUID("1cfc804c75474e144be5d4158b9522ed"); // FullscreenSubTarget.cs // TODO + static readonly string[] kSharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories().Union(new string[] { "Packages/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates" }).ToArray(); + + // HLSL includes + protected static readonly string kFullscreenCommon = "Packages/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenCommon.hlsl"; + protected static readonly string kTemplatePath = "Packages/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/ShaderPass.template"; + protected static readonly string kCommon = "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"; + protected static readonly string kColor = "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"; + protected static readonly string kTexture = "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"; + protected static readonly string kInstancing = "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl"; + protected static readonly string kFullscreenShaderPass = "Packages/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.hlsl"; + protected static readonly string kSpaceTransforms = "Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceTransforms.hlsl"; + protected static readonly string kFunctions = "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl"; + protected static readonly string kTextureStack = "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"; + protected virtual string fullscreenDrawProceduralInclude => "Packages/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenDrawProcedural.hlsl"; + protected virtual string fullscreenBlitInclude => "Packages/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenBlit.hlsl"; + + FullscreenData m_FullscreenData; + + FullscreenData IRequiresData.data + { + get => m_FullscreenData; + set => m_FullscreenData = value; + } + + public FullscreenData fullscreenData + { + get => m_FullscreenData; + set => m_FullscreenData = value; + } + + public override void Setup(ref TargetSetupContext context) + { + context.AddAssetDependency(kSourceCodeGuid, AssetCollection.Flags.SourceDependency); + context.SetDefaultShaderGUI(GetDefaultShaderGUI().FullName); + context.AddSubShader(GenerateSubShader()); + } + + protected virtual IncludeCollection pregraphIncludes => new IncludeCollection(); + protected abstract string pipelineTag { get; } + + protected virtual Type GetDefaultShaderGUI() => typeof(FullscreenShaderGUI); + + public virtual string identifier => GetType().Name; + public virtual ScriptableObject GetMetadataObject() + { + var bultInMetadata = ScriptableObject.CreateInstance(); + bultInMetadata.fullscreenMode = fullscreenData.fullscreenMode; + return bultInMetadata; + } + + public RenderStateCollection GetRenderState() + { + var result = new RenderStateCollection(); + + if (fullscreenData.allowMaterialOverride) + { + if (fullscreenData.depthTestMode != CompareFunction.Disabled) + result.Add(RenderState.ZTest(FullscreenUniforms.depthTest)); + else + result.Add(RenderState.ZTest("Off")); + result.Add(RenderState.ZWrite(FullscreenUniforms.depthWrite)); + if (fullscreenData.blendMode != FullscreenBlendMode.Disabled) + { + result.Add(RenderState.Blend(FullscreenUniforms.srcColorBlend, FullscreenUniforms.dstColorBlend, FullscreenUniforms.srcAlphaBlend, FullscreenUniforms.dstAlphaBlend)); + result.Add(RenderState.BlendOp(FullscreenUniforms.colorBlendOperation, FullscreenUniforms.alphaBlendOperation)); + } + else + { + result.Add(RenderState.Blend("Blend Off")); + } + + if (fullscreenData.enableStencil) + { + result.Add(RenderState.Stencil(new StencilDescriptor { Ref = FullscreenUniforms.stencilReference, ReadMask = FullscreenUniforms.stencilReadMask, WriteMask = FullscreenUniforms.stencilWriteMask, Comp = FullscreenUniforms.stencilComparison, ZFail = FullscreenUniforms.stencilDepthFail, Fail = FullscreenUniforms.stencilFail, Pass = FullscreenUniforms.stencilPass })); + } + } + else + { + if (fullscreenData.depthTestMode == CompareFunction.Disabled) + result.Add(RenderState.ZTest("Off")); + else + result.Add(RenderState.ZTest(CompareFunctionToZTest(fullscreenData.depthTestMode).ToString())); + result.Add(RenderState.ZWrite(fullscreenData.depthWrite ? ZWrite.On.ToString() : ZWrite.Off.ToString())); + + // Blend mode + if (fullscreenData.blendMode == FullscreenBlendMode.Alpha) + result.Add(RenderState.Blend(Blend.SrcAlpha, Blend.OneMinusSrcAlpha, Blend.One, Blend.OneMinusSrcAlpha)); + else if (fullscreenData.blendMode == FullscreenBlendMode.Premultiply) + result.Add(RenderState.Blend(Blend.One, Blend.OneMinusSrcAlpha, Blend.One, Blend.OneMinusSrcAlpha)); + else if (fullscreenData.blendMode == FullscreenBlendMode.Additive) + result.Add(RenderState.Blend(Blend.SrcAlpha, Blend.One, Blend.One, Blend.One)); + else if (fullscreenData.blendMode == FullscreenBlendMode.Multiply) + result.Add(RenderState.Blend(Blend.DstColor, Blend.Zero)); + else if (fullscreenData.blendMode == FullscreenBlendMode.Disabled) + result.Add(RenderState.Blend("Blend Off")); + else + { + result.Add(RenderState.Blend(BlendModeToBlend(fullscreenData.srcColorBlendMode), BlendModeToBlend(fullscreenData.dstColorBlendMode), BlendModeToBlend(fullscreenData.srcAlphaBlendMode), BlendModeToBlend(fullscreenData.dstAlphaBlendMode))); + result.Add(RenderState.BlendOp(fullscreenData.colorBlendOperation, fullscreenData.alphaBlendOperation)); + } + + if (fullscreenData.enableStencil) + { + result.Add(RenderState.Stencil(new StencilDescriptor + { + Ref = fullscreenData.stencilReference.ToString(), + ReadMask = fullscreenData.stencilReadMask.ToString(), + WriteMask = fullscreenData.stencilWriteMask.ToString(), + Comp = CompareFunctionToStencilString(fullscreenData.stencilCompareFunction), + ZFail = StencilOpToStencilString(fullscreenData.stencilDepthTestFailOperation), + Fail = StencilOpToStencilString(fullscreenData.stencilFailOperation), + Pass = StencilOpToStencilString(fullscreenData.stencilPassOperation), + })); + } + } + + return result; + } + + public static Blend BlendModeToBlend(BlendMode mode) => mode switch + { + BlendMode.Zero => Blend.Zero, + BlendMode.One => Blend.One, + BlendMode.DstColor => Blend.DstColor, + BlendMode.SrcColor => Blend.SrcColor, + BlendMode.OneMinusDstColor => Blend.OneMinusDstColor, + BlendMode.SrcAlpha => Blend.SrcAlpha, + BlendMode.OneMinusSrcColor => Blend.OneMinusSrcColor, + BlendMode.DstAlpha => Blend.DstAlpha, + BlendMode.OneMinusDstAlpha => Blend.OneMinusDstAlpha, + BlendMode.SrcAlphaSaturate => Blend.SrcAlpha, + BlendMode.OneMinusSrcAlpha => Blend.OneMinusSrcAlpha, + _ => Blend.Zero + }; + + public static ZTest CompareFunctionToZTest(CompareFunction mode) => mode switch + { + CompareFunction.Equal => ZTest.Equal, + CompareFunction.NotEqual => ZTest.NotEqual, + CompareFunction.Greater => ZTest.Greater, + CompareFunction.Less => ZTest.Less, + CompareFunction.GreaterEqual => ZTest.GEqual, + CompareFunction.LessEqual => ZTest.LEqual, + CompareFunction.Always => ZTest.Always, + CompareFunction.Disabled => ZTest.Always, + _ => ZTest.Always + }; + + public static string CompareFunctionToStencilString(CompareFunction compare) => compare switch + { + CompareFunction.Never => "Never", + CompareFunction.Equal => "Equal", + CompareFunction.NotEqual => "NotEqual", + CompareFunction.Greater => "Greater", + CompareFunction.Less => "Less", + CompareFunction.GreaterEqual => "GEqual", + CompareFunction.LessEqual => "LEqual", + CompareFunction.Always => "Always", + _ => "Always" + }; + + public static string StencilOpToStencilString(StencilOp op) => op switch + { + StencilOp.Keep => "Keep", + StencilOp.Zero => "Zero", + StencilOp.Replace => "Replace", + StencilOp.IncrementSaturate => "IncrSat", + StencilOp.DecrementSaturate => "DecrSat", + StencilOp.Invert => "Invert", + StencilOp.IncrementWrap => "IncrWrap", + StencilOp.DecrementWrap => "DecrWrap", + _ => "Keep" + }; + + public virtual SubShaderDescriptor GenerateSubShader() + { + var result = new SubShaderDescriptor() + { + generatesPreview = true, + passes = new PassCollection(), + pipelineTag = pipelineTag, + }; + + result.passes.Add(GenerateFullscreenPass(FullscreenCompatibility.DrawProcedural)); + result.passes.Add(GenerateFullscreenPass(FullscreenCompatibility.Blit)); + + return result; + } + + public virtual IncludeCollection GetPreGraphIncludes() + { + return new IncludeCollection + { + { kCommon, IncludeLocation.Pregraph }, + { kColor, IncludeLocation.Pregraph }, + { kTexture, IncludeLocation.Pregraph }, + { kTextureStack, IncludeLocation.Pregraph }, + { kInstancing, IncludeLocation.Pregraph }, // For VR + { kFullscreenShaderPass, IncludeLocation.Pregraph }, // For VR + { pregraphIncludes }, + { kSpaceTransforms, IncludeLocation.Pregraph }, + { kFunctions, IncludeLocation.Pregraph }, + }; + } + + public virtual IncludeCollection GetPostGraphIncludes() + { + return new IncludeCollection { { kFullscreenCommon, IncludeLocation.Postgraph } }; + } + + static readonly KeywordDescriptor depthWriteKeyword = new KeywordDescriptor + { + displayName = "Depth Write", + referenceName = "DEPTH_WRITE", + type = KeywordType.Boolean, + definition = KeywordDefinition.ShaderFeature, + stages = KeywordShaderStage.Fragment, + }; + + static readonly KeywordDescriptor depthWriteModeKeyword = new KeywordDescriptor + { + displayName = "Depth Write Mode", + referenceName = "DEPTH_WRITE_MODE", + type = KeywordType.Enum, + definition = KeywordDefinition.Predefined, + entries = new KeywordEntry[] + { + new KeywordEntry("Eye Depth", "EYE"), + new KeywordEntry("Eye Linear 01", "LINEAR01"), + new KeywordEntry("Eye Raw", "RAW"), + }, + stages = KeywordShaderStage.Fragment, + }; + + public static StructDescriptor Varyings = new StructDescriptor() + { + name = "Varyings", + packFields = true, + populateWithCustomInterpolators = false, + fields = new FieldDescriptor[] + { + StructFields.Varyings.positionCS, + StructFields.Varyings.texCoord0, + StructFields.Varyings.texCoord1, + StructFields.Varyings.instanceID, + } + }; + + protected virtual DefineCollection GetPassDefines(FullscreenCompatibility compatibility) + => new DefineCollection(); + + protected virtual KeywordCollection GetPassKeywords(FullscreenCompatibility compatibility) + => new KeywordCollection(); + + static StructDescriptor GetFullscreenAttributes() + { + return new StructDescriptor() + { + name = "Attributes", + packFields = false, + fields = new FieldDescriptor[] + { + StructFields.Attributes.instanceID, + StructFields.Attributes.vertexID, + } + }; + } + + public virtual PassDescriptor GenerateFullscreenPass(FullscreenCompatibility compatibility) + { + var fullscreenPass = new PassDescriptor + { + // Definition + displayName = compatibility.ToString(), + referenceName = "SHADERPASS_" + compatibility.ToString().ToUpper(), + useInPreview = true, + + // Template + passTemplatePath = kTemplatePath, + sharedTemplateDirectories = kSharedTemplateDirectories, + + // Port Mask + validVertexBlocks = null, + validPixelBlocks = new BlockFieldDescriptor[] + { + BlockFields.SurfaceDescription.BaseColor, + BlockFields.SurfaceDescription.Alpha, + FullscreenBlocks.eyeDepth, + FullscreenBlocks.linear01Depth, + FullscreenBlocks.rawDepth, + }, + + // Fields + structs = new StructCollection + { + { GetFullscreenAttributes() }, + { Structs.SurfaceDescriptionInputs }, + { Varyings }, + { Structs.VertexDescriptionInputs }, + }, + fieldDependencies = FieldDependencies.Default, + requiredFields = new FieldCollection + { + StructFields.Varyings.texCoord0, // Always need texCoord0 to calculate the other properties in fullscreen node code + StructFields.Varyings.texCoord1, // We store the view direction computed in the vertex in the texCoord1 + StructFields.Attributes.vertexID, // Need the vertex Id for the DrawProcedural case + }, + + // Conditional State + renderStates = GetRenderState(), + pragmas = new PragmaCollection + { + { Pragma.Target(ShaderModel.Target30) }, + { Pragma.Vertex("vert") }, + { Pragma.Fragment("frag") }, + }, + defines = new DefineCollection + { + {depthWriteKeyword, 1, new FieldCondition(FullscreenFields.depth, true)}, + {depthWriteModeKeyword, (int)fullscreenData.depthWriteMode, new FieldCondition(FullscreenFields.depth, true)}, + GetPassDefines(compatibility), + }, + keywords = GetPassKeywords(compatibility), + includes = new IncludeCollection + { + // Pre-graph + GetPreGraphIncludes(), + + // Post-graph + GetPostGraphIncludes(), + }, + }; + + switch (compatibility) + { + default: + case FullscreenCompatibility.Blit: + fullscreenPass.includes.Add(fullscreenBlitInclude, IncludeLocation.Postgraph); + break; + case FullscreenCompatibility.DrawProcedural: + fullscreenPass.includes.Add(fullscreenDrawProceduralInclude, IncludeLocation.Postgraph); + break; + } + + return fullscreenPass; + } + + // We don't need the save context / update materials for now + public override object saveContext => null; + + public FullscreenSubTarget() + { + displayName = "Fullscreen"; + } + + public override bool IsNodeAllowedBySubTarget(Type nodeType) + { + var interfaces = nodeType.GetInterfaces(); + bool allowed = true; + + // Subgraph nodes inherits all the interfaces including vertex ones. + if (nodeType == typeof(SubGraphNode)) + return true; + + // There is no input in the vertex block for now + if (interfaces.Contains(typeof(IMayRequireVertexID))) + allowed = false; + if (interfaces.Contains(typeof(IMayRequireVertexSkinning))) + allowed = false; + + return allowed; + } + + public override bool IsActive() => true; + + public override void GetFields(ref TargetFieldContext context) + { + context.AddField(UnityEditor.ShaderGraph.Fields.GraphPixel); + context.AddField(FullscreenFields.depth, fullscreenData.depthWrite || fullscreenData.depthTestMode != CompareFunction.Disabled); + } + + public override void GetActiveBlocks(ref TargetActiveBlockContext context) + { + context.AddBlock(BlockFields.SurfaceDescription.BaseColor); + context.AddBlock(BlockFields.SurfaceDescription.Alpha); + + var depthBlock = FullscreenBlocks.eyeDepth; + + if (fullscreenData.depthWriteMode == FullscreenDepthWriteMode.Linear01) + depthBlock = FullscreenBlocks.linear01Depth; + if (fullscreenData.depthWriteMode == FullscreenDepthWriteMode.Raw) + depthBlock = FullscreenBlocks.rawDepth; + + context.AddBlock(depthBlock, fullscreenData.depthWrite || fullscreenData.depthTestMode != CompareFunction.Disabled); + } + + public override void CollectShaderProperties(PropertyCollector collector, GenerationMode generationMode) + { + if (fullscreenData.allowMaterialOverride) + { + base.CollectShaderProperties(collector, generationMode); + + CollectRenderStateShaderProperties(collector, generationMode); + } + } + + public void CollectRenderStateShaderProperties(PropertyCollector collector, GenerationMode generationMode) + { + if (generationMode != GenerationMode.Preview && fullscreenData.allowMaterialOverride) + { + // When blend mode is disabled, we can't override + if (fullscreenData.blendMode != FullscreenBlendMode.Disabled) + { + BlendMode srcColorBlend = fullscreenData.srcColorBlendMode; + BlendMode srcAlphaBlend = fullscreenData.srcAlphaBlendMode; + BlendMode dstColorBlend = fullscreenData.dstColorBlendMode; + BlendMode dstAlphaBlend = fullscreenData.dstAlphaBlendMode; + BlendOp colorBlendOp = fullscreenData.colorBlendOperation; + BlendOp alphaBlendOp = fullscreenData.alphaBlendOperation; + + // Patch the default blend values depending on the Blend Mode: + if (fullscreenData.blendMode != FullscreenBlendMode.Custom) + { + colorBlendOp = BlendOp.Add; + alphaBlendOp = BlendOp.Add; + } + + if (fullscreenData.blendMode == FullscreenBlendMode.Alpha) + { + srcColorBlend = BlendMode.SrcAlpha; + dstColorBlend = BlendMode.OneMinusSrcAlpha; + srcAlphaBlend = BlendMode.One; + dstAlphaBlend = BlendMode.OneMinusSrcAlpha; + } + else if (fullscreenData.blendMode == FullscreenBlendMode.Premultiply) + { + srcColorBlend = BlendMode.One; + dstColorBlend = BlendMode.OneMinusSrcAlpha; + srcAlphaBlend = BlendMode.One; + dstAlphaBlend = BlendMode.OneMinusSrcAlpha; + } + else if (fullscreenData.blendMode == FullscreenBlendMode.Additive) + { + srcColorBlend = BlendMode.SrcAlpha; + dstColorBlend = BlendMode.One; + srcAlphaBlend = BlendMode.One; + dstAlphaBlend = BlendMode.One; + } + else if (fullscreenData.blendMode == FullscreenBlendMode.Multiply) + { + srcColorBlend = BlendMode.DstColor; + dstColorBlend = BlendMode.Zero; + srcAlphaBlend = BlendMode.One; + dstAlphaBlend = BlendMode.OneMinusSrcAlpha; + } + + collector.AddEnumProperty(FullscreenUniforms.blendModeProperty, fullscreenData.blendMode); + collector.AddEnumProperty(FullscreenUniforms.srcColorBlendProperty, srcColorBlend); + collector.AddEnumProperty(FullscreenUniforms.dstColorBlendProperty, dstColorBlend); + collector.AddEnumProperty(FullscreenUniforms.srcAlphaBlendProperty, srcAlphaBlend); + collector.AddEnumProperty(FullscreenUniforms.dstAlphaBlendProperty, dstAlphaBlend); + collector.AddEnumProperty(FullscreenUniforms.colorBlendOperationProperty, colorBlendOp); + collector.AddEnumProperty(FullscreenUniforms.alphaBlendOperationProperty, alphaBlendOp); + } + collector.AddBoolProperty(FullscreenUniforms.depthWriteProperty, fullscreenData.depthWrite); + + if (fullscreenData.depthTestMode != CompareFunction.Disabled) + collector.AddEnumProperty(FullscreenUniforms.depthTestProperty, fullscreenData.depthTestMode); + + // When stencil is disabled, we can't override + if (fullscreenData.enableStencil) + { + collector.AddBoolProperty(FullscreenUniforms.stencilEnableProperty, fullscreenData.enableStencil); + collector.AddIntProperty(FullscreenUniforms.stencilReferenceProperty, fullscreenData.stencilReference); + collector.AddIntProperty(FullscreenUniforms.stencilReadMaskProperty, fullscreenData.stencilReadMask); + collector.AddIntProperty(FullscreenUniforms.stencilWriteMaskProperty, fullscreenData.stencilWriteMask); + collector.AddEnumProperty(FullscreenUniforms.stencilComparisonProperty, fullscreenData.stencilCompareFunction); + collector.AddEnumProperty(FullscreenUniforms.stencilPassProperty, fullscreenData.stencilPassOperation); + collector.AddEnumProperty(FullscreenUniforms.stencilFailProperty, fullscreenData.stencilFailOperation); + collector.AddEnumProperty(FullscreenUniforms.stencilDepthFailProperty, fullscreenData.stencilDepthTestFailOperation); + } + } + } + + public override void GetPropertiesGUI(ref TargetPropertyGUIContext context, Action onChange, Action registerUndo) + { + context.AddProperty("Allow Material Override", new Toggle() { value = fullscreenData.allowMaterialOverride }, (evt) => + { + if (Equals(fullscreenData.allowMaterialOverride, evt.newValue)) + return; + + registerUndo("Change Allow Material Override"); + fullscreenData.allowMaterialOverride = evt.newValue; + onChange(); + }); + + GetRenderStatePropertiesGUI(ref context, onChange, registerUndo); + } + + public void GetRenderStatePropertiesGUI(ref TargetPropertyGUIContext context, Action onChange, Action registerUndo) + { + context.AddProperty("Blend Mode", new EnumField(fullscreenData.blendMode) { value = fullscreenData.blendMode }, (evt) => + { + if (Equals(fullscreenData.blendMode, evt.newValue)) + return; + + registerUndo("Change Blend Mode"); + fullscreenData.blendMode = (FullscreenBlendMode)evt.newValue; + onChange(); + }); + + if (fullscreenData.blendMode == FullscreenBlendMode.Custom) + { + context.globalIndentLevel++; + context.AddLabel("Color Blend Mode", 0); + + context.AddProperty("Src Color", new EnumField(fullscreenData.srcColorBlendMode) { value = fullscreenData.srcColorBlendMode }, (evt) => + { + if (Equals(fullscreenData.srcColorBlendMode, evt.newValue)) + return; + + registerUndo("Change Blend Mode"); + fullscreenData.srcColorBlendMode = (BlendMode)evt.newValue; + onChange(); + }); + context.AddProperty("Dst Color", new EnumField(fullscreenData.dstColorBlendMode) { value = fullscreenData.dstColorBlendMode }, (evt) => + { + if (Equals(fullscreenData.dstColorBlendMode, evt.newValue)) + return; + + registerUndo("Change Blend Mode"); + fullscreenData.dstColorBlendMode = (BlendMode)evt.newValue; + onChange(); + }); + context.AddProperty("Color Operation", new EnumField(fullscreenData.colorBlendOperation) { value = fullscreenData.colorBlendOperation }, (evt) => + { + if (Equals(fullscreenData.colorBlendOperation, evt.newValue)) + return; + + registerUndo("Change Blend Mode"); + fullscreenData.colorBlendOperation = (BlendOp)evt.newValue; + onChange(); + }); + + context.AddLabel("Alpha Blend Mode", 0); + + + context.AddProperty("Src", new EnumField(fullscreenData.srcAlphaBlendMode) { value = fullscreenData.srcAlphaBlendMode }, (evt) => + { + if (Equals(fullscreenData.srcAlphaBlendMode, evt.newValue)) + return; + + registerUndo("Change Blend Mode"); + fullscreenData.srcAlphaBlendMode = (BlendMode)evt.newValue; + onChange(); + }); + context.AddProperty("Dst", new EnumField(fullscreenData.dstAlphaBlendMode) { value = fullscreenData.dstAlphaBlendMode }, (evt) => + { + if (Equals(fullscreenData.dstAlphaBlendMode, evt.newValue)) + return; + + registerUndo("Change Blend Mode"); + fullscreenData.dstAlphaBlendMode = (BlendMode)evt.newValue; + onChange(); + }); + context.AddProperty("Blend Operation Alpha", new EnumField(fullscreenData.alphaBlendOperation) { value = fullscreenData.alphaBlendOperation }, (evt) => + { + if (Equals(fullscreenData.alphaBlendOperation, evt.newValue)) + return; + + registerUndo("Change Blend Mode"); + fullscreenData.alphaBlendOperation = (BlendOp)evt.newValue; + onChange(); + }); + + context.globalIndentLevel--; + } + + context.AddProperty("Depth Test", new EnumField(fullscreenData.depthTestMode) { value = fullscreenData.depthTestMode }, (evt) => + { + if (Equals(fullscreenData.depthTestMode, evt.newValue)) + return; + + registerUndo("Change Depth Test"); + fullscreenData.depthTestMode = (CompareFunction)evt.newValue; + onChange(); + }); + + context.AddProperty("Depth Write", new Toggle { value = fullscreenData.depthWrite }, (evt) => + { + if (Equals(fullscreenData.depthWrite, evt.newValue)) + return; + + registerUndo("Change Depth Write"); + fullscreenData.depthWrite = evt.newValue; + onChange(); + }); + + if (fullscreenData.depthWrite || fullscreenData.depthTestMode != CompareFunction.Disabled) + { + context.AddProperty("Depth Write Mode", new EnumField(fullscreenData.depthWriteMode) { value = fullscreenData.depthWriteMode }, (evt) => + { + if (Equals(fullscreenData.depthWriteMode, evt.newValue)) + return; + + registerUndo("Change Depth Write Mode"); + fullscreenData.depthWriteMode = (FullscreenDepthWriteMode)evt.newValue; + onChange(); + }); + } + + context.AddProperty("Enable Stencil", new Toggle { value = fullscreenData.enableStencil }, (evt) => + { + if (Equals(fullscreenData.enableStencil, evt.newValue)) + return; + + registerUndo("Change Enable Stencil"); + fullscreenData.enableStencil = evt.newValue; + onChange(); + }); + + if (fullscreenData.enableStencil) + { + context.globalIndentLevel++; + + context.AddProperty("Reference", new IntegerField { value = fullscreenData.stencilReference, isDelayed = true }, (evt) => + { + if (Equals(fullscreenData.stencilReference, evt.newValue)) + return; + + registerUndo("Change Stencil Reference"); + fullscreenData.stencilReference = evt.newValue; + onChange(); + }); + + context.AddProperty("Read Mask", new IntegerField { value = fullscreenData.stencilReadMask, isDelayed = true }, (evt) => + { + if (Equals(fullscreenData.stencilReadMask, evt.newValue)) + return; + + registerUndo("Change Stencil Read Mask"); + fullscreenData.stencilReadMask = evt.newValue; + onChange(); + }); + + context.AddProperty("Write Mask", new IntegerField { value = fullscreenData.stencilWriteMask, isDelayed = true }, (evt) => + { + if (Equals(fullscreenData.stencilWriteMask, evt.newValue)) + return; + + registerUndo("Change Stencil Write Mask"); + fullscreenData.stencilWriteMask = evt.newValue; + onChange(); + }); + + context.AddProperty("Comparison", new EnumField(fullscreenData.stencilCompareFunction) { value = fullscreenData.stencilCompareFunction }, (evt) => + { + if (Equals(fullscreenData.stencilCompareFunction, evt.newValue)) + return; + + registerUndo("Change Stencil Comparison"); + fullscreenData.stencilCompareFunction = (CompareFunction)evt.newValue; + onChange(); + }); + + context.AddProperty("Pass", new EnumField(fullscreenData.stencilPassOperation) { value = fullscreenData.stencilPassOperation }, (evt) => + { + if (Equals(fullscreenData.stencilPassOperation, evt.newValue)) + return; + + registerUndo("Change Stencil Pass Operation"); + fullscreenData.stencilPassOperation = (StencilOp)evt.newValue; + onChange(); + }); + + context.AddProperty("Fail", new EnumField(fullscreenData.stencilFailOperation) { value = fullscreenData.stencilFailOperation }, (evt) => + { + if (Equals(fullscreenData.stencilFailOperation, evt.newValue)) + return; + + registerUndo("Change Stencil Fail Operation"); + fullscreenData.stencilFailOperation = (StencilOp)evt.newValue; + onChange(); + }); + + context.AddProperty("Depth Fail", new EnumField(fullscreenData.stencilDepthTestFailOperation) { value = fullscreenData.stencilDepthTestFailOperation }, (evt) => + { + if (Equals(fullscreenData.stencilDepthTestFailOperation, evt.newValue)) + return; + + registerUndo("Change Stencil Depth Fail Operation"); + fullscreenData.stencilDepthTestFailOperation = (StencilOp)evt.newValue; + onChange(); + }); + + context.globalIndentLevel--; + } + } + } + + internal static class FullscreenPropertyCollectorExtension + { + public static void AddEnumProperty(this PropertyCollector collector, string prop, T value, HLSLDeclaration hlslDeclaration = HLSLDeclaration.DoNotDeclare) where T : Enum + { + collector.AddShaderProperty(new Vector1ShaderProperty + { + floatType = FloatType.Enum, + enumType = EnumType.CSharpEnum, + cSharpEnumType = typeof(T), + hidden = true, + overrideHLSLDeclaration = true, + hlslDeclarationOverride = hlslDeclaration, + value = Convert.ToInt32(value), + overrideReferenceName = prop, + }); + } + + public static void AddIntProperty(this PropertyCollector collector, string prop, int value, HLSLDeclaration hlslDeclaration = HLSLDeclaration.DoNotDeclare) + { + collector.AddShaderProperty(new Vector1ShaderProperty + { + floatType = FloatType.Integer, + hidden = true, + overrideHLSLDeclaration = true, + hlslDeclarationOverride = hlslDeclaration, + value = value, + overrideReferenceName = prop, + }); + } + + public static void AddBoolProperty(this PropertyCollector collector, string prop, bool value, HLSLDeclaration hlslDeclaration = HLSLDeclaration.DoNotDeclare) + { + collector.AddShaderProperty(new BooleanShaderProperty + { + hidden = true, + overrideHLSLDeclaration = true, + hlslDeclarationOverride = hlslDeclaration, + value = value, + overrideReferenceName = prop, + }); + } + + public static void AddFloatProperty(this PropertyCollector collector, string referenceName, float defaultValue, HLSLDeclaration declarationType = HLSLDeclaration.DoNotDeclare, bool generatePropertyBlock = true) + { + collector.AddShaderProperty(new Vector1ShaderProperty + { + floatType = FloatType.Default, + hidden = true, + overrideHLSLDeclaration = true, + hlslDeclarationOverride = declarationType, + value = defaultValue, + generatePropertyBlock = generatePropertyBlock, + overrideReferenceName = referenceName, + }); + } + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenSubTarget.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenSubTarget.cs.meta new file mode 100644 index 00000000000..9e73e96aec6 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/FullscreenSubTarget.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1cfc804c75474e144be5d4158b9522ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes.meta new file mode 100644 index 00000000000..d54446ba6a3 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67b87f1c65c508c429e1d957b33776b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/CustomRenderTexture.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/CustomRenderTexture.hlsl new file mode 100644 index 00000000000..240e35c4d7b --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/CustomRenderTexture.hlsl @@ -0,0 +1,17 @@ +PackedVaryings vert(Attributes input) +{ + Varyings output = (Varyings)0; + output = BuildVaryings(input); + PackedVaryings packedOutput = PackVaryings(output); + return packedOutput; +} + +float4 frag(PackedVaryings packedInput) : SV_TARGET +{ + Varyings unpacked = UnpackVaryings(packedInput); + + SurfaceDescriptionInputs surfaceDescriptionInputs = BuildSurfaceDescriptionInputs(unpacked); + SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs); + + return surfaceDescription.Color; +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/CustomRenderTexture.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/CustomRenderTexture.hlsl.meta new file mode 100644 index 00000000000..6f01210d18d --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/CustomRenderTexture.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0de8792ff52727f44925b54be00b9f18 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenBlit.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenBlit.hlsl new file mode 100644 index 00000000000..51687b19aeb --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenBlit.hlsl @@ -0,0 +1,17 @@ +PackedVaryings vert(Attributes input) +{ + Varyings output = (Varyings)0; +#if SHADER_API_GLES + output.positionCS = float4(input.positionOS.xyz, 1); +#else + output.positionCS = GetBlitVertexPosition(input.vertexID); +#endif + BuildVaryings(input, output); + PackedVaryings packedOutput = PackVaryings(output); + return packedOutput; +} + +FragOutput frag(PackedVaryings packedInput) +{ + return DefaultFullscreenFragmentShader(packedInput); +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenBlit.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenBlit.hlsl.meta new file mode 100644 index 00000000000..b723e6b0d59 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenBlit.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c1931467a12255f489f3c72e4aa99ade +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenCommon.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenCommon.hlsl new file mode 100644 index 00000000000..5b8e5f91d14 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenCommon.hlsl @@ -0,0 +1,140 @@ +// Provies missing variables for the FullScreen pass +#ifndef FULLSCREEN_COMMON_INCLUDED +#define FULLSCREEN_COMMON_INCLUDED + +struct FragOutput +{ + float4 color : SV_TARGET; +#ifdef DEPTH_WRITE + float depth : SV_DEPTH; +#endif +}; + +float4x4 inverse(float4x4 m) { + float + a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3], + a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3], + a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3], + a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3], + + b00 = a00 * a11 - a01 * a10, + b01 = a00 * a12 - a02 * a10, + b02 = a00 * a13 - a03 * a10, + b03 = a01 * a12 - a02 * a11, + b04 = a01 * a13 - a03 * a11, + b05 = a02 * a13 - a03 * a12, + b06 = a20 * a31 - a21 * a30, + b07 = a20 * a32 - a22 * a30, + b08 = a20 * a33 - a23 * a30, + b09 = a21 * a32 - a22 * a31, + b10 = a21 * a33 - a23 * a31, + b11 = a22 * a33 - a23 * a32, + + det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + + return float4x4( + a11 * b11 - a12 * b10 + a13 * b09, + a02 * b10 - a01 * b11 - a03 * b09, + a31 * b05 - a32 * b04 + a33 * b03, + a22 * b04 - a21 * b05 - a23 * b03, + a12 * b08 - a10 * b11 - a13 * b07, + a00 * b11 - a02 * b08 + a03 * b07, + a32 * b02 - a30 * b05 - a33 * b01, + a20 * b05 - a22 * b02 + a23 * b01, + a10 * b10 - a11 * b08 + a13 * b06, + a01 * b08 - a00 * b10 - a03 * b06, + a30 * b04 - a31 * b02 + a33 * b00, + a21 * b02 - a20 * b04 - a23 * b00, + a11 * b07 - a10 * b09 - a12 * b06, + a00 * b09 - a01 * b07 + a02 * b06, + a31 * b01 - a30 * b03 - a32 * b00, + a20 * b03 - a21 * b01 + a22 * b00) / det; +} + +// Come render pipeline don't have access to the inverse view projection matrix +// It's okay to compute it in the vertex shader because we only have 3 to 4 vertices +void BuildVaryingsWithoutInverseProjection(Attributes input, inout Varyings output) +{ + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + output.texCoord0 = output.positionCS * 0.5 + 0.5; + output.texCoord0.y = 1 - output.texCoord0.y; + + float3x3 inverseView = (float3x3)inverse(UNITY_MATRIX_V); + float4x4 inverseProj = inverse(UNITY_MATRIX_P); + float4 viewDirectionEyeSpace = mul(inverseProj, float4(output.positionCS.xyz, 1)); + float3 viewDirectionWS = mul(inverseView, viewDirectionEyeSpace.xyz).xyz; + + // Encode view direction in texCoord1 + output.texCoord1.xyz = viewDirectionWS; +} + +void BuildVaryings(Attributes input, inout Varyings output) +{ + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + output.texCoord0 = output.positionCS * 0.5 + 0.5; + output.texCoord0.y = 1 - output.texCoord0.y; + + float3 p = ComputeWorldSpacePosition(output.positionCS, UNITY_MATRIX_I_VP); + + // Encode view direction in texCoord1 + output.texCoord1.xyz = GetWorldSpaceViewDir(p); +} + +float4 GetDrawProceduralVertexPosition(uint vertexID) +{ + return GetFullScreenTriangleVertexPosition(vertexID, UNITY_NEAR_CLIP_VALUE); +} + +float4 GetBlitVertexPosition(uint vertexID) +{ + float4 positionCS = GetQuadVertexPosition(vertexID); + positionCS.xy = positionCS.xy * 2 - 1; + return positionCS; +} + +FragOutput DefaultFullscreenFragmentShader(PackedVaryings packedInput) +{ + FragOutput output = (FragOutput)0; + Varyings unpacked = UnpackVaryings(packedInput); + + UNITY_SETUP_INSTANCE_ID(unpacked); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(unpacked); + + SurfaceDescriptionInputs surfaceDescriptionInputs = BuildSurfaceDescriptionInputs(unpacked); + SurfaceDescription surfaceDescription = SurfaceDescriptionFunction(surfaceDescriptionInputs); + + output.color.rgb = surfaceDescription.BaseColor; + output.color.a = surfaceDescription.Alpha; +#if defined(DEPTH_WRITE) + + float n = _ProjectionParams.y; + float f = _ProjectionParams.z; + +#if defined(DEPTH_WRITE_MODE_EYE) + // Reverse of LinearEyeDepth + float d = rcp(max(surfaceDescription.FullscreenEyeDepth, 0.000000001)); + output.depth = (d - _ZBufferParams.w) / _ZBufferParams.z; +#endif + +#if defined(DEPTH_WRITE_MODE_LINEAR01) + // Reverse of Linear01Depth + float d = rcp(max(surfaceDescription.FullscreenLinear01Depth, 0.000000001)); + output.depth = (d - _ZBufferParams.y) / _ZBufferParams.x; +#endif + +#if defined(DEPTH_WRITE_MODE_RAW) + output.depth = surfaceDescription.FullscreenRawDepth; +#endif + +#endif + + return output; +} + +#endif // FULLSCREEN_COMMON_INCLUDED diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenCommon.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenCommon.hlsl.meta new file mode 100644 index 00000000000..4ad2cc4d974 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenCommon.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 54f14acd1960c2a459a0fcd6c959938d +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenDrawProcedural.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenDrawProcedural.hlsl new file mode 100644 index 00000000000..9c52204af53 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenDrawProcedural.hlsl @@ -0,0 +1,13 @@ +PackedVaryings vert(Attributes input) +{ + Varyings output = (Varyings)0; + output.positionCS = GetDrawProceduralVertexPosition(input.vertexID); + BuildVaryings(input, output); + PackedVaryings packedOutput = PackVaryings(output); + return packedOutput; +} + +FragOutput frag(PackedVaryings packedInput) +{ + return DefaultFullscreenFragmentShader(packedInput); +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenDrawProcedural.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenDrawProcedural.hlsl.meta new file mode 100644 index 00000000000..550351971fc --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenDrawProcedural.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fa5319f2d61c4df44b77220af2406147 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs new file mode 100644 index 00000000000..5e516d71d7f --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs @@ -0,0 +1,12 @@ +//----------------------------------------------------------------------------- +// structure definition +//----------------------------------------------------------------------------- +namespace UnityEngine.Rendering.HighDefinition +{ + [GenerateHLSL(PackingRules.Exact)] + enum FullscreenShaderPass + { + Blit, + DrawProcedural, + } +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.hlsl new file mode 100644 index 00000000000..3a2cce9b07d --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.hlsl @@ -0,0 +1,14 @@ +// +// This file was automatically generated. Please don't edit by hand. Execute Editor command [ Edit > Rendering > Generate Shader Includes ] instead +// + +#ifndef FULLSCREENSHADERPASS_CS_HLSL +#define FULLSCREENSHADERPASS_CS_HLSL +// +// UnityEngine.Rendering.HighDefinition.FullscreenShaderPass: static fields +// +#define FULLSCREENSHADERPASS_BLIT (0) +#define FULLSCREENSHADERPASS_DRAW_PROCEDURAL (1) + + +#endif diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.hlsl.meta new file mode 100644 index 00000000000..2cc5c6c56fc --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fa6980c25ec2f164ba4a6fcb040eb870 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.meta new file mode 100644 index 00000000000..c57335a26a5 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Includes/FullscreenShaderPass.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85ea79b0876d3ee41b7046fb73c1abba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates.meta new file mode 100644 index 00000000000..729c6c9354f --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c131f605e2f659045adf332f0f0f876f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/ShaderPass.template b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/ShaderPass.template new file mode 100644 index 00000000000..8f53d860544 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/ShaderPass.template @@ -0,0 +1,112 @@ +Pass +{ + $splice(PassName) + +// Render State +$splice(RenderState) + +// Debug +$splice(Debug) + +// -------------------------------------------------- +// Pass + +HLSLPROGRAM + +// Pragmas +$splice(PassPragmas) +// #pragma enable_d3d11_debug_symbols + +$splice(DotsInstancingOptions) +$splice(HybridV1InjectedBuiltinProperties) + +// Keywords +$splice(PassKeywords) +$splice(GraphKeywords) + +#define FULLSCREEN_SHADERGRAPH + +// Defines +$SurfaceType.Transparent: // UBER SHADER NOW: #define _SURFACE_TYPE_TRANSPARENT 1 +$Attributes.normalOS: #define ATTRIBUTES_NEED_NORMAL +$Attributes.tangentOS: #define ATTRIBUTES_NEED_TANGENT +$Attributes.uv0: #define ATTRIBUTES_NEED_TEXCOORD0 +$Attributes.uv1: #define ATTRIBUTES_NEED_TEXCOORD1 +$Attributes.uv2: #define ATTRIBUTES_NEED_TEXCOORD2 +$Attributes.uv3: #define ATTRIBUTES_NEED_TEXCOORD3 +$Attributes.color: #define ATTRIBUTES_NEED_COLOR +$Attributes.vertexID: #define ATTRIBUTES_NEED_VERTEXID +$Varyings.positionWS: #define VARYINGS_NEED_POSITION_WS +$Varyings.normalWS: #define VARYINGS_NEED_NORMAL_WS +$Varyings.tangentWS: #define VARYINGS_NEED_TANGENT_WS +$Varyings.texCoord0: #define VARYINGS_NEED_TEXCOORD0 +$Varyings.texCoord1: #define VARYINGS_NEED_TEXCOORD1 +$Varyings.texCoord2: #define VARYINGS_NEED_TEXCOORD2 +$Varyings.texCoord3: #define VARYINGS_NEED_TEXCOORD3 +$Varyings.color: #define VARYINGS_NEED_COLOR +$Varyings.viewDirectionWS: #define VARYINGS_NEED_VIEWDIRECTION_WS +$Varyings.bitangentWS: #define VARYINGS_NEED_BITANGENT_WS +$Varyings.screenPosition: #define VARYINGS_NEED_SCREENPOSITION +$Varyings.fogFactorAndVertexLight: #define VARYINGS_NEED_FOG_AND_VERTEX_LIGHT +$Varyings.cullFace: #define VARYINGS_NEED_CULLFACE +$features.graphVertex: #define FEATURES_GRAPH_VERTEX + +// Force depth texture because we need it for almost every nodes +#define REQUIRE_DEPTH_TEXTURE + +$splice(PassInstancing) +$splice(GraphDefines) + +// custom interpolator pre-include +$splice(sgci_CustomInterpolatorPreInclude) + +// Includes +$splice(PreGraphIncludes) + +// -------------------------------------------------- +// Structs and Packing + +// custom interpolators pre packing +$splice(CustomInterpolatorPrePacking) + +$splice(PassStructs) + +$splice(InterpolatorPack) + +// -------------------------------------------------- +// Graph + +// Graph Properties +$splice(GraphProperties) + +// Graph Includes +$splice(GraphIncludes) + +// Graph Functions +$splice(GraphFunctions) + +// Custom interpolators pre vertex +$splice(CustomInterpolatorPreVertex) + +// Graph Vertex +$splice(GraphVertex) + +// Custom interpolators, pre surface +$splice(CustomInterpolatorPreSurface) + +// Graph Pixel +$splice(GraphPixel) + +// -------------------------------------------------- +// Build Graph Inputs + +$features.graphVertex: $include("BuildVertexDescriptionInputs.template.hlsl") +$features.graphPixel: $include("SharedCode.template.hlsl") + +// -------------------------------------------------- +// Main + +$splice(PostGraphIncludes) + +ENDHLSL +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/ShaderPass.template.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/ShaderPass.template.meta new file mode 100644 index 00000000000..6de4d479d90 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/ShaderPass.template.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0ed3a57e16f0259448e5b68a210e991a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/SharedCode.template.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/SharedCode.template.hlsl new file mode 100644 index 00000000000..b69be33c3a2 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/SharedCode.template.hlsl @@ -0,0 +1,75 @@ +SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) +{ + SurfaceDescriptionInputs output; + ZERO_INITIALIZE(SurfaceDescriptionInputs, output); + + // Normal is not available yet through ShaderGraph inputs. It needs to be sampled in RenderPipeline specific nodes + float3 normalWS = float3(0, 0, 1); + float4 tangentWS = float4(0, 1, 0, 0); // We can't access the tangent in screen space + + $SurfaceDescriptionInputs.WorldSpaceNormal: // must use interpolated tangent, bitangent and normal before they are normalized in the pixel shader. + $SurfaceDescriptionInputs.WorldSpaceNormal: float3 unnormalizedNormalWS = normalWS; + $SurfaceDescriptionInputs.WorldSpaceNormal: const float renormFactor = 1.0 / length(unnormalizedNormalWS); + + $SurfaceDescriptionInputs.WorldSpaceBiTangent: // use bitangent on the fly like in hdrp + $SurfaceDescriptionInputs.WorldSpaceBiTangent: // IMPORTANT! If we ever support Flip on double sided materials ensure bitangent and tangent are NOT flipped. + $SurfaceDescriptionInputs.WorldSpaceBiTangent: float crossSign = (tangentWS.w > 0.0 ? 1.0 : -1.0)* GetOddNegativeScale(); + $SurfaceDescriptionInputs.WorldSpaceBiTangent: float3 bitang = crossSign * cross(normalWS.xyz, tangentWS.xyz); + + $SurfaceDescriptionInputs.WorldSpaceNormal: output.WorldSpaceNormal = renormFactor * normalWS.xyz; // we want a unit length Normal Vector node in shader graph + $SurfaceDescriptionInputs.ObjectSpaceNormal: output.ObjectSpaceNormal = normalize(mul(output.WorldSpaceNormal, (float3x3) UNITY_MATRIX_M)); // transposed multiplication by inverse matrix to handle normal scale + $SurfaceDescriptionInputs.ViewSpaceNormal: output.ViewSpaceNormal = mul(output.WorldSpaceNormal, (float3x3) UNITY_MATRIX_I_V); // transposed multiplication by inverse matrix to handle normal scale + $SurfaceDescriptionInputs.TangentSpaceNormal: output.TangentSpaceNormal = float3(0.0f, 0.0f, 1.0f); + + $SurfaceDescriptionInputs.WorldSpaceTangent: // to preserve mikktspace compliance we use same scale renormFactor as was used on the normal. + $SurfaceDescriptionInputs.WorldSpaceTangent: // This is explained in section 2.2 in "surface gradient based bump mapping framework" + $SurfaceDescriptionInputs.WorldSpaceTangent: output.WorldSpaceTangent = renormFactor * tangentWS.xyz; + $SurfaceDescriptionInputs.WorldSpaceBiTangent: output.WorldSpaceBiTangent = renormFactor * bitang; + + float3 viewDirWS = normalize(input.texCoord1.xyz); + float linearDepth = LinearEyeDepth(SHADERGRAPH_SAMPLE_SCENE_DEPTH(input.texCoord0.xy), _ZBufferParams); + float3 cameraForward = -UNITY_MATRIX_V[2].xyz; + float camearDistance = linearDepth / dot(viewDirWS, cameraForward); + float3 positionWS = viewDirWS * camearDistance + GetCameraPositionWS(); + + $SurfaceDescriptionInputs.ObjectSpaceTangent: output.ObjectSpaceTangent = TransformWorldToObjectDir(output.WorldSpaceTangent); + $SurfaceDescriptionInputs.ViewSpaceTangent: output.ViewSpaceTangent = TransformWorldToViewDir(output.WorldSpaceTangent); + $SurfaceDescriptionInputs.TangentSpaceTangent: output.TangentSpaceTangent = float3(1.0f, 0.0f, 0.0f); + $SurfaceDescriptionInputs.ObjectSpaceBiTangent: output.ObjectSpaceBiTangent = TransformWorldToObjectDir(output.WorldSpaceBiTangent); + $SurfaceDescriptionInputs.ViewSpaceBiTangent: output.ViewSpaceBiTangent = TransformWorldToViewDir(output.WorldSpaceBiTangent); + $SurfaceDescriptionInputs.TangentSpaceBiTangent: output.TangentSpaceBiTangent = float3(0.0f, 1.0f, 0.0f); + $SurfaceDescriptionInputs.WorldSpaceViewDirection: output.WorldSpaceViewDirection = normalize(viewDirWS); + $SurfaceDescriptionInputs.ObjectSpaceViewDirection: output.ObjectSpaceViewDirection = TransformWorldToObjectDir(output.WorldSpaceViewDirection); + $SurfaceDescriptionInputs.ViewSpaceViewDirection: output.ViewSpaceViewDirection = TransformWorldToViewDir(output.WorldSpaceViewDirection); + $SurfaceDescriptionInputs.TangentSpaceViewDirection: float3x3 tangentSpaceTransform = float3x3(output.WorldSpaceTangent, output.WorldSpaceBiTangent, output.WorldSpaceNormal); + $SurfaceDescriptionInputs.TangentSpaceViewDirection: output.TangentSpaceViewDirection = mul(tangentSpaceTransform, output.WorldSpaceViewDirection); + + $SurfaceDescriptionInputs.WorldSpacePosition: output.WorldSpacePosition = positionWS; + $SurfaceDescriptionInputs.ObjectSpacePosition: output.ObjectSpacePosition = TransformWorldToObject(positionWS); + $SurfaceDescriptionInputs.ViewSpacePosition: output.ViewSpacePosition = TransformWorldToView(positionWS); + $SurfaceDescriptionInputs.TangentSpacePosition: output.TangentSpacePosition = float3(0.0f, 0.0f, 0.0f); + $SurfaceDescriptionInputs.AbsoluteWorldSpacePosition: output.AbsoluteWorldSpacePosition = GetAbsolutePositionWS(positionWS); + $SurfaceDescriptionInputs.WorldSpacePositionPredisplacement: output.WorldSpacePositionPredisplacement = positionWS; + $SurfaceDescriptionInputs.ObjectSpacePositionPredisplacement: output.ObjectSpacePositionPredisplacement = TransformWorldToObject(positionWS); + $SurfaceDescriptionInputs.ViewSpacePositionPredisplacement: output.ViewSpacePositionPredisplacement = TransformWorldToView(positionWS); + $SurfaceDescriptionInputs.TangentSpacePositionPredisplacement: output.TangentSpacePositionPredisplacement = float3(0.0f, 0.0f, 0.0f); + $SurfaceDescriptionInputs.AbsoluteWorldSpacePositionPredisplacement:output.AbsoluteWorldSpacePositionPredisplacement = GetAbsolutePositionWS(positionWS); + $SurfaceDescriptionInputs.ScreenPosition: output.ScreenPosition = float4(input.texCoord0.xy, 0, 1); + $SurfaceDescriptionInputs.uv0: output.uv0 = input.texCoord0; + $SurfaceDescriptionInputs.uv1: output.uv1 = input.texCoord1; + $SurfaceDescriptionInputs.uv2: output.uv2 = input.texCoord2; + $SurfaceDescriptionInputs.uv3: output.uv3 = input.texCoord3; + $SurfaceDescriptionInputs.VertexColor: output.VertexColor = input.color; + $SurfaceDescriptionInputs.TimeParameters: output.TimeParameters = _TimeParameters.xyz; // This is mainly for LW as HD overwrite this value + $SurfaceDescriptionInputs.NDCPosition: output.NDCPosition = output.ScreenPosition.xy; + +#if defined(SHADER_STAGE_FRAGMENT) && defined(VARYINGS_NEED_CULLFACE) +#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign = IS_FRONT_VFACE(input.cullFace, true, false); +#else +#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN +#endif + $SurfaceDescriptionInputs.FaceSign: BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN +#undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN + + return output; +} diff --git a/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/SharedCode.template.hlsl.meta b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/SharedCode.template.hlsl.meta new file mode 100644 index 00000000000..feddaf9fe66 --- /dev/null +++ b/com.unity.shadergraph/Editor/Generation/Targets/Fullscreen/Templates/SharedCode.template.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 16201fed0715efa48a8908fedb361bf0 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.shadergraph/Editor/Interface/IRequiresData.cs b/com.unity.shadergraph/Editor/Interface/IRequiresData.cs new file mode 100644 index 00000000000..b42a554ae7e --- /dev/null +++ b/com.unity.shadergraph/Editor/Interface/IRequiresData.cs @@ -0,0 +1,9 @@ +using UnityEditor.ShaderGraph.Serialization; + +namespace UnityEditor.ShaderGraph +{ + interface IRequiresData where T : JsonObject + { + T data { get; set; } + } +} diff --git a/com.unity.shadergraph/Editor/Interface/IRequiresData.cs.meta b/com.unity.shadergraph/Editor/Interface/IRequiresData.cs.meta new file mode 100644 index 00000000000..0fb7e9a32ac --- /dev/null +++ b/com.unity.shadergraph/Editor/Interface/IRequiresData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d47693329d2b0048b119eea3e618040 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: