Archived
Procedural Drawing
This commit is contained in:
1 parent
1d3d62dd31
commit
d7be9187e8
8 files changed
+227
-33
No files matched your search
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5c5c09c79ba995b4cbb07fc6eecd341b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -8,14 +8,14 @@ Material:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: Fractal URP
|
m_Name: Fractal URP
|
||||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
m_Shader: {fileID: -6465566751694194690, guid: 2ccc118ffa0f0574ba86592258e86a9e,
|
||||||
|
type: 3}
|
||||||
m_ShaderKeywords:
|
m_ShaderKeywords:
|
||||||
m_LightmapFlags: 4
|
m_LightmapFlags: 4
|
||||||
m_EnableInstancingVariants: 0
|
m_EnableInstancingVariants: 0
|
||||||
m_DoubleSidedGI: 0
|
m_DoubleSidedGI: 0
|
||||||
m_CustomRenderQueue: 2000
|
m_CustomRenderQueue: -1
|
||||||
stringTagMap:
|
stringTagMap: {}
|
||||||
RenderType: Opaque
|
|
||||||
disabledShaderPasses: []
|
disabledShaderPasses: []
|
||||||
m_SavedProperties:
|
m_SavedProperties:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
@@ -49,6 +49,7 @@ Material:
|
|||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
m_Floats:
|
m_Floats:
|
||||||
|
- Vector1_8EEC20FB: 0.5
|
||||||
- _AlphaClip: 0
|
- _AlphaClip: 0
|
||||||
- _Blend: 0
|
- _Blend: 0
|
||||||
- _BumpScale: 1
|
- _BumpScale: 1
|
||||||
@@ -71,6 +72,7 @@ Material:
|
|||||||
- _WorkflowMode: 1
|
- _WorkflowMode: 1
|
||||||
- _ZWrite: 1
|
- _ZWrite: 1
|
||||||
m_Colors:
|
m_Colors:
|
||||||
|
- Vector3_32FB817D: {r: 1, g: 1, b: 0, a: 0}
|
||||||
- _BaseColor: {r: 1, g: 1, b: 0, a: 1}
|
- _BaseColor: {r: 1, g: 1, b: 0, a: 1}
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
File renamed without changes.
@@ -0,0 +1,98 @@
|
|||||||
|
{
|
||||||
|
"m_SerializedProperties": [
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.ShaderGraph.Internal.Vector3ShaderProperty"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"1a852ecf-3bd7-467e-a62a-9b13b2667e2f\"\n },\n \"m_Name\": \"Albedo\",\n \"m_DefaultReferenceName\": \"Vector3_32FB817D\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": {\n \"x\": 0.0,\n \"y\": 0.0,\n \"z\": 0.0,\n \"w\": 0.0\n }\n}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_Guid\": {\n \"m_GuidSerialized\": \"ebb163b4-73ca-4f43-81d9-f01668693642\"\n },\n \"m_Name\": \"Smoothness\",\n \"m_DefaultReferenceName\": \"Vector1_8EEC20FB\",\n \"m_OverrideReferenceName\": \"\",\n \"m_GeneratePropertyBlock\": true,\n \"m_Precision\": 0,\n \"m_GPUInstanced\": false,\n \"m_Hidden\": false,\n \"m_Value\": 0.5,\n \"m_FloatType\": 1,\n \"m_RangeValues\": {\n \"x\": 0.0,\n \"y\": 1.0\n }\n}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"m_SerializedKeywords": [],
|
||||||
|
"m_SerializableNodes": [
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.ShaderGraph.PBRMasterNode"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_GuidSerialized\": \"95a9d98a-aa06-48ab-9f92-9ce2e7ff0b6b\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"PBR Master\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": false,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -118.00000762939453,\n \"y\": 35.000003814697269,\n \"width\": 200.00001525878907,\n \"height\": 125.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.PositionMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 9,\\n \\\"m_DisplayName\\\": \\\"Vertex Position\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Vertex Position\\\",\\n \\\"m_StageCapability\\\": 1,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_Space\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.NormalMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 10,\\n \\\"m_DisplayName\\\": \\\"Vertex Normal\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Vertex Normal\\\",\\n \\\"m_StageCapability\\\": 1,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_Space\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.TangentMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 11,\\n \\\"m_DisplayName\\\": \\\"Vertex Tangent\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Vertex Tangent\\\",\\n \\\"m_StageCapability\\\": 1,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_Space\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Albedo\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Albedo\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.7353569269180298,\\n \\\"y\\\": 0.7353569269180298,\\n \\\"z\\\": 0.7353569269180298\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_ColorMode\\\": 0\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.NormalMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Normal\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Normal\\\",\\n \\\"m_StageCapability\\\": 2,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ],\\n \\\"m_Space\\\": 3\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.ColorRGBMaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 4,\\n \\\"m_DisplayName\\\": \\\"Emission\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"ELine truncated
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.ShaderGraph.PropertyNode"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_GuidSerialized\": \"194e0e0c-65f0-4bf3-a619-bcf2729578f2\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -378.0,\n \"y\": 112.0,\n \"width\": 118.0,\n \"height\": 34.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Albedo\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"1a852ecf-3bd7-467e-a62a-9b13b2667e2f\"\n}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.ShaderGraph.PropertyNode"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_GuidSerialized\": \"e7286c87-1d71-43ac-8332-edf061cc3190\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Property\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -372.0,\n \"y\": 206.0,\n \"width\": 149.0,\n \"height\": 34.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector1MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Smoothness\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": 0.0,\\n \\\"m_DefaultValue\\\": 0.0,\\n \\\"m_Labels\\\": [\\n \\\"X\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": true,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_PropertyGuidSerialized\": \"ebb163b4-73ca-4f43-81d9-f01668693642\"\n}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.ShaderGraph.PositionNode"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_GuidSerialized\": \"73b8e2c8-e412-4552-93b4-0a36bbc85547\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Position\",\n \"m_NodeVersion\": 1,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -835.0,\n \"y\": -25.99998664855957,\n \"width\": 206.0,\n \"height\": 130.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 1,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_Space\": 0\n}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.ShaderGraph.CustomFunctionNode"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_GuidSerialized\": \"1316d71d-2778-4f0e-a302-bd8350708751\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Custom Function\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -595.0000610351563,\n \"y\": -25.99998664855957,\n \"width\": 167.0,\n \"height\": 94.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"In\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"In\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_SourceType\": 0,\n \"m_FunctionName\": \"ShaderGraphFunction\",\n \"m_FunctionSource\": \"0ed85852d1001bf44b1fef32640df23b\",\n \"m_FunctionBody\": \"Enter function body here...\"\n}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.ShaderGraph.CustomFunctionNode"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_GuidSerialized\": \"74abd017-3fff-4a75-a3a7-8642482eb9c6\",\n \"m_GroupGuidSerialized\": \"00000000-0000-0000-0000-000000000000\",\n \"m_Name\": \"Custom Function\",\n \"m_NodeVersion\": 0,\n \"m_DrawState\": {\n \"m_Expanded\": true,\n \"m_Position\": {\n \"serializedVersion\": \"2\",\n \"x\": -413.9999694824219,\n \"y\": -25.99998664855957,\n \"width\": 167.0,\n \"height\": 94.0\n }\n },\n \"m_SerializableSlots\": [\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 0,\\n \\\"m_DisplayName\\\": \\\"In\\\",\\n \\\"m_SlotType\\\": 0,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"In\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n },\n {\n \"typeInfo\": {\n \"fullName\": \"UnityEditor.ShaderGraph.Vector3MaterialSlot\"\n },\n \"JSONnodeData\": \"{\\n \\\"m_Id\\\": 1,\\n \\\"m_DisplayName\\\": \\\"Out\\\",\\n \\\"m_SlotType\\\": 1,\\n \\\"m_Priority\\\": 2147483647,\\n \\\"m_Hidden\\\": false,\\n \\\"m_ShaderOutputName\\\": \\\"Out\\\",\\n \\\"m_StageCapability\\\": 3,\\n \\\"m_Value\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_DefaultValue\\\": {\\n \\\"x\\\": 0.0,\\n \\\"y\\\": 0.0,\\n \\\"z\\\": 0.0\\n },\\n \\\"m_Labels\\\": [\\n \\\"X\\\",\\n \\\"Y\\\",\\n \\\"Z\\\"\\n ]\\n}\"\n }\n ],\n \"m_Precision\": 0,\n \"m_PreviewExpanded\": false,\n \"m_CustomColors\": {\n \"m_SerializableColors\": []\n },\n \"m_SourceType\": 1,\n \"m_FunctionName\": \"InjectPragmas\",\n \"m_FunctionSource\": \"0ed85852d1001bf44b1fef32640df23b\",\n \"m_FunctionBody\": \"#pragma instancing_options assumeuniformscaling procedural:ConfigureProcedural\\r\\n#pragma editor_sync_compilation\\r\\n\\r\\nOut = In;\"\n}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"m_Groups": [],
|
||||||
|
"m_StickyNotes": [],
|
||||||
|
"m_SerializableEdges": [
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.Graphing.Edge"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"194e0e0c-65f0-4bf3-a619-bcf2729578f2\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"95a9d98a-aa06-48ab-9f92-9ce2e7ff0b6b\"\n }\n}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.Graphing.Edge"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"e7286c87-1d71-43ac-8332-edf061cc3190\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 5,\n \"m_NodeGUIDSerialized\": \"95a9d98a-aa06-48ab-9f92-9ce2e7ff0b6b\"\n }\n}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.Graphing.Edge"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"73b8e2c8-e412-4552-93b4-0a36bbc85547\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"1316d71d-2778-4f0e-a302-bd8350708751\"\n }\n}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.Graphing.Edge"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"74abd017-3fff-4a75-a3a7-8642482eb9c6\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 9,\n \"m_NodeGUIDSerialized\": \"95a9d98a-aa06-48ab-9f92-9ce2e7ff0b6b\"\n }\n}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeInfo": {
|
||||||
|
"fullName": "UnityEditor.Graphing.Edge"
|
||||||
|
},
|
||||||
|
"JSONnodeData": "{\n \"m_OutputSlot\": {\n \"m_SlotId\": 1,\n \"m_NodeGUIDSerialized\": \"1316d71d-2778-4f0e-a302-bd8350708751\"\n },\n \"m_InputSlot\": {\n \"m_SlotId\": 0,\n \"m_NodeGUIDSerialized\": \"74abd017-3fff-4a75-a3a7-8642482eb9c6\"\n }\n}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"m_PreviewData": {
|
||||||
|
"serializedMesh": {
|
||||||
|
"m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}",
|
||||||
|
"m_Guid": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"m_Path": "Shader Graphs",
|
||||||
|
"m_ConcretePrecision": 0,
|
||||||
|
"m_ActiveOutputNodeGuidSerialized": "95a9d98a-aa06-48ab-9f92-9ce2e7ff0b6b"
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2ccc118ffa0f0574ba86592258e86a9e
|
||||||
|
ScriptedImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}
|
||||||
+79
-29
@@ -4,13 +4,15 @@ public class Fractal : MonoBehaviour
|
|||||||
{
|
{
|
||||||
private struct FractalPart
|
private struct FractalPart
|
||||||
{
|
{
|
||||||
public Vector3 direction;
|
public Vector3 direction, worldPosition;
|
||||||
public Quaternion rotation;
|
public Quaternion rotation, worldRotation;
|
||||||
public Transform transform;
|
public float spinAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
FractalPart[][] parts;
|
FractalPart[][] parts;
|
||||||
|
|
||||||
|
Matrix4x4[][] matrices;
|
||||||
|
|
||||||
[SerializeField, Range(1, 8)]
|
[SerializeField, Range(1, 8)]
|
||||||
int depth = 4;
|
int depth = 4;
|
||||||
|
|
||||||
@@ -38,72 +40,120 @@ public class Fractal : MonoBehaviour
|
|||||||
Quaternion.Euler(-90f, 0f, 0f)
|
Quaternion.Euler(-90f, 0f, 0f)
|
||||||
};
|
};
|
||||||
|
|
||||||
private FractalPart CreatePart(int levelIndex, int childIndex, float scale)
|
private FractalPart CreatePart(int childIndex)
|
||||||
{
|
{
|
||||||
var go = new GameObject("Fractal Part L" + levelIndex + " C" + childIndex);
|
|
||||||
go.transform.localScale = scale * Vector3.one;
|
|
||||||
go.transform.SetParent(transform, false);
|
|
||||||
go.AddComponent<MeshFilter>().mesh = mesh;
|
|
||||||
go.AddComponent<MeshRenderer>().material = material;
|
|
||||||
|
|
||||||
return new FractalPart()
|
return new FractalPart()
|
||||||
{
|
{
|
||||||
direction = directions[childIndex],
|
direction = directions[childIndex],
|
||||||
rotation = rotations[childIndex],
|
rotation = rotations[childIndex]
|
||||||
transform = go.transform
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Awake()
|
ComputeBuffer[] matricesBuffers;
|
||||||
|
|
||||||
|
static readonly int matricesId = Shader.PropertyToID("_Matrices");
|
||||||
|
|
||||||
|
static MaterialPropertyBlock propertyBlock;
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
{
|
{
|
||||||
parts = new FractalPart[depth][];
|
parts = new FractalPart[depth][];
|
||||||
|
matrices = new Matrix4x4[depth][];
|
||||||
|
matricesBuffers = new ComputeBuffer[depth];
|
||||||
|
int stride = 16 * 4;
|
||||||
for (int i = 0, length = 1; i < parts.Length; i++, length *= 5)
|
for (int i = 0, length = 1; i < parts.Length; i++, length *= 5)
|
||||||
{
|
{
|
||||||
parts[i] = new FractalPart[length];
|
parts[i] = new FractalPart[length];
|
||||||
|
matrices[i] = new Matrix4x4[length];
|
||||||
|
matricesBuffers[i] = new ComputeBuffer(length, stride);
|
||||||
}
|
}
|
||||||
|
|
||||||
var scale = 1f;
|
parts[0][0] = CreatePart(0);
|
||||||
parts[0][0] = CreatePart(0, 0, scale);
|
|
||||||
for (int li = 1; li < parts.Length; li++)
|
for (int li = 1; li < parts.Length; li++)
|
||||||
{
|
{
|
||||||
scale *= 0.5f;
|
|
||||||
FractalPart[] levelParts = parts[li];
|
FractalPart[] levelParts = parts[li];
|
||||||
for (int fpi = 0; fpi < levelParts.Length; fpi += 5)
|
for (int fpi = 0; fpi < levelParts.Length; fpi += 5)
|
||||||
{
|
{
|
||||||
for (int ci = 0; ci < 5; ci++)
|
for (int ci = 0; ci < 5; ci++)
|
||||||
{
|
{
|
||||||
levelParts[fpi + ci] = CreatePart(li, ci, scale);
|
levelParts[fpi + ci] = CreatePart(ci);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (propertyBlock == null)
|
||||||
|
{
|
||||||
|
propertyBlock = new MaterialPropertyBlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < matricesBuffers.Length; i++)
|
||||||
|
{
|
||||||
|
matricesBuffers[i].Release();
|
||||||
|
}
|
||||||
|
parts = null;
|
||||||
|
matrices = null;
|
||||||
|
matricesBuffers = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnValidate()
|
||||||
|
{
|
||||||
|
if (parts != null && enabled)
|
||||||
|
{
|
||||||
|
OnDisable();
|
||||||
|
OnEnable();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
Quaternion deltaRotation = Quaternion.Euler(0f, 22.5f * Time.deltaTime, 0f);
|
float spinAngleDelta = 22.5f * Time.deltaTime;
|
||||||
|
|
||||||
FractalPart rootPart = parts[0][0];
|
FractalPart rootPart = parts[0][0];
|
||||||
rootPart.rotation *= deltaRotation;
|
rootPart.spinAngle += spinAngleDelta;
|
||||||
rootPart.transform.localRotation = rootPart.rotation;
|
rootPart.worldRotation =
|
||||||
|
transform.rotation *
|
||||||
|
(rootPart.rotation * Quaternion.Euler(0f, rootPart.spinAngle, 0f));
|
||||||
|
rootPart.worldPosition = transform.position;
|
||||||
parts[0][0] = rootPart;
|
parts[0][0] = rootPart;
|
||||||
|
float objectScale = transform.lossyScale.x;
|
||||||
|
matrices[0][0] = Matrix4x4.TRS(
|
||||||
|
rootPart.worldPosition, rootPart.worldRotation, objectScale * Vector3.one
|
||||||
|
);
|
||||||
|
|
||||||
|
float scale = objectScale;
|
||||||
for (int li = 1; li < parts.Length; li++)
|
for (int li = 1; li < parts.Length; li++)
|
||||||
{
|
{
|
||||||
|
scale *= 0.5f;
|
||||||
FractalPart[] parentParts = parts[li - 1];
|
FractalPart[] parentParts = parts[li - 1];
|
||||||
FractalPart[] levelParts = parts[li];
|
FractalPart[] levelParts = parts[li];
|
||||||
|
Matrix4x4[] levelMatrices = matrices[li];
|
||||||
for (int fpi = 0; fpi < levelParts.Length; fpi++)
|
for (int fpi = 0; fpi < levelParts.Length; fpi++)
|
||||||
{
|
{
|
||||||
var parentTransform = parentParts[fpi / 5].transform;
|
var parent = parentParts[fpi / 5];
|
||||||
var part = levelParts[fpi];
|
var part = levelParts[fpi];
|
||||||
part.rotation *= deltaRotation;
|
part.spinAngle += spinAngleDelta;
|
||||||
part.transform.rotation =
|
part.worldRotation =
|
||||||
parentTransform.localRotation * part.rotation;
|
parent.worldRotation *
|
||||||
part.transform.localPosition =
|
(part.rotation * Quaternion.Euler(0f, part.spinAngle, 0f));
|
||||||
parentTransform.localPosition +
|
part.worldPosition =
|
||||||
parentTransform.localRotation *
|
parent.worldPosition +
|
||||||
(1.5f * part.transform.localScale.x * part.direction);
|
parent.worldRotation * (1.5f * scale * part.direction);
|
||||||
levelParts[fpi] = part;
|
levelParts[fpi] = part;
|
||||||
|
levelMatrices[fpi] = Matrix4x4.TRS(
|
||||||
|
part.worldPosition, part.worldRotation, scale * Vector3.one
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var bounds = new Bounds(rootPart.worldPosition, 3f * objectScale * Vector3.one);
|
||||||
|
for (int i = 0; i < matricesBuffers.Length; i++)
|
||||||
|
{
|
||||||
|
ComputeBuffer buffer = matricesBuffers[i];
|
||||||
|
buffer.SetData(matrices[i]);
|
||||||
|
propertyBlock.SetBuffer(matricesId, buffer);
|
||||||
|
Graphics.DrawMeshInstancedProcedural(mesh, 0, material, bounds, buffer.count, propertyBlock);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#if defined(UNITY_PROCEDURAL_INSTANCING_ENABLED)
|
||||||
|
StructuredBuffer<float4x4> _Matrices;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void ConfigureProcedural () {
|
||||||
|
#if defined(UNITY_PROCEDURAL_INSTANCING_ENABLED)
|
||||||
|
unity_ObjectToWorld = _Matrices[unity_InstanceID];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShaderGraphFunction_float (float3 In, out float3 Out) {
|
||||||
|
Out = In;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShaderGraphFunction_half (half3 In, out half3 Out) {
|
||||||
|
Out = In;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0ed85852d1001bf44b1fef32640df23b
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Reference in new issue
Block a user