├── Draw Instaced Disc Prefab.prefab ├── Draw Instaced Disc Prefab.prefab.meta ├── DrawInstancedDisc.cs ├── DrawInstancedDisc.cs.meta ├── DrawInstancedSphere.cs ├── DrawInstancedSphere.cs.meta ├── Graphics Draw.unity ├── Graphics Draw.unity.meta ├── GraphicsBurst.cs ├── GraphicsBurst.cs.meta ├── GraphicsDrawBaseMono.cs ├── GraphicsDrawBaseMono.cs.meta ├── GraphicsDrawCallback.cs ├── GraphicsDrawCallback.cs.meta ├── GraphicsDrawLightModel.shadersubgraph ├── GraphicsDrawLightModel.shadersubgraph.meta ├── GraphicsDrawStats.cs ├── GraphicsDrawStats.cs.meta ├── GraphicsFactory.cs ├── GraphicsFactory.cs.meta ├── IncludeInstanced.hlsl ├── IncludeInstanced.hlsl.meta ├── Instanced 1.mat ├── Instanced 1.mat.meta ├── Instanced.mat ├── Instanced.mat.meta ├── Instanced.shadergraph ├── Instanced.shadergraph.meta ├── InstancedColor.mat ├── InstancedColor.mat.meta ├── InstancedColor.shadergraph ├── InstancedColor.shadergraph.meta ├── LICENSE ├── LICENSE.meta ├── README.md └── README.md.meta /Draw Instaced Disc Prefab.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &3109683095572090434 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 6812885075341556107} 12 | - component: {fileID: 3349318159919369741} 13 | m_Layer: 0 14 | m_Name: Draw Instaced Disc Prefab 15 | m_TagString: Untagged 16 | m_Icon: {fileID: 0} 17 | m_NavMeshLayer: 0 18 | m_StaticEditorFlags: 0 19 | m_IsActive: 1 20 | --- !u!4 &6812885075341556107 21 | Transform: 22 | m_ObjectHideFlags: 0 23 | m_CorrespondingSourceObject: {fileID: 0} 24 | m_PrefabInstance: {fileID: 0} 25 | m_PrefabAsset: {fileID: 0} 26 | m_GameObject: {fileID: 3109683095572090434} 27 | serializedVersion: 2 28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 29 | m_LocalPosition: {x: 0, y: 0, z: 0} 30 | m_LocalScale: {x: 72.46762, y: 72.46762, z: 72.46762} 31 | m_ConstrainProportionsScale: 1 32 | m_Children: [] 33 | m_Father: {fileID: 0} 34 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 35 | --- !u!114 &3349318159919369741 36 | MonoBehaviour: 37 | m_ObjectHideFlags: 0 38 | m_CorrespondingSourceObject: {fileID: 0} 39 | m_PrefabInstance: {fileID: 0} 40 | m_PrefabAsset: {fileID: 0} 41 | m_GameObject: {fileID: 3109683095572090434} 42 | m_Enabled: 1 43 | m_EditorHideFlags: 0 44 | m_Script: {fileID: 11500000, guid: f40e47e646666f1418f212b16b6828e5, type: 3} 45 | m_Name: 46 | m_EditorClassIdentifier: 47 | alwaysUpdate: 0 48 | count: 3793 49 | debugParams: 50 | showLogs: 0 51 | execTime: 0.12207031 52 | benchmark: 1.221 ms 53 | drawParams: 54 | mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 55 | material: {fileID: 2100000, guid: e3cf2216437befc4482192c8af2334d5, type: 2} 56 | meshRadius: 1 57 | drawMode: 0 58 | submeshIndex: 0 59 | castShadows: 0 60 | receiveShadows: 0 61 | layer: 0 62 | occlusionCulling: 0 63 | camera: {fileID: 0} 64 | lightProbeUsage: 0 65 | lightProbeProxyVolume: {fileID: 0} 66 | renderingLayerMask: 1 67 | rendererPriority: 0 68 | reflectionProbeUsage: 0 69 | motionVectorMode: 2 70 | meshTriangleCount: 12 71 | properties: 72 | randomizeColor: 0 73 | radius: 2958 74 | thickness: 1518 75 | scale: 1 76 | scaleRatio: 0 77 | distributionRadius: 3.01 78 | distributionThickness: 6.13 79 | ratio: 0.162 80 | seed: 810 81 | preview_drawCount: 7478 82 | preview_matrixLen: 10240 83 | preview_matrixCulledLen: 10240 84 | preview_pos_last: 85 | x: 0 86 | y: 0 87 | z: 0 88 | -------------------------------------------------------------------------------- /Draw Instaced Disc Prefab.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1c4f83b4c094aa842be94430e5e1eefa 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /DrawInstancedDisc.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | using Unity.Burst; 4 | using Unity.Collections; 5 | using Unity.Jobs; 6 | using Unity.Mathematics; 7 | using UnityEngine; 8 | using static GraphicsFactory; 9 | 10 | public class DrawInstancedDisc : GraphicsDrawBaseMono 11 | { 12 | [System.Serializable] 13 | public struct Properties 14 | { 15 | public bool randomizeColor; 16 | 17 | public float radius; 18 | public float thickness; 19 | 20 | public float scale; 21 | [Range(0, 1)] public float scaleRatio; 22 | 23 | [Range(0.5f, 8)] public float distributionRadius; 24 | [Range(0.5f, 8)] public float distributionThickness; 25 | [Range(0, 1)] public float ratio; 26 | 27 | public uint seed; 28 | } 29 | 30 | public Properties properties = new Properties 31 | { 32 | randomizeColor = false, 33 | 34 | radius = 1f, 35 | thickness = 1f, 36 | 37 | scale = 1f, 38 | scaleRatio = 0f, 39 | 40 | distributionRadius = 1.7f, 41 | distributionThickness = 1.7f, 42 | ratio = 0f, 43 | 44 | seed = 777 45 | }; 46 | 47 | #region Debug 48 | 49 | public int preview_drawCount; 50 | public int preview_matrixLen; 51 | public int preview_matrixCulledLen; 52 | //public Vector3[] preview_positions; 53 | public float3 preview_pos_last; 54 | 55 | private void OnDrawGizmos() 56 | { 57 | if( ! debugParams.showLogs ) return; 58 | 59 | if( ! _matricies.IsCreated || _matricies.Length < 1 ) return; 60 | 61 | if( drawCount > _matricies.Length ) return; 62 | 63 | bool culled = drawParams.cullingEnabled; 64 | 65 | var data = culled ? _matriciesCulled : _matricies; 66 | 67 | preview_drawCount = drawCount; 68 | preview_matrixCulledLen = _matriciesCulled.Length; 69 | preview_matrixLen = data.Length; 70 | //preview_positions = data.Select( x => (Vector3) x.position ).ToArray(); 71 | preview_pos_last = data[ data.Length - 1 ].GetPosition(); 72 | 73 | //float3 p = transform.position; 74 | //float r = drawParams.meshRadius; 75 | 76 | //for ( var i = 0; i < drawCount; ++i ) 77 | //{ 78 | // Gizmos.color = data[ i ].IsVisible ? Color.green : Color.red; 79 | // Gizmos.DrawWireSphere( p + data[ i ].position , data[ i ].GetRadius() * r ); 80 | //} 81 | 82 | if( culled ) 83 | { 84 | var planes = GetFrustumPlanesVR( drawParams.camera ); 85 | 86 | var ct = drawParams.camera.transform; 87 | 88 | Gizmos.color = Color.red; 89 | Gizmos.DrawSphere( planes[0].ClosestPointOnPlane( ct.position + ct.forward * 15f ) , 1f ); 90 | 91 | Gizmos.color = Color.green; 92 | Gizmos.DrawSphere( planes[1].ClosestPointOnPlane( ct.position + ct.forward * 15f ) , 1f ); 93 | 94 | Gizmos.color = Color.black; 95 | Gizmos.DrawSphere( planes[2].ClosestPointOnPlane( ct.position + ct.forward * 15f ) , 1f ); 96 | 97 | Gizmos.color = Color.white; 98 | Gizmos.DrawSphere( planes[3].ClosestPointOnPlane( ct.position + ct.forward * 15f ) , 1f ); 99 | } 100 | 101 | } 102 | 103 | #endregion 104 | 105 | #region GraphicsDrawBaseMono 106 | 107 | public override Bounds CalculateBounds( ) 108 | { 109 | return new Bounds( transform.position , Vector3.one * properties.radius * 2 ); 110 | } 111 | 112 | public override void CalculateMatricies( ) 113 | { 114 | new IDrawBurst { 115 | array = _matricies, 116 | data = properties, 117 | transform = transformation, 118 | count = count } 119 | .Schedule( count, 64 ).Complete(); 120 | } 121 | 122 | public struct InstanceData 123 | { 124 | public static readonly int NameID = Shader.PropertyToID( "_PerInstanceData" ); 125 | 126 | // ... 127 | 128 | public int index; 129 | 130 | public float4 color; 131 | 132 | // ... 133 | 134 | public static int Size() => sizeof( float ) * 5 ; 135 | } 136 | 137 | protected ComputeBuffer _dataBuffer; 138 | 139 | protected NativeArray _data; 140 | 141 | protected override void DataInit( int size ) 142 | { 143 | if ( _data.IsCreated ) _data.Dispose(); 144 | 145 | _data = new NativeArray( size , Allocator.Persistent ); 146 | 147 | if (_dataBuffer != null) _dataBuffer.Release(); 148 | 149 | _dataBuffer = new ComputeBuffer( size , InstanceData.Size() ); 150 | 151 | _matPropBlock.SetBuffer( "_PerInstanceData" , _dataBuffer ); 152 | } 153 | 154 | protected override void DataUpdate() 155 | { 156 | for (var i = 0; i < _data.Length; ++i ) 157 | { 158 | float t = ( float ) i / _data.Length; 159 | 160 | _data[ i ] = new InstanceData 161 | { 162 | index = i, 163 | color = (Vector4) Color.Lerp( Color.red, Color.green, t ) 164 | }; 165 | } 166 | 167 | _dataBuffer.SetData( _data ); 168 | } 169 | 170 | protected override void DataDispose() 171 | { 172 | if( _data.IsCreated ) 173 | { 174 | _data.Dispose(); 175 | } 176 | 177 | } 178 | 179 | #endregion 180 | 181 | #region Burst 182 | 183 | [BurstCompile] struct IDrawBurst : IJobParallelFor 184 | { 185 | [WriteOnly] 186 | public NativeArray array; 187 | public Properties data; 188 | public TransformData transform; 189 | public int count; 190 | 191 | public void Execute( int i ) 192 | { 193 | if( i > count - 1 ) return; 194 | 195 | float f, s, t; 196 | quaternion qi; 197 | float3 pi, si; 198 | 199 | uint state = data.seed + ( (uint) i ); 200 | for( int k = 0; k < ( i % 5 ); ++k ) { 201 | state ^= state << 13; 202 | state ^= state >> 17; 203 | state ^= state << 5; 204 | } 205 | var rnd = new Unity.Mathematics.Random( state ); 206 | 207 | // var rnd = new Unity.Mathematics.Random( (uint) ( data.seed + i )); 208 | 209 | //int i = 0 , len = array.Length; 210 | 211 | //for ( ; i < count ; ++i ) 212 | { 213 | f = func(rnd.NextFloat(), data.distributionRadius, data.ratio); 214 | 215 | pi = new float3(0, rnd.NextFloat2Direction() * data.radius * f); 216 | 217 | t = func(rnd.NextFloat(), data.distributionThickness, 0); 218 | 219 | pi.x = (rnd.NextBool() ? 1 : -1) * (t * rnd.NextFloat()) * data.thickness; 220 | 221 | pi = math.mul(transform.rotation, pi); 222 | 223 | qi = math.mul(transform.rotation, rnd.NextQuaternionRotation()); 224 | 225 | s = math.lerp(1, rnd.NextFloat() * 1.5f + 0.5f, data.scaleRatio); 226 | 227 | si = data.scale * s * transform.scale; 228 | 229 | array[ i ] = new InstanceMatrix { matrix = float4x4.TRS(pi, qi, si) }; 230 | } 231 | } 232 | 233 | float func(float x, float k, float d) 234 | { 235 | // https://www.desmos.com/calculator/2mrqgrggry 236 | 237 | float f1 = math.pow(x, k); 238 | 239 | float f2 = 1 - math.lerp(f1, 1, f1); 240 | 241 | float f3 = f2 * (1 - d) + d; 242 | 243 | return f3; 244 | } 245 | } 246 | 247 | 248 | 249 | 250 | #endregion 251 | } 252 | 253 | 254 | /* 255 | 256 | uint state = 7777; 257 | 258 | Func str = (x, y) => Convert.ToString(x, y).ToUpper(); 259 | Action log = x => WriteLine($"{str(x, 2),32} : {str(x,8),11} : {str(x, 16),8} = {x}"); 260 | Action newline = () => WriteLine("\n"); 261 | 262 | log( uint.MaxValue ); 263 | log( state ); 264 | newline(); 265 | 266 | for (int i = 0; i < 3; ++i) 267 | { 268 | state ^= state << 13; log(state); 269 | state ^= state >> 17; log(state); 270 | state ^= state << 5; log(state); 271 | newline(); 272 | } 273 | 274 | 11111111111111111111111111111111 : 37777777777 : FFFFFFFF = 4294967295 275 | 1111001100001 : 17141 : 1E61 = 7777 276 | 277 | 278 | 11110011000011111001100001 : 363037141 : 3CC3E61 = 63716961 279 | 11110011000011111110000111 : 363037607 : 3CC3F87 = 63717255 280 | 1111010010010111100111101100111 : 17222747547 : 7A4BCF67 = 2051788647 281 | 282 | 283 | 11101001110010111101100111 : 351627547 : 3A72F67 = 61288295 284 | 11101001110010111010110100 : 351627264 : 3A72EB4 = 61288116 285 | 1110111010000101111100000110100 : 16720574064 : 7742F834 = 2000877620 286 | 287 | 288 | 101000010001000111100000110100 : 5021074064 : 28447834 = 675575860 289 | 101000010001000110110000010110 : 5021066026 : 28446C16 = 675572758 290 | 100000110010011110111011010110 : 4062367326 : 20C9EED6 = 550104790 291 | 292 | > 293 | 294 | */ -------------------------------------------------------------------------------- /DrawInstancedDisc.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f40e47e646666f1418f212b16b6828e5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /DrawInstancedSphere.cs: -------------------------------------------------------------------------------- 1 | using Unity.Burst; 2 | using Unity.Collections; 3 | using Unity.Jobs; 4 | using Unity.Mathematics; 5 | using UnityEngine; 6 | using static GraphicsFactory; 7 | 8 | public class DrawInstancedSphere : GraphicsDrawBaseMono 9 | { 10 | [System.Serializable] public struct Properties 11 | { 12 | public float radius; 13 | public bool insideSphere; 14 | [Range(0, 1)] public float insideRatio; 15 | public float minScale; 16 | public float maxScale; 17 | public uint seed; 18 | } 19 | 20 | public Properties properties = new Properties 21 | { 22 | maxScale = 0.2f, 23 | minScale = 0.1f, 24 | radius = 1, 25 | seed = 777 26 | }; 27 | 28 | #region GraphicsDrawBaseMono 29 | 30 | public override Bounds CalculateBounds() 31 | { 32 | return new Bounds( transform.position , Vector3.one * properties.radius * 2 ); 33 | } 34 | 35 | public override void CalculateMatricies() 36 | { 37 | new Burst { array = _matricies, data = properties, transform = transformation }.Run(); 38 | } 39 | 40 | #endregion 41 | 42 | #region Burst 43 | 44 | [BurstCompile] struct Burst : IJob 45 | { 46 | [WriteOnly] 47 | public NativeArray array; 48 | public Properties data; 49 | public TransformData transform; 50 | 51 | public void Execute() 52 | { 53 | quaternion qi; 54 | float3 pi, si, vi; 55 | int len = array.Length, i = 0; 56 | float scaleSize = data.maxScale - data.minScale; 57 | var rnd = new Unity.Mathematics.Random(data.seed); 58 | 59 | for (; i < len; ++i) 60 | { 61 | vi = rnd.NextFloat3Direction(); 62 | vi = math.mul(transform.rotation, vi); 63 | pi = vi * data.radius; 64 | if (data.insideSphere) pi *= math.clamp(math.lerp(f2(rnd.NextFloat()), 1, data.insideRatio), 0, 1); 65 | qi = math.mul(transform.rotation, rnd.NextQuaternionRotation()); 66 | si = (rnd.NextFloat() * scaleSize + data.minScale) * transform.scale; 67 | array[i] = new InstanceMatrix { matrix = float4x4.TRS(pi, qi, si) }; 68 | } 69 | } 70 | 71 | // See function graph plot : https://www.desmos.com/calculator/pzmgpc4kal 72 | float f1(float x) => 1 - (3 * x / 10f) / (math.log10(x / 2f)); 73 | float f2(float x) => 1 - math.pow(x - 0.05f, 3f); 74 | } 75 | #endregion 76 | } 77 | -------------------------------------------------------------------------------- /DrawInstancedSphere.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c89e9427fd7f9874f84cd902eccaf07b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Graphics Draw.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 3 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 3 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | buildHeightMesh: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &435056570 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 435056574} 135 | - component: {fileID: 435056573} 136 | - component: {fileID: 435056572} 137 | - component: {fileID: 435056571} 138 | m_Layer: 0 139 | m_Name: Sphere (1) 140 | m_TagString: Untagged 141 | m_Icon: {fileID: 0} 142 | m_NavMeshLayer: 0 143 | m_StaticEditorFlags: 0 144 | m_IsActive: 0 145 | --- !u!135 &435056571 146 | SphereCollider: 147 | m_ObjectHideFlags: 0 148 | m_CorrespondingSourceObject: {fileID: 0} 149 | m_PrefabInstance: {fileID: 0} 150 | m_PrefabAsset: {fileID: 0} 151 | m_GameObject: {fileID: 435056570} 152 | m_Material: {fileID: 0} 153 | m_IncludeLayers: 154 | serializedVersion: 2 155 | m_Bits: 0 156 | m_ExcludeLayers: 157 | serializedVersion: 2 158 | m_Bits: 0 159 | m_LayerOverridePriority: 0 160 | m_IsTrigger: 0 161 | m_ProvidesContacts: 0 162 | m_Enabled: 1 163 | serializedVersion: 3 164 | m_Radius: 0.5 165 | m_Center: {x: 0, y: 0, z: 0} 166 | --- !u!23 &435056572 167 | MeshRenderer: 168 | m_ObjectHideFlags: 0 169 | m_CorrespondingSourceObject: {fileID: 0} 170 | m_PrefabInstance: {fileID: 0} 171 | m_PrefabAsset: {fileID: 0} 172 | m_GameObject: {fileID: 435056570} 173 | m_Enabled: 1 174 | m_CastShadows: 1 175 | m_ReceiveShadows: 1 176 | m_DynamicOccludee: 1 177 | m_StaticShadowCaster: 0 178 | m_MotionVectors: 1 179 | m_LightProbeUsage: 1 180 | m_ReflectionProbeUsage: 1 181 | m_RayTracingMode: 2 182 | m_RayTraceProcedural: 0 183 | m_RenderingLayerMask: 1 184 | m_RendererPriority: 0 185 | m_Materials: 186 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 187 | m_StaticBatchInfo: 188 | firstSubMesh: 0 189 | subMeshCount: 0 190 | m_StaticBatchRoot: {fileID: 0} 191 | m_ProbeAnchor: {fileID: 0} 192 | m_LightProbeVolumeOverride: {fileID: 0} 193 | m_ScaleInLightmap: 1 194 | m_ReceiveGI: 1 195 | m_PreserveUVs: 0 196 | m_IgnoreNormalsForChartDetection: 0 197 | m_ImportantGI: 0 198 | m_StitchLightmapSeams: 1 199 | m_SelectedEditorRenderState: 3 200 | m_MinimumChartSize: 4 201 | m_AutoUVMaxDistance: 0.5 202 | m_AutoUVMaxAngle: 89 203 | m_LightmapParameters: {fileID: 0} 204 | m_SortingLayerID: 0 205 | m_SortingLayer: 0 206 | m_SortingOrder: 0 207 | m_AdditionalVertexStreams: {fileID: 0} 208 | --- !u!33 &435056573 209 | MeshFilter: 210 | m_ObjectHideFlags: 0 211 | m_CorrespondingSourceObject: {fileID: 0} 212 | m_PrefabInstance: {fileID: 0} 213 | m_PrefabAsset: {fileID: 0} 214 | m_GameObject: {fileID: 435056570} 215 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 216 | --- !u!4 &435056574 217 | Transform: 218 | m_ObjectHideFlags: 0 219 | m_CorrespondingSourceObject: {fileID: 0} 220 | m_PrefabInstance: {fileID: 0} 221 | m_PrefabAsset: {fileID: 0} 222 | m_GameObject: {fileID: 435056570} 223 | serializedVersion: 2 224 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 225 | m_LocalPosition: {x: 0, y: 0, z: 0} 226 | m_LocalScale: {x: 771.9, y: 771.9, z: 771.9} 227 | m_ConstrainProportionsScale: 1 228 | m_Children: [] 229 | m_Father: {fileID: 0} 230 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 231 | --- !u!1 &556559949 232 | GameObject: 233 | m_ObjectHideFlags: 0 234 | m_CorrespondingSourceObject: {fileID: 0} 235 | m_PrefabInstance: {fileID: 0} 236 | m_PrefabAsset: {fileID: 0} 237 | serializedVersion: 6 238 | m_Component: 239 | - component: {fileID: 556559951} 240 | - component: {fileID: 556559950} 241 | m_Layer: 0 242 | m_Name: Sphere 243 | m_TagString: Untagged 244 | m_Icon: {fileID: 0} 245 | m_NavMeshLayer: 0 246 | m_StaticEditorFlags: 0 247 | m_IsActive: 0 248 | --- !u!114 &556559950 249 | MonoBehaviour: 250 | m_ObjectHideFlags: 0 251 | m_CorrespondingSourceObject: {fileID: 0} 252 | m_PrefabInstance: {fileID: 0} 253 | m_PrefabAsset: {fileID: 0} 254 | m_GameObject: {fileID: 556559949} 255 | m_Enabled: 1 256 | m_EditorHideFlags: 0 257 | m_Script: {fileID: 11500000, guid: c89e9427fd7f9874f84cd902eccaf07b, type: 3} 258 | m_Name: 259 | m_EditorClassIdentifier: 260 | alwaysUpdate: 1 261 | count: 6047 262 | debugParams: 263 | showLogs: 0 264 | execTime: 0 265 | benchmark: '-' 266 | drawParams: 267 | mesh: {fileID: -185816505621711579, guid: 4028eacebc632154e9b9b87cb237f9fd, type: 3} 268 | material: {fileID: 2100000, guid: 6497e13cf41d04e4391fdc680681f8c9, type: 2} 269 | meshRadius: 1 270 | drawMode: 0 271 | submeshIndex: 0 272 | castShadows: 0 273 | receiveShadows: 0 274 | layer: 0 275 | occlusionCulling: 0 276 | camera: {fileID: 0} 277 | lightProbeUsage: 0 278 | lightProbeProxyVolume: {fileID: 0} 279 | renderingLayerMask: 1 280 | rendererPriority: 0 281 | reflectionProbeUsage: 0 282 | motionVectorMode: 2 283 | meshTriangleCount: 0 284 | properties: 285 | radius: 1079.5 286 | insideSphere: 1 287 | insideRatio: 0.367 288 | minScale: 0.2 289 | maxScale: 1 290 | seed: 777 291 | --- !u!4 &556559951 292 | Transform: 293 | m_ObjectHideFlags: 0 294 | m_CorrespondingSourceObject: {fileID: 0} 295 | m_PrefabInstance: {fileID: 0} 296 | m_PrefabAsset: {fileID: 0} 297 | m_GameObject: {fileID: 556559949} 298 | serializedVersion: 2 299 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 300 | m_LocalPosition: {x: 0, y: 0, z: 0} 301 | m_LocalScale: {x: 0.06, y: 0.06, z: 0.06} 302 | m_ConstrainProportionsScale: 1 303 | m_Children: [] 304 | m_Father: {fileID: 0} 305 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 306 | --- !u!1 &695212101 307 | GameObject: 308 | m_ObjectHideFlags: 0 309 | m_CorrespondingSourceObject: {fileID: 0} 310 | m_PrefabInstance: {fileID: 0} 311 | m_PrefabAsset: {fileID: 0} 312 | serializedVersion: 6 313 | m_Component: 314 | - component: {fileID: 695212104} 315 | - component: {fileID: 695212103} 316 | - component: {fileID: 695212102} 317 | m_Layer: 0 318 | m_Name: Directional Light 319 | m_TagString: Untagged 320 | m_Icon: {fileID: 0} 321 | m_NavMeshLayer: 0 322 | m_StaticEditorFlags: 0 323 | m_IsActive: 1 324 | --- !u!114 &695212102 325 | MonoBehaviour: 326 | m_ObjectHideFlags: 0 327 | m_CorrespondingSourceObject: {fileID: 0} 328 | m_PrefabInstance: {fileID: 0} 329 | m_PrefabAsset: {fileID: 0} 330 | m_GameObject: {fileID: 695212101} 331 | m_Enabled: 1 332 | m_EditorHideFlags: 0 333 | m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} 334 | m_Name: 335 | m_EditorClassIdentifier: 336 | m_Version: 3 337 | m_UsePipelineSettings: 1 338 | m_AdditionalLightsShadowResolutionTier: 2 339 | m_LightLayerMask: 1 340 | m_RenderingLayers: 1 341 | m_CustomShadowLayers: 0 342 | m_ShadowLayerMask: 1 343 | m_ShadowRenderingLayers: 1 344 | m_LightCookieSize: {x: 1, y: 1} 345 | m_LightCookieOffset: {x: 0, y: 0} 346 | m_SoftShadowQuality: 1 347 | --- !u!108 &695212103 348 | Light: 349 | m_ObjectHideFlags: 0 350 | m_CorrespondingSourceObject: {fileID: 0} 351 | m_PrefabInstance: {fileID: 0} 352 | m_PrefabAsset: {fileID: 0} 353 | m_GameObject: {fileID: 695212101} 354 | m_Enabled: 1 355 | serializedVersion: 10 356 | m_Type: 1 357 | m_Shape: 0 358 | m_Color: {r: 1, g: 1, b: 1, a: 1} 359 | m_Intensity: 1 360 | m_Range: 10 361 | m_SpotAngle: 30 362 | m_InnerSpotAngle: 21.80208 363 | m_CookieSize: 10 364 | m_Shadows: 365 | m_Type: 0 366 | m_Resolution: -1 367 | m_CustomResolution: -1 368 | m_Strength: 1 369 | m_Bias: 0.05 370 | m_NormalBias: 0.4 371 | m_NearPlane: 0.2 372 | m_CullingMatrixOverride: 373 | e00: 1 374 | e01: 0 375 | e02: 0 376 | e03: 0 377 | e10: 0 378 | e11: 1 379 | e12: 0 380 | e13: 0 381 | e20: 0 382 | e21: 0 383 | e22: 1 384 | e23: 0 385 | e30: 0 386 | e31: 0 387 | e32: 0 388 | e33: 1 389 | m_UseCullingMatrixOverride: 0 390 | m_Cookie: {fileID: 0} 391 | m_DrawHalo: 0 392 | m_Flare: {fileID: 0} 393 | m_RenderMode: 0 394 | m_CullingMask: 395 | serializedVersion: 2 396 | m_Bits: 4294967295 397 | m_RenderingLayerMask: 1 398 | m_Lightmapping: 4 399 | m_LightShadowCasterMode: 0 400 | m_AreaSize: {x: 1, y: 1} 401 | m_BounceIntensity: 1 402 | m_ColorTemperature: 6570 403 | m_UseColorTemperature: 0 404 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 405 | m_UseBoundingSphereOverride: 0 406 | m_UseViewFrustumForShadowCasterCull: 1 407 | m_ShadowRadius: 0 408 | m_ShadowAngle: 0 409 | --- !u!4 &695212104 410 | Transform: 411 | m_ObjectHideFlags: 0 412 | m_CorrespondingSourceObject: {fileID: 0} 413 | m_PrefabInstance: {fileID: 0} 414 | m_PrefabAsset: {fileID: 0} 415 | m_GameObject: {fileID: 695212101} 416 | serializedVersion: 2 417 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 418 | m_LocalPosition: {x: -567.27313, y: 186.60838, z: -24.916779} 419 | m_LocalScale: {x: 1, y: 1, z: 1} 420 | m_ConstrainProportionsScale: 0 421 | m_Children: [] 422 | m_Father: {fileID: 0} 423 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 424 | --- !u!1 &1699539293 425 | GameObject: 426 | m_ObjectHideFlags: 0 427 | m_CorrespondingSourceObject: {fileID: 0} 428 | m_PrefabInstance: {fileID: 0} 429 | m_PrefabAsset: {fileID: 0} 430 | serializedVersion: 6 431 | m_Component: 432 | - component: {fileID: 1699539297} 433 | - component: {fileID: 1699539296} 434 | - component: {fileID: 1699539295} 435 | - component: {fileID: 1699539294} 436 | m_Layer: 0 437 | m_Name: Camera 438 | m_TagString: MainCamera 439 | m_Icon: {fileID: 0} 440 | m_NavMeshLayer: 0 441 | m_StaticEditorFlags: 0 442 | m_IsActive: 1 443 | --- !u!114 &1699539294 444 | MonoBehaviour: 445 | m_ObjectHideFlags: 0 446 | m_CorrespondingSourceObject: {fileID: 0} 447 | m_PrefabInstance: {fileID: 0} 448 | m_PrefabAsset: {fileID: 0} 449 | m_GameObject: {fileID: 1699539293} 450 | m_Enabled: 1 451 | m_EditorHideFlags: 0 452 | m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} 453 | m_Name: 454 | m_EditorClassIdentifier: 455 | m_RenderShadows: 1 456 | m_RequiresDepthTextureOption: 2 457 | m_RequiresOpaqueTextureOption: 2 458 | m_CameraType: 0 459 | m_Cameras: [] 460 | m_RendererIndex: -1 461 | m_VolumeLayerMask: 462 | serializedVersion: 2 463 | m_Bits: 1 464 | m_VolumeTrigger: {fileID: 0} 465 | m_VolumeFrameworkUpdateModeOption: 2 466 | m_RenderPostProcessing: 0 467 | m_Antialiasing: 0 468 | m_AntialiasingQuality: 2 469 | m_StopNaN: 0 470 | m_Dithering: 0 471 | m_ClearDepth: 1 472 | m_AllowXRRendering: 1 473 | m_AllowHDROutput: 1 474 | m_UseScreenCoordOverride: 0 475 | m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} 476 | m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} 477 | m_RequiresDepthTexture: 0 478 | m_RequiresColorTexture: 0 479 | m_Version: 2 480 | m_TaaSettings: 481 | quality: 3 482 | frameInfluence: 0.1 483 | jitterScale: 1 484 | mipBias: 0 485 | varianceClampScale: 0.9 486 | contrastAdaptiveSharpening: 0 487 | --- !u!81 &1699539295 488 | AudioListener: 489 | m_ObjectHideFlags: 0 490 | m_CorrespondingSourceObject: {fileID: 0} 491 | m_PrefabInstance: {fileID: 0} 492 | m_PrefabAsset: {fileID: 0} 493 | m_GameObject: {fileID: 1699539293} 494 | m_Enabled: 1 495 | --- !u!20 &1699539296 496 | Camera: 497 | m_ObjectHideFlags: 0 498 | m_CorrespondingSourceObject: {fileID: 0} 499 | m_PrefabInstance: {fileID: 0} 500 | m_PrefabAsset: {fileID: 0} 501 | m_GameObject: {fileID: 1699539293} 502 | m_Enabled: 1 503 | serializedVersion: 2 504 | m_ClearFlags: 1 505 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 506 | m_projectionMatrixMode: 1 507 | m_GateFitMode: 2 508 | m_FOVAxisMode: 0 509 | m_Iso: 200 510 | m_ShutterSpeed: 0.005 511 | m_Aperture: 16 512 | m_FocusDistance: 10 513 | m_FocalLength: 50 514 | m_BladeCount: 5 515 | m_Curvature: {x: 2, y: 11} 516 | m_BarrelClipping: 0.25 517 | m_Anamorphism: 0 518 | m_SensorSize: {x: 36, y: 24} 519 | m_LensShift: {x: 0, y: 0} 520 | m_NormalizedViewPortRect: 521 | serializedVersion: 2 522 | x: 0 523 | y: 0 524 | width: 1 525 | height: 1 526 | near clip plane: 0.3 527 | far clip plane: 1000 528 | field of view: 60 529 | orthographic: 0 530 | orthographic size: 5 531 | m_Depth: 0 532 | m_CullingMask: 533 | serializedVersion: 2 534 | m_Bits: 4294967295 535 | m_RenderingPath: -1 536 | m_TargetTexture: {fileID: 0} 537 | m_TargetDisplay: 0 538 | m_TargetEye: 3 539 | m_HDR: 1 540 | m_AllowMSAA: 1 541 | m_AllowDynamicResolution: 0 542 | m_ForceIntoRT: 0 543 | m_OcclusionCulling: 1 544 | m_StereoConvergence: 10 545 | m_StereoSeparation: 0.022 546 | --- !u!4 &1699539297 547 | Transform: 548 | m_ObjectHideFlags: 0 549 | m_CorrespondingSourceObject: {fileID: 0} 550 | m_PrefabInstance: {fileID: 0} 551 | m_PrefabAsset: {fileID: 0} 552 | m_GameObject: {fileID: 1699539293} 553 | serializedVersion: 2 554 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 555 | m_LocalPosition: {x: 0, y: 0, z: -4522} 556 | m_LocalScale: {x: 1, y: 1, z: 1} 557 | m_ConstrainProportionsScale: 0 558 | m_Children: [] 559 | m_Father: {fileID: 0} 560 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 561 | --- !u!1 &1779930193 562 | GameObject: 563 | m_ObjectHideFlags: 0 564 | m_CorrespondingSourceObject: {fileID: 0} 565 | m_PrefabInstance: {fileID: 0} 566 | m_PrefabAsset: {fileID: 0} 567 | serializedVersion: 6 568 | m_Component: 569 | - component: {fileID: 1779930195} 570 | - component: {fileID: 1779930197} 571 | m_Layer: 0 572 | m_Name: Disc 573 | m_TagString: Untagged 574 | m_Icon: {fileID: 0} 575 | m_NavMeshLayer: 0 576 | m_StaticEditorFlags: 0 577 | m_IsActive: 0 578 | --- !u!4 &1779930195 579 | Transform: 580 | m_ObjectHideFlags: 0 581 | m_CorrespondingSourceObject: {fileID: 0} 582 | m_PrefabInstance: {fileID: 0} 583 | m_PrefabAsset: {fileID: 0} 584 | m_GameObject: {fileID: 1779930193} 585 | serializedVersion: 2 586 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 587 | m_LocalPosition: {x: 0, y: 0, z: 0} 588 | m_LocalScale: {x: 38.26357, y: 38.26357, z: 38.26357} 589 | m_ConstrainProportionsScale: 1 590 | m_Children: [] 591 | m_Father: {fileID: 0} 592 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 593 | --- !u!114 &1779930197 594 | MonoBehaviour: 595 | m_ObjectHideFlags: 0 596 | m_CorrespondingSourceObject: {fileID: 0} 597 | m_PrefabInstance: {fileID: 0} 598 | m_PrefabAsset: {fileID: 0} 599 | m_GameObject: {fileID: 1779930193} 600 | m_Enabled: 1 601 | m_EditorHideFlags: 0 602 | m_Script: {fileID: 11500000, guid: f40e47e646666f1418f212b16b6828e5, type: 3} 603 | m_Name: 604 | m_EditorClassIdentifier: 605 | alwaysUpdate: 0 606 | count: 8001 607 | debugParams: 608 | showLogs: 0 609 | execTime: 2.89917 610 | benchmark: 2.899 ms 611 | drawParams: 612 | mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 613 | material: {fileID: 2100000, guid: 6497e13cf41d04e4391fdc680681f8c9, type: 2} 614 | meshRadius: 1 615 | drawMode: 0 616 | submeshIndex: 0 617 | castShadows: 0 618 | receiveShadows: 0 619 | layer: 0 620 | occlusionCulling: 0 621 | camera: {fileID: 0} 622 | lightProbeUsage: 0 623 | lightProbeProxyVolume: {fileID: 0} 624 | renderingLayerMask: 1 625 | rendererPriority: 0 626 | reflectionProbeUsage: 0 627 | motionVectorMode: 2 628 | meshTriangleCount: 12 629 | properties: 630 | randomizeColor: 0 631 | radius: 2436.83 632 | thickness: 2011.9 633 | scale: 1 634 | scaleRatio: 0 635 | distributionRadius: 1.7 636 | distributionThickness: 0.5 637 | ratio: 0.361 638 | seed: 777 639 | preview_drawCount: 0 640 | preview_matrixLen: 0 641 | preview_matrixCulledLen: 0 642 | preview_pos_last: 643 | x: 0 644 | y: 0 645 | z: 0 646 | --- !u!1001 &7260127573537071633 647 | PrefabInstance: 648 | m_ObjectHideFlags: 0 649 | serializedVersion: 2 650 | m_Modification: 651 | serializedVersion: 3 652 | m_TransformParent: {fileID: 0} 653 | m_Modifications: 654 | - target: {fileID: 3109683095572090434, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 655 | propertyPath: m_Name 656 | value: Draw Instaced Disc Prefab 657 | objectReference: {fileID: 0} 658 | - target: {fileID: 3349318159919369741, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 659 | propertyPath: debugParams.execTime 660 | value: 0 661 | objectReference: {fileID: 0} 662 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 663 | propertyPath: m_LocalPosition.x 664 | value: 0 665 | objectReference: {fileID: 0} 666 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 667 | propertyPath: m_LocalPosition.y 668 | value: 0 669 | objectReference: {fileID: 0} 670 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 671 | propertyPath: m_LocalPosition.z 672 | value: 0 673 | objectReference: {fileID: 0} 674 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 675 | propertyPath: m_LocalRotation.w 676 | value: 1 677 | objectReference: {fileID: 0} 678 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 679 | propertyPath: m_LocalRotation.x 680 | value: 0 681 | objectReference: {fileID: 0} 682 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 683 | propertyPath: m_LocalRotation.y 684 | value: 0 685 | objectReference: {fileID: 0} 686 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 687 | propertyPath: m_LocalRotation.z 688 | value: 0 689 | objectReference: {fileID: 0} 690 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 691 | propertyPath: m_LocalEulerAnglesHint.x 692 | value: 0 693 | objectReference: {fileID: 0} 694 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 695 | propertyPath: m_LocalEulerAnglesHint.y 696 | value: 0 697 | objectReference: {fileID: 0} 698 | - target: {fileID: 6812885075341556107, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 699 | propertyPath: m_LocalEulerAnglesHint.z 700 | value: 0 701 | objectReference: {fileID: 0} 702 | m_RemovedComponents: [] 703 | m_RemovedGameObjects: [] 704 | m_AddedGameObjects: [] 705 | m_AddedComponents: [] 706 | m_SourcePrefab: {fileID: 100100000, guid: 1c4f83b4c094aa842be94430e5e1eefa, type: 3} 707 | --- !u!1660057539 &9223372036854775807 708 | SceneRoots: 709 | m_ObjectHideFlags: 0 710 | m_Roots: 711 | - {fileID: 1779930195} 712 | - {fileID: 556559951} 713 | - {fileID: 435056574} 714 | - {fileID: 7260127573537071633} 715 | - {fileID: 695212104} 716 | - {fileID: 1699539297} 717 | -------------------------------------------------------------------------------- /Graphics Draw.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c58950af85bdc8e4d85ebb3dc026c051 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /GraphicsBurst.cs: -------------------------------------------------------------------------------- 1 | 2 | using Unity.Burst; 3 | using Unity.Collections; 4 | using Unity.Jobs; 5 | using Unity.Mathematics; 6 | using UnityEngine; 7 | using static GraphicsFactory; 8 | 9 | public static class GraphicsBurst 10 | { 11 | [BurstCompile] public struct FillNaNs : IJob 12 | { 13 | public static void Run( NativeArray array, int startIndex = 0 ) 14 | { 15 | new FillNaNs { array = array, startIndex = startIndex }.Run(); 16 | } 17 | 18 | [WriteOnly] 19 | public NativeArray array; 20 | public int startIndex; 21 | 22 | public void Execute() 23 | { 24 | var nan = new float4x4( float.NaN ); 25 | 26 | int i = startIndex, len = array.Length; 27 | 28 | for( ; i > len; ++i ) array[ i ] = nan; 29 | } 30 | } 31 | 32 | [BurstCompile] public struct PerMesh : IJobParallelFor 33 | { 34 | [ReadOnly] public NativeArray _read; 35 | [WriteOnly] public NativeArray _write; 36 | 37 | public float offsetScale; 38 | public float3 offsetPos; 39 | public float3 offsetRot; 40 | 41 | public void Execute( int i ) 42 | { 43 | _read[ i ].GetPosition(); 44 | } 45 | } 46 | 47 | 48 | [BurstCompile] public struct Cull : IJob 49 | { 50 | public static int Run( GraphicsDrawBaseMono target ) 51 | { 52 | var count = new NativeArray( 1, Allocator.TempJob ); 53 | 54 | new Cull 55 | { 56 | count = target.count, 57 | array = target._matricies, 58 | meshRadius = target.drawParams.meshRadius, 59 | transform = target.transformation, 60 | outputValues = count, 61 | output = target._matriciesCulled, 62 | frustum = FrustumCulling.Make( GetFrustumPlanesVR( target.drawParams.camera ) ) 63 | 64 | }.Run(); 65 | 66 | int count_value = count[ 0 ]; 67 | 68 | count.Dispose(); 69 | 70 | return count_value; 71 | } 72 | 73 | public int count; 74 | public float meshRadius; 75 | public TransformData transform; 76 | public FrustumCulling frustum; 77 | [ReadOnly] public NativeArray array; 78 | [WriteOnly] public NativeArray output; 79 | [WriteOnly] public NativeArray outputValues; 80 | 81 | public void Execute() 82 | { 83 | int i = 0 , visibleIdx = 0; 84 | 85 | InstanceMatrix matrix; 86 | BoundingSphere bounds; 87 | 88 | for(; i < count; ++i ) 89 | { 90 | matrix = array[ i ]; 91 | 92 | if( ! matrix.CanRender() ) continue; 93 | 94 | bounds = new BoundingSphere 95 | { 96 | position = matrix.GetPosition() + transform.position, 97 | radius = meshRadius * matrix.GetRadius() 98 | }; 99 | 100 | if ( frustum.Inside( bounds ) != FrustumCulling.Result.Out ) 101 | { 102 | output[ visibleIdx ++ ] = array[ i ]; 103 | } 104 | } 105 | 106 | outputValues[ 0 ] = visibleIdx ; 107 | 108 | //count = outputValues[ 0 ] = math.min( count, visibleIdx ); 109 | 110 | //var nan = new float4x4( float.NaN ); 111 | 112 | //for( i = count; i < len; ++i ) output[ i ] = nan; 113 | } 114 | } 115 | } -------------------------------------------------------------------------------- /GraphicsBurst.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b7d5294d752a5647abadf03bdb99b17 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /GraphicsDrawBaseMono.cs: -------------------------------------------------------------------------------- 1 | 2 | using Unity.Collections; 3 | using UnityEngine; 4 | using static GraphicsFactory; 5 | 6 | [ExecuteInEditMode] 7 | [DefaultExecutionOrder(1000)] 8 | public class GraphicsDrawBaseMono : MonoBehaviour 9 | { 10 | public virtual Bounds CalculateBounds() => throw new System.NotImplementedException(); 11 | public virtual void CalculateMatricies() => throw new System.NotImplementedException(); 12 | 13 | public virtual bool allowExecInEditMode => true; 14 | bool canExecNow => Application.isPlaying || allowExecInEditMode; 15 | 16 | protected Bounds _bounds; 17 | protected ComputeBuffer _instancesBuffer; 18 | protected ComputeBuffer _argsBuffer; 19 | internal NativeArray _matricies; 20 | internal NativeArray _matriciesCulled; 21 | protected MaterialPropertyBlock _matPropBlock; 22 | 23 | [Tooltip("Will run the transform calcualtions every frame, use this if you plan to move or rotate this drawer")] 24 | public bool alwaysUpdate = true; 25 | 26 | public int count = 1000; 27 | 28 | public DebugParams debugParams; 29 | 30 | public int drawCount { get; protected set; } = 1000; 31 | 32 | public TransformData transformation => new TransformData 33 | { 34 | position = transform.position, 35 | rotation = transform.rotation, 36 | scale = transform.lossyScale 37 | }; 38 | 39 | public DrawParamsII drawParams; 40 | 41 | public virtual bool ParamsAreValid() 42 | { 43 | if( drawParams == null || ! drawParams.IsValid() ) return false; 44 | 45 | return true; 46 | } 47 | 48 | public virtual bool DataIsValid() 49 | { 50 | if ( ! _matricies.IsCreated ) return false; 51 | 52 | return true; 53 | } 54 | 55 | protected bool initialized = false; 56 | 57 | protected bool isEnabled = false; 58 | 59 | public bool active => isActiveAndEnabled && initialized && isEnabled && ParamsAreValid(); 60 | 61 | public virtual void OnEnable() 62 | { 63 | if( ! canExecNow ) return; 64 | 65 | GraphicsDrawStats.Add( this ); 66 | 67 | isEnabled = true; 68 | 69 | if( debugParams == null ) debugParams = new DebugParams(); 70 | 71 | if( typeof( GraphicsDrawBaseMono ) == this.GetType() ) 72 | { 73 | Debug.LogWarning("GraphicsDrawBaseMono is a base class and cannot be used on its own"); 74 | if( Application.isPlaying ) Destroy( this ); 75 | else DestroyImmediate( this ); 76 | return; 77 | } 78 | 79 | if ( debugParams.showLogs ) Debug.Log("enabled"); 80 | 81 | SetParams( drawParams ); 82 | } 83 | 84 | public void SetParams( DrawParamsII value ) 85 | { 86 | this.drawParams = value; 87 | 88 | BufferInit(); 89 | 90 | BufferUpdate(); 91 | } 92 | 93 | // for example if count is 888 and value is 256 , then set new count to 1024 to have some extra space 94 | 95 | static int bufferExtendValue = 256; 96 | 97 | 98 | void BufferInit() 99 | { 100 | if ( ! ParamsAreValid() ) return; 101 | 102 | DataPreInit(); 103 | 104 | var t = Time.realtimeSinceStartup; 105 | 106 | int resized = ( 1 + count / bufferExtendValue ) * bufferExtendValue; 107 | 108 | if ( _matricies.IsCreated ) _matricies.Dispose(); 109 | 110 | _matricies = new NativeArray( resized , Allocator.Persistent ); 111 | 112 | if( _matriciesCulled.IsCreated ) _matriciesCulled.Dispose(); 113 | 114 | _matriciesCulled = new NativeArray( resized , Allocator.Persistent ); 115 | 116 | if (_instancesBuffer != null) _instancesBuffer.Release(); 117 | 118 | _instancesBuffer = new ComputeBuffer( resized , InstanceMatrix.Size() ); 119 | 120 | if( _matPropBlock == null ) _matPropBlock = new MaterialPropertyBlock(); 121 | 122 | _matPropBlock.SetBuffer( "_PerInstanceMatrix", _instancesBuffer ); 123 | 124 | DataInit( resized ); 125 | 126 | initialized = true; 127 | 128 | debugParams.execTime = ( ( Time.realtimeSinceStartup - t ) * 1000f ); 129 | 130 | debugParams.benchmark = debugParams.execTime.ToString("N3") + " ms"; 131 | 132 | if ( debugParams.showLogs ) Debug.Log( "buffer init " + debugParams.benchmark ); 133 | } 134 | 135 | void BufferUpdate() // OnValidate , Update , OnEnable 136 | { 137 | if ( ! initialized || ! ParamsAreValid() || ! DataIsValid() ) return; 138 | 139 | var t = Time.realtimeSinceStartup; 140 | 141 | _bounds = CalculateBounds(); 142 | 143 | CalculateMatricies(); 144 | 145 | GraphicsBurst.FillNaNs.Run( _matricies , drawCount = count ); 146 | 147 | if( drawParams.cullingEnabled ) drawCount = GraphicsBurst.Cull.Run( this ); 148 | 149 | OnPostCull(); 150 | 151 | // drawCount = PostCull( drawParams.cullingEnabled ? _matriciesCulled : _matricies , drawCount ); 152 | 153 | SetBuffer( drawParams.mesh, drawCount, ref _argsBuffer ); 154 | 155 | _instancesBuffer.SetData( drawParams.cullingEnabled ? _matriciesCulled : _matricies ); 156 | 157 | DataUpdate(); 158 | 159 | debugParams.benchmark = ( ( Time.realtimeSinceStartup - t ) * 1000f ).ToString("N3") + " ms"; 160 | } 161 | protected virtual void DataPreInit() { } 162 | 163 | protected virtual void DataInit(int size) { } 164 | protected virtual void DataUpdate() { } 165 | protected virtual void DataDispose() { } 166 | 167 | protected virtual void OnPostCull() { } 168 | 169 | // Override this method to do additional culling 170 | protected virtual int PostCull( NativeArray array, int count ) => count; 171 | 172 | protected virtual void OnValidate() 173 | { 174 | if( ! isEnabled || ! isActiveAndEnabled ) return; 175 | 176 | if ( ! ParamsAreValid() ) return; 177 | 178 | drawParams.Validate(); 179 | 180 | if( ! canExecNow ) return; 181 | 182 | Validate(); 183 | } 184 | 185 | internal void Validate( bool update = true ) 186 | { 187 | if ( count < 0 ) count = 0; 188 | 189 | drawCount = count; 190 | 191 | if ( count > _matricies.Length || ! initialized ) 192 | 193 | BufferInit(); 194 | 195 | if( update ) BufferUpdate(); 196 | } 197 | 198 | internal bool manualUpdate = false; 199 | 200 | public virtual void Update() 201 | { 202 | if( ! canExecNow ) return; 203 | 204 | if ( ! initialized || ! ParamsAreValid( ) ) return; 205 | 206 | if( manualUpdate ) return; 207 | 208 | ManualUpdate(); 209 | } 210 | 211 | public void ManualUpdate() 212 | { 213 | if ( alwaysUpdate ) BufferUpdate(); 214 | 215 | if( drawParams.drawMode == GraphicsDrawMode.InstancedIndirect ) 216 | 217 | drawParams.DrawMeshInstancedIndirect( _bounds, _argsBuffer, _matPropBlock ); 218 | 219 | if( drawParams.drawMode == GraphicsDrawMode.RenderMeshPrimitives ) 220 | 221 | drawParams.RenderMeshPrimitives( _bounds, _matPropBlock, drawCount ); 222 | } 223 | 224 | public virtual void OnDisable() 225 | { 226 | if ( ! canExecNow ) return; 227 | 228 | GraphicsDrawStats.Remove( this ); 229 | 230 | isEnabled = false; 231 | 232 | if (_instancesBuffer != null) 233 | { 234 | _instancesBuffer.Release(); 235 | _instancesBuffer = null; 236 | } 237 | if (_argsBuffer != null) 238 | { 239 | _argsBuffer.Release(); 240 | _argsBuffer = null; 241 | } 242 | 243 | if (_matricies.IsCreated ) 244 | { 245 | _matricies.Dispose(); 246 | } 247 | 248 | if( _matriciesCulled.IsCreated ) 249 | { 250 | _matriciesCulled.Dispose(); 251 | } 252 | 253 | DataDispose(); 254 | 255 | initialized = false; 256 | } 257 | } 258 | -------------------------------------------------------------------------------- /GraphicsDrawBaseMono.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 12ce86b09a5595543ac0971c3ddf693a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /GraphicsDrawCallback.cs: -------------------------------------------------------------------------------- 1 |  2 | using UnityEngine; 3 | 4 | public class GraphicsDrawCallback : GraphicsDrawBaseMono 5 | { 6 | public Bounds calculatedBounds; 7 | 8 | public event System.Action CalculateMatriciesCallback; 9 | 10 | public event System.Action PostCullCallback; 11 | 12 | protected override void OnPostCull() => PostCullCallback?.Invoke( this ); 13 | public override Bounds CalculateBounds() => calculatedBounds; 14 | public override void CalculateMatricies() => CalculateMatriciesCallback?.Invoke( this ); 15 | } 16 | -------------------------------------------------------------------------------- /GraphicsDrawCallback.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1b9de2a21f51ba04aa5c164b20e8080c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /GraphicsDrawLightModel.shadersubgraph.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f686f5efba3b0a248b345d80db8b54d9 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} 11 | -------------------------------------------------------------------------------- /GraphicsDrawStats.cs: -------------------------------------------------------------------------------- 1 |  2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class GraphicsDrawStats : MonoBehaviour 6 | { 7 | #region Static ------------------------------------------------------------ 8 | 9 | static List drawers = new List(); 10 | public static void Add( GraphicsDrawBaseMono item ) => drawers.Add( item ); 11 | public static void Remove( GraphicsDrawBaseMono item ) => drawers.Remove( item ); 12 | 13 | #endregion 14 | 15 | // ----------------------------------------------- 16 | 17 | public bool showGUI = false; 18 | 19 | // ----------------------------------------------- 20 | 21 | 22 | public string[] GetLines() 23 | { 24 | List lines = new List(); 25 | 26 | // ----------------------------------------------- 27 | 28 | int disabledCount = 0; 29 | 30 | int triTotal = 0; 31 | float extTotal = 0; 32 | 33 | for (var i = 0; i < drawers.Count; ++i) 34 | { 35 | var drawer = drawers[i]; 36 | 37 | if ( drawer.active ) 38 | { 39 | float ext = drawer.debugParams.execTime; 40 | int tri = drawer.drawParams.meshTriangleCount * drawer.drawCount; 41 | 42 | triTotal += tri; 43 | extTotal += ext; 44 | 45 | lines.Add( $"{i}. EXEC: {ext:N2} ms \t TRIS: {format(tri)}" ); 46 | } 47 | else disabledCount ++ ; 48 | } 49 | 50 | if( disabledCount > 0 ) lines.Add("Disabled count : " + disabledCount ); 51 | 52 | lines.Add( $"(totals) EXEC: {extTotal:N2} ms \t TRIS: {format(triTotal)}"); 53 | 54 | #if UNITY_EDITOR // https://github.com/Unity-Technologies/UnityCsReference/blob/master/Editor/Mono/UnityStats.bindings.cs 55 | var trigCountMono = UnityEditor.UnityStats.triangles; 56 | #endif 57 | 58 | return lines.ToArray(); 59 | } 60 | string format(int value) 61 | { 62 | if (value > 1e6) return Mathf.RoundToInt(value / 1e5f) / 10f + "m"; 63 | if (value > 1e3) return Mathf.RoundToInt(value / 1e2f) / 10f + "k"; 64 | return value.ToString(); 65 | } 66 | 67 | #region GUI ------------------------------------------------------------ 68 | 69 | private void OnGUI() 70 | { 71 | if( ! showGUI ) return; 72 | 73 | var lines = GetLines(); 74 | 75 | int w = 300, h = 120; 76 | //GUI.matrix = Matrix4x4.TRS( Vector3.zero, Quaternion.identity, Vector3.one * 0.9f ); 77 | GUI.color = Color.black; 78 | GUILayout.BeginArea( new Rect(5, 5, w, h), GUI.skin.box ); 79 | //GUILayout.Space(5);GUILayout.BeginVertical();GUILayout.Space(5); 80 | //foreach (var line in lines) GUILayout.Label(line); 81 | //GUILayout.Space(5);GUILayout.EndVertical(); 82 | GUILayout.EndArea(); 83 | GUI.color = Color.white; 84 | GUILayout.BeginArea(new Rect(6, 6, w, h), GUI.skin.box); 85 | GUILayout.Space(6);GUILayout.BeginVertical();GUILayout.Space(6); 86 | foreach (var line in lines) GUILayout.Label(line); 87 | GUILayout.Space(5);GUILayout.EndVertical();GUILayout.EndArea(); 88 | GUI.matrix = Matrix4x4.identity; 89 | } 90 | 91 | #endregion 92 | } 93 | -------------------------------------------------------------------------------- /GraphicsDrawStats.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5121602a0547e9e44aa16f49390e9e9e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /GraphicsFactory.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.Runtime.CompilerServices; 4 | using Unity.Mathematics; 5 | using UnityEngine; 6 | using UnityEngine.Rendering; 7 | using static UnityEngine.Camera; 8 | 9 | public static class GraphicsFactory 10 | { 11 | public static void SetBuffer( Mesh mesh, int count, ref ComputeBuffer buffer ) 12 | { 13 | uint[] args = new uint[5] { 0, 0, 0, 0, 0 }; 14 | 15 | args[0] = (uint) mesh.GetIndexCount(0); 16 | args[1] = (uint) count; 17 | args[2] = (uint) mesh.GetIndexStart(0); 18 | args[3] = (uint) mesh.GetBaseVertex(0); 19 | 20 | if ( buffer == null ) 21 | { 22 | buffer = new ComputeBuffer( 1, args.Length * sizeof( uint ), ComputeBufferType.IndirectArguments ); 23 | } 24 | 25 | buffer.SetData( args ); 26 | } 27 | 28 | [System.Serializable] public class DebugParams 29 | { 30 | public bool showLogs = false; 31 | [HideInInspector] public float execTime = 0; 32 | public string benchmark = "-"; 33 | } 34 | 35 | public enum GraphicsDrawMode { InstancedIndirect, RenderMeshPrimitives } 36 | 37 | [System.Serializable] public class DrawParamsII 38 | { 39 | public Mesh mesh = null; 40 | public Material material = null; 41 | public float meshRadius = 1; 42 | public GraphicsDrawMode drawMode = GraphicsDrawMode.InstancedIndirect; 43 | public int submeshIndex = 0; 44 | public ShadowCastingMode castShadows = ShadowCastingMode.Off; 45 | public bool receiveShadows = false; 46 | [Range(0, 11)] public int layer = 0; 47 | public bool occlusionCulling = false; 48 | public Camera camera = null; 49 | public LightProbeUsage lightProbeUsage = LightProbeUsage.Off; 50 | public LightProbeProxyVolume lightProbeProxyVolume = null; 51 | [Header("RenderMeshPrimitives")] 52 | public uint renderingLayerMask = 1; 53 | public int rendererPriority = 0; 54 | public ReflectionProbeUsage reflectionProbeUsage = ReflectionProbeUsage.Off; 55 | public MotionVectorGenerationMode motionVectorMode = MotionVectorGenerationMode.ForceNoMotion; 56 | 57 | public DrawParamsII Clone() 58 | { 59 | return new DrawParamsII 60 | { 61 | mesh = mesh, 62 | material = material, 63 | meshRadius = meshRadius, 64 | drawMode = drawMode, 65 | submeshIndex = submeshIndex, 66 | castShadows = castShadows, 67 | receiveShadows = receiveShadows, 68 | layer = layer, 69 | occlusionCulling = occlusionCulling, 70 | camera = camera, 71 | lightProbeUsage = lightProbeUsage, 72 | lightProbeProxyVolume = lightProbeProxyVolume, 73 | renderingLayerMask = renderingLayerMask, 74 | rendererPriority = rendererPriority, 75 | reflectionProbeUsage = reflectionProbeUsage, 76 | motionVectorMode = motionVectorMode 77 | }; 78 | } 79 | 80 | [HideInInspector] public int meshTriangleCount = 0; 81 | 82 | public bool cullingEnabled => occlusionCulling && camera; 83 | 84 | public bool IsValid() => mesh != null && material != null; 85 | 86 | public void Validate() 87 | { 88 | if( mesh != null ) 89 | { 90 | if( submeshIndex < 0 ) submeshIndex = 0; 91 | if( submeshIndex > mesh.subMeshCount - 1 ) 92 | { 93 | submeshIndex = mesh.subMeshCount - 1; 94 | Debug.LogWarning("subMeshCount = " + mesh.subMeshCount ); 95 | } 96 | 97 | if( ! mesh.isReadable ) Debug.Log( "Mesh is not read/write enabled, stats will not be accurate"); 98 | 99 | else meshTriangleCount = mesh.triangles.Length / 3; 100 | } 101 | } 102 | } 103 | 104 | 105 | 106 | public static void DrawMeshInstancedIndirect( this DrawParamsII drawParams, Bounds bn, ComputeBuffer bf, MaterialPropertyBlock mp ) 107 | { 108 | Graphics.DrawMeshInstancedIndirect 109 | ( 110 | drawParams.mesh, 111 | drawParams.submeshIndex, 112 | drawParams.material, 113 | bn, bf, 0, mp, 114 | drawParams.castShadows, 115 | drawParams.receiveShadows, 116 | drawParams.layer, 117 | Application.isPlaying ? drawParams.camera : null, 118 | drawParams.lightProbeUsage, 119 | drawParams.lightProbeProxyVolume 120 | ); 121 | } 122 | 123 | public static void RenderMeshPrimitives( this DrawParamsII drawParams, Bounds bn, MaterialPropertyBlock mp, int count ) 124 | { 125 | var renderParams = new RenderParams 126 | { 127 | camera = Application.isPlaying ? drawParams.camera : null, 128 | layer = drawParams.layer, 129 | lightProbeProxyVolume = drawParams.lightProbeProxyVolume, 130 | lightProbeUsage = drawParams.lightProbeUsage, 131 | material = drawParams.material, 132 | matProps = mp, 133 | motionVectorMode = drawParams.motionVectorMode, 134 | receiveShadows = drawParams.receiveShadows, 135 | reflectionProbeUsage = drawParams.reflectionProbeUsage, 136 | rendererPriority = drawParams.rendererPriority, 137 | renderingLayerMask = drawParams.renderingLayerMask, 138 | shadowCastingMode = drawParams.castShadows, 139 | worldBounds = bn 140 | }; 141 | 142 | Graphics.RenderMeshPrimitives( renderParams, drawParams.mesh, drawParams.submeshIndex, count ); 143 | } 144 | 145 | public struct InstanceMatrix 146 | { 147 | // https://github.com/needle-mirror/com.unity.mathematics/blob/master/Unity.Mathematics/matrix.cs 148 | 149 | public float4x4 matrix; 150 | 151 | public static int Size() => sizeof(float) * 4 * 4; 152 | 153 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 154 | public void TRS( float3 p , quaternion r, float3 s ) => matrix = float4x4.TRS( p, r, s ); 155 | 156 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 157 | public InstanceMatrix SetVisible( bool v ) { matrix.c3 = new float4( GetPosition() , v ? 1 : 0 ); return this; } 158 | 159 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 160 | public bool IsVisible() => matrix.c3.w > 0; 161 | 162 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 163 | public bool CanRender() => IsVisible() && ! IsNanOrZero(); 164 | 165 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 166 | public float3 GetPosition() => new float3( matrix.c3.x , matrix.c3.y , matrix.c3.z ); 167 | 168 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 169 | public void SetPosition( float3 p ) => matrix.c3 = new float4( p.x, p.y, p.z, matrix.c3.w ); 170 | 171 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 172 | public float3 GetScale() => math.sqrt( new float3( math.lengthsq(matrix[0].xyz), math.lengthsq(matrix[1].xyz), math.lengthsq(matrix[2].xyz)) ); 173 | //public float3 GetScale() => math.mul( matrix , new float4(1, 1, 1, 0) ).xyz; 174 | 175 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 176 | public bool IsNanOrZero() => matrix.c0.x == float.NaN || matrix.Equals( float4x4.zero ); 177 | 178 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 179 | public float GetRadius() { var s = GetScale(); return math.max( math.max( s.x, s.y ) , s.z ); } 180 | 181 | public static implicit operator InstanceMatrix( float4x4 m ) => new InstanceMatrix() { matrix = m }; 182 | } 183 | 184 | public struct TransformData : System.IEquatable 185 | { 186 | public float3 position; 187 | public quaternion rotation; 188 | public float3 scale; 189 | 190 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 191 | public bool Equals(TransformData other) 192 | { 193 | bool3 b1 = position == other.position, b2 = scale == other.scale; 194 | bool4 b3 = rotation.value == other.rotation.value; 195 | return b1.x && b1.y && b1.z && b2.x && b2.y && b2.z && b3.x && b3.y && b3.z && b3.w; 196 | } 197 | 198 | public void Identity() 199 | { 200 | position = float3.zero; 201 | rotation = quaternion.identity; 202 | scale = new float3(1); 203 | } 204 | } 205 | 206 | public struct FrustumCulling 207 | { 208 | // https://forum.unity.com/threads/frustumplanes-fromcamera-garbage.673114/#post-4506769 209 | 210 | public float4 Left; 211 | public float4 Right; 212 | public float4 Down; 213 | public float4 Up; 214 | public float4 Near; 215 | public float4 Far; 216 | 217 | public static FrustumCulling Make( Plane[] planes ) 218 | { 219 | return new FrustumCulling 220 | { 221 | Left = new float4( planes[ 0 ].normal, planes[ 0 ].distance ) , 222 | Right = new float4( planes[ 1 ].normal, planes[ 1 ].distance ) , 223 | Down = new float4( planes[ 2 ].normal, planes[ 2 ].distance ) , 224 | Up = new float4( planes[ 3 ].normal, planes[ 3 ].distance ) , 225 | Near = new float4( planes[ 4 ].normal, planes[ 4 ].distance ) , 226 | Far = new float4( planes[ 5 ].normal, planes[ 5 ].distance ) , 227 | }; 228 | } 229 | public enum Result { Out, In, Partial }; 230 | 231 | [MethodImpl(MethodImplOptions.AggressiveInlining)] 232 | public Result Inside( BoundingSphere sphere ) 233 | { 234 | float4 center = new float4( sphere.position , 1 ); 235 | 236 | var lDistance = math.dot( Left, center ); 237 | if( lDistance < - sphere.radius ) return Result.Out; 238 | 239 | var rDistance = math.dot( Right, center ); 240 | if( rDistance < - sphere.radius ) return Result.Out; 241 | 242 | var dDistance = math.dot( Down, center ); 243 | if( dDistance < - sphere.radius ) return Result.Out; 244 | 245 | var uDistance = math.dot( Up, center ); 246 | if( uDistance < - sphere.radius ) return Result.Out; 247 | 248 | //var nDistance = math.dot( Near, center ); 249 | //if( nDistance < - sphere.radius ) return Result.Out; 250 | 251 | //var fDistance = math.dot( Far, center ); 252 | //if( fDistance < - sphere.radius ) return Result.Out; 253 | 254 | var lIn = lDistance > sphere.radius; 255 | var rIn = rDistance > sphere.radius; 256 | var dIn = dDistance > sphere.radius; 257 | var uIn = uDistance > sphere.radius; 258 | //var nIn = nDistance > sphere.radius; 259 | //var fIn = fDistance > sphere.radius; 260 | 261 | if( lIn && rIn && dIn && uIn /*&& nIn && fIn*/ ) return Result.In; 262 | 263 | return Result.Partial; 264 | } 265 | } 266 | 267 | public static Plane[] GetFrustumPlanesVR( Camera camera, float z = 10f ) 268 | { 269 | Vector3[] cornersL = new Vector3[4]; 270 | Vector3[] cornersR = new Vector3[4]; 271 | 272 | camera.CalculateFrustumCorners(new Rect(0, 0, 1, 1), z, MonoOrStereoscopicEye.Left , cornersL); 273 | camera.CalculateFrustumCorners(new Rect(0, 0, 1, 1), z, MonoOrStereoscopicEye.Right, cornersR); 274 | 275 | Vector3[] corners = { cornersL[0], cornersL[1], cornersR[2], cornersR[3] }; 276 | 277 | Vector3[][] triangles = // red , green , black , white 278 | { 279 | new Vector3[3] { corners[0], Vector3.zero, corners[1] }, // LEFT 280 | new Vector3[3] { corners[2], Vector3.zero, corners[3] }, // RIGHT 281 | new Vector3[3] { corners[3], Vector3.zero, corners[0] }, // BOTTOM 282 | new Vector3[3] { corners[1], Vector3.zero, corners[2] }, // TOP 283 | }; 284 | 285 | Plane[] planes = new Plane[4]; 286 | 287 | for (var i = 0; i < 4; ++i) planes[i] = new Plane(triangles[i][0], triangles[i][1], triangles[i][2]); 288 | 289 | var t = camera.transform; 290 | 291 | planes = new Plane[] { // [0] = Left, [1] = Right, [2] = Bottom, [3] = Top, [4] = Near , [5] = Far 292 | new Plane( t.TransformDirection( planes[ 0 ].normal ) , t.position ), 293 | new Plane( t.TransformDirection( planes[ 1 ].normal ) , t.position ), 294 | new Plane( t.TransformDirection( planes[ 2 ].normal ) , t.position ), 295 | new Plane( t.TransformDirection( planes[ 3 ].normal ) , t.position ), 296 | new Plane( t.forward , t.position + t.forward * camera.nearClipPlane ), 297 | new Plane( t.forward , t.position + t.forward * camera.farClipPlane ) 298 | }; 299 | 300 | return planes; 301 | } 302 | } 303 | -------------------------------------------------------------------------------- /GraphicsFactory.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a73f043a3512c8458e914b78ad02542 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /IncludeInstanced.hlsl: -------------------------------------------------------------------------------- 1 | // https://twitter.com/Cyanilux/status/1396848736022802435?s=20 2 | 3 | #ifndef GRASS_INSTANCED_INCLUDED 4 | #define GRASS_INSTANCED_INCLUDED 5 | 6 | float2 random2(float2 st) 7 | { 8 | return frac(sin(dot(st.xy, float2(12.9898, 78.233))) * 43758.5453); 9 | } 10 | 11 | // ---------------------------------------------------------------------------------- 12 | 13 | // Graph should contain Boolean Keyword, "PROCEDURAL_INSTANCING_ON", Global, Multi-Compile. 14 | // Must have two Custom Functions in vertex stage. One is used to attach this file (see Instancing_float below), 15 | // and another to set #pragma instancing_options : 16 | 17 | // It must use the String mode as this cannot be defined in includes. 18 | // Without this, you will get "UNITY_INSTANCING_PROCEDURAL_FUNC must be defined" Shader Error. 19 | /* 20 | Out = In; 21 | #pragma instancing_options procedural:vertInstancingSetup 22 | */ 23 | // I've found this works fine, but it might make sense for the pragma to be defined outside of a function, 24 | // so could also use this slightly hacky method too 25 | /* 26 | Out = In; 27 | } 28 | #pragma instancing_options procedural:vertInstancingSetup 29 | void dummy(){ 30 | */ 31 | 32 | // ---------------------------------------------------------------------------------- 33 | 34 | struct InstanceData { int index; float4 color; }; 35 | 36 | StructuredBuffer _PerInstanceData; 37 | 38 | void GetInstancedIndex_float(out int Out) 39 | { 40 | Out = 1; 41 | #ifndef SHADERGRAPH_PREVIEW 42 | #if UNITY_ANY_INSTANCING_ENABLED 43 | Out = _PerInstanceData[unity_InstanceID].index; 44 | #endif 45 | #endif 46 | } 47 | 48 | void GetInstancedIndexRandom_float(out float Out) 49 | { 50 | int idx; 51 | GetInstancedIndex_float( idx ); 52 | Out = random2( float2( idx , 0 ) ); 53 | } 54 | 55 | void GetInstancedColor_float(out float4 Out) 56 | { 57 | Out = float4( 1,1,1,1 ); 58 | #ifndef SHADERGRAPH_PREVIEW 59 | #if UNITY_ANY_INSTANCING_ENABLED 60 | Out = _PerInstanceData[unity_InstanceID].color; 61 | #endif 62 | #endif 63 | } 64 | 65 | struct InstanceMatrix { float4x4 m; }; 66 | 67 | StructuredBuffer _PerInstanceMatrix; 68 | 69 | #if UNITY_ANY_INSTANCING_ENABLED 70 | 71 | // Updates the unity_ObjectToWorld / unity_WorldToObject matrices so our matrix is taken into account 72 | 73 | // Based on : 74 | // https://github.com/Unity-Technologies/Graphics/blob/master/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/ShaderLibrary/ParticlesInstancing.hlsl 75 | // and/or 76 | // https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/CGIncludes/UnityStandardParticleInstancing.cginc 77 | 78 | void vertInstancingMatrices(inout float4x4 objectToWorld, out float4x4 worldToObject) 79 | { 80 | InstanceMatrix data = _PerInstanceMatrix[ unity_InstanceID ]; 81 | 82 | if ( data.m._44 == 0 ) 83 | { 84 | float4 z = float4( 0, 0, 0, 0 ); 85 | worldToObject = objectToWorld = float4x4( z, z, z, z ); 86 | return; 87 | } 88 | 89 | objectToWorld = mul( objectToWorld, data.m ); 90 | 91 | // Transform matrix (override current) 92 | // I prefer keeping positions relative to the bounds passed into DrawMeshInstancedIndirect so use the above instead 93 | //objectToWorld._11_21_31_41 = float4(data.m._11_21_31, 0.0f); 94 | //objectToWorld._12_22_32_42 = float4(data.m._12_22_32, 0.0f); 95 | //objectToWorld._13_23_33_43 = float4(data.m._13_23_33, 0.0f); 96 | //objectToWorld._14_24_34_44 = float4(data.m._14_24_34, 1.0f); 97 | 98 | // Inverse transform matrix 99 | float3x3 w2oRotation; 100 | w2oRotation[0] = objectToWorld[1].yzx * objectToWorld[2].zxy - objectToWorld[1].zxy * objectToWorld[2].yzx; 101 | w2oRotation[1] = objectToWorld[0].zxy * objectToWorld[2].yzx - objectToWorld[0].yzx * objectToWorld[2].zxy; 102 | w2oRotation[2] = objectToWorld[0].yzx * objectToWorld[1].zxy - objectToWorld[0].zxy * objectToWorld[1].yzx; 103 | 104 | float det = dot(objectToWorld[0].xyz, w2oRotation[0]); 105 | w2oRotation = transpose(w2oRotation); 106 | w2oRotation *= rcp(det); 107 | float3 w2oPosition = mul(w2oRotation, -objectToWorld._14_24_34); 108 | 109 | worldToObject._11_21_31_41 = float4(w2oRotation._11_21_31, 0.0f); 110 | worldToObject._12_22_32_42 = float4(w2oRotation._12_22_32, 0.0f); 111 | worldToObject._13_23_33_43 = float4(w2oRotation._13_23_33, 0.0f); 112 | worldToObject._14_24_34_44 = float4(w2oPosition, 1.0f); 113 | } 114 | 115 | void vertInstancingSetup() 116 | { 117 | vertInstancingMatrices( unity_ObjectToWorld , unity_WorldToObject ); 118 | } 119 | 120 | #endif 121 | 122 | // Shader Graph Functions 123 | 124 | // Obtain InstanceID. e.g. Can be used as a Seed into Random Range node to generate random data per instance 125 | void GetInstanceID_float(out float Out){ 126 | Out = 0; 127 | #ifndef SHADERGRAPH_PREVIEW 128 | #if UNITY_ANY_INSTANCING_ENABLED 129 | Out = unity_InstanceID; 130 | #endif 131 | #endif 132 | } 133 | 134 | // Just passes the position through, allows us to actually attach this file to the graph. 135 | // Should be placed somewhere in the vertex stage, e.g. right before connecting the object space position. 136 | void Instancing_float(float3 Position, out float3 Out) 137 | { 138 | Out = Position; 139 | } 140 | 141 | #endif -------------------------------------------------------------------------------- /IncludeInstanced.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f59ac7eb4d78f4d4cad9969716dba62e 3 | ShaderIncludeImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Instanced 1.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Instanced 1 11 | m_Shader: {fileID: -6465566751694194690, guid: 64fba4bf1041e144ab263712a0658c5c, 12 | type: 3} 13 | m_Parent: {fileID: 0} 14 | m_ModifiedSerializedProperties: 0 15 | m_ValidKeywords: 16 | - _LIGHTDIRECTION_CUSTOM 17 | m_InvalidKeywords: 18 | - _ENUM_A 19 | - _LIGHTDIRECTION_A 20 | m_LightmapFlags: 4 21 | m_EnableInstancingVariants: 1 22 | m_DoubleSidedGI: 0 23 | m_CustomRenderQueue: 1973 24 | stringTagMap: {} 25 | disabledShaderPasses: [] 26 | m_LockedProperties: 27 | m_SavedProperties: 28 | serializedVersion: 3 29 | m_TexEnvs: 30 | - _BaseMap: 31 | m_Texture: {fileID: 2800000, guid: 9caed5b63ff55e241b08435340c89c4b, type: 3} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _BumpMap: 35 | m_Texture: {fileID: 2800000, guid: 41b6c5707d813824d8c74e8574e3280b, type: 3} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _DetailAlbedoMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _DetailMask: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _DetailNormalMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _EmissionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _MainTex: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _MetallicGlossMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | - _OcclusionMap: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - _ParallaxMap: 67 | m_Texture: {fileID: 0} 68 | m_Scale: {x: 1, y: 1} 69 | m_Offset: {x: 0, y: 0} 70 | - _SpecGlossMap: 71 | m_Texture: {fileID: 0} 72 | m_Scale: {x: 1, y: 1} 73 | m_Offset: {x: 0, y: 0} 74 | - unity_Lightmaps: 75 | m_Texture: {fileID: 0} 76 | m_Scale: {x: 1, y: 1} 77 | m_Offset: {x: 0, y: 0} 78 | - unity_LightmapsInd: 79 | m_Texture: {fileID: 0} 80 | m_Scale: {x: 1, y: 1} 81 | m_Offset: {x: 0, y: 0} 82 | - unity_ShadowMasks: 83 | m_Texture: {fileID: 0} 84 | m_Scale: {x: 1, y: 1} 85 | m_Offset: {x: 0, y: 0} 86 | m_Ints: [] 87 | m_Floats: 88 | - PROCEDURAL_INSTANCING: 0 89 | - _AlphaClip: 0 90 | - _AlphaToMask: 0 91 | - _AmbientLight: 1 92 | - _Blend: 0 93 | - _BlendModePreserveSpecular: 1 94 | - _BumpScale: 1 95 | - _ClearCoatMask: 0 96 | - _ClearCoatSmoothness: 0 97 | - _Cull: 2 98 | - _Cutoff: 0.5 99 | - _Depth: 0.8 100 | - _DetailAlbedoMapScale: 1 101 | - _DetailNormalMapScale: 1 102 | - _DstBlend: 0 103 | - _DstBlendAlpha: 0 104 | - _ENUM: 0 105 | - _EnvironmentReflections: 1 106 | - _GlossMapScale: 0 107 | - _Glossiness: 0 108 | - _GlossyReflections: 0 109 | - _LIGHTDIRECTION: 2 110 | - _LightLerp: 0 111 | - _Metallic: 0 112 | - _NormalStrength: 1.5 113 | - _OcclusionStrength: 1 114 | - _Parallax: 0.005 115 | - _QueueControl: 0 116 | - _QueueOffset: -27 117 | - _ReceiveShadows: 1 118 | - _Smoothness: 0.5 119 | - _SmoothnessTextureChannel: 0 120 | - _SpecularHighlights: 1 121 | - _SrcBlend: 1 122 | - _SrcBlendAlpha: 1 123 | - _Surface: 0 124 | - _WorkflowMode: 1 125 | - _ZWrite: 1 126 | m_Colors: 127 | - _BaseColor: {r: 1, g: 0.6708143, b: 0.3160377, a: 1} 128 | - _Color: {r: 1, g: 0.8448516, b: 0, a: 1} 129 | - _CustomLightDir: {r: 0, g: -1, b: 0, a: 0} 130 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 131 | - _LightDirRotate: {r: 0, g: 1, b: 0, a: 0} 132 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 133 | - _Tile: {r: 1, g: 1, b: 0, a: 0} 134 | - _TileOffset: {r: 1, g: 1, b: 0, a: 0} 135 | m_BuildTextureStacks: [] 136 | --- !u!114 &1373779879689326419 137 | MonoBehaviour: 138 | m_ObjectHideFlags: 11 139 | m_CorrespondingSourceObject: {fileID: 0} 140 | m_PrefabInstance: {fileID: 0} 141 | m_PrefabAsset: {fileID: 0} 142 | m_GameObject: {fileID: 0} 143 | m_Enabled: 1 144 | m_EditorHideFlags: 0 145 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 146 | m_Name: 147 | m_EditorClassIdentifier: 148 | version: 7 149 | -------------------------------------------------------------------------------- /Instanced 1.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 625bf673931fffe44bbc6af67ca71bba 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Instanced.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Instanced 11 | m_Shader: {fileID: -6465566751694194690, guid: 64fba4bf1041e144ab263712a0658c5c, type: 3} 12 | m_ValidKeywords: [] 13 | m_InvalidKeywords: 14 | - _ENUM_A 15 | - _LIGHTDIRECTION_A 16 | - _LIGHTDIRECTION_SUN 17 | m_LightmapFlags: 4 18 | m_EnableInstancingVariants: 1 19 | m_DoubleSidedGI: 0 20 | m_CustomRenderQueue: -1 21 | stringTagMap: {} 22 | disabledShaderPasses: [] 23 | m_SavedProperties: 24 | serializedVersion: 3 25 | m_TexEnvs: 26 | - _BaseMap: 27 | m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _BumpMap: 31 | m_Texture: {fileID: 2800000, guid: 41b6c5707d813824d8c74e8574e3280b, type: 3} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailAlbedoMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _DetailMask: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _DetailNormalMap: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _EmissionMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _MainTex: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _MetallicGlossMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _OcclusionMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | - _ParallaxMap: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - _SpecGlossMap: 67 | m_Texture: {fileID: 0} 68 | m_Scale: {x: 1, y: 1} 69 | m_Offset: {x: 0, y: 0} 70 | - unity_Lightmaps: 71 | m_Texture: {fileID: 0} 72 | m_Scale: {x: 1, y: 1} 73 | m_Offset: {x: 0, y: 0} 74 | - unity_LightmapsInd: 75 | m_Texture: {fileID: 0} 76 | m_Scale: {x: 1, y: 1} 77 | m_Offset: {x: 0, y: 0} 78 | - unity_ShadowMasks: 79 | m_Texture: {fileID: 0} 80 | m_Scale: {x: 1, y: 1} 81 | m_Offset: {x: 0, y: 0} 82 | m_Ints: [] 83 | m_Floats: 84 | - PROCEDURAL_INSTANCING: 0 85 | - _AlphaClip: 0 86 | - _AlphaToMask: 0 87 | - _AmbientLight: 1 88 | - _Blend: 0 89 | - _BlendModePreserveSpecular: 1 90 | - _BumpScale: 1 91 | - _ClearCoatMask: 0 92 | - _ClearCoatSmoothness: 0 93 | - _Cull: 2 94 | - _Cutoff: 0.5 95 | - _Depth: 0.67 96 | - _DetailAlbedoMapScale: 1 97 | - _DetailNormalMapScale: 1 98 | - _DstBlend: 0 99 | - _DstBlendAlpha: 0 100 | - _ENUM: 0 101 | - _EnvironmentReflections: 1 102 | - _GlossMapScale: 0 103 | - _Glossiness: 0 104 | - _GlossyReflections: 0 105 | - _LIGHTDIRECTION: 0 106 | - _LightLerp: 0 107 | - _Metallic: 0 108 | - _NormalStrength: 1 109 | - _OcclusionStrength: 1 110 | - _Parallax: 0.005 111 | - _QueueControl: 0 112 | - _QueueOffset: 0 113 | - _ReceiveShadows: 1 114 | - _Smoothness: 0.5 115 | - _SmoothnessTextureChannel: 0 116 | - _SpecularHighlights: 1 117 | - _SrcBlend: 1 118 | - _SrcBlendAlpha: 1 119 | - _Surface: 0 120 | - _WorkflowMode: 1 121 | - _ZWrite: 1 122 | m_Colors: 123 | - _BaseColor: {r: 1, g: 0.6708143, b: 0.3160377, a: 1} 124 | - _Color: {r: 1, g: 1, b: 1, a: 1} 125 | - _CustomLightDir: {r: 0, g: -1, b: 0, a: 0} 126 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 127 | - _LightDirRotate: {r: 0, g: 1, b: 0, a: 0} 128 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 129 | - _Tile: {r: 1, g: 1, b: 0, a: 0} 130 | - _TileOffset: {r: 1, g: 1, b: 0, a: 0} 131 | m_BuildTextureStacks: [] 132 | --- !u!114 &1373779879689326419 133 | MonoBehaviour: 134 | m_ObjectHideFlags: 11 135 | m_CorrespondingSourceObject: {fileID: 0} 136 | m_PrefabInstance: {fileID: 0} 137 | m_PrefabAsset: {fileID: 0} 138 | m_GameObject: {fileID: 0} 139 | m_Enabled: 1 140 | m_EditorHideFlags: 0 141 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 142 | m_Name: 143 | m_EditorClassIdentifier: 144 | version: 7 145 | -------------------------------------------------------------------------------- /Instanced.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6497e13cf41d04e4391fdc680681f8c9 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Instanced.shadergraph: -------------------------------------------------------------------------------- 1 | { 2 | "m_SGVersion": 3, 3 | "m_Type": "UnityEditor.ShaderGraph.GraphData", 4 | "m_ObjectId": "8b4bef0be6994260ad00f2f97749389f", 5 | "m_Properties": [ 6 | { 7 | "m_Id": "b43fdb88f4f5470da0365dfb7687e286" 8 | }, 9 | { 10 | "m_Id": "f09bb54bc7b14f78b0ca906d5385ef21" 11 | }, 12 | { 13 | "m_Id": "050210c960ad422faef99cddea3ce607" 14 | }, 15 | { 16 | "m_Id": "1644ac09378e45fb84198e184718fd0f" 17 | }, 18 | { 19 | "m_Id": "fdc6a43226c342bba273fb3743bcacb9" 20 | }, 21 | { 22 | "m_Id": "d58af34ab2fe4681a978f842477bcf48" 23 | } 24 | ], 25 | "m_Keywords": [ 26 | { 27 | "m_Id": "0d8900a274bc4f4b9792fd57b61547d2" 28 | } 29 | ], 30 | "m_Dropdowns": [], 31 | "m_CategoryData": [ 32 | { 33 | "m_Id": "457c8dceb21744e4a0953802565bdfe0" 34 | }, 35 | { 36 | "m_Id": "8ec6cac2531d416082e0c5a9474c16fa" 37 | }, 38 | { 39 | "m_Id": "d6ec440f6c41465f8847d3de86255f6c" 40 | } 41 | ], 42 | "m_Nodes": [ 43 | { 44 | "m_Id": "1b17132e10914d1a86d9a118f47e1116" 45 | }, 46 | { 47 | "m_Id": "93a932fb0ef24b90a1d0ea4ea5dfe079" 48 | }, 49 | { 50 | "m_Id": "ac077eea71474fb580b59c362b3db676" 51 | }, 52 | { 53 | "m_Id": "d1171b3dde1e4cf0be6308267014935f" 54 | }, 55 | { 56 | "m_Id": "d480e936e16c485e863f38cae04078a0" 57 | }, 58 | { 59 | "m_Id": "48156ff5beff4788a2c0407e57948c0d" 60 | }, 61 | { 62 | "m_Id": "da8b5cd4a006492d8e5f63fa74595d6a" 63 | }, 64 | { 65 | "m_Id": "1250f662bca143a79b74fc641d22ffd6" 66 | }, 67 | { 68 | "m_Id": "44dba447cf714c4db1959d044c99eef9" 69 | }, 70 | { 71 | "m_Id": "446202ee5c964876bb9116f5cd6adee1" 72 | }, 73 | { 74 | "m_Id": "86e3364db3b042feb346dc5a927cf005" 75 | }, 76 | { 77 | "m_Id": "b3b509cbdea340388a156987f73aa9ea" 78 | }, 79 | { 80 | "m_Id": "7328c65de12f4cc4867dc72104467fb5" 81 | }, 82 | { 83 | "m_Id": "1dd766ab4cf94ed093f1577a8b69f250" 84 | }, 85 | { 86 | "m_Id": "cdeb8774b9cd4c3886917f2649581c9f" 87 | }, 88 | { 89 | "m_Id": "954d75727c2b491a9fd2e25ea9226dee" 90 | }, 91 | { 92 | "m_Id": "dfcf6591ab4e435ca3ce2896e82644e0" 93 | }, 94 | { 95 | "m_Id": "166ea44576c94dea9deab688ad101e8b" 96 | }, 97 | { 98 | "m_Id": "5b39f38ec727449eaad228da130fd2db" 99 | }, 100 | { 101 | "m_Id": "c7ec1db8b2f6446da12e7f9103043eaf" 102 | }, 103 | { 104 | "m_Id": "05381585da7a454e87629f9ff3e4a326" 105 | }, 106 | { 107 | "m_Id": "882b267de98345edaae66f071cdf4e8d" 108 | } 109 | ], 110 | "m_GroupDatas": [], 111 | "m_StickyNoteDatas": [], 112 | "m_Edges": [ 113 | { 114 | "m_OutputSlot": { 115 | "m_Node": { 116 | "m_Id": "1250f662bca143a79b74fc641d22ffd6" 117 | }, 118 | "m_SlotId": 0 119 | }, 120 | "m_InputSlot": { 121 | "m_Node": { 122 | "m_Id": "882b267de98345edaae66f071cdf4e8d" 123 | }, 124 | "m_SlotId": 1435760779 125 | } 126 | }, 127 | { 128 | "m_OutputSlot": { 129 | "m_Node": { 130 | "m_Id": "166ea44576c94dea9deab688ad101e8b" 131 | }, 132 | "m_SlotId": 0 133 | }, 134 | "m_InputSlot": { 135 | "m_Node": { 136 | "m_Id": "1dd766ab4cf94ed093f1577a8b69f250" 137 | }, 138 | "m_SlotId": 1 139 | } 140 | }, 141 | { 142 | "m_OutputSlot": { 143 | "m_Node": { 144 | "m_Id": "1dd766ab4cf94ed093f1577a8b69f250" 145 | }, 146 | "m_SlotId": 3 147 | }, 148 | "m_InputSlot": { 149 | "m_Node": { 150 | "m_Id": "1250f662bca143a79b74fc641d22ffd6" 151 | }, 152 | "m_SlotId": 2 153 | } 154 | }, 155 | { 156 | "m_OutputSlot": { 157 | "m_Node": { 158 | "m_Id": "1dd766ab4cf94ed093f1577a8b69f250" 159 | }, 160 | "m_SlotId": 3 161 | }, 162 | "m_InputSlot": { 163 | "m_Node": { 164 | "m_Id": "7328c65de12f4cc4867dc72104467fb5" 165 | }, 166 | "m_SlotId": 2 167 | } 168 | }, 169 | { 170 | "m_OutputSlot": { 171 | "m_Node": { 172 | "m_Id": "446202ee5c964876bb9116f5cd6adee1" 173 | }, 174 | "m_SlotId": 0 175 | }, 176 | "m_InputSlot": { 177 | "m_Node": { 178 | "m_Id": "882b267de98345edaae66f071cdf4e8d" 179 | }, 180 | "m_SlotId": -1227218704 181 | } 182 | }, 183 | { 184 | "m_OutputSlot": { 185 | "m_Node": { 186 | "m_Id": "44dba447cf714c4db1959d044c99eef9" 187 | }, 188 | "m_SlotId": 0 189 | }, 190 | "m_InputSlot": { 191 | "m_Node": { 192 | "m_Id": "1250f662bca143a79b74fc641d22ffd6" 193 | }, 194 | "m_SlotId": 1 195 | } 196 | }, 197 | { 198 | "m_OutputSlot": { 199 | "m_Node": { 200 | "m_Id": "48156ff5beff4788a2c0407e57948c0d" 201 | }, 202 | "m_SlotId": 1 203 | }, 204 | "m_InputSlot": { 205 | "m_Node": { 206 | "m_Id": "1b17132e10914d1a86d9a118f47e1116" 207 | }, 208 | "m_SlotId": 0 209 | } 210 | }, 211 | { 212 | "m_OutputSlot": { 213 | "m_Node": { 214 | "m_Id": "5b39f38ec727449eaad228da130fd2db" 215 | }, 216 | "m_SlotId": 0 217 | }, 218 | "m_InputSlot": { 219 | "m_Node": { 220 | "m_Id": "1dd766ab4cf94ed093f1577a8b69f250" 221 | }, 222 | "m_SlotId": 2 223 | } 224 | }, 225 | { 226 | "m_OutputSlot": { 227 | "m_Node": { 228 | "m_Id": "7328c65de12f4cc4867dc72104467fb5" 229 | }, 230 | "m_SlotId": 0 231 | }, 232 | "m_InputSlot": { 233 | "m_Node": { 234 | "m_Id": "cdeb8774b9cd4c3886917f2649581c9f" 235 | }, 236 | "m_SlotId": 1 237 | } 238 | }, 239 | { 240 | "m_OutputSlot": { 241 | "m_Node": { 242 | "m_Id": "86e3364db3b042feb346dc5a927cf005" 243 | }, 244 | "m_SlotId": 0 245 | }, 246 | "m_InputSlot": { 247 | "m_Node": { 248 | "m_Id": "882b267de98345edaae66f071cdf4e8d" 249 | }, 250 | "m_SlotId": -736122885 251 | } 252 | }, 253 | { 254 | "m_OutputSlot": { 255 | "m_Node": { 256 | "m_Id": "882b267de98345edaae66f071cdf4e8d" 257 | }, 258 | "m_SlotId": 1 259 | }, 260 | "m_InputSlot": { 261 | "m_Node": { 262 | "m_Id": "d1171b3dde1e4cf0be6308267014935f" 263 | }, 264 | "m_SlotId": 0 265 | } 266 | }, 267 | { 268 | "m_OutputSlot": { 269 | "m_Node": { 270 | "m_Id": "954d75727c2b491a9fd2e25ea9226dee" 271 | }, 272 | "m_SlotId": 0 273 | }, 274 | "m_InputSlot": { 275 | "m_Node": { 276 | "m_Id": "dfcf6591ab4e435ca3ce2896e82644e0" 277 | }, 278 | "m_SlotId": 0 279 | } 280 | }, 281 | { 282 | "m_OutputSlot": { 283 | "m_Node": { 284 | "m_Id": "b3b509cbdea340388a156987f73aa9ea" 285 | }, 286 | "m_SlotId": 0 287 | }, 288 | "m_InputSlot": { 289 | "m_Node": { 290 | "m_Id": "7328c65de12f4cc4867dc72104467fb5" 291 | }, 292 | "m_SlotId": 1 293 | } 294 | }, 295 | { 296 | "m_OutputSlot": { 297 | "m_Node": { 298 | "m_Id": "c7ec1db8b2f6446da12e7f9103043eaf" 299 | }, 300 | "m_SlotId": 0 301 | }, 302 | "m_InputSlot": { 303 | "m_Node": { 304 | "m_Id": "cdeb8774b9cd4c3886917f2649581c9f" 305 | }, 306 | "m_SlotId": 0 307 | } 308 | }, 309 | { 310 | "m_OutputSlot": { 311 | "m_Node": { 312 | "m_Id": "cdeb8774b9cd4c3886917f2649581c9f" 313 | }, 314 | "m_SlotId": 2 315 | }, 316 | "m_InputSlot": { 317 | "m_Node": { 318 | "m_Id": "882b267de98345edaae66f071cdf4e8d" 319 | }, 320 | "m_SlotId": -1760772296 321 | } 322 | }, 323 | { 324 | "m_OutputSlot": { 325 | "m_Node": { 326 | "m_Id": "d480e936e16c485e863f38cae04078a0" 327 | }, 328 | "m_SlotId": 1 329 | }, 330 | "m_InputSlot": { 331 | "m_Node": { 332 | "m_Id": "48156ff5beff4788a2c0407e57948c0d" 333 | }, 334 | "m_SlotId": 0 335 | } 336 | }, 337 | { 338 | "m_OutputSlot": { 339 | "m_Node": { 340 | "m_Id": "da8b5cd4a006492d8e5f63fa74595d6a" 341 | }, 342 | "m_SlotId": 0 343 | }, 344 | "m_InputSlot": { 345 | "m_Node": { 346 | "m_Id": "d480e936e16c485e863f38cae04078a0" 347 | }, 348 | "m_SlotId": 0 349 | } 350 | }, 351 | { 352 | "m_OutputSlot": { 353 | "m_Node": { 354 | "m_Id": "dfcf6591ab4e435ca3ce2896e82644e0" 355 | }, 356 | "m_SlotId": 1 357 | }, 358 | "m_InputSlot": { 359 | "m_Node": { 360 | "m_Id": "166ea44576c94dea9deab688ad101e8b" 361 | }, 362 | "m_SlotId": 1 363 | } 364 | }, 365 | { 366 | "m_OutputSlot": { 367 | "m_Node": { 368 | "m_Id": "dfcf6591ab4e435ca3ce2896e82644e0" 369 | }, 370 | "m_SlotId": 2 371 | }, 372 | "m_InputSlot": { 373 | "m_Node": { 374 | "m_Id": "166ea44576c94dea9deab688ad101e8b" 375 | }, 376 | "m_SlotId": 2 377 | } 378 | }, 379 | { 380 | "m_OutputSlot": { 381 | "m_Node": { 382 | "m_Id": "dfcf6591ab4e435ca3ce2896e82644e0" 383 | }, 384 | "m_SlotId": 3 385 | }, 386 | "m_InputSlot": { 387 | "m_Node": { 388 | "m_Id": "5b39f38ec727449eaad228da130fd2db" 389 | }, 390 | "m_SlotId": 1 391 | } 392 | }, 393 | { 394 | "m_OutputSlot": { 395 | "m_Node": { 396 | "m_Id": "dfcf6591ab4e435ca3ce2896e82644e0" 397 | }, 398 | "m_SlotId": 4 399 | }, 400 | "m_InputSlot": { 401 | "m_Node": { 402 | "m_Id": "5b39f38ec727449eaad228da130fd2db" 403 | }, 404 | "m_SlotId": 2 405 | } 406 | } 407 | ], 408 | "m_VertexContext": { 409 | "m_Position": { 410 | "x": -340.9998474121094, 411 | "y": -75.99998474121094 412 | }, 413 | "m_Blocks": [ 414 | { 415 | "m_Id": "1b17132e10914d1a86d9a118f47e1116" 416 | }, 417 | { 418 | "m_Id": "93a932fb0ef24b90a1d0ea4ea5dfe079" 419 | }, 420 | { 421 | "m_Id": "ac077eea71474fb580b59c362b3db676" 422 | } 423 | ] 424 | }, 425 | "m_FragmentContext": { 426 | "m_Position": { 427 | "x": -340.99993896484377, 428 | "y": 435.9999694824219 429 | }, 430 | "m_Blocks": [ 431 | { 432 | "m_Id": "d1171b3dde1e4cf0be6308267014935f" 433 | } 434 | ] 435 | }, 436 | "m_PreviewData": { 437 | "serializedMesh": { 438 | "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", 439 | "m_Guid": "" 440 | }, 441 | "preventRotation": false 442 | }, 443 | "m_Path": "Shader Graphs", 444 | "m_GraphPrecision": 1, 445 | "m_PreviewMode": 2, 446 | "m_OutputNode": { 447 | "m_Id": "" 448 | }, 449 | "m_ActiveTargets": [ 450 | { 451 | "m_Id": "c2bb087a92914587953dc93db0220ecf" 452 | } 453 | ] 454 | } 455 | 456 | { 457 | "m_SGVersion": 0, 458 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 459 | "m_ObjectId": "00c9e33b22734e419524f7b17dbd965a", 460 | "m_Id": 6, 461 | "m_DisplayName": "B", 462 | "m_SlotType": 1, 463 | "m_Hidden": false, 464 | "m_ShaderOutputName": "B", 465 | "m_StageCapability": 2, 466 | "m_Value": 0.0, 467 | "m_DefaultValue": 0.0, 468 | "m_Labels": [] 469 | } 470 | 471 | { 472 | "m_SGVersion": 0, 473 | "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", 474 | "m_ObjectId": "050210c960ad422faef99cddea3ce607", 475 | "m_Guid": { 476 | "m_GuidSerialized": "1df1c9e0-666a-4aec-bfa7-1463c58445e2" 477 | }, 478 | "m_Name": "NormalMap", 479 | "m_DefaultRefNameVersion": 1, 480 | "m_RefNameGeneratedByDisplayName": "NormalMap", 481 | "m_DefaultReferenceName": "_NormalMap", 482 | "m_OverrideReferenceName": "_BumpMap", 483 | "m_GeneratePropertyBlock": true, 484 | "m_UseCustomSlotLabel": false, 485 | "m_CustomSlotLabel": "", 486 | "m_Precision": 0, 487 | "overrideHLSLDeclaration": false, 488 | "hlslDeclarationOverride": 0, 489 | "m_Hidden": false, 490 | "m_Value": { 491 | "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", 492 | "m_Guid": "" 493 | }, 494 | "isMainTexture": false, 495 | "useTilingAndOffset": false, 496 | "m_Modifiable": true, 497 | "m_DefaultType": 3 498 | } 499 | 500 | { 501 | "m_SGVersion": 1, 502 | "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", 503 | "m_ObjectId": "05381585da7a454e87629f9ff3e4a326", 504 | "m_Group": { 505 | "m_Id": "" 506 | }, 507 | "m_Name": "GetInstanceID (Custom Function)", 508 | "m_DrawState": { 509 | "m_Expanded": true, 510 | "m_Position": { 511 | "serializedVersion": "2", 512 | "x": -1103.0, 513 | "y": 137.00003051757813, 514 | "width": 235.00006103515626, 515 | "height": 94.00001525878906 516 | } 517 | }, 518 | "m_Slots": [ 519 | { 520 | "m_Id": "e4a5039fd28b4eb1ba7ce4d9308e954c" 521 | } 522 | ], 523 | "synonyms": [ 524 | "code", 525 | "HLSL" 526 | ], 527 | "m_Precision": 0, 528 | "m_PreviewExpanded": false, 529 | "m_PreviewMode": 0, 530 | "m_CustomColors": { 531 | "m_SerializableColors": [] 532 | }, 533 | "m_SourceType": 0, 534 | "m_FunctionName": "GetInstanceID", 535 | "m_FunctionSource": "f59ac7eb4d78f4d4cad9969716dba62e", 536 | "m_FunctionBody": "Enter function body here..." 537 | } 538 | 539 | { 540 | "m_SGVersion": 0, 541 | "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", 542 | "m_ObjectId": "09b1505a5ae14d86930c62c6afdef6b5", 543 | "m_Id": 2, 544 | "m_DisplayName": "UV", 545 | "m_SlotType": 0, 546 | "m_Hidden": false, 547 | "m_ShaderOutputName": "UV", 548 | "m_StageCapability": 3, 549 | "m_Value": { 550 | "x": 0.0, 551 | "y": 0.0 552 | }, 553 | "m_DefaultValue": { 554 | "x": 0.0, 555 | "y": 0.0 556 | }, 557 | "m_Labels": [], 558 | "m_Channel": 0 559 | } 560 | 561 | { 562 | "m_SGVersion": 0, 563 | "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", 564 | "m_ObjectId": "0a29f17e0e104acf8a1b0d21002a98d0", 565 | "m_Id": 0, 566 | "m_DisplayName": "Out", 567 | "m_SlotType": 1, 568 | "m_Hidden": false, 569 | "m_ShaderOutputName": "Out", 570 | "m_StageCapability": 3, 571 | "m_Value": { 572 | "x": 0.0, 573 | "y": 0.0 574 | }, 575 | "m_DefaultValue": { 576 | "x": 0.0, 577 | "y": 0.0 578 | }, 579 | "m_Labels": [] 580 | } 581 | 582 | { 583 | "m_SGVersion": 1, 584 | "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", 585 | "m_ObjectId": "0d8900a274bc4f4b9792fd57b61547d2", 586 | "m_Guid": { 587 | "m_GuidSerialized": "e9d72e68-5460-43f3-9c0f-c3cdccc04da1" 588 | }, 589 | "m_Name": "INSTANCING", 590 | "m_DefaultRefNameVersion": 1, 591 | "m_RefNameGeneratedByDisplayName": "INSTANCING", 592 | "m_DefaultReferenceName": "_INSTANCING", 593 | "m_OverrideReferenceName": "PROCEDURAL_INSTANCING_ON", 594 | "m_GeneratePropertyBlock": false, 595 | "m_UseCustomSlotLabel": false, 596 | "m_CustomSlotLabel": "", 597 | "m_KeywordType": 0, 598 | "m_KeywordDefinition": 1, 599 | "m_KeywordScope": 1, 600 | "m_KeywordStages": 63, 601 | "m_Entries": [], 602 | "m_Value": 0, 603 | "m_IsEditable": true 604 | } 605 | 606 | { 607 | "m_SGVersion": 0, 608 | "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", 609 | "m_ObjectId": "1250f662bca143a79b74fc641d22ffd6", 610 | "m_Group": { 611 | "m_Id": "" 612 | }, 613 | "m_Name": "Sample Texture 2D", 614 | "m_DrawState": { 615 | "m_Expanded": false, 616 | "m_Position": { 617 | "serializedVersion": "2", 618 | "x": -1004.0, 619 | "y": 593.0, 620 | "width": 180.0, 621 | "height": 178.99993896484376 622 | } 623 | }, 624 | "m_Slots": [ 625 | { 626 | "m_Id": "f7982a86cc3444e087808792c39e6ca2" 627 | }, 628 | { 629 | "m_Id": "2023f3538af4401f8f030477a2df1f87" 630 | }, 631 | { 632 | "m_Id": "daae0955f6c5493eb979f4616fef7575" 633 | }, 634 | { 635 | "m_Id": "bff67e568de144f3b854de6d32557d9b" 636 | }, 637 | { 638 | "m_Id": "e27c87b86b8e49c58dbf777c6ec8bfae" 639 | }, 640 | { 641 | "m_Id": "bb9c2517eaf6438994dcd6c27273c2b4" 642 | }, 643 | { 644 | "m_Id": "09b1505a5ae14d86930c62c6afdef6b5" 645 | }, 646 | { 647 | "m_Id": "6b6050e6fced4658aa0062e096d75570" 648 | } 649 | ], 650 | "synonyms": [ 651 | "tex2d" 652 | ], 653 | "m_Precision": 0, 654 | "m_PreviewExpanded": false, 655 | "m_PreviewMode": 0, 656 | "m_CustomColors": { 657 | "m_SerializableColors": [] 658 | }, 659 | "m_TextureType": 1, 660 | "m_NormalMapSpace": 0, 661 | "m_EnableGlobalMipBias": true 662 | } 663 | 664 | { 665 | "m_SGVersion": 0, 666 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 667 | "m_ObjectId": "14cce99982bd477c92c3faf253b140ae", 668 | "m_Id": 4, 669 | "m_DisplayName": "A", 670 | "m_SlotType": 1, 671 | "m_Hidden": false, 672 | "m_ShaderOutputName": "A", 673 | "m_StageCapability": 3, 674 | "m_Value": 0.0, 675 | "m_DefaultValue": 0.0, 676 | "m_Labels": [] 677 | } 678 | 679 | { 680 | "m_SGVersion": 1, 681 | "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", 682 | "m_ObjectId": "1644ac09378e45fb84198e184718fd0f", 683 | "m_Guid": { 684 | "m_GuidSerialized": "f57903b9-45e7-4032-8531-dc05d1bde871" 685 | }, 686 | "m_Name": "NormalStrength", 687 | "m_DefaultRefNameVersion": 1, 688 | "m_RefNameGeneratedByDisplayName": "NormalStrength", 689 | "m_DefaultReferenceName": "_NormalStrength", 690 | "m_OverrideReferenceName": "", 691 | "m_GeneratePropertyBlock": true, 692 | "m_UseCustomSlotLabel": false, 693 | "m_CustomSlotLabel": "", 694 | "m_Precision": 0, 695 | "overrideHLSLDeclaration": false, 696 | "hlslDeclarationOverride": 0, 697 | "m_Hidden": false, 698 | "m_Value": 1.0, 699 | "m_FloatType": 1, 700 | "m_RangeValues": { 701 | "x": 0.0, 702 | "y": 1.5 703 | } 704 | } 705 | 706 | { 707 | "m_SGVersion": 0, 708 | "m_Type": "UnityEditor.ShaderGraph.Vector2Node", 709 | "m_ObjectId": "166ea44576c94dea9deab688ad101e8b", 710 | "m_Group": { 711 | "m_Id": "" 712 | }, 713 | "m_Name": "Vector 2", 714 | "m_DrawState": { 715 | "m_Expanded": true, 716 | "m_Position": { 717 | "serializedVersion": "2", 718 | "x": -1488.0, 719 | "y": 506.0000305175781, 720 | "width": 128.0, 721 | "height": 101.00003051757813 722 | } 723 | }, 724 | "m_Slots": [ 725 | { 726 | "m_Id": "8db947192d1e455a88f92e845eb4cba9" 727 | }, 728 | { 729 | "m_Id": "4110adf29eab40849734f5aa94e6821d" 730 | }, 731 | { 732 | "m_Id": "d97d5fbfde3441829a514ff1787be9e6" 733 | } 734 | ], 735 | "synonyms": [ 736 | "2", 737 | "v2", 738 | "vec2", 739 | "float2" 740 | ], 741 | "m_Precision": 0, 742 | "m_PreviewExpanded": true, 743 | "m_PreviewMode": 0, 744 | "m_CustomColors": { 745 | "m_SerializableColors": [] 746 | }, 747 | "m_Value": { 748 | "x": 0.0, 749 | "y": 0.0 750 | } 751 | } 752 | 753 | { 754 | "m_SGVersion": 0, 755 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 756 | "m_ObjectId": "19affb6be5df4515ac394e0f50eeb818", 757 | "m_Id": 0, 758 | "m_DisplayName": "NormalStrength", 759 | "m_SlotType": 1, 760 | "m_Hidden": false, 761 | "m_ShaderOutputName": "Out", 762 | "m_StageCapability": 3, 763 | "m_Value": 0.0, 764 | "m_DefaultValue": 0.0, 765 | "m_Labels": [] 766 | } 767 | 768 | { 769 | "m_SGVersion": 0, 770 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 771 | "m_ObjectId": "1b17132e10914d1a86d9a118f47e1116", 772 | "m_Group": { 773 | "m_Id": "" 774 | }, 775 | "m_Name": "VertexDescription.Position", 776 | "m_DrawState": { 777 | "m_Expanded": true, 778 | "m_Position": { 779 | "serializedVersion": "2", 780 | "x": 0.0, 781 | "y": 0.0, 782 | "width": 0.0, 783 | "height": 0.0 784 | } 785 | }, 786 | "m_Slots": [ 787 | { 788 | "m_Id": "dc11446c05a3430d86d57793232e3160" 789 | } 790 | ], 791 | "synonyms": [], 792 | "m_Precision": 0, 793 | "m_PreviewExpanded": true, 794 | "m_PreviewMode": 0, 795 | "m_CustomColors": { 796 | "m_SerializableColors": [] 797 | }, 798 | "m_SerializedDescriptor": "VertexDescription.Position" 799 | } 800 | 801 | { 802 | "m_SGVersion": 0, 803 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 804 | "m_ObjectId": "1b4d777a7c6946edb79aa12dd8841444", 805 | "m_Id": 3, 806 | "m_DisplayName": "B", 807 | "m_SlotType": 1, 808 | "m_Hidden": false, 809 | "m_ShaderOutputName": "B", 810 | "m_StageCapability": 3, 811 | "m_Value": 0.0, 812 | "m_DefaultValue": 0.0, 813 | "m_Labels": [] 814 | } 815 | 816 | { 817 | "m_SGVersion": 0, 818 | "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", 819 | "m_ObjectId": "1c3390da5f164bc09b38a7e9aa3b240e", 820 | "m_Id": 0, 821 | "m_DisplayName": "BaseMap", 822 | "m_SlotType": 1, 823 | "m_Hidden": false, 824 | "m_ShaderOutputName": "Out", 825 | "m_StageCapability": 3, 826 | "m_BareResource": false 827 | } 828 | 829 | { 830 | "m_SGVersion": 0, 831 | "m_Type": "UnityEditor.ShaderGraph.TilingAndOffsetNode", 832 | "m_ObjectId": "1dd766ab4cf94ed093f1577a8b69f250", 833 | "m_Group": { 834 | "m_Id": "" 835 | }, 836 | "m_Name": "Tiling And Offset", 837 | "m_DrawState": { 838 | "m_Expanded": true, 839 | "m_Position": { 840 | "serializedVersion": "2", 841 | "x": -1262.9998779296875, 842 | "y": 525.0000610351563, 843 | "width": 154.9998779296875, 844 | "height": 141.99993896484376 845 | } 846 | }, 847 | "m_Slots": [ 848 | { 849 | "m_Id": "2a7a065895854edd8614b0406d0fa82f" 850 | }, 851 | { 852 | "m_Id": "31841dc852a141448d02a3799e1d8545" 853 | }, 854 | { 855 | "m_Id": "7582fc91c5754badac200826f54271b6" 856 | }, 857 | { 858 | "m_Id": "64033683b10945579f55ef7759b6371f" 859 | } 860 | ], 861 | "synonyms": [ 862 | "pan", 863 | "scale" 864 | ], 865 | "m_Precision": 0, 866 | "m_PreviewExpanded": false, 867 | "m_PreviewMode": 0, 868 | "m_CustomColors": { 869 | "m_SerializableColors": [] 870 | } 871 | } 872 | 873 | { 874 | "m_SGVersion": 0, 875 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 876 | "m_ObjectId": "2023f3538af4401f8f030477a2df1f87", 877 | "m_Id": 4, 878 | "m_DisplayName": "R", 879 | "m_SlotType": 1, 880 | "m_Hidden": false, 881 | "m_ShaderOutputName": "R", 882 | "m_StageCapability": 2, 883 | "m_Value": 0.0, 884 | "m_DefaultValue": 0.0, 885 | "m_Labels": [] 886 | } 887 | 888 | { 889 | "m_SGVersion": 0, 890 | "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", 891 | "m_ObjectId": "229dc0b019d84f6fa8eeed435d8ed8bc", 892 | "m_Id": 0, 893 | "m_DisplayName": "Color", 894 | "m_SlotType": 1, 895 | "m_Hidden": false, 896 | "m_ShaderOutputName": "Out", 897 | "m_StageCapability": 3, 898 | "m_Value": { 899 | "x": 0.0, 900 | "y": 0.0, 901 | "z": 0.0, 902 | "w": 0.0 903 | }, 904 | "m_DefaultValue": { 905 | "x": 0.0, 906 | "y": 0.0, 907 | "z": 0.0, 908 | "w": 0.0 909 | }, 910 | "m_Labels": [] 911 | } 912 | 913 | { 914 | "m_SGVersion": 2, 915 | "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", 916 | "m_ObjectId": "286abc09bd554a4c82f74373a9153916" 917 | } 918 | 919 | { 920 | "m_SGVersion": 0, 921 | "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", 922 | "m_ObjectId": "2a7a065895854edd8614b0406d0fa82f", 923 | "m_Id": 0, 924 | "m_DisplayName": "UV", 925 | "m_SlotType": 0, 926 | "m_Hidden": false, 927 | "m_ShaderOutputName": "UV", 928 | "m_StageCapability": 3, 929 | "m_Value": { 930 | "x": 0.0, 931 | "y": 0.0 932 | }, 933 | "m_DefaultValue": { 934 | "x": 0.0, 935 | "y": 0.0 936 | }, 937 | "m_Labels": [], 938 | "m_Channel": 0 939 | } 940 | 941 | { 942 | "m_SGVersion": 0, 943 | "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", 944 | "m_ObjectId": "310b7adc5cc8401db8595ce254349efa", 945 | "m_Id": 0, 946 | "m_DisplayName": "Out", 947 | "m_SlotType": 1, 948 | "m_Hidden": false, 949 | "m_ShaderOutputName": "Out", 950 | "m_StageCapability": 3, 951 | "m_Value": { 952 | "x": 0.0, 953 | "y": 0.0, 954 | "z": 0.0 955 | }, 956 | "m_DefaultValue": { 957 | "x": 0.0, 958 | "y": 0.0, 959 | "z": 0.0 960 | }, 961 | "m_Labels": [] 962 | } 963 | 964 | { 965 | "m_SGVersion": 0, 966 | "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", 967 | "m_ObjectId": "31841dc852a141448d02a3799e1d8545", 968 | "m_Id": 1, 969 | "m_DisplayName": "Tiling", 970 | "m_SlotType": 0, 971 | "m_Hidden": false, 972 | "m_ShaderOutputName": "Tiling", 973 | "m_StageCapability": 3, 974 | "m_Value": { 975 | "x": 1.0, 976 | "y": 1.0 977 | }, 978 | "m_DefaultValue": { 979 | "x": 0.0, 980 | "y": 0.0 981 | }, 982 | "m_Labels": [] 983 | } 984 | 985 | { 986 | "m_SGVersion": 0, 987 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 988 | "m_ObjectId": "4110adf29eab40849734f5aa94e6821d", 989 | "m_Id": 2, 990 | "m_DisplayName": "Y", 991 | "m_SlotType": 0, 992 | "m_Hidden": false, 993 | "m_ShaderOutputName": "Y", 994 | "m_StageCapability": 3, 995 | "m_Value": 0.0, 996 | "m_DefaultValue": 0.0, 997 | "m_Labels": [ 998 | "Y" 999 | ] 1000 | } 1001 | 1002 | { 1003 | "m_SGVersion": 0, 1004 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 1005 | "m_ObjectId": "4120b8ab59a148dda50bd599e473f44e", 1006 | "m_Id": 2, 1007 | "m_DisplayName": "G", 1008 | "m_SlotType": 1, 1009 | "m_Hidden": false, 1010 | "m_ShaderOutputName": "G", 1011 | "m_StageCapability": 3, 1012 | "m_Value": 0.0, 1013 | "m_DefaultValue": 0.0, 1014 | "m_Labels": [] 1015 | } 1016 | 1017 | { 1018 | "m_SGVersion": 0, 1019 | "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", 1020 | "m_ObjectId": "4314a8b269714a5dbecacd4a93c3c62c", 1021 | "m_Id": 0, 1022 | "m_DisplayName": "Normal", 1023 | "m_SlotType": 0, 1024 | "m_Hidden": false, 1025 | "m_ShaderOutputName": "Normal", 1026 | "m_StageCapability": 1, 1027 | "m_Value": { 1028 | "x": 0.0, 1029 | "y": 0.0, 1030 | "z": 0.0 1031 | }, 1032 | "m_DefaultValue": { 1033 | "x": 0.0, 1034 | "y": 0.0, 1035 | "z": 0.0 1036 | }, 1037 | "m_Labels": [], 1038 | "m_Space": 0 1039 | } 1040 | 1041 | { 1042 | "m_SGVersion": 0, 1043 | "m_Type": "UnityEditor.ShaderGraph.PropertyNode", 1044 | "m_ObjectId": "446202ee5c964876bb9116f5cd6adee1", 1045 | "m_Group": { 1046 | "m_Id": "" 1047 | }, 1048 | "m_Name": "Property", 1049 | "m_DrawState": { 1050 | "m_Expanded": true, 1051 | "m_Position": { 1052 | "serializedVersion": "2", 1053 | "x": -981.9999389648438, 1054 | "y": 771.9999389648438, 1055 | "width": 157.99993896484376, 1056 | "height": 34.0 1057 | } 1058 | }, 1059 | "m_Slots": [ 1060 | { 1061 | "m_Id": "19affb6be5df4515ac394e0f50eeb818" 1062 | } 1063 | ], 1064 | "synonyms": [], 1065 | "m_Precision": 0, 1066 | "m_PreviewExpanded": true, 1067 | "m_PreviewMode": 0, 1068 | "m_CustomColors": { 1069 | "m_SerializableColors": [] 1070 | }, 1071 | "m_Property": { 1072 | "m_Id": "1644ac09378e45fb84198e184718fd0f" 1073 | } 1074 | } 1075 | 1076 | { 1077 | "m_SGVersion": 0, 1078 | "m_Type": "UnityEditor.ShaderGraph.PropertyNode", 1079 | "m_ObjectId": "44dba447cf714c4db1959d044c99eef9", 1080 | "m_Group": { 1081 | "m_Id": "" 1082 | }, 1083 | "m_Name": "Property", 1084 | "m_DrawState": { 1085 | "m_Expanded": true, 1086 | "m_Position": { 1087 | "serializedVersion": "2", 1088 | "x": -1252.0, 1089 | "y": 682.0000610351563, 1090 | "width": 144.0, 1091 | "height": 34.0 1092 | } 1093 | }, 1094 | "m_Slots": [ 1095 | { 1096 | "m_Id": "eff8baf3ea534271b59097ac49d7bd65" 1097 | } 1098 | ], 1099 | "synonyms": [], 1100 | "m_Precision": 0, 1101 | "m_PreviewExpanded": true, 1102 | "m_PreviewMode": 0, 1103 | "m_CustomColors": { 1104 | "m_SerializableColors": [] 1105 | }, 1106 | "m_Property": { 1107 | "m_Id": "050210c960ad422faef99cddea3ce607" 1108 | } 1109 | } 1110 | 1111 | { 1112 | "m_SGVersion": 0, 1113 | "m_Type": "UnityEditor.ShaderGraph.CategoryData", 1114 | "m_ObjectId": "457c8dceb21744e4a0953802565bdfe0", 1115 | "m_Name": "", 1116 | "m_ChildObjectList": [ 1117 | { 1118 | "m_Id": "0d8900a274bc4f4b9792fd57b61547d2" 1119 | }, 1120 | { 1121 | "m_Id": "b43fdb88f4f5470da0365dfb7687e286" 1122 | }, 1123 | { 1124 | "m_Id": "f09bb54bc7b14f78b0ca906d5385ef21" 1125 | }, 1126 | { 1127 | "m_Id": "d58af34ab2fe4681a978f842477bcf48" 1128 | } 1129 | ] 1130 | } 1131 | 1132 | { 1133 | "m_SGVersion": 0, 1134 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 1135 | "m_ObjectId": "4585b223eb0f4d26a0e199d2113b369b", 1136 | "m_Id": 7, 1137 | "m_DisplayName": "A", 1138 | "m_SlotType": 1, 1139 | "m_Hidden": false, 1140 | "m_ShaderOutputName": "A", 1141 | "m_StageCapability": 2, 1142 | "m_Value": 0.0, 1143 | "m_DefaultValue": 0.0, 1144 | "m_Labels": [] 1145 | } 1146 | 1147 | { 1148 | "m_SGVersion": 1, 1149 | "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", 1150 | "m_ObjectId": "48156ff5beff4788a2c0407e57948c0d", 1151 | "m_Group": { 1152 | "m_Id": "" 1153 | }, 1154 | "m_Name": "Options (Custom Function)", 1155 | "m_DrawState": { 1156 | "m_Expanded": true, 1157 | "m_Position": { 1158 | "serializedVersion": "2", 1159 | "x": -615.9998779296875, 1160 | "y": -122.99998474121094, 1161 | "width": 198.99996948242188, 1162 | "height": 94.0 1163 | } 1164 | }, 1165 | "m_Slots": [ 1166 | { 1167 | "m_Id": "8a1ad8b4f90548a9a9abe8a1fe3d6917" 1168 | }, 1169 | { 1170 | "m_Id": "6eec9a741bad45f3bd9a363c41e09cb2" 1171 | } 1172 | ], 1173 | "synonyms": [ 1174 | "code", 1175 | "HLSL" 1176 | ], 1177 | "m_Precision": 0, 1178 | "m_PreviewExpanded": false, 1179 | "m_PreviewMode": 0, 1180 | "m_CustomColors": { 1181 | "m_SerializableColors": [] 1182 | }, 1183 | "m_SourceType": 1, 1184 | "m_FunctionName": "Options", 1185 | "m_FunctionSource": "f59ac7eb4d78f4d4cad9969716dba62e", 1186 | "m_FunctionBody": "Out = In;\r\n#pragma instancing_options procedural:vertInstancingSetup" 1187 | } 1188 | 1189 | { 1190 | "m_SGVersion": 0, 1191 | "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", 1192 | "m_ObjectId": "4cc615fdc6f348808c1d0b9c331948e2", 1193 | "m_Id": 0, 1194 | "m_DisplayName": "Base Color", 1195 | "m_SlotType": 0, 1196 | "m_Hidden": false, 1197 | "m_ShaderOutputName": "BaseColor", 1198 | "m_StageCapability": 2, 1199 | "m_Value": { 1200 | "x": 0.5, 1201 | "y": 0.5, 1202 | "z": 0.5 1203 | }, 1204 | "m_DefaultValue": { 1205 | "x": 0.0, 1206 | "y": 0.0, 1207 | "z": 0.0 1208 | }, 1209 | "m_Labels": [], 1210 | "m_ColorMode": 0, 1211 | "m_DefaultColor": { 1212 | "r": 0.5, 1213 | "g": 0.5, 1214 | "b": 0.5, 1215 | "a": 1.0 1216 | } 1217 | } 1218 | 1219 | { 1220 | "m_SGVersion": 0, 1221 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 1222 | "m_ObjectId": "526a1e1a4c154f1bb8c425b39cadd749", 1223 | "m_Id": 2, 1224 | "m_DisplayName": "Y", 1225 | "m_SlotType": 0, 1226 | "m_Hidden": false, 1227 | "m_ShaderOutputName": "Y", 1228 | "m_StageCapability": 3, 1229 | "m_Value": 0.0, 1230 | "m_DefaultValue": 0.0, 1231 | "m_Labels": [ 1232 | "Y" 1233 | ] 1234 | } 1235 | 1236 | { 1237 | "m_SGVersion": 0, 1238 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 1239 | "m_ObjectId": "52f8ba8530634593b1d6bb22b09cd1f0", 1240 | "m_Id": 1, 1241 | "m_DisplayName": "R", 1242 | "m_SlotType": 1, 1243 | "m_Hidden": false, 1244 | "m_ShaderOutputName": "R", 1245 | "m_StageCapability": 3, 1246 | "m_Value": 0.0, 1247 | "m_DefaultValue": 0.0, 1248 | "m_Labels": [] 1249 | } 1250 | 1251 | { 1252 | "m_SGVersion": 0, 1253 | "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", 1254 | "m_ObjectId": "580055e2fa3f4fae8486fe79d4c927df", 1255 | "m_Id": 3, 1256 | "m_DisplayName": "Sampler", 1257 | "m_SlotType": 0, 1258 | "m_Hidden": false, 1259 | "m_ShaderOutputName": "Sampler", 1260 | "m_StageCapability": 3, 1261 | "m_BareResource": false 1262 | } 1263 | 1264 | { 1265 | "m_SGVersion": 0, 1266 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 1267 | "m_ObjectId": "59a1a2b676104656a2087732000cbcc5", 1268 | "m_Id": -1227218704, 1269 | "m_DisplayName": "NormalStrenght", 1270 | "m_SlotType": 0, 1271 | "m_Hidden": false, 1272 | "m_ShaderOutputName": "_NormalStrenght", 1273 | "m_StageCapability": 3, 1274 | "m_Value": 1.0, 1275 | "m_DefaultValue": 0.0, 1276 | "m_Labels": [] 1277 | } 1278 | 1279 | { 1280 | "m_SGVersion": 0, 1281 | "m_Type": "UnityEditor.ShaderGraph.Vector2Node", 1282 | "m_ObjectId": "5b39f38ec727449eaad228da130fd2db", 1283 | "m_Group": { 1284 | "m_Id": "" 1285 | }, 1286 | "m_Name": "Vector 2", 1287 | "m_DrawState": { 1288 | "m_Expanded": true, 1289 | "m_Position": { 1290 | "serializedVersion": "2", 1291 | "x": -1488.0, 1292 | "y": 607.0000610351563, 1293 | "width": 128.0, 1294 | "height": 101.0 1295 | } 1296 | }, 1297 | "m_Slots": [ 1298 | { 1299 | "m_Id": "d358161bb38c4a94ae7de38b52f08226" 1300 | }, 1301 | { 1302 | "m_Id": "526a1e1a4c154f1bb8c425b39cadd749" 1303 | }, 1304 | { 1305 | "m_Id": "0a29f17e0e104acf8a1b0d21002a98d0" 1306 | } 1307 | ], 1308 | "synonyms": [ 1309 | "2", 1310 | "v2", 1311 | "vec2", 1312 | "float2" 1313 | ], 1314 | "m_Precision": 0, 1315 | "m_PreviewExpanded": true, 1316 | "m_PreviewMode": 0, 1317 | "m_CustomColors": { 1318 | "m_SerializableColors": [] 1319 | }, 1320 | "m_Value": { 1321 | "x": 0.0, 1322 | "y": 0.0 1323 | } 1324 | } 1325 | 1326 | { 1327 | "m_SGVersion": 0, 1328 | "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", 1329 | "m_ObjectId": "60f3abd8656c46cc9dca4bf1a4a2a474", 1330 | "m_Id": 0, 1331 | "m_DisplayName": "A", 1332 | "m_SlotType": 0, 1333 | "m_Hidden": false, 1334 | "m_ShaderOutputName": "A", 1335 | "m_StageCapability": 3, 1336 | "m_Value": { 1337 | "e00": 0.0, 1338 | "e01": 0.0, 1339 | "e02": 0.0, 1340 | "e03": 0.0, 1341 | "e10": 0.0, 1342 | "e11": 0.0, 1343 | "e12": 0.0, 1344 | "e13": 0.0, 1345 | "e20": 0.0, 1346 | "e21": 0.0, 1347 | "e22": 0.0, 1348 | "e23": 0.0, 1349 | "e30": 0.0, 1350 | "e31": 0.0, 1351 | "e32": 0.0, 1352 | "e33": 0.0 1353 | }, 1354 | "m_DefaultValue": { 1355 | "e00": 1.0, 1356 | "e01": 0.0, 1357 | "e02": 0.0, 1358 | "e03": 0.0, 1359 | "e10": 0.0, 1360 | "e11": 1.0, 1361 | "e12": 0.0, 1362 | "e13": 0.0, 1363 | "e20": 0.0, 1364 | "e21": 0.0, 1365 | "e22": 1.0, 1366 | "e23": 0.0, 1367 | "e30": 0.0, 1368 | "e31": 0.0, 1369 | "e32": 0.0, 1370 | "e33": 1.0 1371 | } 1372 | } 1373 | 1374 | { 1375 | "m_SGVersion": 0, 1376 | "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", 1377 | "m_ObjectId": "64033683b10945579f55ef7759b6371f", 1378 | "m_Id": 3, 1379 | "m_DisplayName": "Out", 1380 | "m_SlotType": 1, 1381 | "m_Hidden": false, 1382 | "m_ShaderOutputName": "Out", 1383 | "m_StageCapability": 3, 1384 | "m_Value": { 1385 | "x": 0.0, 1386 | "y": 0.0 1387 | }, 1388 | "m_DefaultValue": { 1389 | "x": 0.0, 1390 | "y": 0.0 1391 | }, 1392 | "m_Labels": [] 1393 | } 1394 | 1395 | { 1396 | "m_SGVersion": 0, 1397 | "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", 1398 | "m_ObjectId": "6b6050e6fced4658aa0062e096d75570", 1399 | "m_Id": 3, 1400 | "m_DisplayName": "Sampler", 1401 | "m_SlotType": 0, 1402 | "m_Hidden": false, 1403 | "m_ShaderOutputName": "Sampler", 1404 | "m_StageCapability": 3, 1405 | "m_BareResource": false 1406 | } 1407 | 1408 | { 1409 | "m_SGVersion": 0, 1410 | "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", 1411 | "m_ObjectId": "6e24ac0ed2464b61a926dd6f874be0ec", 1412 | "m_Id": 0, 1413 | "m_DisplayName": "TileOffset", 1414 | "m_SlotType": 1, 1415 | "m_Hidden": false, 1416 | "m_ShaderOutputName": "Out", 1417 | "m_StageCapability": 3, 1418 | "m_Value": { 1419 | "x": 0.0, 1420 | "y": 0.0, 1421 | "z": 0.0, 1422 | "w": 0.0 1423 | }, 1424 | "m_DefaultValue": { 1425 | "x": 0.0, 1426 | "y": 0.0, 1427 | "z": 0.0, 1428 | "w": 0.0 1429 | }, 1430 | "m_Labels": [] 1431 | } 1432 | 1433 | { 1434 | "m_SGVersion": 0, 1435 | "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", 1436 | "m_ObjectId": "6eec9a741bad45f3bd9a363c41e09cb2", 1437 | "m_Id": 1, 1438 | "m_DisplayName": "Out", 1439 | "m_SlotType": 1, 1440 | "m_Hidden": false, 1441 | "m_ShaderOutputName": "Out", 1442 | "m_StageCapability": 3, 1443 | "m_Value": { 1444 | "x": 0.0, 1445 | "y": 0.0, 1446 | "z": 0.0 1447 | }, 1448 | "m_DefaultValue": { 1449 | "x": 0.0, 1450 | "y": 0.0, 1451 | "z": 0.0 1452 | }, 1453 | "m_Labels": [] 1454 | } 1455 | 1456 | { 1457 | "m_SGVersion": 0, 1458 | "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", 1459 | "m_ObjectId": "7328c65de12f4cc4867dc72104467fb5", 1460 | "m_Group": { 1461 | "m_Id": "" 1462 | }, 1463 | "m_Name": "Sample Texture 2D", 1464 | "m_DrawState": { 1465 | "m_Expanded": false, 1466 | "m_Position": { 1467 | "serializedVersion": "2", 1468 | "x": -1003.0, 1469 | "y": 414.0, 1470 | "width": 180.0, 1471 | "height": 179.0 1472 | } 1473 | }, 1474 | "m_Slots": [ 1475 | { 1476 | "m_Id": "8cd16fe3250841608eeb031a6390abe1" 1477 | }, 1478 | { 1479 | "m_Id": "aaa9b1a87e044306b63c6617b7611f96" 1480 | }, 1481 | { 1482 | "m_Id": "ca837aa87ce04e869e9166de628a8e45" 1483 | }, 1484 | { 1485 | "m_Id": "00c9e33b22734e419524f7b17dbd965a" 1486 | }, 1487 | { 1488 | "m_Id": "4585b223eb0f4d26a0e199d2113b369b" 1489 | }, 1490 | { 1491 | "m_Id": "a17172f289a346909576e290e0616a80" 1492 | }, 1493 | { 1494 | "m_Id": "9b719378cfe34f45982c2578a5953d72" 1495 | }, 1496 | { 1497 | "m_Id": "580055e2fa3f4fae8486fe79d4c927df" 1498 | } 1499 | ], 1500 | "synonyms": [ 1501 | "tex2d" 1502 | ], 1503 | "m_Precision": 0, 1504 | "m_PreviewExpanded": false, 1505 | "m_PreviewMode": 0, 1506 | "m_CustomColors": { 1507 | "m_SerializableColors": [] 1508 | }, 1509 | "m_TextureType": 0, 1510 | "m_NormalMapSpace": 0, 1511 | "m_EnableGlobalMipBias": true 1512 | } 1513 | 1514 | { 1515 | "m_SGVersion": 0, 1516 | "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", 1517 | "m_ObjectId": "7582fc91c5754badac200826f54271b6", 1518 | "m_Id": 2, 1519 | "m_DisplayName": "Offset", 1520 | "m_SlotType": 0, 1521 | "m_Hidden": false, 1522 | "m_ShaderOutputName": "Offset", 1523 | "m_StageCapability": 3, 1524 | "m_Value": { 1525 | "x": 0.0, 1526 | "y": 0.0 1527 | }, 1528 | "m_DefaultValue": { 1529 | "x": 0.0, 1530 | "y": 0.0 1531 | }, 1532 | "m_Labels": [] 1533 | } 1534 | 1535 | { 1536 | "m_SGVersion": 0, 1537 | "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", 1538 | "m_ObjectId": "77cea471d23b412ab27d0a80a90375eb", 1539 | "m_Id": 0, 1540 | "m_DisplayName": "Tangent", 1541 | "m_SlotType": 0, 1542 | "m_Hidden": false, 1543 | "m_ShaderOutputName": "Tangent", 1544 | "m_StageCapability": 1, 1545 | "m_Value": { 1546 | "x": 0.0, 1547 | "y": 0.0, 1548 | "z": 0.0 1549 | }, 1550 | "m_DefaultValue": { 1551 | "x": 0.0, 1552 | "y": 0.0, 1553 | "z": 0.0 1554 | }, 1555 | "m_Labels": [], 1556 | "m_Space": 0 1557 | } 1558 | 1559 | { 1560 | "m_SGVersion": 0, 1561 | "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", 1562 | "m_ObjectId": "7fb609c1be17414ba140b701332958df", 1563 | "m_Id": -1760772296, 1564 | "m_DisplayName": "Color", 1565 | "m_SlotType": 0, 1566 | "m_Hidden": false, 1567 | "m_ShaderOutputName": "_Color", 1568 | "m_StageCapability": 3, 1569 | "m_Value": { 1570 | "x": 1.0, 1571 | "y": 1.0, 1572 | "z": 1.0 1573 | }, 1574 | "m_DefaultValue": { 1575 | "x": 0.0, 1576 | "y": 0.0, 1577 | "z": 0.0 1578 | }, 1579 | "m_Labels": [] 1580 | } 1581 | 1582 | { 1583 | "m_SGVersion": 0, 1584 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 1585 | "m_ObjectId": "811758e8bd7f480cb060362f4a7c1e6e", 1586 | "m_Id": 0, 1587 | "m_DisplayName": "Depth", 1588 | "m_SlotType": 1, 1589 | "m_Hidden": false, 1590 | "m_ShaderOutputName": "Out", 1591 | "m_StageCapability": 3, 1592 | "m_Value": 0.0, 1593 | "m_DefaultValue": 0.0, 1594 | "m_Labels": [] 1595 | } 1596 | 1597 | { 1598 | "m_SGVersion": 0, 1599 | "m_Type": "UnityEditor.ShaderGraph.PropertyNode", 1600 | "m_ObjectId": "86e3364db3b042feb346dc5a927cf005", 1601 | "m_Group": { 1602 | "m_Id": "" 1603 | }, 1604 | "m_Name": "Property", 1605 | "m_DrawState": { 1606 | "m_Expanded": true, 1607 | "m_Position": { 1608 | "serializedVersion": "2", 1609 | "x": -931.0, 1610 | "y": 820.0, 1611 | "width": 107.0, 1612 | "height": 34.0 1613 | } 1614 | }, 1615 | "m_Slots": [ 1616 | { 1617 | "m_Id": "811758e8bd7f480cb060362f4a7c1e6e" 1618 | } 1619 | ], 1620 | "synonyms": [], 1621 | "m_Precision": 0, 1622 | "m_PreviewExpanded": true, 1623 | "m_PreviewMode": 0, 1624 | "m_CustomColors": { 1625 | "m_SerializableColors": [] 1626 | }, 1627 | "m_Property": { 1628 | "m_Id": "fdc6a43226c342bba273fb3743bcacb9" 1629 | } 1630 | } 1631 | 1632 | { 1633 | "m_SGVersion": 0, 1634 | "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", 1635 | "m_ObjectId": "882b267de98345edaae66f071cdf4e8d", 1636 | "m_Group": { 1637 | "m_Id": "" 1638 | }, 1639 | "m_Name": "GraphicsDrawLightModel", 1640 | "m_DrawState": { 1641 | "m_Expanded": true, 1642 | "m_Position": { 1643 | "serializedVersion": "2", 1644 | "x": -600.0000610351563, 1645 | "y": 436.0, 1646 | "width": 241.00003051757813, 1647 | "height": 371.0 1648 | } 1649 | }, 1650 | "m_Slots": [ 1651 | { 1652 | "m_Id": "7fb609c1be17414ba140b701332958df" 1653 | }, 1654 | { 1655 | "m_Id": "f98da561061c4bba9ffddfa7a5802168" 1656 | }, 1657 | { 1658 | "m_Id": "59a1a2b676104656a2087732000cbcc5" 1659 | }, 1660 | { 1661 | "m_Id": "d110f71f366e477e8a51061cb83f1558" 1662 | }, 1663 | { 1664 | "m_Id": "91236dc8aacf4a38b1936ded2e32d80b" 1665 | }, 1666 | { 1667 | "m_Id": "8bc8c6914b0248e08e264ebb6d5a0a13" 1668 | } 1669 | ], 1670 | "synonyms": [], 1671 | "m_Precision": 0, 1672 | "m_PreviewExpanded": true, 1673 | "m_PreviewMode": 0, 1674 | "m_CustomColors": { 1675 | "m_SerializableColors": [] 1676 | }, 1677 | "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"f686f5efba3b0a248b345d80db8b54d9\",\n \"type\": 3\n }\n}", 1678 | "m_PropertyGuids": [ 1679 | "548c2dd0-2546-4c52-81bf-be8fec107f43", 1680 | "793a3045-a24a-4193-a475-1b3e201f2153", 1681 | "1083cd01-2f81-477e-a4e2-8ad9d420ad38", 1682 | "420fb667-05a7-48f4-aaaa-22a352a6d53e" 1683 | ], 1684 | "m_PropertyIds": [ 1685 | -736122885, 1686 | 1435760779, 1687 | -1227218704, 1688 | -1760772296 1689 | ], 1690 | "m_Dropdowns": [ 1691 | "_Ambient" 1692 | ], 1693 | "m_DropdownSelectedEntries": [ 1694 | "OFF" 1695 | ] 1696 | } 1697 | 1698 | { 1699 | "m_SGVersion": 0, 1700 | "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", 1701 | "m_ObjectId": "8a1ad8b4f90548a9a9abe8a1fe3d6917", 1702 | "m_Id": 0, 1703 | "m_DisplayName": "In", 1704 | "m_SlotType": 0, 1705 | "m_Hidden": false, 1706 | "m_ShaderOutputName": "In", 1707 | "m_StageCapability": 3, 1708 | "m_Value": { 1709 | "x": 0.0, 1710 | "y": 0.0, 1711 | "z": 0.0 1712 | }, 1713 | "m_DefaultValue": { 1714 | "x": 0.0, 1715 | "y": 0.0, 1716 | "z": 0.0 1717 | }, 1718 | "m_Labels": [] 1719 | } 1720 | 1721 | { 1722 | "m_SGVersion": 0, 1723 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 1724 | "m_ObjectId": "8bc8c6914b0248e08e264ebb6d5a0a13", 1725 | "m_Id": 2, 1726 | "m_DisplayName": "LightModel", 1727 | "m_SlotType": 1, 1728 | "m_Hidden": false, 1729 | "m_ShaderOutputName": "LightModel", 1730 | "m_StageCapability": 3, 1731 | "m_Value": 0.0, 1732 | "m_DefaultValue": 0.0, 1733 | "m_Labels": [] 1734 | } 1735 | 1736 | { 1737 | "m_SGVersion": 0, 1738 | "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", 1739 | "m_ObjectId": "8cd16fe3250841608eeb031a6390abe1", 1740 | "m_Id": 0, 1741 | "m_DisplayName": "RGBA", 1742 | "m_SlotType": 1, 1743 | "m_Hidden": false, 1744 | "m_ShaderOutputName": "RGBA", 1745 | "m_StageCapability": 2, 1746 | "m_Value": { 1747 | "x": 0.0, 1748 | "y": 0.0, 1749 | "z": 0.0, 1750 | "w": 0.0 1751 | }, 1752 | "m_DefaultValue": { 1753 | "x": 0.0, 1754 | "y": 0.0, 1755 | "z": 0.0, 1756 | "w": 0.0 1757 | }, 1758 | "m_Labels": [] 1759 | } 1760 | 1761 | { 1762 | "m_SGVersion": 0, 1763 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 1764 | "m_ObjectId": "8db947192d1e455a88f92e845eb4cba9", 1765 | "m_Id": 1, 1766 | "m_DisplayName": "X", 1767 | "m_SlotType": 0, 1768 | "m_Hidden": false, 1769 | "m_ShaderOutputName": "X", 1770 | "m_StageCapability": 3, 1771 | "m_Value": 0.0, 1772 | "m_DefaultValue": 0.0, 1773 | "m_Labels": [] 1774 | } 1775 | 1776 | { 1777 | "m_SGVersion": 0, 1778 | "m_Type": "UnityEditor.ShaderGraph.CategoryData", 1779 | "m_ObjectId": "8ec6cac2531d416082e0c5a9474c16fa", 1780 | "m_Name": "Normal", 1781 | "m_ChildObjectList": [ 1782 | { 1783 | "m_Id": "1644ac09378e45fb84198e184718fd0f" 1784 | }, 1785 | { 1786 | "m_Id": "050210c960ad422faef99cddea3ce607" 1787 | } 1788 | ] 1789 | } 1790 | 1791 | { 1792 | "m_SGVersion": 0, 1793 | "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", 1794 | "m_ObjectId": "91236dc8aacf4a38b1936ded2e32d80b", 1795 | "m_Id": 1, 1796 | "m_DisplayName": "RGB", 1797 | "m_SlotType": 1, 1798 | "m_Hidden": false, 1799 | "m_ShaderOutputName": "RGB", 1800 | "m_StageCapability": 3, 1801 | "m_Value": { 1802 | "x": 0.0, 1803 | "y": 0.0, 1804 | "z": 0.0 1805 | }, 1806 | "m_DefaultValue": { 1807 | "x": 0.0, 1808 | "y": 0.0, 1809 | "z": 0.0 1810 | }, 1811 | "m_Labels": [] 1812 | } 1813 | 1814 | { 1815 | "m_SGVersion": 0, 1816 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 1817 | "m_ObjectId": "93a932fb0ef24b90a1d0ea4ea5dfe079", 1818 | "m_Group": { 1819 | "m_Id": "" 1820 | }, 1821 | "m_Name": "VertexDescription.Normal", 1822 | "m_DrawState": { 1823 | "m_Expanded": true, 1824 | "m_Position": { 1825 | "serializedVersion": "2", 1826 | "x": 0.0, 1827 | "y": 0.0, 1828 | "width": 0.0, 1829 | "height": 0.0 1830 | } 1831 | }, 1832 | "m_Slots": [ 1833 | { 1834 | "m_Id": "4314a8b269714a5dbecacd4a93c3c62c" 1835 | } 1836 | ], 1837 | "synonyms": [], 1838 | "m_Precision": 0, 1839 | "m_PreviewExpanded": true, 1840 | "m_PreviewMode": 0, 1841 | "m_CustomColors": { 1842 | "m_SerializableColors": [] 1843 | }, 1844 | "m_SerializedDescriptor": "VertexDescription.Normal" 1845 | } 1846 | 1847 | { 1848 | "m_SGVersion": 0, 1849 | "m_Type": "UnityEditor.ShaderGraph.PropertyNode", 1850 | "m_ObjectId": "954d75727c2b491a9fd2e25ea9226dee", 1851 | "m_Group": { 1852 | "m_Id": "" 1853 | }, 1854 | "m_Name": "Property", 1855 | "m_DrawState": { 1856 | "m_Expanded": true, 1857 | "m_Position": { 1858 | "serializedVersion": "2", 1859 | "x": -1847.0, 1860 | "y": 573.0000610351563, 1861 | "width": 129.0, 1862 | "height": 34.0 1863 | } 1864 | }, 1865 | "m_Slots": [ 1866 | { 1867 | "m_Id": "6e24ac0ed2464b61a926dd6f874be0ec" 1868 | } 1869 | ], 1870 | "synonyms": [], 1871 | "m_Precision": 0, 1872 | "m_PreviewExpanded": true, 1873 | "m_PreviewMode": 0, 1874 | "m_CustomColors": { 1875 | "m_SerializableColors": [] 1876 | }, 1877 | "m_Property": { 1878 | "m_Id": "d58af34ab2fe4681a978f842477bcf48" 1879 | } 1880 | } 1881 | 1882 | { 1883 | "m_SGVersion": 0, 1884 | "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", 1885 | "m_ObjectId": "9b719378cfe34f45982c2578a5953d72", 1886 | "m_Id": 2, 1887 | "m_DisplayName": "UV", 1888 | "m_SlotType": 0, 1889 | "m_Hidden": false, 1890 | "m_ShaderOutputName": "UV", 1891 | "m_StageCapability": 3, 1892 | "m_Value": { 1893 | "x": 0.0, 1894 | "y": 0.0 1895 | }, 1896 | "m_DefaultValue": { 1897 | "x": 0.0, 1898 | "y": 0.0 1899 | }, 1900 | "m_Labels": [], 1901 | "m_Channel": 0 1902 | } 1903 | 1904 | { 1905 | "m_SGVersion": 0, 1906 | "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", 1907 | "m_ObjectId": "a17172f289a346909576e290e0616a80", 1908 | "m_Id": 1, 1909 | "m_DisplayName": "Texture", 1910 | "m_SlotType": 0, 1911 | "m_Hidden": false, 1912 | "m_ShaderOutputName": "Texture", 1913 | "m_StageCapability": 3, 1914 | "m_BareResource": false, 1915 | "m_Texture": { 1916 | "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", 1917 | "m_Guid": "" 1918 | }, 1919 | "m_DefaultType": 0 1920 | } 1921 | 1922 | { 1923 | "m_SGVersion": 0, 1924 | "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", 1925 | "m_ObjectId": "a2bf8ce623894d448811f2f64cbd8183", 1926 | "m_Id": 2, 1927 | "m_DisplayName": "Out", 1928 | "m_SlotType": 1, 1929 | "m_Hidden": false, 1930 | "m_ShaderOutputName": "Out", 1931 | "m_StageCapability": 3, 1932 | "m_Value": { 1933 | "e00": 0.0, 1934 | "e01": 0.0, 1935 | "e02": 0.0, 1936 | "e03": 0.0, 1937 | "e10": 0.0, 1938 | "e11": 0.0, 1939 | "e12": 0.0, 1940 | "e13": 0.0, 1941 | "e20": 0.0, 1942 | "e21": 0.0, 1943 | "e22": 0.0, 1944 | "e23": 0.0, 1945 | "e30": 0.0, 1946 | "e31": 0.0, 1947 | "e32": 0.0, 1948 | "e33": 0.0 1949 | }, 1950 | "m_DefaultValue": { 1951 | "e00": 1.0, 1952 | "e01": 0.0, 1953 | "e02": 0.0, 1954 | "e03": 0.0, 1955 | "e10": 0.0, 1956 | "e11": 1.0, 1957 | "e12": 0.0, 1958 | "e13": 0.0, 1959 | "e20": 0.0, 1960 | "e21": 0.0, 1961 | "e22": 1.0, 1962 | "e23": 0.0, 1963 | "e30": 0.0, 1964 | "e31": 0.0, 1965 | "e32": 0.0, 1966 | "e33": 1.0 1967 | } 1968 | } 1969 | 1970 | { 1971 | "m_SGVersion": 0, 1972 | "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", 1973 | "m_ObjectId": "a9ee5b8c98b7418a9ebf29910d1a7f42", 1974 | "m_Id": 1, 1975 | "m_DisplayName": "B", 1976 | "m_SlotType": 0, 1977 | "m_Hidden": false, 1978 | "m_ShaderOutputName": "B", 1979 | "m_StageCapability": 3, 1980 | "m_Value": { 1981 | "e00": 2.0, 1982 | "e01": 2.0, 1983 | "e02": 2.0, 1984 | "e03": 2.0, 1985 | "e10": 2.0, 1986 | "e11": 2.0, 1987 | "e12": 2.0, 1988 | "e13": 2.0, 1989 | "e20": 2.0, 1990 | "e21": 2.0, 1991 | "e22": 2.0, 1992 | "e23": 2.0, 1993 | "e30": 2.0, 1994 | "e31": 2.0, 1995 | "e32": 2.0, 1996 | "e33": 2.0 1997 | }, 1998 | "m_DefaultValue": { 1999 | "e00": 1.0, 2000 | "e01": 0.0, 2001 | "e02": 0.0, 2002 | "e03": 0.0, 2003 | "e10": 0.0, 2004 | "e11": 1.0, 2005 | "e12": 0.0, 2006 | "e13": 0.0, 2007 | "e20": 0.0, 2008 | "e21": 0.0, 2009 | "e22": 1.0, 2010 | "e23": 0.0, 2011 | "e30": 0.0, 2012 | "e31": 0.0, 2013 | "e32": 0.0, 2014 | "e33": 1.0 2015 | } 2016 | } 2017 | 2018 | { 2019 | "m_SGVersion": 0, 2020 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 2021 | "m_ObjectId": "aaa9b1a87e044306b63c6617b7611f96", 2022 | "m_Id": 4, 2023 | "m_DisplayName": "R", 2024 | "m_SlotType": 1, 2025 | "m_Hidden": false, 2026 | "m_ShaderOutputName": "R", 2027 | "m_StageCapability": 2, 2028 | "m_Value": 0.0, 2029 | "m_DefaultValue": 0.0, 2030 | "m_Labels": [] 2031 | } 2032 | 2033 | { 2034 | "m_SGVersion": 0, 2035 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 2036 | "m_ObjectId": "ac077eea71474fb580b59c362b3db676", 2037 | "m_Group": { 2038 | "m_Id": "" 2039 | }, 2040 | "m_Name": "VertexDescription.Tangent", 2041 | "m_DrawState": { 2042 | "m_Expanded": true, 2043 | "m_Position": { 2044 | "serializedVersion": "2", 2045 | "x": 0.0, 2046 | "y": 0.0, 2047 | "width": 0.0, 2048 | "height": 0.0 2049 | } 2050 | }, 2051 | "m_Slots": [ 2052 | { 2053 | "m_Id": "77cea471d23b412ab27d0a80a90375eb" 2054 | } 2055 | ], 2056 | "synonyms": [], 2057 | "m_Precision": 0, 2058 | "m_PreviewExpanded": true, 2059 | "m_PreviewMode": 0, 2060 | "m_CustomColors": { 2061 | "m_SerializableColors": [] 2062 | }, 2063 | "m_SerializedDescriptor": "VertexDescription.Tangent" 2064 | } 2065 | 2066 | { 2067 | "m_SGVersion": 0, 2068 | "m_Type": "UnityEditor.ShaderGraph.PropertyNode", 2069 | "m_ObjectId": "b3b509cbdea340388a156987f73aa9ea", 2070 | "m_Group": { 2071 | "m_Id": "" 2072 | }, 2073 | "m_Name": "Property", 2074 | "m_DrawState": { 2075 | "m_Expanded": true, 2076 | "m_Position": { 2077 | "serializedVersion": "2", 2078 | "x": -1240.0, 2079 | "y": 472.0000305175781, 2080 | "width": 132.0, 2081 | "height": 34.0 2082 | } 2083 | }, 2084 | "m_Slots": [ 2085 | { 2086 | "m_Id": "1c3390da5f164bc09b38a7e9aa3b240e" 2087 | } 2088 | ], 2089 | "synonyms": [], 2090 | "m_Precision": 0, 2091 | "m_PreviewExpanded": true, 2092 | "m_PreviewMode": 0, 2093 | "m_CustomColors": { 2094 | "m_SerializableColors": [] 2095 | }, 2096 | "m_Property": { 2097 | "m_Id": "f09bb54bc7b14f78b0ca906d5385ef21" 2098 | } 2099 | } 2100 | 2101 | { 2102 | "m_SGVersion": 3, 2103 | "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", 2104 | "m_ObjectId": "b43fdb88f4f5470da0365dfb7687e286", 2105 | "m_Guid": { 2106 | "m_GuidSerialized": "793f8ea8-b745-4080-8506-b444746703a2" 2107 | }, 2108 | "m_Name": "Color", 2109 | "m_DefaultRefNameVersion": 1, 2110 | "m_RefNameGeneratedByDisplayName": "Color", 2111 | "m_DefaultReferenceName": "_Color", 2112 | "m_OverrideReferenceName": "", 2113 | "m_GeneratePropertyBlock": true, 2114 | "m_UseCustomSlotLabel": false, 2115 | "m_CustomSlotLabel": "", 2116 | "m_Precision": 0, 2117 | "overrideHLSLDeclaration": false, 2118 | "hlslDeclarationOverride": 0, 2119 | "m_Hidden": false, 2120 | "m_Value": { 2121 | "r": 1.0, 2122 | "g": 1.0, 2123 | "b": 1.0, 2124 | "a": 1.0 2125 | }, 2126 | "isMainColor": false, 2127 | "m_ColorMode": 0 2128 | } 2129 | 2130 | { 2131 | "m_SGVersion": 0, 2132 | "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", 2133 | "m_ObjectId": "bb9c2517eaf6438994dcd6c27273c2b4", 2134 | "m_Id": 1, 2135 | "m_DisplayName": "Texture", 2136 | "m_SlotType": 0, 2137 | "m_Hidden": false, 2138 | "m_ShaderOutputName": "Texture", 2139 | "m_StageCapability": 3, 2140 | "m_BareResource": false, 2141 | "m_Texture": { 2142 | "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", 2143 | "m_Guid": "" 2144 | }, 2145 | "m_DefaultType": 3 2146 | } 2147 | 2148 | { 2149 | "m_SGVersion": 0, 2150 | "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", 2151 | "m_ObjectId": "bbdd79cf552247f996f15e3038f30ade", 2152 | "m_Id": 1, 2153 | "m_DisplayName": "Out", 2154 | "m_SlotType": 1, 2155 | "m_Hidden": false, 2156 | "m_ShaderOutputName": "Out", 2157 | "m_StageCapability": 3, 2158 | "m_Value": { 2159 | "x": 0.0, 2160 | "y": 0.0, 2161 | "z": 0.0 2162 | }, 2163 | "m_DefaultValue": { 2164 | "x": 0.0, 2165 | "y": 0.0, 2166 | "z": 0.0 2167 | }, 2168 | "m_Labels": [] 2169 | } 2170 | 2171 | { 2172 | "m_SGVersion": 0, 2173 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 2174 | "m_ObjectId": "bff67e568de144f3b854de6d32557d9b", 2175 | "m_Id": 6, 2176 | "m_DisplayName": "B", 2177 | "m_SlotType": 1, 2178 | "m_Hidden": false, 2179 | "m_ShaderOutputName": "B", 2180 | "m_StageCapability": 2, 2181 | "m_Value": 0.0, 2182 | "m_DefaultValue": 0.0, 2183 | "m_Labels": [] 2184 | } 2185 | 2186 | { 2187 | "m_SGVersion": 0, 2188 | "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", 2189 | "m_ObjectId": "c1d211a145b94a2ab02e02a6ae340030", 2190 | "m_Id": 0, 2191 | "m_DisplayName": "In", 2192 | "m_SlotType": 0, 2193 | "m_Hidden": false, 2194 | "m_ShaderOutputName": "In", 2195 | "m_StageCapability": 3, 2196 | "m_Value": { 2197 | "x": 0.0, 2198 | "y": 0.0, 2199 | "z": 0.0 2200 | }, 2201 | "m_DefaultValue": { 2202 | "x": 0.0, 2203 | "y": 0.0, 2204 | "z": 0.0 2205 | }, 2206 | "m_Labels": [] 2207 | } 2208 | 2209 | { 2210 | "m_SGVersion": 1, 2211 | "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", 2212 | "m_ObjectId": "c2bb087a92914587953dc93db0220ecf", 2213 | "m_ActiveSubTarget": { 2214 | "m_Id": "286abc09bd554a4c82f74373a9153916" 2215 | }, 2216 | "m_AllowMaterialOverride": false, 2217 | "m_SurfaceType": 0, 2218 | "m_ZTestMode": 4, 2219 | "m_ZWriteControl": 0, 2220 | "m_AlphaMode": 0, 2221 | "m_RenderFace": 2, 2222 | "m_AlphaClip": false, 2223 | "m_CastShadows": true, 2224 | "m_ReceiveShadows": true, 2225 | "m_CustomEditorGUI": "", 2226 | "m_SupportVFX": false 2227 | } 2228 | 2229 | { 2230 | "m_SGVersion": 0, 2231 | "m_Type": "UnityEditor.ShaderGraph.PropertyNode", 2232 | "m_ObjectId": "c7ec1db8b2f6446da12e7f9103043eaf", 2233 | "m_Group": { 2234 | "m_Id": "" 2235 | }, 2236 | "m_Name": "Property", 2237 | "m_DrawState": { 2238 | "m_Expanded": true, 2239 | "m_Position": { 2240 | "serializedVersion": "2", 2241 | "x": -928.0, 2242 | "y": 372.0, 2243 | "width": 105.0, 2244 | "height": 34.0 2245 | } 2246 | }, 2247 | "m_Slots": [ 2248 | { 2249 | "m_Id": "229dc0b019d84f6fa8eeed435d8ed8bc" 2250 | } 2251 | ], 2252 | "synonyms": [], 2253 | "m_Precision": 0, 2254 | "m_PreviewExpanded": true, 2255 | "m_PreviewMode": 0, 2256 | "m_CustomColors": { 2257 | "m_SerializableColors": [] 2258 | }, 2259 | "m_Property": { 2260 | "m_Id": "b43fdb88f4f5470da0365dfb7687e286" 2261 | } 2262 | } 2263 | 2264 | { 2265 | "m_SGVersion": 0, 2266 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 2267 | "m_ObjectId": "ca837aa87ce04e869e9166de628a8e45", 2268 | "m_Id": 5, 2269 | "m_DisplayName": "G", 2270 | "m_SlotType": 1, 2271 | "m_Hidden": false, 2272 | "m_ShaderOutputName": "G", 2273 | "m_StageCapability": 2, 2274 | "m_Value": 0.0, 2275 | "m_DefaultValue": 0.0, 2276 | "m_Labels": [] 2277 | } 2278 | 2279 | { 2280 | "m_SGVersion": 0, 2281 | "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", 2282 | "m_ObjectId": "cdeb8774b9cd4c3886917f2649581c9f", 2283 | "m_Group": { 2284 | "m_Id": "" 2285 | }, 2286 | "m_Name": "Multiply", 2287 | "m_DrawState": { 2288 | "m_Expanded": true, 2289 | "m_Position": { 2290 | "serializedVersion": "2", 2291 | "x": -797.0, 2292 | "y": 389.0000305175781, 2293 | "width": 130.0, 2294 | "height": 117.99993896484375 2295 | } 2296 | }, 2297 | "m_Slots": [ 2298 | { 2299 | "m_Id": "60f3abd8656c46cc9dca4bf1a4a2a474" 2300 | }, 2301 | { 2302 | "m_Id": "a9ee5b8c98b7418a9ebf29910d1a7f42" 2303 | }, 2304 | { 2305 | "m_Id": "a2bf8ce623894d448811f2f64cbd8183" 2306 | } 2307 | ], 2308 | "synonyms": [ 2309 | "multiplication", 2310 | "times", 2311 | "x" 2312 | ], 2313 | "m_Precision": 0, 2314 | "m_PreviewExpanded": false, 2315 | "m_PreviewMode": 0, 2316 | "m_CustomColors": { 2317 | "m_SerializableColors": [] 2318 | } 2319 | } 2320 | 2321 | { 2322 | "m_SGVersion": 0, 2323 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 2324 | "m_ObjectId": "d110f71f366e477e8a51061cb83f1558", 2325 | "m_Id": -736122885, 2326 | "m_DisplayName": "Depth", 2327 | "m_SlotType": 0, 2328 | "m_Hidden": false, 2329 | "m_ShaderOutputName": "_Depth", 2330 | "m_StageCapability": 3, 2331 | "m_Value": 1.0, 2332 | "m_DefaultValue": 0.0, 2333 | "m_Labels": [] 2334 | } 2335 | 2336 | { 2337 | "m_SGVersion": 0, 2338 | "m_Type": "UnityEditor.ShaderGraph.BlockNode", 2339 | "m_ObjectId": "d1171b3dde1e4cf0be6308267014935f", 2340 | "m_Group": { 2341 | "m_Id": "" 2342 | }, 2343 | "m_Name": "SurfaceDescription.BaseColor", 2344 | "m_DrawState": { 2345 | "m_Expanded": true, 2346 | "m_Position": { 2347 | "serializedVersion": "2", 2348 | "x": 0.0, 2349 | "y": 0.0, 2350 | "width": 0.0, 2351 | "height": 0.0 2352 | } 2353 | }, 2354 | "m_Slots": [ 2355 | { 2356 | "m_Id": "4cc615fdc6f348808c1d0b9c331948e2" 2357 | } 2358 | ], 2359 | "synonyms": [], 2360 | "m_Precision": 0, 2361 | "m_PreviewExpanded": true, 2362 | "m_PreviewMode": 0, 2363 | "m_CustomColors": { 2364 | "m_SerializableColors": [] 2365 | }, 2366 | "m_SerializedDescriptor": "SurfaceDescription.BaseColor" 2367 | } 2368 | 2369 | { 2370 | "m_SGVersion": 0, 2371 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 2372 | "m_ObjectId": "d358161bb38c4a94ae7de38b52f08226", 2373 | "m_Id": 1, 2374 | "m_DisplayName": "X", 2375 | "m_SlotType": 0, 2376 | "m_Hidden": false, 2377 | "m_ShaderOutputName": "X", 2378 | "m_StageCapability": 3, 2379 | "m_Value": 0.0, 2380 | "m_DefaultValue": 0.0, 2381 | "m_Labels": [] 2382 | } 2383 | 2384 | { 2385 | "m_SGVersion": 1, 2386 | "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", 2387 | "m_ObjectId": "d480e936e16c485e863f38cae04078a0", 2388 | "m_Group": { 2389 | "m_Id": "" 2390 | }, 2391 | "m_Name": "Instancing (Custom Function)", 2392 | "m_DrawState": { 2393 | "m_Expanded": true, 2394 | "m_Position": { 2395 | "serializedVersion": "2", 2396 | "x": -848.9998779296875, 2397 | "y": -122.99998474121094, 2398 | "width": 212.99993896484376, 2399 | "height": 94.0 2400 | } 2401 | }, 2402 | "m_Slots": [ 2403 | { 2404 | "m_Id": "c1d211a145b94a2ab02e02a6ae340030" 2405 | }, 2406 | { 2407 | "m_Id": "bbdd79cf552247f996f15e3038f30ade" 2408 | } 2409 | ], 2410 | "synonyms": [ 2411 | "code", 2412 | "HLSL" 2413 | ], 2414 | "m_Precision": 0, 2415 | "m_PreviewExpanded": false, 2416 | "m_PreviewMode": 0, 2417 | "m_CustomColors": { 2418 | "m_SerializableColors": [] 2419 | }, 2420 | "m_SourceType": 0, 2421 | "m_FunctionName": "Instancing", 2422 | "m_FunctionSource": "f59ac7eb4d78f4d4cad9969716dba62e", 2423 | "m_FunctionBody": "Enter function body here..." 2424 | } 2425 | 2426 | { 2427 | "m_SGVersion": 1, 2428 | "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", 2429 | "m_ObjectId": "d58af34ab2fe4681a978f842477bcf48", 2430 | "m_Guid": { 2431 | "m_GuidSerialized": "9a74afaf-55a2-4e6d-be34-2fe9867d8a25" 2432 | }, 2433 | "m_Name": "TileOffset", 2434 | "m_DefaultRefNameVersion": 1, 2435 | "m_RefNameGeneratedByDisplayName": "TileOffset", 2436 | "m_DefaultReferenceName": "_TileOffset", 2437 | "m_OverrideReferenceName": "", 2438 | "m_GeneratePropertyBlock": true, 2439 | "m_UseCustomSlotLabel": false, 2440 | "m_CustomSlotLabel": "", 2441 | "m_Precision": 0, 2442 | "overrideHLSLDeclaration": false, 2443 | "hlslDeclarationOverride": 0, 2444 | "m_Hidden": false, 2445 | "m_Value": { 2446 | "x": 1.0, 2447 | "y": 1.0, 2448 | "z": 0.0, 2449 | "w": 0.0 2450 | } 2451 | } 2452 | 2453 | { 2454 | "m_SGVersion": 0, 2455 | "m_Type": "UnityEditor.ShaderGraph.CategoryData", 2456 | "m_ObjectId": "d6ec440f6c41465f8847d3de86255f6c", 2457 | "m_Name": "Light", 2458 | "m_ChildObjectList": [ 2459 | { 2460 | "m_Id": "fdc6a43226c342bba273fb3743bcacb9" 2461 | } 2462 | ] 2463 | } 2464 | 2465 | { 2466 | "m_SGVersion": 0, 2467 | "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", 2468 | "m_ObjectId": "d97d5fbfde3441829a514ff1787be9e6", 2469 | "m_Id": 0, 2470 | "m_DisplayName": "Out", 2471 | "m_SlotType": 1, 2472 | "m_Hidden": false, 2473 | "m_ShaderOutputName": "Out", 2474 | "m_StageCapability": 3, 2475 | "m_Value": { 2476 | "x": 0.0, 2477 | "y": 0.0 2478 | }, 2479 | "m_DefaultValue": { 2480 | "x": 0.0, 2481 | "y": 0.0 2482 | }, 2483 | "m_Labels": [] 2484 | } 2485 | 2486 | { 2487 | "m_SGVersion": 1, 2488 | "m_Type": "UnityEditor.ShaderGraph.PositionNode", 2489 | "m_ObjectId": "da8b5cd4a006492d8e5f63fa74595d6a", 2490 | "m_Group": { 2491 | "m_Id": "" 2492 | }, 2493 | "m_Name": "Position", 2494 | "m_DrawState": { 2495 | "m_Expanded": true, 2496 | "m_Position": { 2497 | "serializedVersion": "2", 2498 | "x": -1073.9998779296875, 2499 | "y": -122.99998474121094, 2500 | "width": 206.00006103515626, 2501 | "height": 131.0 2502 | } 2503 | }, 2504 | "m_Slots": [ 2505 | { 2506 | "m_Id": "310b7adc5cc8401db8595ce254349efa" 2507 | } 2508 | ], 2509 | "synonyms": [ 2510 | "location" 2511 | ], 2512 | "m_Precision": 1, 2513 | "m_PreviewExpanded": false, 2514 | "m_PreviewMode": 2, 2515 | "m_CustomColors": { 2516 | "m_SerializableColors": [] 2517 | }, 2518 | "m_Space": 0, 2519 | "m_PositionSource": 0 2520 | } 2521 | 2522 | { 2523 | "m_SGVersion": 0, 2524 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 2525 | "m_ObjectId": "daae0955f6c5493eb979f4616fef7575", 2526 | "m_Id": 5, 2527 | "m_DisplayName": "G", 2528 | "m_SlotType": 1, 2529 | "m_Hidden": false, 2530 | "m_ShaderOutputName": "G", 2531 | "m_StageCapability": 2, 2532 | "m_Value": 0.0, 2533 | "m_DefaultValue": 0.0, 2534 | "m_Labels": [] 2535 | } 2536 | 2537 | { 2538 | "m_SGVersion": 0, 2539 | "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", 2540 | "m_ObjectId": "db3aeec759f3457385470b652bca0318", 2541 | "m_Id": 0, 2542 | "m_DisplayName": "In", 2543 | "m_SlotType": 0, 2544 | "m_Hidden": false, 2545 | "m_ShaderOutputName": "In", 2546 | "m_StageCapability": 3, 2547 | "m_Value": { 2548 | "x": 0.0, 2549 | "y": 0.0, 2550 | "z": 0.0, 2551 | "w": 0.0 2552 | }, 2553 | "m_DefaultValue": { 2554 | "x": 0.0, 2555 | "y": 0.0, 2556 | "z": 0.0, 2557 | "w": 0.0 2558 | } 2559 | } 2560 | 2561 | { 2562 | "m_SGVersion": 0, 2563 | "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", 2564 | "m_ObjectId": "dc11446c05a3430d86d57793232e3160", 2565 | "m_Id": 0, 2566 | "m_DisplayName": "Position", 2567 | "m_SlotType": 0, 2568 | "m_Hidden": false, 2569 | "m_ShaderOutputName": "Position", 2570 | "m_StageCapability": 1, 2571 | "m_Value": { 2572 | "x": 0.0, 2573 | "y": 0.0, 2574 | "z": 0.0 2575 | }, 2576 | "m_DefaultValue": { 2577 | "x": 0.0, 2578 | "y": 0.0, 2579 | "z": 0.0 2580 | }, 2581 | "m_Labels": [], 2582 | "m_Space": 0 2583 | } 2584 | 2585 | { 2586 | "m_SGVersion": 0, 2587 | "m_Type": "UnityEditor.ShaderGraph.SplitNode", 2588 | "m_ObjectId": "dfcf6591ab4e435ca3ce2896e82644e0", 2589 | "m_Group": { 2590 | "m_Id": "" 2591 | }, 2592 | "m_Name": "Split", 2593 | "m_DrawState": { 2594 | "m_Expanded": true, 2595 | "m_Position": { 2596 | "serializedVersion": "2", 2597 | "x": -1673.0, 2598 | "y": 533.0, 2599 | "width": 120.0, 2600 | "height": 149.00006103515626 2601 | } 2602 | }, 2603 | "m_Slots": [ 2604 | { 2605 | "m_Id": "db3aeec759f3457385470b652bca0318" 2606 | }, 2607 | { 2608 | "m_Id": "52f8ba8530634593b1d6bb22b09cd1f0" 2609 | }, 2610 | { 2611 | "m_Id": "4120b8ab59a148dda50bd599e473f44e" 2612 | }, 2613 | { 2614 | "m_Id": "1b4d777a7c6946edb79aa12dd8841444" 2615 | }, 2616 | { 2617 | "m_Id": "14cce99982bd477c92c3faf253b140ae" 2618 | } 2619 | ], 2620 | "synonyms": [ 2621 | "separate" 2622 | ], 2623 | "m_Precision": 0, 2624 | "m_PreviewExpanded": true, 2625 | "m_PreviewMode": 0, 2626 | "m_CustomColors": { 2627 | "m_SerializableColors": [] 2628 | } 2629 | } 2630 | 2631 | { 2632 | "m_SGVersion": 0, 2633 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 2634 | "m_ObjectId": "e27c87b86b8e49c58dbf777c6ec8bfae", 2635 | "m_Id": 7, 2636 | "m_DisplayName": "A", 2637 | "m_SlotType": 1, 2638 | "m_Hidden": false, 2639 | "m_ShaderOutputName": "A", 2640 | "m_StageCapability": 2, 2641 | "m_Value": 0.0, 2642 | "m_DefaultValue": 0.0, 2643 | "m_Labels": [] 2644 | } 2645 | 2646 | { 2647 | "m_SGVersion": 0, 2648 | "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", 2649 | "m_ObjectId": "e4a5039fd28b4eb1ba7ce4d9308e954c", 2650 | "m_Id": 1, 2651 | "m_DisplayName": "ID", 2652 | "m_SlotType": 1, 2653 | "m_Hidden": false, 2654 | "m_ShaderOutputName": "ID", 2655 | "m_StageCapability": 3, 2656 | "m_Value": 0.0, 2657 | "m_DefaultValue": 0.0, 2658 | "m_Labels": [] 2659 | } 2660 | 2661 | { 2662 | "m_SGVersion": 0, 2663 | "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", 2664 | "m_ObjectId": "eff8baf3ea534271b59097ac49d7bd65", 2665 | "m_Id": 0, 2666 | "m_DisplayName": "NormalMap", 2667 | "m_SlotType": 1, 2668 | "m_Hidden": false, 2669 | "m_ShaderOutputName": "Out", 2670 | "m_StageCapability": 3, 2671 | "m_BareResource": false 2672 | } 2673 | 2674 | { 2675 | "m_SGVersion": 0, 2676 | "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", 2677 | "m_ObjectId": "f09bb54bc7b14f78b0ca906d5385ef21", 2678 | "m_Guid": { 2679 | "m_GuidSerialized": "57a1f9c5-fdc7-46a5-bb29-ff33b717f4d4" 2680 | }, 2681 | "m_Name": "BaseMap", 2682 | "m_DefaultRefNameVersion": 1, 2683 | "m_RefNameGeneratedByDisplayName": "BaseMap", 2684 | "m_DefaultReferenceName": "_BaseMap", 2685 | "m_OverrideReferenceName": "", 2686 | "m_GeneratePropertyBlock": true, 2687 | "m_UseCustomSlotLabel": false, 2688 | "m_CustomSlotLabel": "", 2689 | "m_Precision": 0, 2690 | "overrideHLSLDeclaration": false, 2691 | "hlslDeclarationOverride": 0, 2692 | "m_Hidden": false, 2693 | "m_Value": { 2694 | "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", 2695 | "m_Guid": "" 2696 | }, 2697 | "isMainTexture": false, 2698 | "useTilingAndOffset": false, 2699 | "m_Modifiable": true, 2700 | "m_DefaultType": 0 2701 | } 2702 | 2703 | { 2704 | "m_SGVersion": 0, 2705 | "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", 2706 | "m_ObjectId": "f7982a86cc3444e087808792c39e6ca2", 2707 | "m_Id": 0, 2708 | "m_DisplayName": "RGBA", 2709 | "m_SlotType": 1, 2710 | "m_Hidden": false, 2711 | "m_ShaderOutputName": "RGBA", 2712 | "m_StageCapability": 2, 2713 | "m_Value": { 2714 | "x": 0.0, 2715 | "y": 0.0, 2716 | "z": 0.0, 2717 | "w": 0.0 2718 | }, 2719 | "m_DefaultValue": { 2720 | "x": 0.0, 2721 | "y": 0.0, 2722 | "z": 0.0, 2723 | "w": 0.0 2724 | }, 2725 | "m_Labels": [] 2726 | } 2727 | 2728 | { 2729 | "m_SGVersion": 0, 2730 | "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", 2731 | "m_ObjectId": "f98da561061c4bba9ffddfa7a5802168", 2732 | "m_Id": 1435760779, 2733 | "m_DisplayName": "Normal", 2734 | "m_SlotType": 0, 2735 | "m_Hidden": false, 2736 | "m_ShaderOutputName": "_Normal", 2737 | "m_StageCapability": 3, 2738 | "m_Value": { 2739 | "x": 0.0, 2740 | "y": 0.0, 2741 | "z": 0.0 2742 | }, 2743 | "m_DefaultValue": { 2744 | "x": 0.0, 2745 | "y": 0.0, 2746 | "z": 0.0 2747 | }, 2748 | "m_Labels": [] 2749 | } 2750 | 2751 | { 2752 | "m_SGVersion": 1, 2753 | "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", 2754 | "m_ObjectId": "fdc6a43226c342bba273fb3743bcacb9", 2755 | "m_Guid": { 2756 | "m_GuidSerialized": "036faa36-caae-4b34-99d2-a64351775df6" 2757 | }, 2758 | "m_Name": "Depth", 2759 | "m_DefaultRefNameVersion": 1, 2760 | "m_RefNameGeneratedByDisplayName": "Depth", 2761 | "m_DefaultReferenceName": "_Depth", 2762 | "m_OverrideReferenceName": "", 2763 | "m_GeneratePropertyBlock": true, 2764 | "m_UseCustomSlotLabel": false, 2765 | "m_CustomSlotLabel": "", 2766 | "m_Precision": 0, 2767 | "overrideHLSLDeclaration": false, 2768 | "hlslDeclarationOverride": 0, 2769 | "m_Hidden": false, 2770 | "m_Value": 1.0, 2771 | "m_FloatType": 0, 2772 | "m_RangeValues": { 2773 | "x": 0.0, 2774 | "y": 1.0 2775 | } 2776 | } 2777 | 2778 | -------------------------------------------------------------------------------- /Instanced.shadergraph.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64fba4bf1041e144ab263712a0658c5c 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} 11 | -------------------------------------------------------------------------------- /InstancedColor.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: InstancedColor 11 | m_Shader: {fileID: -6465566751694194690, guid: 8cba6321c0fb2b041957cb15a3928fae, type: 3} 12 | m_ValidKeywords: [] 13 | m_InvalidKeywords: 14 | - _ENUM_A 15 | - _LIGHTDIRECTION_A 16 | - _LIGHTDIRECTION_SUN 17 | m_LightmapFlags: 4 18 | m_EnableInstancingVariants: 1 19 | m_DoubleSidedGI: 0 20 | m_CustomRenderQueue: -1 21 | stringTagMap: {} 22 | disabledShaderPasses: [] 23 | m_SavedProperties: 24 | serializedVersion: 3 25 | m_TexEnvs: 26 | - _BaseMap: 27 | m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _BumpMap: 31 | m_Texture: {fileID: 2800000, guid: 41b6c5707d813824d8c74e8574e3280b, type: 3} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailAlbedoMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _DetailMask: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _DetailNormalMap: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _EmissionMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _MainTex: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _MetallicGlossMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _OcclusionMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | - _ParallaxMap: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - _SpecGlossMap: 67 | m_Texture: {fileID: 0} 68 | m_Scale: {x: 1, y: 1} 69 | m_Offset: {x: 0, y: 0} 70 | - unity_Lightmaps: 71 | m_Texture: {fileID: 0} 72 | m_Scale: {x: 1, y: 1} 73 | m_Offset: {x: 0, y: 0} 74 | - unity_LightmapsInd: 75 | m_Texture: {fileID: 0} 76 | m_Scale: {x: 1, y: 1} 77 | m_Offset: {x: 0, y: 0} 78 | - unity_ShadowMasks: 79 | m_Texture: {fileID: 0} 80 | m_Scale: {x: 1, y: 1} 81 | m_Offset: {x: 0, y: 0} 82 | m_Ints: [] 83 | m_Floats: 84 | - PROCEDURAL_INSTANCING: 0 85 | - _AlphaClip: 0 86 | - _AlphaToMask: 0 87 | - _AmbientLight: 1 88 | - _Blend: 0 89 | - _BlendModePreserveSpecular: 1 90 | - _BumpScale: 1 91 | - _ClearCoatMask: 0 92 | - _ClearCoatSmoothness: 0 93 | - _Cull: 2 94 | - _Cutoff: 0.5 95 | - _Depth: 0.66 96 | - _DetailAlbedoMapScale: 1 97 | - _DetailNormalMapScale: 1 98 | - _DstBlend: 0 99 | - _DstBlendAlpha: 0 100 | - _ENUM: 0 101 | - _EnvironmentReflections: 1 102 | - _GlossMapScale: 0 103 | - _Glossiness: 0 104 | - _GlossyReflections: 0 105 | - _LIGHTDIRECTION: 0 106 | - _LightLerp: 0 107 | - _Metallic: 0 108 | - _NormalStrength: 1 109 | - _OcclusionStrength: 1 110 | - _Parallax: 0.005 111 | - _QueueControl: 0 112 | - _QueueOffset: 0 113 | - _ReceiveShadows: 1 114 | - _Smoothness: 0.5 115 | - _SmoothnessTextureChannel: 0 116 | - _SpecularHighlights: 1 117 | - _SrcBlend: 1 118 | - _SrcBlendAlpha: 1 119 | - _Surface: 0 120 | - _WorkflowMode: 1 121 | - _ZWrite: 1 122 | m_Colors: 123 | - _BaseColor: {r: 1, g: 0.6708143, b: 0.3160377, a: 1} 124 | - _Color: {r: 1, g: 1, b: 1, a: 1} 125 | - _CustomLightDir: {r: 0, g: -1, b: 0, a: 0} 126 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 127 | - _LightDirRotate: {r: 0, g: 1, b: 0, a: 0} 128 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 129 | - _Tile: {r: 1, g: 1, b: 0, a: 0} 130 | - _TileOffset: {r: 1, g: 1, b: 0, a: 0} 131 | m_BuildTextureStacks: [] 132 | --- !u!114 &1373779879689326419 133 | MonoBehaviour: 134 | m_ObjectHideFlags: 11 135 | m_CorrespondingSourceObject: {fileID: 0} 136 | m_PrefabInstance: {fileID: 0} 137 | m_PrefabAsset: {fileID: 0} 138 | m_GameObject: {fileID: 0} 139 | m_Enabled: 1 140 | m_EditorHideFlags: 0 141 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 142 | m_Name: 143 | m_EditorClassIdentifier: 144 | version: 7 145 | -------------------------------------------------------------------------------- /InstancedColor.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e3cf2216437befc4482192c8af2334d5 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /InstancedColor.shadergraph.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8cba6321c0fb2b041957cb15a3928fae 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /LICENSE.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b5827e1d695be34e82b6293a439b0fb 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GraphicsDraw 2 | Unity Graphics Draw API wrapper for both play and edit mode 3 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f36ca780c031fb64481ef14d587641a5 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------