├── README.md ├── Version 2 ├── Objects.cs ├── MeshGeneratorV2.cs ├── MeshMat.mat └── TerrainShader.shadergraph └── Version 1 └── MeshGeneratorV1.cs /README.md: -------------------------------------------------------------------------------- 1 | # ProceduralTerrainScripts 2 | 3 | Version 1 => How to Procedurally Generate Terrain
4 | https://www.youtube.com/watch?v=cLs3CGNV120 5 | 6 | Version 2 => Procedural Terrain Generation - Colours & Spawning random objects
7 | https://www.youtube.com/watch?v=bd4P5suj-L0 8 | -------------------------------------------------------------------------------- /Version 2/Objects.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class Objects : MonoBehaviour 6 | { 7 | void Start() 8 | { 9 | FindLand(); 10 | } 11 | 12 | public void FindLand() 13 | { 14 | Ray ray = new Ray(transform.position, -transform.up); 15 | RaycastHit hitInfo; 16 | if (Physics.Raycast(ray, out hitInfo)) 17 | { 18 | transform.position = new Vector3(hitInfo.point.x, hitInfo.point.y, hitInfo.point.z); 19 | } 20 | else 21 | { 22 | ray = new Ray(transform.position, transform.up); 23 | if (Physics.Raycast(ray, out hitInfo)) 24 | { 25 | transform.position = new Vector3(hitInfo.point.x, hitInfo.point.y, hitInfo.point.z); 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Version 1/MeshGeneratorV1.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [RequireComponent(typeof(MeshFilter))] 4 | public class MeshGeneratorV1 : MonoBehaviour 5 | { 6 | Mesh mesh; 7 | private int MESH_SCALE = 500; 8 | public AnimationCurve heightCurve; 9 | private Vector3[] vertices; 10 | private int[] triangles; 11 | 12 | public int xSize; 13 | public int zSize; 14 | 15 | public float scale; 16 | public int octaves; 17 | public float lacunarity; 18 | 19 | public int seed; 20 | private System.Random prng; 21 | private Vector2[] octaveOffsets; 22 | 23 | 24 | void Start() 25 | { 26 | mesh = new Mesh(); 27 | GetComponent().mesh = mesh; 28 | CreateNewMap(); 29 | } 30 | 31 | public void CreateNewMap() 32 | { 33 | CreateMeshShape(); 34 | CreateTriangles(); 35 | UpdateMesh(); 36 | } 37 | 38 | private void CreateMeshShape () 39 | { 40 | // Creates seed 41 | Vector2[] octaveOffsets = GetOffsetSeed(); 42 | 43 | if (scale <= 0) 44 | scale = 0.0001f; 45 | 46 | // Create vertices array 47 | vertices = new Vector3[(xSize + 1) * (zSize + 1)]; 48 | 49 | for (int i = 0, z = 0; z <= zSize; z++) 50 | { 51 | for (int x = 0; x <= xSize; x++) 52 | { 53 | // Assign and set height of each vertices 54 | float noiseHeight = GenerateNoiseHeight(z, x, octaveOffsets); 55 | vertices[i] = new Vector3(x, noiseHeight, z); 56 | i++; 57 | } 58 | } 59 | } 60 | 61 | private Vector2[] GetOffsetSeed() 62 | { 63 | seed = Random.Range(0, 1000); 64 | // changes area of map 65 | System.Random prng = new System.Random(seed); 66 | Vector2[] octaveOffsets = new Vector2[octaves]; 67 | 68 | for (int o = 0; o < octaves; o++) { 69 | float offsetX = prng.Next(-100000, 100000); 70 | float offsetY = prng.Next(-100000, 100000); 71 | octaveOffsets[o] = new Vector2(offsetX, offsetY); 72 | } 73 | return octaveOffsets; 74 | } 75 | 76 | private float GenerateNoiseHeight(int z, int x, Vector2[] octaveOffsets) 77 | { 78 | float amplitude = 12; 79 | float frequency = 1; 80 | float persistence = 0.5f; 81 | float noiseHeight = 0; 82 | 83 | // loop over octaves 84 | for (int y = 0; y < octaves; y++) 85 | { 86 | float mapZ = z / scale * frequency + octaveOffsets[y].y; 87 | float mapX = x / scale * frequency + octaveOffsets[y].x; 88 | 89 | // Create perlinValues 90 | // The *2-1 is to create a flat floor level 91 | float perlinValue = (Mathf.PerlinNoise(mapZ, mapX)) * 2 - 1; 92 | noiseHeight += heightCurve.Evaluate(perlinValue) * amplitude; 93 | frequency *= lacunarity; 94 | amplitude *= persistence; 95 | } 96 | return noiseHeight; 97 | } 98 | 99 | private void CreateTriangles() 100 | { 101 | // Need 6 vertices to create a square (2 triangles) 102 | triangles = new int[xSize * zSize * 6]; 103 | int vert = 0; 104 | int tris = 0; 105 | 106 | // loop through rows 107 | for (int z = 0; z < zSize; z++) 108 | { 109 | // fill all columns in row 110 | for (int x = 0; x < xSize; x++) 111 | { 112 | triangles[tris + 0] = vert + 0; 113 | triangles[tris + 1] = vert + xSize + 1; 114 | triangles[tris + 2] = vert + 1; 115 | triangles[tris + 3] = vert + 1; 116 | triangles[tris + 4] = vert + xSize + 1; 117 | triangles[tris + 5] = vert + xSize + 2; 118 | 119 | vert++; 120 | tris += 6; 121 | } 122 | vert++; 123 | } 124 | } 125 | 126 | private void UpdateMesh() 127 | { 128 | mesh.Clear(); 129 | mesh.vertices = vertices; 130 | mesh.triangles = triangles; 131 | mesh.RecalculateNormals(); 132 | mesh.RecalculateTangents(); 133 | GetComponent().sharedMesh = mesh; 134 | 135 | gameObject.transform.localScale = new Vector3(MESH_SCALE, MESH_SCALE, MESH_SCALE); 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /Version 2/MeshGeneratorV2.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using UnityEngine; 5 | 6 | [RequireComponent(typeof(MeshFilter))] 7 | public class MeshGeneratorV2 : MonoBehaviour 8 | { 9 | Mesh mesh; 10 | private int MESH_SCALE = 100; 11 | public GameObject[] objects; 12 | [SerializeField] private AnimationCurve heightCurve; 13 | private Vector3[] vertices; 14 | private int[] triangles; 15 | 16 | private Color[] colors; 17 | [SerializeField] private Gradient gradient; 18 | 19 | private float minTerrainheight; 20 | private float maxTerrainheight; 21 | 22 | public int xSize; 23 | public int zSize; 24 | 25 | public float scale; 26 | public int octaves; 27 | public float lacunarity; 28 | 29 | public int seed; 30 | 31 | private float lastNoiseHeight; 32 | 33 | void Start() 34 | { 35 | // Use this method if you havn't filled out the properties in the inspector 36 | // SetNullProperties(); 37 | 38 | mesh = new Mesh(); 39 | GetComponent().mesh = mesh; 40 | CreateNewMap(); 41 | } 42 | 43 | private void SetNullProperties() 44 | { 45 | if (xSize <= 0) xSize = 50; 46 | if (zSize <= 0) zSize = 50; 47 | if (octaves <= 0) octaves = 5; 48 | if (lacunarity <= 0) lacunarity = 2; 49 | if (scale <= 0) scale = 50; 50 | } 51 | 52 | public void CreateNewMap() 53 | { 54 | CreateMeshShape(); 55 | CreateTriangles(); 56 | ColorMap(); 57 | UpdateMesh(); 58 | } 59 | 60 | private void CreateMeshShape () 61 | { 62 | // Creates seed 63 | Vector2[] octaveOffsets = GetOffsetSeed(); 64 | 65 | if (scale <= 0) scale = 0.0001f; 66 | 67 | // Create vertices 68 | vertices = new Vector3[(xSize + 1) * (zSize + 1)]; 69 | 70 | for (int i = 0, z = 0; z <= zSize; z++) 71 | { 72 | for (int x = 0; x <= xSize; x++) 73 | { 74 | // Set height of vertices 75 | float noiseHeight = GenerateNoiseHeight(z, x, octaveOffsets); 76 | SetMinMaxHeights(noiseHeight); 77 | vertices[i] = new Vector3(x, noiseHeight, z); 78 | i++; 79 | } 80 | } 81 | } 82 | 83 | private Vector2[] GetOffsetSeed() 84 | { 85 | seed = Random.Range(0, 1000); 86 | 87 | // changes area of map 88 | System.Random prng = new System.Random(seed); 89 | Vector2[] octaveOffsets = new Vector2[octaves]; 90 | 91 | for (int o = 0; o < octaves; o++) { 92 | float offsetX = prng.Next(-100000, 100000); 93 | float offsetY = prng.Next(-100000, 100000); 94 | octaveOffsets[o] = new Vector2(offsetX, offsetY); 95 | } 96 | return octaveOffsets; 97 | } 98 | 99 | private float GenerateNoiseHeight(int z, int x, Vector2[] octaveOffsets) 100 | { 101 | float amplitude = 20; 102 | float frequency = 1; 103 | float persistence = 0.5f; 104 | float noiseHeight = 0; 105 | 106 | // loop over octaves 107 | for (int y = 0; y < octaves; y++) 108 | { 109 | float mapZ = z / scale * frequency + octaveOffsets[y].y; 110 | float mapX = x / scale * frequency + octaveOffsets[y].x; 111 | 112 | //The *2-1 is to create a flat floor level 113 | float perlinValue = (Mathf.PerlinNoise(mapZ, mapX)) * 2 - 1; 114 | noiseHeight += heightCurve.Evaluate(perlinValue) * amplitude; 115 | frequency *= lacunarity; 116 | amplitude *= persistence; 117 | } 118 | return noiseHeight; 119 | } 120 | 121 | private void SetMinMaxHeights(float noiseHeight) 122 | { 123 | // Set min and max height of map for color gradient 124 | if (noiseHeight > maxTerrainheight) 125 | maxTerrainheight = noiseHeight; 126 | if (noiseHeight < minTerrainheight) 127 | minTerrainheight = noiseHeight; 128 | } 129 | 130 | 131 | private void CreateTriangles() 132 | { 133 | // Need 6 vertices to create a square (2 triangles) 134 | triangles = new int[xSize * zSize * 6]; 135 | 136 | int vert = 0; 137 | int tris = 0; 138 | // Go to next row 139 | for (int z = 0; z < zSize; z++) 140 | { 141 | // fill row 142 | for (int x = 0; x < xSize; x++) 143 | { 144 | triangles[tris + 0] = vert + 0; 145 | triangles[tris + 1] = vert + xSize + 1; 146 | triangles[tris + 2] = vert + 1; 147 | triangles[tris + 3] = vert + 1; 148 | triangles[tris + 4] = vert + xSize + 1; 149 | triangles[tris + 5] = vert + xSize + 2; 150 | 151 | vert++; 152 | tris += 6; 153 | } 154 | vert++; 155 | } 156 | } 157 | 158 | private void ColorMap() 159 | { 160 | colors = new Color[vertices.Length]; 161 | 162 | // Loop over vertices and apply a color from the depending on height (y axis value) 163 | for (int i = 0, z = 0; z < vertices.Length; z++) 164 | { 165 | float height = Mathf.InverseLerp(minTerrainheight, maxTerrainheight, vertices[i].y); 166 | colors[i] = gradient.Evaluate(height); 167 | i++; 168 | } 169 | } 170 | 171 | private void MapEmbellishments() 172 | { 173 | for (int i = 0; i < vertices.Length; i++) 174 | { 175 | // find actual position of vertices in the game 176 | Vector3 worldPt = transform.TransformPoint(mesh.vertices[i]); 177 | var noiseHeight = worldPt.y; 178 | // Stop generation if height difference between 2 vertices is too steep 179 | if(System.Math.Abs(lastNoiseHeight - worldPt.y) < 25) 180 | { 181 | // min height for object generation 182 | if (noiseHeight > 100) 183 | { 184 | // Chance to generate 185 | if (Random.Range(1, 5) == 1) 186 | { 187 | GameObject objectToSpawn = objects[Random.Range(0, objects.Length)]; 188 | var spawnAboveTerrainBy = noiseHeight * 2; 189 | Instantiate(objectToSpawn, new Vector3(mesh.vertices[i].x * MESH_SCALE, spawnAboveTerrainBy, mesh.vertices[i].z * MESH_SCALE), Quaternion.identity); 190 | } 191 | } 192 | } 193 | lastNoiseHeight = noiseHeight; 194 | } 195 | } 196 | 197 | private void UpdateMesh() 198 | { 199 | mesh.Clear(); 200 | mesh.vertices = vertices; 201 | mesh.triangles = triangles; 202 | mesh.colors = colors; 203 | mesh.RecalculateNormals(); 204 | mesh.RecalculateTangents(); 205 | 206 | GetComponent().sharedMesh = mesh; 207 | gameObject.transform.localScale = new Vector3(MESH_SCALE, MESH_SCALE, MESH_SCALE); 208 | 209 | MapEmbellishments(); 210 | } 211 | 212 | } 213 | -------------------------------------------------------------------------------- /Version 2/MeshMat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: MeshMat 11 | m_Shader: {fileID: -6465566751694194690, guid: a671c605ad636c94dbfe42ba34a7c424, 12 | type: 3} 13 | m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A _SPECULARHIGHLIGHTS_OFF 14 | _SPECULAR_SETUP 15 | m_LightmapFlags: 4 16 | m_EnableInstancingVariants: 0 17 | m_DoubleSidedGI: 0 18 | m_CustomRenderQueue: -1 19 | stringTagMap: {} 20 | disabledShaderPasses: [] 21 | m_SavedProperties: 22 | serializedVersion: 3 23 | m_TexEnvs: 24 | - _BaseMap: 25 | m_Texture: {fileID: 0} 26 | m_Scale: {x: 1, y: 1} 27 | m_Offset: {x: 0, y: 0} 28 | - _BumpMap: 29 | m_Texture: {fileID: 0} 30 | m_Scale: {x: 1, y: 1} 31 | m_Offset: {x: 0, y: 0} 32 | - _Control: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - _DetailAlbedoMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _DetailMask: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _DetailNormalMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _DetailTex: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _EmissionMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _MainTex: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _Mask0: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _Mask1: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | - _Mask2: 69 | m_Texture: {fileID: 0} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | - _Mask3: 73 | m_Texture: {fileID: 0} 74 | m_Scale: {x: 1, y: 1} 75 | m_Offset: {x: 0, y: 0} 76 | - _MetallicGlossMap: 77 | m_Texture: {fileID: 0} 78 | m_Scale: {x: 1, y: 1} 79 | m_Offset: {x: 0, y: 0} 80 | - _Normal0: 81 | m_Texture: {fileID: 0} 82 | m_Scale: {x: 1, y: 1} 83 | m_Offset: {x: 0, y: 0} 84 | - _Normal1: 85 | m_Texture: {fileID: 0} 86 | m_Scale: {x: 1, y: 1} 87 | m_Offset: {x: 0, y: 0} 88 | - _Normal2: 89 | m_Texture: {fileID: 0} 90 | m_Scale: {x: 1, y: 1} 91 | m_Offset: {x: 0, y: 0} 92 | - _Normal3: 93 | m_Texture: {fileID: 0} 94 | m_Scale: {x: 1, y: 1} 95 | m_Offset: {x: 0, y: 0} 96 | - _OcclusionMap: 97 | m_Texture: {fileID: 0} 98 | m_Scale: {x: 1, y: 1} 99 | m_Offset: {x: 0, y: 0} 100 | - _ParallaxMap: 101 | m_Texture: {fileID: 0} 102 | m_Scale: {x: 1, y: 1} 103 | m_Offset: {x: 0, y: 0} 104 | - _SpecGlossMap: 105 | m_Texture: {fileID: 0} 106 | m_Scale: {x: 1, y: 1} 107 | m_Offset: {x: 0, y: 0} 108 | - _Splat0: 109 | m_Texture: {fileID: 0} 110 | m_Scale: {x: 1, y: 1} 111 | m_Offset: {x: 0, y: 0} 112 | - _Splat1: 113 | m_Texture: {fileID: 0} 114 | m_Scale: {x: 1, y: 1} 115 | m_Offset: {x: 0, y: 0} 116 | - _Splat2: 117 | m_Texture: {fileID: 0} 118 | m_Scale: {x: 1, y: 1} 119 | m_Offset: {x: 0, y: 0} 120 | - _Splat3: 121 | m_Texture: {fileID: 0} 122 | m_Scale: {x: 1, y: 1} 123 | m_Offset: {x: 0, y: 0} 124 | - _TerrainHolesTexture: 125 | m_Texture: {fileID: 0} 126 | m_Scale: {x: 1, y: 1} 127 | m_Offset: {x: 0, y: 0} 128 | - unity_Lightmaps: 129 | m_Texture: {fileID: 0} 130 | m_Scale: {x: 1, y: 1} 131 | m_Offset: {x: 0, y: 0} 132 | - unity_LightmapsInd: 133 | m_Texture: {fileID: 0} 134 | m_Scale: {x: 1, y: 1} 135 | m_Offset: {x: 0, y: 0} 136 | - unity_ShadowMasks: 137 | m_Texture: {fileID: 0} 138 | m_Scale: {x: 1, y: 1} 139 | m_Offset: {x: 0, y: 0} 140 | m_Floats: 141 | - Vector1_3d3fa9461a56467f8e16928175353ceb: -36.61 142 | - Vector1_d8b427b47f5d4553aba45000b5d522ec: 134.5 143 | - _AlphaClip: 0 144 | - _Blend: 0 145 | - _BlendOp: 0 146 | - _BumpScale: 1 147 | - _CameraFadingEnabled: 0 148 | - _CameraFarFadeDistance: 2 149 | - _CameraNearFadeDistance: 1 150 | - _ClearCoatMask: 0 151 | - _ClearCoatSmoothness: 0 152 | - _ColorMode: 0 153 | - _Cull: 2 154 | - _Cutoff: 0.5 155 | - _DetailAlbedoMapScale: 1 156 | - _DetailNormalMapScale: 1 157 | - _DistortionBlend: 0.5 158 | - _DistortionEnabled: 0 159 | - _DistortionStrength: 1 160 | - _DistortionStrengthScaled: 0.1 161 | - _DstBlend: 0 162 | - _EnableHeightBlend: 0 163 | - _EnableInstancedPerPixelNormal: 1 164 | - _EnvironmentReflections: 1 165 | - _FlipbookBlending: 0 166 | - _FlipbookMode: 0 167 | - _GlossMapScale: 1 168 | - _Glossiness: 0.5 169 | - _GlossinessSource: 0 170 | - _GlossyReflections: 0 171 | - _HeightTransition: 0 172 | - _Metallic: 0 173 | - _Metallic0: 0 174 | - _Metallic1: 0 175 | - _Metallic2: 0 176 | - _Metallic3: 0 177 | - _Mode: 1 178 | - _NumLayersCount: 1 179 | - _OcclusionStrength: 1 180 | - _Parallax: 0.02 181 | - _QueueOffset: 0 182 | - _ReceiveShadows: 1 183 | - _Shininess: 0 184 | - _Smoothness: 0 185 | - _Smoothness0: 0.5 186 | - _Smoothness1: 0.5 187 | - _Smoothness2: 0.5 188 | - _Smoothness3: 0.5 189 | - _SmoothnessSource: 0 190 | - _SmoothnessTextureChannel: 1 191 | - _SoftParticlesEnabled: 0 192 | - _SoftParticlesFarFadeDistance: 1 193 | - _SoftParticlesNearFadeDistance: 0 194 | - _SpecSource: 0 195 | - _SpecularHighlights: 0 196 | - _SrcBlend: 1 197 | - _Surface: 0 198 | - _UVSec: 0 199 | - _WindQuality: 0 200 | - _WorkflowMode: 0 201 | - _ZWrite: 1 202 | m_Colors: 203 | - Color_83d2dad111604444bd27ee69dea3d1ad: {r: 0.2319755, g: 0.5566038, b: 0.20216268, 204 | a: 1} 205 | - Color_c256e61a2b97414886f1579736c334fe: {r: 0.9433962, g: 0.9282076, b: 0.5206479, 206 | a: 1} 207 | - _BaseColor: {r: 0.2487446, g: 0.5283019, b: 0.23673905, a: 0} 208 | - _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} 209 | - _CameraFadeParams: {r: 0, g: 0, b: 0, a: 0} 210 | - _Color: {r: 1, g: 1, b: 1, a: 1} 211 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 212 | - _HueVariation: {r: 1, g: 0.5, b: 0, a: 0.1} 213 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} 214 | - _SpecColor: {r: 0, g: 0, b: 0, a: 0} 215 | m_BuildTextureStacks: [] 216 | --- !u!114 &553503671331191259 217 | MonoBehaviour: 218 | m_ObjectHideFlags: 11 219 | m_CorrespondingSourceObject: {fileID: 0} 220 | m_PrefabInstance: {fileID: 0} 221 | m_PrefabAsset: {fileID: 0} 222 | m_GameObject: {fileID: 0} 223 | m_Enabled: 1 224 | m_EditorHideFlags: 0 225 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 226 | m_Name: 227 | m_EditorClassIdentifier: 228 | version: 4 229 | -------------------------------------------------------------------------------- /Version 2/TerrainShader.shadergraph: -------------------------------------------------------------------------------- 1 | { 2 | "m_SGVersion": 2, 3 | "m_Type": "UnityEditor.ShaderGraph.GraphData", 4 | "m_ObjectId": "df79c357d39d4044b57a82db12fa016c", 5 | "m_Properties": [], 6 | "m_Keywords": [], 7 | "m_Nodes": [ 8 | { 9 | "m_Id": "53c68fda37498e8a9a63108a1e8ca4fc" 10 | }, 11 | { 12 | "m_Id": "fd5bd6ddd5d24ed5ae70cfa88aa0771e" 13 | }, 14 | { 15 | "m_Id": "cdf5aa86d15c4bc0baffea35737ce6af" 16 | }, 17 | { 18 | "m_Id": "04148613d7e048d399ff2ab17ef59898" 19 | }, 20 | { 21 | "m_Id": "e6eb4b77e74144bfaa67b88a405ccb4f" 22 | }, 23 | { 24 | "m_Id": "cc9cfbea2bcb47d087d2c177252d27e0" 25 | }, 26 | { 27 | "m_Id": "d89a8d9020d04326984d8fedc92c87d3" 28 | }, 29 | { 30 | "m_Id": "de99aa5e98d64a3a91eb6d1cbeaf53b3" 31 | }, 32 | { 33 | "m_Id": "b109a677d8eb4c439e4fd589ca68e4cd" 34 | }, 35 | { 36 | "m_Id": "7f89fddf352e48db9a61e871bfda1564" 37 | }, 38 | { 39 | "m_Id": "0a1287b4f2ed48af9b174c2c8f87ef17" 40 | }, 41 | { 42 | "m_Id": "1b5e1d1680964aca8c26a7d6bf968fca" 43 | } 44 | ], 45 | "m_GroupDatas": [], 46 | "m_StickyNoteDatas": [], 47 | "m_Edges": [ 48 | { 49 | "m_OutputSlot": { 50 | "m_Node": { 51 | "m_Id": "53c68fda37498e8a9a63108a1e8ca4fc" 52 | }, 53 | "m_SlotId": 0 54 | }, 55 | "m_InputSlot": { 56 | "m_Node": { 57 | "m_Id": "e6eb4b77e74144bfaa67b88a405ccb4f" 58 | }, 59 | "m_SlotId": 0 60 | } 61 | } 62 | ], 63 | "m_VertexContext": { 64 | "m_Position": { 65 | "x": -87.0, 66 | "y": -160.0 67 | }, 68 | "m_Blocks": [ 69 | { 70 | "m_Id": "fd5bd6ddd5d24ed5ae70cfa88aa0771e" 71 | }, 72 | { 73 | "m_Id": "cdf5aa86d15c4bc0baffea35737ce6af" 74 | }, 75 | { 76 | "m_Id": "04148613d7e048d399ff2ab17ef59898" 77 | } 78 | ] 79 | }, 80 | "m_FragmentContext": { 81 | "m_Position": { 82 | "x": -87.0, 83 | "y": 40.0 84 | }, 85 | "m_Blocks": [ 86 | { 87 | "m_Id": "e6eb4b77e74144bfaa67b88a405ccb4f" 88 | }, 89 | { 90 | "m_Id": "cc9cfbea2bcb47d087d2c177252d27e0" 91 | }, 92 | { 93 | "m_Id": "d89a8d9020d04326984d8fedc92c87d3" 94 | }, 95 | { 96 | "m_Id": "de99aa5e98d64a3a91eb6d1cbeaf53b3" 97 | }, 98 | { 99 | "m_Id": "b109a677d8eb4c439e4fd589ca68e4cd" 100 | }, 101 | { 102 | "m_Id": "7f89fddf352e48db9a61e871bfda1564" 103 | }, 104 | { 105 | "m_Id": "0a1287b4f2ed48af9b174c2c8f87ef17" 106 | }, 107 | { 108 | "m_Id": "1b5e1d1680964aca8c26a7d6bf968fca" 109 | } 110 | ] 111 | }, 112 | "m_PreviewData": { 113 | "serializedMesh": { 114 | "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", 115 | "m_Guid": "" 116 | } 117 | }, 118 | "m_Path": "Shader Graphs", 119 | "m_ConcretePrecision": 1, 120 | "m_PreviewMode": 2, 121 | "m_OutputNode": { 122 | "m_Id": "" 123 | }, 124 | "m_ActiveTargets": [ 125 | { 126 | "m_Id": "3b560ab3bf0a4230a77494133bbd3d74" 127 | } 128 | ] 129 | } 130 | 131 | { 132 | "m_SGVersion": 0, 133 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 134 | "m_ObjectId": "04148613d7e048d399ff2ab17ef59898", 135 | "m_Group": { 136 | "m_Id": "" 137 | }, 138 | "m_Name": "VertexDescription.Tangent", 139 | "m_DrawState": { 140 | "m_Expanded": true, 141 | "m_Position": { 142 | "serializedVersion": "2", 143 | "x": 0.0, 144 | "y": 0.0, 145 | "width": 0.0, 146 | "height": 0.0 147 | } 148 | }, 149 | "m_Slots": [ 150 | { 151 | "m_Id": "10004d5899f9454ea1670caf60912df3" 152 | } 153 | ], 154 | "synonyms": [], 155 | "m_Precision": 0, 156 | "m_PreviewExpanded": true, 157 | "m_PreviewMode": 0, 158 | "m_CustomColors": { 159 | "m_SerializableColors": [] 160 | }, 161 | "m_SerializedDescriptor": "VertexDescription.Tangent" 162 | } 163 | 164 | { 165 | "m_SGVersion": 0, 166 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 167 | "m_ObjectId": "0a1287b4f2ed48af9b174c2c8f87ef17", 168 | "m_Group": { 169 | "m_Id": "" 170 | }, 171 | "m_Name": "SurfaceDescription.Occlusion", 172 | "m_DrawState": { 173 | "m_Expanded": true, 174 | "m_Position": { 175 | "serializedVersion": "2", 176 | "x": 0.0, 177 | "y": 0.0, 178 | "width": 0.0, 179 | "height": 0.0 180 | } 181 | }, 182 | "m_Slots": [ 183 | { 184 | "m_Id": "bbdb81d5ca2b4bb88b1a3dde6d07fb9e" 185 | } 186 | ], 187 | "synonyms": [], 188 | "m_Precision": 0, 189 | "m_PreviewExpanded": true, 190 | "m_PreviewMode": 0, 191 | "m_CustomColors": { 192 | "m_SerializableColors": [] 193 | }, 194 | "m_SerializedDescriptor": "SurfaceDescription.Occlusion" 195 | } 196 | 197 | { 198 | "m_SGVersion": 0, 199 | "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", 200 | "m_ObjectId": "10004d5899f9454ea1670caf60912df3", 201 | "m_Id": 0, 202 | "m_DisplayName": "Tangent", 203 | "m_SlotType": 0, 204 | "m_Hidden": false, 205 | "m_ShaderOutputName": "Tangent", 206 | "m_StageCapability": 1, 207 | "m_Value": { 208 | "x": 0.0, 209 | "y": 0.0, 210 | "z": 0.0 211 | }, 212 | "m_DefaultValue": { 213 | "x": 0.0, 214 | "y": 0.0, 215 | "z": 0.0 216 | }, 217 | "m_Labels": [], 218 | "m_Space": 0 219 | } 220 | 221 | { 222 | "m_SGVersion": 0, 223 | "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", 224 | "m_ObjectId": "13c7af0351f6ca82b37303f27b8c015d", 225 | "m_Id": 0, 226 | "m_DisplayName": "Out", 227 | "m_SlotType": 1, 228 | "m_Hidden": false, 229 | "m_ShaderOutputName": "Out", 230 | "m_StageCapability": 3, 231 | "m_Value": { 232 | "x": 1.0, 233 | "y": 1.0, 234 | "z": 1.0, 235 | "w": 1.0 236 | }, 237 | "m_DefaultValue": { 238 | "x": 0.0, 239 | "y": 0.0, 240 | "z": 0.0, 241 | "w": 0.0 242 | }, 243 | "m_Labels": [] 244 | } 245 | 246 | { 247 | "m_SGVersion": 0, 248 | "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", 249 | "m_ObjectId": "19734e906799402cbee0c116374f47b8", 250 | "m_Id": 0, 251 | "m_DisplayName": "Base Color", 252 | "m_SlotType": 0, 253 | "m_Hidden": false, 254 | "m_ShaderOutputName": "BaseColor", 255 | "m_StageCapability": 2, 256 | "m_Value": { 257 | "x": 0.7353569269180298, 258 | "y": 0.7353569269180298, 259 | "z": 0.7353569269180298 260 | }, 261 | "m_DefaultValue": { 262 | "x": 0.0, 263 | "y": 0.0, 264 | "z": 0.0 265 | }, 266 | "m_Labels": [], 267 | "m_ColorMode": 0, 268 | "m_DefaultColor": { 269 | "r": 0.5, 270 | "g": 0.5, 271 | "b": 0.5, 272 | "a": 1.0 273 | } 274 | } 275 | 276 | { 277 | "m_SGVersion": 0, 278 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 279 | "m_ObjectId": "1b5e1d1680964aca8c26a7d6bf968fca", 280 | "m_Group": { 281 | "m_Id": "" 282 | }, 283 | "m_Name": "SurfaceDescription.Metallic", 284 | "m_DrawState": { 285 | "m_Expanded": true, 286 | "m_Position": { 287 | "serializedVersion": "2", 288 | "x": 0.0, 289 | "y": 0.0, 290 | "width": 0.0, 291 | "height": 0.0 292 | } 293 | }, 294 | "m_Slots": [ 295 | { 296 | "m_Id": "2d02a238862f47c694bf024e5bff9856" 297 | } 298 | ], 299 | "synonyms": [], 300 | "m_Precision": 0, 301 | "m_PreviewExpanded": true, 302 | "m_PreviewMode": 0, 303 | "m_CustomColors": { 304 | "m_SerializableColors": [] 305 | }, 306 | "m_SerializedDescriptor": "SurfaceDescription.Metallic" 307 | } 308 | 309 | { 310 | "m_SGVersion": 0, 311 | "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalLitSubTarget", 312 | "m_ObjectId": "29a5b71184f9435f8f0bbe616756b953", 313 | "m_WorkflowMode": 1, 314 | "m_NormalDropOffSpace": 2, 315 | "m_ClearCoat": false 316 | } 317 | 318 | { 319 | "m_SGVersion": 0, 320 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 321 | "m_ObjectId": "2d02a238862f47c694bf024e5bff9856", 322 | "m_Id": 0, 323 | "m_DisplayName": "Metallic", 324 | "m_SlotType": 0, 325 | "m_Hidden": false, 326 | "m_ShaderOutputName": "Metallic", 327 | "m_StageCapability": 2, 328 | "m_Value": 0.3499999940395355, 329 | "m_DefaultValue": 0.0, 330 | "m_Labels": [] 331 | } 332 | 333 | { 334 | "m_SGVersion": 0, 335 | "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", 336 | "m_ObjectId": "3b560ab3bf0a4230a77494133bbd3d74", 337 | "m_ActiveSubTarget": { 338 | "m_Id": "29a5b71184f9435f8f0bbe616756b953" 339 | }, 340 | "m_SurfaceType": 0, 341 | "m_AlphaMode": 0, 342 | "m_TwoSided": false, 343 | "m_AlphaClip": false, 344 | "m_CustomEditorGUI": "" 345 | } 346 | 347 | { 348 | "m_SGVersion": 0, 349 | "m_Type": "UnityEditor.ShaderGraph.VertexColorNode", 350 | "m_ObjectId": "53c68fda37498e8a9a63108a1e8ca4fc", 351 | "m_Group": { 352 | "m_Id": "" 353 | }, 354 | "m_Name": "Vertex Color", 355 | "m_DrawState": { 356 | "m_Expanded": true, 357 | "m_Position": { 358 | "serializedVersion": "2", 359 | "x": -404.0000305175781, 360 | "y": -299.0, 361 | "width": 208.00001525878907, 362 | "height": 278.0 363 | } 364 | }, 365 | "m_Slots": [ 366 | { 367 | "m_Id": "13c7af0351f6ca82b37303f27b8c015d" 368 | } 369 | ], 370 | "synonyms": [], 371 | "m_Precision": 0, 372 | "m_PreviewExpanded": true, 373 | "m_PreviewMode": 2, 374 | "m_CustomColors": { 375 | "m_SerializableColors": [] 376 | } 377 | } 378 | 379 | { 380 | "m_SGVersion": 0, 381 | "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", 382 | "m_ObjectId": "5f2cf61c112f428eba073ad8e06b0ed0", 383 | "m_Id": 0, 384 | "m_DisplayName": "Emission", 385 | "m_SlotType": 0, 386 | "m_Hidden": false, 387 | "m_ShaderOutputName": "Emission", 388 | "m_StageCapability": 2, 389 | "m_Value": { 390 | "x": 0.0, 391 | "y": 0.0, 392 | "z": 0.0 393 | }, 394 | "m_DefaultValue": { 395 | "x": 0.0, 396 | "y": 0.0, 397 | "z": 0.0 398 | }, 399 | "m_Labels": [], 400 | "m_ColorMode": 1, 401 | "m_DefaultColor": { 402 | "r": 0.0, 403 | "g": 0.0, 404 | "b": 0.0, 405 | "a": 1.0 406 | } 407 | } 408 | 409 | { 410 | "m_SGVersion": 0, 411 | "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", 412 | "m_ObjectId": "6c4f9af9d0214b6391fe315dc1bdd8e1", 413 | "m_Id": 0, 414 | "m_DisplayName": "Position", 415 | "m_SlotType": 0, 416 | "m_Hidden": false, 417 | "m_ShaderOutputName": "Position", 418 | "m_StageCapability": 1, 419 | "m_Value": { 420 | "x": 0.0, 421 | "y": 0.0, 422 | "z": 0.0 423 | }, 424 | "m_DefaultValue": { 425 | "x": 0.0, 426 | "y": 0.0, 427 | "z": 0.0 428 | }, 429 | "m_Labels": [], 430 | "m_Space": 0 431 | } 432 | 433 | { 434 | "m_SGVersion": 0, 435 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 436 | "m_ObjectId": "7f89fddf352e48db9a61e871bfda1564", 437 | "m_Group": { 438 | "m_Id": "" 439 | }, 440 | "m_Name": "SurfaceDescription.Emission", 441 | "m_DrawState": { 442 | "m_Expanded": true, 443 | "m_Position": { 444 | "serializedVersion": "2", 445 | "x": 0.0, 446 | "y": 0.0, 447 | "width": 0.0, 448 | "height": 0.0 449 | } 450 | }, 451 | "m_Slots": [ 452 | { 453 | "m_Id": "5f2cf61c112f428eba073ad8e06b0ed0" 454 | } 455 | ], 456 | "synonyms": [], 457 | "m_Precision": 0, 458 | "m_PreviewExpanded": true, 459 | "m_PreviewMode": 0, 460 | "m_CustomColors": { 461 | "m_SerializableColors": [] 462 | }, 463 | "m_SerializedDescriptor": "SurfaceDescription.Emission" 464 | } 465 | 466 | { 467 | "m_SGVersion": 0, 468 | "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", 469 | "m_ObjectId": "7fc907bdbb6a4ee6b18b24c017eed1aa", 470 | "m_Id": 0, 471 | "m_DisplayName": "Normal", 472 | "m_SlotType": 0, 473 | "m_Hidden": false, 474 | "m_ShaderOutputName": "Normal", 475 | "m_StageCapability": 1, 476 | "m_Value": { 477 | "x": 0.0, 478 | "y": 0.0, 479 | "z": 0.0 480 | }, 481 | "m_DefaultValue": { 482 | "x": 0.0, 483 | "y": 0.0, 484 | "z": 0.0 485 | }, 486 | "m_Labels": [], 487 | "m_Space": 0 488 | } 489 | 490 | { 491 | "m_SGVersion": 0, 492 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 493 | "m_ObjectId": "b109a677d8eb4c439e4fd589ca68e4cd", 494 | "m_Group": { 495 | "m_Id": "" 496 | }, 497 | "m_Name": "SurfaceDescription.NormalWS", 498 | "m_DrawState": { 499 | "m_Expanded": true, 500 | "m_Position": { 501 | "serializedVersion": "2", 502 | "x": 0.0, 503 | "y": 0.0, 504 | "width": 0.0, 505 | "height": 0.0 506 | } 507 | }, 508 | "m_Slots": [ 509 | { 510 | "m_Id": "b8ddc15d23c04e9b9145d68c28052c7e" 511 | } 512 | ], 513 | "synonyms": [], 514 | "m_Precision": 0, 515 | "m_PreviewExpanded": true, 516 | "m_PreviewMode": 0, 517 | "m_CustomColors": { 518 | "m_SerializableColors": [] 519 | }, 520 | "m_SerializedDescriptor": "SurfaceDescription.NormalWS" 521 | } 522 | 523 | { 524 | "m_SGVersion": 0, 525 | "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", 526 | "m_ObjectId": "b8ddc15d23c04e9b9145d68c28052c7e", 527 | "m_Id": 0, 528 | "m_DisplayName": "Normal (World Space)", 529 | "m_SlotType": 0, 530 | "m_Hidden": false, 531 | "m_ShaderOutputName": "NormalWS", 532 | "m_StageCapability": 2, 533 | "m_Value": { 534 | "x": 0.0, 535 | "y": 0.0, 536 | "z": 0.0 537 | }, 538 | "m_DefaultValue": { 539 | "x": 0.0, 540 | "y": 0.0, 541 | "z": 0.0 542 | }, 543 | "m_Labels": [], 544 | "m_Space": 2 545 | } 546 | 547 | { 548 | "m_SGVersion": 0, 549 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 550 | "m_ObjectId": "bbdb81d5ca2b4bb88b1a3dde6d07fb9e", 551 | "m_Id": 0, 552 | "m_DisplayName": "Ambient Occlusion", 553 | "m_SlotType": 0, 554 | "m_Hidden": false, 555 | "m_ShaderOutputName": "Occlusion", 556 | "m_StageCapability": 2, 557 | "m_Value": 0.9100000262260437, 558 | "m_DefaultValue": 1.0, 559 | "m_Labels": [] 560 | } 561 | 562 | { 563 | "m_SGVersion": 0, 564 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 565 | "m_ObjectId": "cb079227b72d4d4587a3f100584bb627", 566 | "m_Id": 0, 567 | "m_DisplayName": "Alpha Clip Threshold", 568 | "m_SlotType": 0, 569 | "m_Hidden": false, 570 | "m_ShaderOutputName": "AlphaClipThreshold", 571 | "m_StageCapability": 2, 572 | "m_Value": 0.0, 573 | "m_DefaultValue": 0.5, 574 | "m_Labels": [] 575 | } 576 | 577 | { 578 | "m_SGVersion": 0, 579 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 580 | "m_ObjectId": "cc9cfbea2bcb47d087d2c177252d27e0", 581 | "m_Group": { 582 | "m_Id": "" 583 | }, 584 | "m_Name": "SurfaceDescription.Smoothness", 585 | "m_DrawState": { 586 | "m_Expanded": true, 587 | "m_Position": { 588 | "serializedVersion": "2", 589 | "x": -69.0, 590 | "y": 105.99999237060547, 591 | "width": 200.00001525878907, 592 | "height": 41.0 593 | } 594 | }, 595 | "m_Slots": [ 596 | { 597 | "m_Id": "d5ee96fd9e614f599db7425450ba84f2" 598 | } 599 | ], 600 | "synonyms": [], 601 | "m_Precision": 0, 602 | "m_PreviewExpanded": true, 603 | "m_PreviewMode": 0, 604 | "m_CustomColors": { 605 | "m_SerializableColors": [] 606 | }, 607 | "m_SerializedDescriptor": "SurfaceDescription.Smoothness" 608 | } 609 | 610 | { 611 | "m_SGVersion": 0, 612 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 613 | "m_ObjectId": "cdf5aa86d15c4bc0baffea35737ce6af", 614 | "m_Group": { 615 | "m_Id": "" 616 | }, 617 | "m_Name": "VertexDescription.Normal", 618 | "m_DrawState": { 619 | "m_Expanded": true, 620 | "m_Position": { 621 | "serializedVersion": "2", 622 | "x": 0.0, 623 | "y": 0.0, 624 | "width": 0.0, 625 | "height": 0.0 626 | } 627 | }, 628 | "m_Slots": [ 629 | { 630 | "m_Id": "7fc907bdbb6a4ee6b18b24c017eed1aa" 631 | } 632 | ], 633 | "synonyms": [], 634 | "m_Precision": 0, 635 | "m_PreviewExpanded": true, 636 | "m_PreviewMode": 0, 637 | "m_CustomColors": { 638 | "m_SerializableColors": [] 639 | }, 640 | "m_SerializedDescriptor": "VertexDescription.Normal" 641 | } 642 | 643 | { 644 | "m_SGVersion": 0, 645 | "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", 646 | "m_ObjectId": "d0f101f4584540e0a7f0f4968f4724f5", 647 | "m_Id": 0, 648 | "m_DisplayName": "Sprite Mask", 649 | "m_SlotType": 0, 650 | "m_Hidden": false, 651 | "m_ShaderOutputName": "SpriteMask", 652 | "m_StageCapability": 2, 653 | "m_Value": { 654 | "x": 1.0, 655 | "y": 1.0, 656 | "z": 1.0, 657 | "w": 1.0 658 | }, 659 | "m_DefaultValue": { 660 | "x": 0.0, 661 | "y": 0.0, 662 | "z": 0.0, 663 | "w": 0.0 664 | }, 665 | "m_Labels": [] 666 | } 667 | 668 | { 669 | "m_SGVersion": 0, 670 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 671 | "m_ObjectId": "d5ee96fd9e614f599db7425450ba84f2", 672 | "m_Id": 0, 673 | "m_DisplayName": "Smoothness", 674 | "m_SlotType": 0, 675 | "m_Hidden": false, 676 | "m_ShaderOutputName": "Smoothness", 677 | "m_StageCapability": 2, 678 | "m_Value": 0.05000000074505806, 679 | "m_DefaultValue": 0.5, 680 | "m_Labels": [] 681 | } 682 | 683 | { 684 | "m_SGVersion": 0, 685 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 686 | "m_ObjectId": "d89a8d9020d04326984d8fedc92c87d3", 687 | "m_Group": { 688 | "m_Id": "" 689 | }, 690 | "m_Name": "SurfaceDescription.AlphaClipThreshold", 691 | "m_DrawState": { 692 | "m_Expanded": true, 693 | "m_Position": { 694 | "serializedVersion": "2", 695 | "x": 0.0, 696 | "y": 0.0, 697 | "width": 0.0, 698 | "height": 0.0 699 | } 700 | }, 701 | "m_Slots": [ 702 | { 703 | "m_Id": "cb079227b72d4d4587a3f100584bb627" 704 | } 705 | ], 706 | "synonyms": [], 707 | "m_Precision": 0, 708 | "m_PreviewExpanded": true, 709 | "m_PreviewMode": 0, 710 | "m_CustomColors": { 711 | "m_SerializableColors": [] 712 | }, 713 | "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" 714 | } 715 | 716 | { 717 | "m_SGVersion": 0, 718 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 719 | "m_ObjectId": "de99aa5e98d64a3a91eb6d1cbeaf53b3", 720 | "m_Group": { 721 | "m_Id": "" 722 | }, 723 | "m_Name": "SurfaceDescription.SpriteMask", 724 | "m_DrawState": { 725 | "m_Expanded": true, 726 | "m_Position": { 727 | "serializedVersion": "2", 728 | "x": 0.0, 729 | "y": 0.0, 730 | "width": 0.0, 731 | "height": 0.0 732 | } 733 | }, 734 | "m_Slots": [ 735 | { 736 | "m_Id": "d0f101f4584540e0a7f0f4968f4724f5" 737 | } 738 | ], 739 | "synonyms": [], 740 | "m_Precision": 0, 741 | "m_PreviewExpanded": true, 742 | "m_PreviewMode": 0, 743 | "m_CustomColors": { 744 | "m_SerializableColors": [] 745 | }, 746 | "m_SerializedDescriptor": "SurfaceDescription.SpriteMask" 747 | } 748 | 749 | { 750 | "m_SGVersion": 0, 751 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 752 | "m_ObjectId": "e6eb4b77e74144bfaa67b88a405ccb4f", 753 | "m_Group": { 754 | "m_Id": "" 755 | }, 756 | "m_Name": "SurfaceDescription.BaseColor", 757 | "m_DrawState": { 758 | "m_Expanded": true, 759 | "m_Position": { 760 | "serializedVersion": "2", 761 | "x": 0.0, 762 | "y": 0.0, 763 | "width": 0.0, 764 | "height": 0.0 765 | } 766 | }, 767 | "m_Slots": [ 768 | { 769 | "m_Id": "19734e906799402cbee0c116374f47b8" 770 | } 771 | ], 772 | "synonyms": [], 773 | "m_Precision": 0, 774 | "m_PreviewExpanded": true, 775 | "m_PreviewMode": 0, 776 | "m_CustomColors": { 777 | "m_SerializableColors": [] 778 | }, 779 | "m_SerializedDescriptor": "SurfaceDescription.BaseColor" 780 | } 781 | 782 | { 783 | "m_SGVersion": 0, 784 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 785 | "m_ObjectId": "fd5bd6ddd5d24ed5ae70cfa88aa0771e", 786 | "m_Group": { 787 | "m_Id": "" 788 | }, 789 | "m_Name": "VertexDescription.Position", 790 | "m_DrawState": { 791 | "m_Expanded": true, 792 | "m_Position": { 793 | "serializedVersion": "2", 794 | "x": 0.0, 795 | "y": 0.0, 796 | "width": 0.0, 797 | "height": 0.0 798 | } 799 | }, 800 | "m_Slots": [ 801 | { 802 | "m_Id": "6c4f9af9d0214b6391fe315dc1bdd8e1" 803 | } 804 | ], 805 | "synonyms": [], 806 | "m_Precision": 0, 807 | "m_PreviewExpanded": true, 808 | "m_PreviewMode": 0, 809 | "m_CustomColors": { 810 | "m_SerializableColors": [] 811 | }, 812 | "m_SerializedDescriptor": "VertexDescription.Position" 813 | } 814 | 815 | --------------------------------------------------------------------------------