diff --git a/.gitignore b/.gitignore index ab2743b..6ba480c 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,7 @@ Ignore /IsoMesh/Logs /IsoMesh/Logs.meta /IsoMesh/.vs + +IsoMesh/.idea/.idea.IsoMesh/.idea/ + +.idea/ diff --git a/IsoMesh/Assets/Data/SDFMeshes/L4_128.prefab b/IsoMesh/Assets/Data/SDFMeshes/L4_128.prefab new file mode 100644 index 0000000..671e700 --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/L4_128.prefab @@ -0,0 +1,61 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4846915900410137571 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2599004912838745801} + - component: {fileID: 7602214082958364462} + m_Layer: 0 + m_Name: L4_128 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2599004912838745801 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4846915900410137571} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.0921891, y: -1.0890272, z: -0.93915534} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7602214082958364462 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4846915900410137571} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 22defd7931d2d044eab8a3503982c737, type: 3} + m_Name: + m_EditorClassIdentifier: + m_sdfGroup: {fileID: 0} + m_material: + m_type: 1 + m_texture: {fileID: 0} + m_colour: {r: 1, g: 1, b: 1, a: 1} + m_emission: {r: 0, g: 0, b: 0, a: 1} + m_materialSmoothing: 0.1 + m_metallic: 0.5 + m_smoothness: 0.5 + m_subsurfaceColour: {r: 0, g: 0, b: 0, a: 1} + m_subsurfaceScatteringPower: 0 + m_smoothing: 0.000000001 + m_asset: {fileID: 11400000, guid: ead5d717f95784547a94bcb3d960dc2d, type: 2} + m_operation: 0 + m_flip: 0 diff --git a/IsoMesh/Assets/Data/SDFMeshes/L4_128.prefab.meta b/IsoMesh/Assets/Data/SDFMeshes/L4_128.prefab.meta new file mode 100644 index 0000000..0eec7f7 --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/L4_128.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3f55869001849a740ab4e19dea60f74e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Data/SDFMeshes/L4_64_UV.prefab b/IsoMesh/Assets/Data/SDFMeshes/L4_64_UV.prefab new file mode 100644 index 0000000..6e0f9d1 --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/L4_64_UV.prefab @@ -0,0 +1,61 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4946783886371706785 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6716542031879256770} + - component: {fileID: 1873353662914679674} + m_Layer: 0 + m_Name: L4_64_UV + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6716542031879256770 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4946783886371706785} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1873353662914679674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4946783886371706785} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 22defd7931d2d044eab8a3503982c737, type: 3} + m_Name: + m_EditorClassIdentifier: + m_sdfGroup: {fileID: 0} + m_material: + m_type: 1 + m_texture: {fileID: 0} + m_colour: {r: 1, g: 1, b: 1, a: 1} + m_emission: {r: 0, g: 0, b: 0, a: 1} + m_materialSmoothing: 0.1 + m_metallic: 0.5 + m_smoothness: 0.5 + m_subsurfaceColour: {r: 0, g: 0, b: 0, a: 1} + m_subsurfaceScatteringPower: 0 + m_smoothing: 0.000000001 + m_asset: {fileID: 11400000, guid: 048f821f6102c3a45a2415385fd3862b, type: 2} + m_operation: 0 + m_flip: 0 diff --git a/IsoMesh/Assets/Data/SDFMeshes/L4_64_UV.prefab.meta b/IsoMesh/Assets/Data/SDFMeshes/L4_64_UV.prefab.meta new file mode 100644 index 0000000..49dc412 --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/L4_64_UV.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c3d64076b30866c4d8f65060f0870944 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_128.asset b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_128.asset new file mode 100644 index 0000000..f2a298e --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_128.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:872cc3d26558c60d78bc190cba16b27fea0d90c7f36645dc1c11c9252f7ac729 +size 42540827 diff --git a/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_128.asset.meta b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_128.asset.meta new file mode 100644 index 0000000..1863328 --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_128.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ead5d717f95784547a94bcb3d960dc2d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_64.asset b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_64.asset new file mode 100644 index 0000000..8122800 --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_64.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd64b1ad382f7b88342c3f11dfbd87923bc34cacc8d800b0d315a56d13086d0c +size 6946826 diff --git a/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_64.asset.meta b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_64.asset.meta new file mode 100644 index 0000000..e745a66 --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_SM_YZ_L4_G_64.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 048f821f6102c3a45a2415385fd3862b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_Tube001_128.asset b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_Tube001_128.asset new file mode 100644 index 0000000..efe152b --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_Tube001_128.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9120ff94cd54eb8f4a8dbfa8d1e2a1a7db0e44c5a54407989d019e60ee8a80a7 +size 31483139 diff --git a/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_Tube001_128.asset.meta b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_Tube001_128.asset.meta new file mode 100644 index 0000000..1689dfb --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/SDFMesh_Tube001_128.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b1b9fff7c4fe8f4881385994d3cdbf4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Data/SDFMeshes/Trepan.prefab b/IsoMesh/Assets/Data/SDFMeshes/Trepan.prefab new file mode 100644 index 0000000..3e6ab7b --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/Trepan.prefab @@ -0,0 +1,61 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1606446165305398147 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6343949773096265650} + - component: {fileID: 3829202832100708252} + m_Layer: 0 + m_Name: Trepan + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6343949773096265650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606446165305398147} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.7352185, y: -0.7372413, z: -0.22781038} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3829202832100708252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606446165305398147} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 22defd7931d2d044eab8a3503982c737, type: 3} + m_Name: + m_EditorClassIdentifier: + m_sdfGroup: {fileID: 0} + m_material: + m_type: 1 + m_texture: {fileID: 0} + m_colour: {r: 1, g: 1, b: 1, a: 1} + m_emission: {r: 0, g: 0, b: 0, a: 1} + m_materialSmoothing: 0.1 + m_metallic: 0.5 + m_smoothness: 0.5 + m_subsurfaceColour: {r: 0, g: 0, b: 0, a: 1} + m_subsurfaceScatteringPower: 0 + m_smoothing: 0.000000001 + m_asset: {fileID: 11400000, guid: 1b1b9fff7c4fe8f4881385994d3cdbf4, type: 2} + m_operation: 0 + m_flip: 0 diff --git a/IsoMesh/Assets/Data/SDFMeshes/Trepan.prefab.meta b/IsoMesh/Assets/Data/SDFMeshes/Trepan.prefab.meta new file mode 100644 index 0000000..bdae398 --- /dev/null +++ b/IsoMesh/Assets/Data/SDFMeshes/Trepan.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f8a8bccebc8a3964ead589139e6d6639 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Materials/Debug/NormalDebugger_Material.mat b/IsoMesh/Assets/Materials/Debug/NormalDebugger_Material.mat index d0b4942..20485f9 100644 --- a/IsoMesh/Assets/Materials/Debug/NormalDebugger_Material.mat +++ b/IsoMesh/Assets/Materials/Debug/NormalDebugger_Material.mat @@ -2,20 +2,24 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: NormalDebugger_Material m_Shader: {fileID: -6465566751694194690, guid: a1727a4b2cf9a33449ac5ebc519794c2, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -94,6 +98,7 @@ Material: - _Metallic: 0 - _OcclusionStrength: 1 - _Parallax: 0.005 + - _QueueControl: 0 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 @@ -121,4 +126,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 7 diff --git a/IsoMesh/Assets/Materials/Debug/UVDebugger_Material.mat b/IsoMesh/Assets/Materials/Debug/UVDebugger_Material.mat index c29ac4b..87beb74 100644 --- a/IsoMesh/Assets/Materials/Debug/UVDebugger_Material.mat +++ b/IsoMesh/Assets/Materials/Debug/UVDebugger_Material.mat @@ -12,23 +12,27 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: UVDebugger_Material m_Shader: {fileID: -6465566751694194690, guid: 3270c2a18b4646e49a8b840d027010ca, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -107,6 +111,7 @@ Material: - _Metallic: 0 - _OcclusionStrength: 1 - _Parallax: 0.005 + - _QueueControl: 0 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 diff --git a/IsoMesh/Assets/Materials/Debug/VertexColourDebugger_Material.mat b/IsoMesh/Assets/Materials/Debug/VertexColourDebugger_Material.mat index f95b004..5cd9e2d 100644 --- a/IsoMesh/Assets/Materials/Debug/VertexColourDebugger_Material.mat +++ b/IsoMesh/Assets/Materials/Debug/VertexColourDebugger_Material.mat @@ -12,23 +12,27 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: VertexColourDebugger_Material m_Shader: {fileID: -6465566751694194690, guid: 9bf014f608bb89a4281649fac59f9ccd, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -107,6 +111,7 @@ Material: - _Metallic: 0 - _OcclusionStrength: 1 - _Parallax: 0.005 + - _QueueControl: 0 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 diff --git a/IsoMesh/Assets/Materials/New Material.mat b/IsoMesh/Assets/Materials/New Material.mat new file mode 100644 index 0000000..e6ce2cc --- /dev/null +++ b/IsoMesh/Assets/Materials/New Material.mat @@ -0,0 +1,133 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7552870832089415717 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Material + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 59941fe0cb5ef664ebb09dc32599f9de, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 59941fe0cb5ef664ebb09dc32599f9de, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {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} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/IsoMesh/Assets/Materials/New Material.mat.meta b/IsoMesh/Assets/Materials/New Material.mat.meta new file mode 100644 index 0000000..66d3499 --- /dev/null +++ b/IsoMesh/Assets/Materials/New Material.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 82765edbf6c9c354bb6b5d67768176f4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Materials/Procedural/Procedural_Material.mat b/IsoMesh/Assets/Materials/Procedural/Procedural_Material.mat index 27fca92..7dd4eac 100644 --- a/IsoMesh/Assets/Materials/Procedural/Procedural_Material.mat +++ b/IsoMesh/Assets/Materials/Procedural/Procedural_Material.mat @@ -2,20 +2,25 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Procedural_Material m_Shader: {fileID: -6465566751694194690, guid: 0c900dd24ae73dd4b8c0eac8b4dfed74, type: 3} - m_ShaderKeywords: APPLYSUBSURFACESCATTERING + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - APPLYSUBSURFACESCATTERING + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -127,4 +132,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 7 diff --git a/IsoMesh/Assets/Materials/Procedural/Resources/Procedural_MeshMaterial.mat b/IsoMesh/Assets/Materials/Procedural/Resources/Procedural_MeshMaterial.mat index 787e265..9c1a58a 100644 --- a/IsoMesh/Assets/Materials/Procedural/Resources/Procedural_MeshMaterial.mat +++ b/IsoMesh/Assets/Materials/Procedural/Resources/Procedural_MeshMaterial.mat @@ -12,23 +12,27 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 7 --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Procedural_MeshMaterial m_Shader: {fileID: -6465566751694194690, guid: 1bb3058e177a76a4ca05ee3ead68330c, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: diff --git a/IsoMesh/Assets/Materials/Raymarching/Material_Raymarcher.mat b/IsoMesh/Assets/Materials/Raymarching/Material_Raymarcher.mat index 43ad2d9..7be3980 100644 --- a/IsoMesh/Assets/Materials/Raymarching/Material_Raymarcher.mat +++ b/IsoMesh/Assets/Materials/Raymarching/Material_Raymarcher.mat @@ -2,20 +2,27 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Material_Raymarcher m_Shader: {fileID: -6465566751694194690, guid: 1d0b6ab2bfe4c114c9fa0ec170448ad8, type: 3} - m_ShaderKeywords: BOOLEAN_724FBFFC18DC4F54A1277B3BD25D4290_ON ENUM_2C14C6FE8E824100A3E880208D1E929F_DEFAULT + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - ENUM_67DA6B115C454E6E90C989231F192889_COLOURED + m_InvalidKeywords: + - BOOLEAN_724FBFFC18DC4F54A1277B3BD25D4290_ON + - ENUM_2C14C6FE8E824100A3E880208D1E929F_DEFAULT m_LightmapFlags: 4 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -87,6 +94,7 @@ Material: - _NormalSmoothing: 0.011 - _OcclusionStrength: 1 - _PushIn: 0.002 + - _QueueControl: 0 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 @@ -118,4 +126,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 7 diff --git a/IsoMesh/Assets/Materials/TransMat.mat b/IsoMesh/Assets/Materials/TransMat.mat new file mode 100644 index 0000000..c83713d --- /dev/null +++ b/IsoMesh/Assets/Materials/TransMat.mat @@ -0,0 +1,137 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9150604748863089822 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TransMat + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHAPREMULTIPLY_ON + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - DepthOnly + - SHADOWCASTER + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0.45138884, g: 0.8584906, b: 0.33610713, a: 0.2784314} + - _Color: {r: 0.45138878, g: 0.8584906, b: 0.33610708, a: 0.2784314} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/IsoMesh/Assets/Materials/TransMat.mat.meta b/IsoMesh/Assets/Materials/TransMat.mat.meta new file mode 100644 index 0000000..82025f6 --- /dev/null +++ b/IsoMesh/Assets/Materials/TransMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69febcf8cb37beb4b8fee6dfd7612377 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Materials/dt.png b/IsoMesh/Assets/Materials/dt.png new file mode 100644 index 0000000..50acf42 --- /dev/null +++ b/IsoMesh/Assets/Materials/dt.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8e485ad98221235219557a26dd3a07a828458a705ab2305eef7fb3e37c2e338 +size 756692 diff --git a/IsoMesh/Assets/Materials/dt.png.meta b/IsoMesh/Assets/Materials/dt.png.meta new file mode 100644 index 0000000..1c27fc0 --- /dev/null +++ b/IsoMesh/Assets/Materials/dt.png.meta @@ -0,0 +1,166 @@ +fileFormatVersion: 2 +guid: ae0694fd95d94164583ce3733516d182 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git "a/IsoMesh/Assets/Materials/\345\212\240\350\275\275\347\225\214\351\235\242\350\203\214\346\231\257.png" "b/IsoMesh/Assets/Materials/\345\212\240\350\275\275\347\225\214\351\235\242\350\203\214\346\231\257.png" new file mode 100644 index 0000000..eecd1b8 --- /dev/null +++ "b/IsoMesh/Assets/Materials/\345\212\240\350\275\275\347\225\214\351\235\242\350\203\214\346\231\257.png" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd40630b75c57f057fc5b2378897040596d9c90065ed038b0f3def8b8a949706 +size 410531 diff --git "a/IsoMesh/Assets/Materials/\345\212\240\350\275\275\347\225\214\351\235\242\350\203\214\346\231\257.png.meta" "b/IsoMesh/Assets/Materials/\345\212\240\350\275\275\347\225\214\351\235\242\350\203\214\346\231\257.png.meta" new file mode 100644 index 0000000..bfc55d6 --- /dev/null +++ "b/IsoMesh/Assets/Materials/\345\212\240\350\275\275\347\225\214\351\235\242\350\203\214\346\231\257.png.meta" @@ -0,0 +1,166 @@ +fileFormatVersion: 2 +guid: 59941fe0cb5ef664ebb09dc32599f9de +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Meshes/GuTou_ALL.FBX b/IsoMesh/Assets/Meshes/GuTou_ALL.FBX new file mode 100644 index 0000000..0222293 Binary files /dev/null and b/IsoMesh/Assets/Meshes/GuTou_ALL.FBX differ diff --git a/IsoMesh/Assets/Meshes/GuTou_ALL.FBX.meta b/IsoMesh/Assets/Meshes/GuTou_ALL.FBX.meta new file mode 100644 index 0000000..844bc9c --- /dev/null +++ b/IsoMesh/Assets/Meshes/GuTou_ALL.FBX.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: 26c4b8afcf544244caa73e1496028649 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Meshes/HJT2.obj b/IsoMesh/Assets/Meshes/HJT2.obj new file mode 100644 index 0000000..9d41f6c --- /dev/null +++ b/IsoMesh/Assets/Meshes/HJT2.obj @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c3d8d542dc5b810862897c49b941619daa336a20d9434df3f1f54c5f9b2ab5a +size 1871 diff --git a/IsoMesh/Assets/Meshes/HJT2.obj.meta b/IsoMesh/Assets/Meshes/HJT2.obj.meta new file mode 100644 index 0000000..69207cb --- /dev/null +++ b/IsoMesh/Assets/Meshes/HJT2.obj.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: 1b87206684a785a4794a451a0a664535 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Scenes/GeneratorTest.unity b/IsoMesh/Assets/Scenes/GeneratorTest.unity new file mode 100644 index 0000000..d94f065 --- /dev/null +++ b/IsoMesh/Assets/Scenes/GeneratorTest.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c83ba65dd7c97539cf750e8e0b41372181410ee9d983b3eb50d7fc080c6661e +size 2236662 diff --git a/IsoMesh/Assets/Scenes/GeneratorTest.unity.meta b/IsoMesh/Assets/Scenes/GeneratorTest.unity.meta new file mode 100644 index 0000000..3cff4b2 --- /dev/null +++ b/IsoMesh/Assets/Scenes/GeneratorTest.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d62caaeee1e80914285d68f45a5e9944 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Scenes/MeshGen Sample Scene.unity b/IsoMesh/Assets/Scenes/MeshGen Sample Scene.unity index 8e8ed25..1349c30 100644 --- a/IsoMesh/Assets/Scenes/MeshGen Sample Scene.unity +++ b/IsoMesh/Assets/Scenes/MeshGen Sample Scene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84d73cbeba52a3ca7d4c16a56ac2fe645fa2eca05c6993608f6900bf5129bf5a -size 22723 +oid sha256:6c89c0b43423c500dcdc53e0e51737bcf506ce0f1ea7e56555567878b477998a +size 28274 diff --git a/IsoMesh/Assets/Scenes/Raymarch Sample Scene.unity b/IsoMesh/Assets/Scenes/Raymarch Sample Scene.unity index e272cf6..cf21f18 100644 --- a/IsoMesh/Assets/Scenes/Raymarch Sample Scene.unity +++ b/IsoMesh/Assets/Scenes/Raymarch Sample Scene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:748e2620b8535977716a271abd71584eba8c9f57e7a4222178132ee73c93d3e5 -size 26998 +oid sha256:e729fd883477dc2ad9d2ec7eeb1061fc74c02a23bac75a3621e60a6a2ebf5729 +size 29700 diff --git a/IsoMesh/Assets/Scripts.meta b/IsoMesh/Assets/Scripts.meta new file mode 100644 index 0000000..d1e1996 --- /dev/null +++ b/IsoMesh/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 305a1376c18ecb54899eb0a21864dc6f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Scripts/DynamicShadow.cs b/IsoMesh/Assets/Scripts/DynamicShadow.cs new file mode 100644 index 0000000..ff57e81 --- /dev/null +++ b/IsoMesh/Assets/Scripts/DynamicShadow.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +namespace DynamicCollision +{ + public class DynamicShadow : MonoBehaviour + { + [SerializeField] private Transform master; + + private void Update() + { + var transShadow = transform; + var transMaster = master.transform; + transShadow.position = transMaster.position; + transShadow.rotation = transMaster.rotation; + } + } +} \ No newline at end of file diff --git a/IsoMesh/Assets/Scripts/DynamicShadow.cs.meta b/IsoMesh/Assets/Scripts/DynamicShadow.cs.meta new file mode 100644 index 0000000..55f05f7 --- /dev/null +++ b/IsoMesh/Assets/Scripts/DynamicShadow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 063c20e7e04de2640af49168e0fc19ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IsoMesh/Assets/Settings/ForwardRenderer.asset b/IsoMesh/Assets/Settings/ForwardRenderer.asset index cc01ad5..440eaa2 100644 --- a/IsoMesh/Assets/Settings/ForwardRenderer.asset +++ b/IsoMesh/Assets/Settings/ForwardRenderer.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18ec82408accad79aad9b11b07c3ac0eb86e2241708f5dd7f42a0125b0d8b474 -size 2250 +oid sha256:a2666a449ce6bdd04579a4399baf6a0538fd29d59c4318ab687d8f71f6174f6e +size 2584 diff --git a/IsoMesh/Assets/Settings/UniversalRP-HighQuality.asset b/IsoMesh/Assets/Settings/UniversalRP-HighQuality.asset index efa7e33..5125a41 100644 --- a/IsoMesh/Assets/Settings/UniversalRP-HighQuality.asset +++ b/IsoMesh/Assets/Settings/UniversalRP-HighQuality.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc6ea5c8b10071b9d6d1d989439d722fdb70ab803a498ce7e56ffdee585a26fd -size 2101 +oid sha256:171a1a2810b6a372e4d02f27ceb84ecaafc71b619e89a9b98b316023f32b781a +size 3508 diff --git a/IsoMesh/Assets/Settings/UniversalRP-LowQuality.asset b/IsoMesh/Assets/Settings/UniversalRP-LowQuality.asset index 8c8810a..fc85861 100644 --- a/IsoMesh/Assets/Settings/UniversalRP-LowQuality.asset +++ b/IsoMesh/Assets/Settings/UniversalRP-LowQuality.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae0655e1b0154bb9a1b6dc2b951f4d0db1ee9b728d8e6f7e4cbd5ce734c8131f -size 2100 +oid sha256:0ad9572f4ee0564fe1e1297fd565177cec135864c1180449dcbfe831e68c7875 +size 3507 diff --git a/IsoMesh/Assets/Settings/UniversalRP-MediumQuality.asset b/IsoMesh/Assets/Settings/UniversalRP-MediumQuality.asset index 900f000..dab1618 100644 --- a/IsoMesh/Assets/Settings/UniversalRP-MediumQuality.asset +++ b/IsoMesh/Assets/Settings/UniversalRP-MediumQuality.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad33a2bc3e5dbff9eea5b94850838afcd45bb4f62cf1df7d4208514c6c2d13b8 -size 2103 +oid sha256:d389597cd01a004b5c2fca5772b35e2dd147f28ba236ad4418cae16e81dfc287 +size 3510 diff --git a/IsoMesh/Assets/Source/HLSL/Compute_SDFMesh.compute b/IsoMesh/Assets/Source/HLSL/Compute_SDFMesh.compute index bbe7e85..b9f4e48 100644 --- a/IsoMesh/Assets/Source/HLSL/Compute_SDFMesh.compute +++ b/IsoMesh/Assets/Source/HLSL/Compute_SDFMesh.compute @@ -76,6 +76,18 @@ void CS_ComputeMeshBounds(uint3 id : SV_DispatchThreadID) InterlockedMax(_BoundsBuffer[5], maxZ_packed); } +// 这是一段使用HLSL高级渲染语言所写的,并在GPU上执行的计算着色器(Compute Shader)的代码。该计算着色器被分配给每一个纹理元素或网格元素,并根据一些算法来处理该元素。 +// 计算着色器在处理具有特定id的纹理元素时,先定义纹理元素在三维空间中的位置(x,y,z),然后检查这些坐标是否在预设的大小范围_Size内。如果超出,则直接返回不进行后续处理。 +// 接着,该函数将纹理坐标转换为物体空间的位置,做这件事的函数是 TexelToPosition(x, y, z)。 +// 然后,为了计算从物体空间的位置到每个三角形的最近距离,函数遍历输入的所有三角形。在这个过程中,它首先获取构成每个三角形的三个顶点index_a, index_b, index_c,并将它们从模型空间变换到世界空间。 +// 之后,采用RayIntersectsTriangle函数检查从物体空间的位置射出的光线是否与当前三角形相交。该函数返回一个布尔值以及一个交点。 +// 然后通过检查光线是否与三角形相交,判断点是否在该模型内部(通过 isInside *= (intersectsTriangle ? -1.0 : 1.0); 记录光线穿过三角形的次数,奇数次代表在内部,偶数次代表在外部)。 +// 接着计算物体空间的位置到当前三角形的最小距离dist,并在所有三角形中找到最小的距离。 +// 然后,根据选择的最佳三角形(具有最小距离的三角形),获取相关UV坐标和顶点坐标。 +// 然后更新距离,如果点位于模型内部,则返回负距离。 +// 计算出纹理在一维纹理(_Samples)中对应的索引,并将最小距离值存储在一维纹理数组中对应的位置。 +// 最后,如果定义了 WRITE_UVS, 那么它还会计算出纹理的UV坐标,并将这些UV坐标存储在一个更大的一维纹理(_PackedUVs)中。此坐标是通过三角形的巴里坐标插值计算得出的。 +// 总的来说,这个计算着色器的主要功能是计算每个纹理元素或者网格元素与模型表面的最近距离,并根据这个距离,在纹理或高度图中修改相应像素的颜色或值。 [numthreads(8, 8, 8)] void CS_SampleMeshDistances(uint3 id : SV_DispatchThreadID) { diff --git a/IsoMesh/Assets/Source/HLSL/MapSignedDistanceField.hlsl b/IsoMesh/Assets/Source/HLSL/MapSignedDistanceField.hlsl index 0fc95b1..32df2b0 100644 --- a/IsoMesh/Assets/Source/HLSL/MapSignedDistanceField.hlsl +++ b/IsoMesh/Assets/Source/HLSL/MapSignedDistanceField.hlsl @@ -221,7 +221,7 @@ float3 unsignedDirection_mesh(float3 p, SDFGPUData data, out float distSign, out return finalVec; } - +// 是不是在这里,直接把data值改成0 float sdf(float3 p, SDFGPUData data) { if (data.IsMesh()) @@ -343,7 +343,11 @@ float Map(float3 p) if (data.Operation == 0) minDist = sdf_op_smin(sdf(p, data), minDist, data.Smoothing); else if (data.Operation == 1) + { minDist = sdf_op_smoothSubtraction(sdf(p, data), minDist, data.Smoothing); + //在这里把data里的那个数据给改成0? + + } else minDist = sdf_op_smoothIntersection(sdf(p, data), minDist, data.Smoothing); } diff --git a/IsoMesh/Assets/Source/HLSL/Resources/Compute_IsoSurfaceExtraction.compute b/IsoMesh/Assets/Source/HLSL/Resources/Compute_IsoSurfaceExtraction.compute index 4adc3a9..a160adf 100644 --- a/IsoMesh/Assets/Source/HLSL/Resources/Compute_IsoSurfaceExtraction.compute +++ b/IsoMesh/Assets/Source/HLSL/Resources/Compute_IsoSurfaceExtraction.compute @@ -131,9 +131,11 @@ void Isosurface_Map(uint3 id : SV_DispatchThreadID) int z = id.z; int index = CellCoordinateToIndex(x, y, z); + float3 vertex = CellCoordinateToVertex(x, y, z); _Samples[index] = Map(vertex); + // 这里是不是应该直接修改原始sdf的索引的值 } bool TryGetEdgeSurfaceIntersection(float sample_from, float sample_to, float3 localPoint_from, float3 localPoint_to, float3 localOrigin, out float3 localIntersectionPoint) diff --git a/IsoMesh/Assets/Source/HLSL/Resources/SDF_DefaultMaterial.mat b/IsoMesh/Assets/Source/HLSL/Resources/SDF_DefaultMaterial.mat index 2e5ab3f..4b146ec 100644 --- a/IsoMesh/Assets/Source/HLSL/Resources/SDF_DefaultMaterial.mat +++ b/IsoMesh/Assets/Source/HLSL/Resources/SDF_DefaultMaterial.mat @@ -2,14 +2,17 @@ %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: - serializedVersion: 6 + serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: SDF_DefaultMaterial m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - m_ShaderKeywords: + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -17,6 +20,7 @@ Material: stringTagMap: RenderType: Opaque disabledShaderPasses: [] + m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: @@ -79,7 +83,9 @@ Material: m_Ints: [] m_Floats: - _AlphaClip: 0 + - _AlphaToMask: 0 - _Blend: 0 + - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 @@ -88,6 +94,7 @@ Material: - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 0 - _Glossiness: 0 @@ -101,6 +108,7 @@ Material: - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 - _Surface: 0 - _WorkflowMode: 1 - _ZWrite: 1 @@ -122,4 +130,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 5 + version: 7 diff --git a/IsoMesh/Assets/Source/SDFs/Editor/MeshSDFGenerator.cs b/IsoMesh/Assets/Source/SDFs/Editor/MeshSDFGenerator.cs index cda58f4..6037ca7 100644 --- a/IsoMesh/Assets/Source/SDFs/Editor/MeshSDFGenerator.cs +++ b/IsoMesh/Assets/Source/SDFs/Editor/MeshSDFGenerator.cs @@ -9,56 +9,41 @@ namespace IsoMesh.Editor { public class MeshSDFGenerator : EditorWindow { + #region Fields + private const string ASSET_SAVE_PATH = "Assets/Data/SDFMeshes/"; - [SerializeField] - [HideInInspector] - private ComputeShader m_meshSampleComputeShader; + [SerializeField] [HideInInspector] private ComputeShader m_meshSampleComputeShader; - [SerializeField] - [HideInInspector] - private ComputeShader m_tesselationComputeShader; + [SerializeField] [HideInInspector] private ComputeShader m_tesselationComputeShader; - [SerializeField] - private Mesh m_mesh; + [SerializeField] private Mesh m_mesh; private bool MissingMesh => m_mesh == null; - [SerializeField] - [Min(1)] - private int m_size = 128; + [SerializeField] [Min(1)] private int m_size = 128; - [SerializeField] - private float m_padding = 0.2f; + [SerializeField] private float m_padding = 0.2f; - [SerializeField] - private Vector3 m_translation = Vector3.zero; + [SerializeField] private Vector3 m_translation = Vector3.zero; - [SerializeField] - private Vector3 m_rotation = Vector3.zero; + [SerializeField] private Vector3 m_rotation = Vector3.zero; - [SerializeField] - private Vector3 m_scale = Vector3.one; + [SerializeField] private Vector3 m_scale = Vector3.one; private Matrix4x4 ModelTransform => Matrix4x4.TRS(m_translation, Quaternion.Euler(m_rotation), m_scale); - [SerializeField] - private bool m_tesselateMesh = false; + [SerializeField] private bool m_tesselateMesh = false; - [SerializeField] - private Mesh m_tessellatedMesh; + [SerializeField] private Mesh m_tessellatedMesh; - [SerializeField] - private int m_subdivisions = 1; + [SerializeField] private int m_subdivisions = 1; - [SerializeField] - private float m_minimumEdgeLength = 0.15f; + [SerializeField] private float m_minimumEdgeLength = 0.15f; - [SerializeField] - private bool m_sampleUVs = true; + [SerializeField] private bool m_sampleUVs = true; - [SerializeField] - private bool m_autosaveOnComplete = false; + [SerializeField] private bool m_autosaveOnComplete = false; private float[] m_samples; private float[] m_packedUVs; @@ -74,6 +59,8 @@ public class MeshSDFGenerator : EditorWindow private SerializedObject m_serializedObject; private SerializedProperties m_serializedProperties; + #endregion + private class SerializedProperties { public SerializedProperty Padding { get; } @@ -104,12 +91,14 @@ private void Generate() { m_tessellatedMesh = null; - using (ComputeSession session = new ComputeSession(m_meshSampleComputeShader, m_tesselationComputeShader, m_size, m_padding, m_sampleUVs, ModelTransform)) + using (ComputeSession session = new ComputeSession(m_meshSampleComputeShader, m_tesselationComputeShader, + m_size, m_padding, m_sampleUVs, ModelTransform)) { System.Diagnostics.Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew(); if (m_tesselateMesh) - session.DispatchWithTesselation(m_mesh, m_subdivisions, m_minimumEdgeLength, out m_samples, out m_packedUVs, out m_minBounds, out m_maxBounds, out m_tessellatedMesh); + session.DispatchWithTesselation(m_mesh, m_subdivisions, m_minimumEdgeLength, out m_samples, + out m_packedUVs, out m_minBounds, out m_maxBounds, out m_tessellatedMesh); else session.Dispatch(m_mesh, out m_samples, out m_packedUVs, out m_minBounds, out m_maxBounds); @@ -128,7 +117,8 @@ private void Save() if (!CanSave) return; - SDFMeshAsset.Create(ASSET_SAVE_PATH, "SDFMesh_" + m_mesh.name, m_samples, m_packedUVs, m_lastSubdivisionLevel, m_size, m_padding, m_mesh, m_minBounds, m_maxBounds); + SDFMeshAsset.Create(ASSET_SAVE_PATH, "SDFMesh_" + m_mesh.name, m_samples, m_packedUVs, + m_lastSubdivisionLevel, m_size, m_padding, m_mesh, m_minBounds, m_maxBounds); } private bool m_transformBoxOpened = false; @@ -142,7 +132,8 @@ private void OnGUI() { m_scrollPos = scroll.scrollPosition; - Mesh newMesh = (Mesh)EditorGUILayout.ObjectField("Mesh", m_mesh, typeof(Mesh), allowSceneObjects: false); + Mesh newMesh = + (Mesh)EditorGUILayout.ObjectField("Mesh", m_mesh, typeof(Mesh), allowSceneObjects: false); if (m_mesh != newMesh) { @@ -196,7 +187,8 @@ private void OnGUI() { if (m_tessellatedMesh != null) { - if (m_tesselatedMeshPreview != null && m_tesselatedMeshPreview.serializedObject.targetObject as Mesh != m_tessellatedMesh) + if (m_tesselatedMeshPreview != null && + m_tesselatedMeshPreview.serializedObject.targetObject as Mesh != m_tessellatedMesh) { DestroyImmediate(m_tesselatedMeshPreview); m_tesselatedMeshPreview = null; @@ -208,8 +200,10 @@ private void OnGUI() m_tesselatedMeshPreview.DrawPreview(GUILayoutUtility.GetRect(200, 200)); } - m_subdivisions = Mathf.Clamp(EditorGUILayout.IntField("Subdivisions", m_subdivisions), 0, 4); - m_minimumEdgeLength = Mathf.Max(EditorGUILayout.FloatField("Minimum Edge Length", m_minimumEdgeLength), 0f); + m_subdivisions = Mathf.Clamp(EditorGUILayout.IntField("Subdivisions", m_subdivisions), 0, + 4); + m_minimumEdgeLength = + Mathf.Max(EditorGUILayout.FloatField("Minimum Edge Length", m_minimumEdgeLength), 0f); //this.DrawIntField("Subdivisions", ref m_subdivisions, min: 0, max: 4); @@ -320,7 +314,8 @@ public static class Properties public int Dimensions => m_size * m_size * m_size; - public ComputeSession(ComputeShader meshSampleComputeShader, ComputeShader tesselationComputeShader, int size, float padding, bool sampleUVs, Matrix4x4 transform) + public ComputeSession(ComputeShader meshSampleComputeShader, ComputeShader tesselationComputeShader, + int size, float padding, bool sampleUVs, Matrix4x4 transform) { MeshSampleComputeShader = Instantiate(meshSampleComputeShader); TessellationComputeShader = Instantiate(tesselationComputeShader); @@ -338,13 +333,16 @@ public ComputeSession(ComputeShader meshSampleComputeShader, ComputeShader tesse m_packedUVs = new float[Dimensions]; BoundsBuffer = new ComputeBuffer(6, sizeof(int)); - MeshSampleComputeShader.SetBuffer(ComputeBoundsKernel, Properties.MeshBounds_RWStructuredBuffer, BoundsBuffer); + MeshSampleComputeShader.SetBuffer(ComputeBoundsKernel, Properties.MeshBounds_RWStructuredBuffer, + BoundsBuffer); SamplesBuffer = new ComputeBuffer(Dimensions, sizeof(float)); - MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.Samples_RWStructuredBuffer, SamplesBuffer); + MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.Samples_RWStructuredBuffer, + SamplesBuffer); PackedUVsBuffer = new ComputeBuffer(Dimensions, sizeof(float)); - MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.PackedUVs_RWStructuredBuffer, PackedUVsBuffer); + MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.PackedUVs_RWStructuredBuffer, + PackedUVsBuffer); MeshSampleComputeShader.SetInt(Properties.Size_Int, m_size); MeshSampleComputeShader.SetFloat(Properties.Padding_Float, m_padding); @@ -373,7 +371,8 @@ public void Dispose() DestroyImmediate(TessellationComputeShader); } - public void Dispatch(Mesh mesh, out float[] samples, out float[] packedUVs, out Vector3 minBounds, out Vector3 maxBounds) + public void Dispatch(Mesh mesh, out float[] samples, out float[] packedUVs, out Vector3 minBounds, + out Vector3 maxBounds) { m_triangles = mesh.triangles; m_vertices = mesh.vertices; @@ -381,19 +380,26 @@ public void Dispatch(Mesh mesh, out float[] samples, out float[] packedUVs, out m_uvs = mesh.uv; InputTrianglesBuffer = new ComputeBuffer(m_triangles.Length, sizeof(int), ComputeBufferType.Structured); - InputVerticesBuffer = new ComputeBuffer(m_vertices.Length, sizeof(float) * 3, ComputeBufferType.Structured); - InputNormalsBuffer = new ComputeBuffer(m_normals.Length, sizeof(float) * 3, ComputeBufferType.Structured); + InputVerticesBuffer = + new ComputeBuffer(m_vertices.Length, sizeof(float) * 3, ComputeBufferType.Structured); + InputNormalsBuffer = + new ComputeBuffer(m_normals.Length, sizeof(float) * 3, ComputeBufferType.Structured); InputTrianglesBuffer.SetData(m_triangles); InputNormalsBuffer.SetData(m_normals); InputVerticesBuffer.SetData(m_vertices); - MeshSampleComputeShader.SetBuffer(ComputeBoundsKernel, Properties.InputTriangles_StructuredBuffer, InputTrianglesBuffer); - MeshSampleComputeShader.SetBuffer(ComputeBoundsKernel, Properties.InputVertices_StructuredBuffer, InputVerticesBuffer); + MeshSampleComputeShader.SetBuffer(ComputeBoundsKernel, Properties.InputTriangles_StructuredBuffer, + InputTrianglesBuffer); + MeshSampleComputeShader.SetBuffer(ComputeBoundsKernel, Properties.InputVertices_StructuredBuffer, + InputVerticesBuffer); - MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.InputTriangles_StructuredBuffer, InputTrianglesBuffer); - MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.InputNormals_StructuredBuffer, InputNormalsBuffer); - MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.InputVertices_StructuredBuffer, InputVerticesBuffer); + MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.InputTriangles_StructuredBuffer, + InputTrianglesBuffer); + MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.InputNormals_StructuredBuffer, + InputNormalsBuffer); + MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.InputVertices_StructuredBuffer, + InputVerticesBuffer); bool hasUVs = !m_uvs.IsNullOrEmpty(); if (m_sampleUVs && hasUVs) @@ -401,7 +407,8 @@ public void Dispatch(Mesh mesh, out float[] samples, out float[] packedUVs, out MeshSampleComputeShader.EnableKeyword(WriteUVsKeyword); InputUVsBuffer = new ComputeBuffer(m_uvs.Length, sizeof(float) * 2, ComputeBufferType.Structured); InputUVsBuffer.SetData(m_uvs); - MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.InputUVs_StructuredBuffer, InputUVsBuffer); + MeshSampleComputeShader.SetBuffer(GetTextureWholeKernel, Properties.InputUVs_StructuredBuffer, + InputUVsBuffer); } else { @@ -415,7 +422,9 @@ public void Dispatch(Mesh mesh, out float[] samples, out float[] packedUVs, out RunSamplePhase(hasUVs, out samples, out packedUVs, minBounds, maxBounds); } - public void DispatchWithTesselation(Mesh mesh, int subdivisions, float minimumEdgeLength, out float[] samples, out float[] packedUVs, out Vector3 minBounds, out Vector3 maxBounds, out Mesh tessellatedMesh) + public void DispatchWithTesselation(Mesh mesh, int subdivisions, float minimumEdgeLength, + out float[] samples, out float[] packedUVs, out Vector3 minBounds, out Vector3 maxBounds, + out Mesh tessellatedMesh) { m_triangles = mesh.triangles; m_vertices = mesh.vertices; @@ -431,13 +440,16 @@ private void RunBoundsPhase(Mesh mesh, out Vector3 minBounds, out Vector3 maxBou { int[] meshBounds = new int[6]; BoundsBuffer.SetData(meshBounds); - MeshSampleComputeShader.Dispatch(ComputeBoundsKernel, Mathf.CeilToInt(mesh.triangles.Length / 64f), 1, 1); + MeshSampleComputeShader.Dispatch(ComputeBoundsKernel, Mathf.CeilToInt(mesh.triangles.Length / 64f), 1, + 1); BoundsBuffer.GetData(meshBounds); const float packingMultiplier = 1000f; - minBounds = new Vector3(meshBounds[0] / packingMultiplier, meshBounds[1] / packingMultiplier, meshBounds[2] / packingMultiplier); - maxBounds = new Vector3(meshBounds[3] / packingMultiplier, meshBounds[4] / packingMultiplier, meshBounds[5] / packingMultiplier); + minBounds = new Vector3(meshBounds[0] / packingMultiplier, meshBounds[1] / packingMultiplier, + meshBounds[2] / packingMultiplier); + maxBounds = new Vector3(meshBounds[3] / packingMultiplier, meshBounds[4] / packingMultiplier, + meshBounds[5] / packingMultiplier); minBounds -= m_padding * Vector3.one; maxBounds += m_padding * Vector3.one; @@ -447,7 +459,8 @@ private void RunBoundsPhase(Mesh mesh, out Vector3 minBounds, out Vector3 maxBou /// Note: I chose to use buffers instead of writing to texture 3ds directly on the GPU because for some reason it's /// stupidly complicated to write to a texture3d on the gpu and then get that data back to the cpu for serialization. /// - private void RunSamplePhase(bool hasUVs, out float[] samples, out float[] packedUVs, Vector3 minBounds, Vector3 maxBounds) + private void RunSamplePhase(bool hasUVs, out float[] samples, out float[] packedUVs, Vector3 minBounds, + Vector3 maxBounds) { MeshSampleComputeShader.SetVector(Properties.MinBounds_Vector3, minBounds); MeshSampleComputeShader.SetVector(Properties.MaxBounds_Vector3, maxBounds); @@ -518,17 +531,25 @@ void SetOutputPreprocess(int stride, int nameID, ref ComputeBuffer buffer) TessellationComputeShader.SetBuffer(PreprocessMeshKernel, nameID, buffer); } - SetInputPreprocess(m_vertices, sizeof(float) * 3, Properties.InputVertices_StructuredBuffer, ref InputVerticesBuffer); - SetInputPreprocess(m_normals, sizeof(float) * 3, Properties.InputNormals_StructuredBuffer, ref InputNormalsBuffer); - SetInputPreprocess(m_tangents, sizeof(float) * 4, Properties.InputTangents_StructuredBuffer, ref InputTangentsBuffer); + SetInputPreprocess(m_vertices, sizeof(float) * 3, Properties.InputVertices_StructuredBuffer, + ref InputVerticesBuffer); + SetInputPreprocess(m_normals, sizeof(float) * 3, Properties.InputNormals_StructuredBuffer, + ref InputNormalsBuffer); + SetInputPreprocess(m_tangents, sizeof(float) * 4, Properties.InputTangents_StructuredBuffer, + ref InputTangentsBuffer); SetInputPreprocess(m_uvs, sizeof(float) * 2, Properties.InputUVs_StructuredBuffer, ref InputUVsBuffer); - SetInputPreprocess(m_triangles, sizeof(int), Properties.InputTriangles_StructuredBuffer, ref InputTrianglesBuffer); - - SetOutputPreprocess(sizeof(float) * 3, Properties.OutputVertices_StructuredBuffer, ref OutputVerticesBuffer); - SetOutputPreprocess(sizeof(float) * 3, Properties.OutputNormals_StructuredBuffer, ref OutputNormalsBuffer); - SetOutputPreprocess(sizeof(float) * 4, Properties.OutputTangents_StructuredBuffer, ref OutputTangentsBuffer); + SetInputPreprocess(m_triangles, sizeof(int), Properties.InputTriangles_StructuredBuffer, + ref InputTrianglesBuffer); + + SetOutputPreprocess(sizeof(float) * 3, Properties.OutputVertices_StructuredBuffer, + ref OutputVerticesBuffer); + SetOutputPreprocess(sizeof(float) * 3, Properties.OutputNormals_StructuredBuffer, + ref OutputNormalsBuffer); + SetOutputPreprocess(sizeof(float) * 4, Properties.OutputTangents_StructuredBuffer, + ref OutputTangentsBuffer); SetOutputPreprocess(sizeof(float) * 2, Properties.OutputUVs_StructuredBuffer, ref OutputUVsBuffer); - SetOutputPreprocess(sizeof(int), Properties.OutputTriangles_StructuredBuffer, ref OutputTrianglesBuffer); + SetOutputPreprocess(sizeof(int), Properties.OutputTriangles_StructuredBuffer, + ref OutputTrianglesBuffer); TessellationComputeShader.SetInt(Properties.TriangleCount_Int, triangleCount); @@ -547,11 +568,16 @@ private void Tessellate(int triangles, int subdivisions, float minimumEdgeLength int outputTriangles = triangles * 4; // output from preprocess goes to input of tessellate - TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputVertices_StructuredBuffer, OutputVerticesBuffer); - TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputNormals_StructuredBuffer, OutputNormalsBuffer); - TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputTangents_StructuredBuffer, OutputTangentsBuffer); - TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputUVs_StructuredBuffer, OutputUVsBuffer); - TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputTriangles_StructuredBuffer, OutputTrianglesBuffer); + TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputVertices_StructuredBuffer, + OutputVerticesBuffer); + TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputNormals_StructuredBuffer, + OutputNormalsBuffer); + TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputTangents_StructuredBuffer, + OutputTangentsBuffer); + TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputUVs_StructuredBuffer, + OutputUVsBuffer); + TessellationComputeShader.SetBuffer(TessellateKernel, Properties.InputTriangles_StructuredBuffer, + OutputTrianglesBuffer); void SetOutputTessellate(int stride, int nameID, ref ComputeBuffer buffer) { @@ -565,11 +591,15 @@ void SetOutputTessellate(int stride, int nameID, ref ComputeBuffer buffer) ComputeBuffer oldOutputUVs = OutputUVsBuffer; ComputeBuffer oldOutputTriangles = OutputTrianglesBuffer; - SetOutputTessellate(sizeof(float) * 3, Properties.OutputVertices_StructuredBuffer, ref OutputVerticesBuffer); - SetOutputTessellate(sizeof(float) * 3, Properties.OutputNormals_StructuredBuffer, ref OutputNormalsBuffer); - SetOutputTessellate(sizeof(float) * 4, Properties.OutputTangents_StructuredBuffer, ref OutputTangentsBuffer); + SetOutputTessellate(sizeof(float) * 3, Properties.OutputVertices_StructuredBuffer, + ref OutputVerticesBuffer); + SetOutputTessellate(sizeof(float) * 3, Properties.OutputNormals_StructuredBuffer, + ref OutputNormalsBuffer); + SetOutputTessellate(sizeof(float) * 4, Properties.OutputTangents_StructuredBuffer, + ref OutputTangentsBuffer); SetOutputTessellate(sizeof(float) * 2, Properties.OutputUVs_StructuredBuffer, ref OutputUVsBuffer); - SetOutputTessellate(sizeof(int), Properties.OutputTriangles_StructuredBuffer, ref OutputTrianglesBuffer); + SetOutputTessellate(sizeof(int), Properties.OutputTriangles_StructuredBuffer, + ref OutputTrianglesBuffer); TessellationComputeShader.SetInt(Properties.TriangleCount_Int, inputTriangles); diff --git a/IsoMesh/Assets/Source/SDFs/SDFMeshAsset.cs b/IsoMesh/Assets/Source/SDFs/SDFMeshAsset.cs index 698dab7..845f85f 100644 --- a/IsoMesh/Assets/Source/SDFs/SDFMeshAsset.cs +++ b/IsoMesh/Assets/Source/SDFs/SDFMeshAsset.cs @@ -14,50 +14,39 @@ namespace IsoMesh [CreateAssetMenu] public class SDFMeshAsset : ScriptableObject { - [SerializeField] - [ReadOnly] + #region Fields + + [SerializeField] [ReadOnly] //[PreviewField] private Mesh m_sourceMesh; + public Mesh SourceMesh => m_sourceMesh; - [SerializeField] - [HideInInspector] - private float[] m_samples; + [SerializeField] [HideInInspector] private float[] m_samples; - [SerializeField] - [HideInInspector] - private float[] m_packedUVs; + [SerializeField] [HideInInspector] private float[] m_packedUVs; public bool HasUVs => !m_packedUVs.IsNullOrEmpty(); - [SerializeField] - [ReadOnly] + [SerializeField] [ReadOnly] //[ShowIf("IsTessellated")] private int m_tessellationLevel = 0; public bool IsTessellated => m_tessellationLevel > 0; - [SerializeField] - [ReadOnly] - private int m_size; + [SerializeField] [ReadOnly] private int m_size; public int Size => m_size; public int CellsPerSide => m_size - 1; public int PointsPerSide => m_size; - [SerializeField] - [ReadOnly] - private float m_padding; + [SerializeField] [ReadOnly] private float m_padding; public float Padding => m_padding; - [SerializeField] - [ReadOnly] - private Vector3 m_minBounds; + [SerializeField] [ReadOnly] private Vector3 m_minBounds; public Vector3 MinBounds => m_minBounds; - [SerializeField] - [ReadOnly] - private Vector3 m_maxBounds; + [SerializeField] [ReadOnly] private Vector3 m_maxBounds; public Vector3 MaxBounds => m_maxBounds; public Vector3 Centre => (m_maxBounds + m_minBounds) * 0.5f; @@ -66,7 +55,8 @@ public class SDFMeshAsset : ScriptableObject public int TotalSize => m_size * m_size * m_size; - public static void Create(string path, string name, float[] samples, float[] packedUVs, int tessellationLevel, int size, float padding, Mesh sourceMesh, Vector3 minBounds, Vector3 maxBounds) + public static void Create(string path, string name, float[] samples, float[] packedUVs, int tessellationLevel, + int size, float padding, Mesh sourceMesh, Vector3 minBounds, Vector3 maxBounds) { SDFMeshAsset asset = Utils.CreateAsset(path, name + "_" + size); asset.m_sourceMesh = sourceMesh; @@ -84,6 +74,8 @@ public static void Create(string path, string name, float[] samples, float[] pac #endif } + #endregion + #region Public methods // note that the true purpose of this class is as a data container for information to be passed to the gpu. @@ -99,7 +91,7 @@ public Vector3 ClampToVolume(Vector3 input, float boundsOffset = 0f) Mathf.Clamp(input.x, MinBounds.x + boundsOffset, MaxBounds.x - boundsOffset), Mathf.Clamp(input.y, MinBounds.y + boundsOffset, MaxBounds.y - boundsOffset), Mathf.Clamp(input.z, MinBounds.z + boundsOffset, MaxBounds.z - boundsOffset) - ); + ); } /// @@ -170,7 +162,8 @@ public float Sample(Vector3 p) float sampleG = GetSignedDistance(x, y + 1, z + 1); float sampleH = GetSignedDistance(x + 1, y + 1, z + 1); - return Utils.TrilinearInterpolate(frac, sampleA, sampleB, sampleC, sampleD, sampleE, sampleF, sampleG, sampleH); + return Utils.TrilinearInterpolate(frac, sampleA, sampleB, sampleC, sampleD, sampleE, sampleF, sampleG, + sampleH); } // publicly exposing an array just feels wrong to me hehe @@ -222,7 +215,8 @@ public Vector3 CellCoordinateToVertex(int x, int y, int z) /// /// Convert a 3-dimensional cell coordinate into the 1-dimensional cell index it corresponds to. /// - public int CellCoordinateToIndex(int x, int y, int z) => (x + y * PointsPerSide + z * PointsPerSide * PointsPerSide); + public int CellCoordinateToIndex(int x, int y, int z) => + (x + y * PointsPerSide + z * PointsPerSide * PointsPerSide); /// /// Get the metadata to be sent to the gpu. Doesn't include the actual sample data, or the point at which this asset's sample data starts in the total sample buffer. diff --git a/IsoMesh/Assets/Source/SDFs/SDFPrimitive.cs b/IsoMesh/Assets/Source/SDFs/SDFPrimitive.cs index 2e687cc..22ba9f8 100644 --- a/IsoMesh/Assets/Source/SDFs/SDFPrimitive.cs +++ b/IsoMesh/Assets/Source/SDFs/SDFPrimitive.cs @@ -123,9 +123,9 @@ private void OnDrawGizmos() #if UNITY_EDITOR private static void CreateNewPrimitive(SDFPrimitiveType type, Vector4 startData) { - GameObject selection = Selection.activeGameObject; + var selection = Selection.activeGameObject; - GameObject child = new GameObject(type.ToString()); + var child = new GameObject(type.ToString()); child.transform.SetParent(selection.transform); child.transform.Reset(); diff --git a/IsoMesh/Assets/UniversalRenderPipelineGlobalSettings.asset b/IsoMesh/Assets/UniversalRenderPipelineGlobalSettings.asset index 04f89c3..1160119 100644 --- a/IsoMesh/Assets/UniversalRenderPipelineGlobalSettings.asset +++ b/IsoMesh/Assets/UniversalRenderPipelineGlobalSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1a6495398d12a382182677dd9d5a72ff963e66cd8b17fe3987f3f0e4b7d0eab -size 842 +oid sha256:5ef4f4fec8dd22890ce53c24e87d63a9dc9322d12c1d4a1ed989a2799b0d75bc +size 1183 diff --git a/IsoMesh/Packages/manifest.json b/IsoMesh/Packages/manifest.json index b89599a..a2ee358 100644 --- a/IsoMesh/Packages/manifest.json +++ b/IsoMesh/Packages/manifest.json @@ -1,13 +1,14 @@ { "dependencies": { - "com.unity.collab-proxy": "1.13.5", - "com.unity.ide.rider": "3.0.7", - "com.unity.ide.visualstudio": "2.0.11", - "com.unity.ide.vscode": "1.2.4", - "com.unity.render-pipelines.universal": "12.1.0", - "com.unity.test-framework": "1.1.29", + "com.unity.ai.navigation": "1.1.4", + "com.unity.collab-proxy": "2.0.7", + "com.unity.ide.rider": "3.0.24", + "com.unity.ide.visualstudio": "2.0.18", + "com.unity.ide.vscode": "1.2.5", + "com.unity.render-pipelines.universal": "14.0.8", + "com.unity.test-framework": "1.1.33", "com.unity.textmeshpro": "3.0.6", - "com.unity.timeline": "1.6.2", + "com.unity.timeline": "1.7.5", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/IsoMesh/Packages/packages-lock.json b/IsoMesh/Packages/packages-lock.json index 845812f..26e8296 100644 --- a/IsoMesh/Packages/packages-lock.json +++ b/IsoMesh/Packages/packages-lock.json @@ -1,7 +1,16 @@ { "dependencies": { + "com.unity.ai.navigation": { + "version": "1.1.4", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.ai": "1.0.0" + }, + "url": "https://packages.unity.com" + }, "com.unity.burst": { - "version": "1.6.0", + "version": "1.8.8", "depth": 1, "source": "registry", "dependencies": { @@ -10,13 +19,10 @@ "url": "https://packages.unity.com" }, "com.unity.collab-proxy": { - "version": "1.13.5", + "version": "2.0.7", "depth": 0, "source": "registry", - "dependencies": { - "com.unity.nuget.newtonsoft-json": "2.0.0", - "com.unity.services.core": "1.0.1" - }, + "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.ext.nunit": { @@ -27,7 +33,7 @@ "url": "https://packages.unity.com" }, "com.unity.ide.rider": { - "version": "3.0.7", + "version": "3.0.24", "depth": 0, "source": "registry", "dependencies": { @@ -36,7 +42,7 @@ "url": "https://packages.unity.com" }, "com.unity.ide.visualstudio": { - "version": "2.0.11", + "version": "2.0.18", "depth": 0, "source": "registry", "dependencies": { @@ -45,74 +51,59 @@ "url": "https://packages.unity.com" }, "com.unity.ide.vscode": { - "version": "1.2.4", + "version": "1.2.5", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.mathematics": { - "version": "1.2.4", - "depth": 1, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.nuget.newtonsoft-json": { - "version": "2.0.0", + "version": "1.2.6", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.render-pipelines.core": { - "version": "12.1.0", + "version": "14.0.8", "depth": 1, "source": "builtin", "dependencies": { "com.unity.ugui": "1.0.0", "com.unity.modules.physics": "1.0.0", + "com.unity.modules.terrain": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" } }, "com.unity.render-pipelines.universal": { - "version": "12.1.0", + "version": "14.0.8", "depth": 0, "source": "builtin", "dependencies": { "com.unity.mathematics": "1.2.1", - "com.unity.burst": "1.5.0", - "com.unity.render-pipelines.core": "12.1.0", - "com.unity.shadergraph": "12.1.0" + "com.unity.burst": "1.8.4", + "com.unity.render-pipelines.core": "14.0.8", + "com.unity.shadergraph": "14.0.8" } }, "com.unity.searcher": { - "version": "4.9.0", + "version": "4.9.2", "depth": 2, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, - "com.unity.services.core": { - "version": "1.0.1", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0" - }, - "url": "https://packages.unity.com" - }, "com.unity.shadergraph": { - "version": "12.1.0", + "version": "14.0.8", "depth": 1, "source": "builtin", "dependencies": { - "com.unity.render-pipelines.core": "12.1.0", - "com.unity.searcher": "4.8.0" + "com.unity.render-pipelines.core": "14.0.8", + "com.unity.searcher": "4.9.2" } }, "com.unity.test-framework": { - "version": "1.1.29", + "version": "1.1.33", "depth": 0, "source": "registry", "dependencies": { @@ -132,7 +123,7 @@ "url": "https://packages.unity.com" }, "com.unity.timeline": { - "version": "1.6.2", + "version": "1.7.5", "depth": 0, "source": "registry", "dependencies": { @@ -284,17 +275,6 @@ "version": "1.0.0", "depth": 0, "source": "builtin", - "dependencies": { - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.imgui": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.uielementsnative": "1.0.0" - } - }, - "com.unity.modules.uielementsnative": { - "version": "1.0.0", - "depth": 1, - "source": "builtin", "dependencies": { "com.unity.modules.ui": "1.0.0", "com.unity.modules.imgui": "1.0.0", diff --git a/IsoMesh/ProjectSettings/ProjectVersion.txt b/IsoMesh/ProjectSettings/ProjectVersion.txt index 03f4c05..9785246 100644 --- a/IsoMesh/ProjectSettings/ProjectVersion.txt +++ b/IsoMesh/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.2.0f1 -m_EditorVersionWithRevision: 2021.2.0f1 (4bf1ec4b23c9) +m_EditorVersion: 2022.3.8f1 +m_EditorVersionWithRevision: 2022.3.8f1 (b5eafc012955) diff --git a/IsoMesh/ProjectSettings/SceneTemplateSettings.json b/IsoMesh/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..5e97f83 --- /dev/null +++ b/IsoMesh/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file diff --git a/IsoMesh/ProjectSettings/URPProjectSettings.asset b/IsoMesh/ProjectSettings/URPProjectSettings.asset index 6a742e5..dfca260 100644 --- a/IsoMesh/ProjectSettings/URPProjectSettings.asset +++ b/IsoMesh/ProjectSettings/URPProjectSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2dbf9c39ca82860c3a8b27d5d4984ac74fba39ed2d690d9f2d4fbcbfe8dd7621 +oid sha256:3e9d9f824875297ef6b9315fa7a3ac7ec1b047042395404a23c368fc971a8f3e size 410 diff --git a/IsoMesh/ProjectSettings/boot.config b/IsoMesh/ProjectSettings/boot.config deleted file mode 100644 index e69de29..0000000 diff --git a/IsoMesh/UserSettings/EditorUserSettings.asset b/IsoMesh/UserSettings/EditorUserSettings.asset index 1f56d79..818a240 100644 --- a/IsoMesh/UserSettings/EditorUserSettings.asset +++ b/IsoMesh/UserSettings/EditorUserSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b92bec4c759a1b96f293a8ac6a96f0b3a5f0acc17f87fb70ecbad66a42473d8 -size 3528 +oid sha256:94e9c5bb4969b30906def142e9a21f6fe73a675051f47406339ff897cf6dcf0b +size 3894 diff --git a/IsoMesh/UserSettings/Layouts/CurrentMaximizeLayout.dwlt b/IsoMesh/UserSettings/Layouts/CurrentMaximizeLayout.dwlt new file mode 100644 index 0000000..c1a995e --- /dev/null +++ b/IsoMesh/UserSettings/Layouts/CurrentMaximizeLayout.dwlt @@ -0,0 +1,1082 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 3} + - {fileID: 7} + - {fileID: 15} + m_Position: + serializedVersion: 2 + x: 0 + y: 30 + width: 1920 + height: 939 + m_MinSize: {x: 400, y: 100} + m_MaxSize: {x: 32384, y: 16192} + vertical: 0 + controlID: -1 +--- !u!114 &2 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Game + m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 0 + y: 555 + width: 774 + height: 436 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 + m_SerializedViewNames: [] + m_SerializedViewValues: [] + m_PlayModeViewName: GameView + m_ShowGizmos: 0 + m_TargetDisplay: 0 + m_ClearColor: {r: 0, g: 0, b: 0, a: 0} + m_TargetSize: {x: 1920, y: 1080} + m_TextureFilterMode: 0 + m_TextureHideFlags: 61 + m_RenderIMGUI: 1 + m_EnterPlayModeBehavior: 0 + m_UseMipMap: 0 + m_VSyncEnabled: 0 + m_Gizmos: 0 + m_Stats: 1 + m_SelectedSizes: 07000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_ZoomArea: + m_HRangeLocked: 0 + m_VRangeLocked: 0 + hZoomLockedByDefault: 0 + vZoomLockedByDefault: 0 + m_HBaseRangeMin: -960 + m_HBaseRangeMax: 960 + m_VBaseRangeMin: -540 + m_VBaseRangeMax: 540 + m_HAllowExceedBaseRangeMin: 1 + m_HAllowExceedBaseRangeMax: 1 + m_VAllowExceedBaseRangeMin: 1 + m_VAllowExceedBaseRangeMax: 1 + m_ScaleWithWindow: 0 + m_HSlider: 0 + m_VSlider: 0 + m_IgnoreScrollWheelUntilClicked: 0 + m_EnableMouseInput: 0 + m_EnableSliderZoomHorizontal: 0 + m_EnableSliderZoomVertical: 0 + m_UniformScale: 1 + m_UpDirection: 1 + m_DrawArea: + serializedVersion: 2 + x: 0 + y: 21 + width: 774 + height: 415 + m_Scale: {x: 0.38425925, y: 0.38425925} + m_Translation: {x: 387, y: 207.5} + m_MarginLeft: 0 + m_MarginRight: 0 + m_MarginTop: 0 + m_MarginBottom: 0 + m_LastShownAreaInsideMargins: + serializedVersion: 2 + x: -1007.13257 + y: -540 + width: 2014.2651 + height: 1080 + m_MinimalGUI: 1 + m_defaultScale: 0.38425925 + m_LastWindowPixelSize: {x: 774, y: 436} + m_ClearInEditMode: 1 + m_NoCameraWarning: 1 + m_LowResolutionForAspectRatios: 01000000000000000000 + m_XRRenderMode: 0 + m_RenderTexture: {fileID: 0} +--- !u!114 &3 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 4} + - {fileID: 6} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 775 + height: 939 + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 8096, y: 16192} + vertical: 1 + controlID: -1 +--- !u!114 &4 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 775 + height: 482 + m_MinSize: {x: 201, y: 221} + m_MaxSize: {x: 4001, y: 4021} + m_ActualView: {fileID: 5} + m_Panes: + - {fileID: 5} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &5 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Scene + m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 0 + y: 73 + width: 774 + height: 461 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: + - dockPosition: 0 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: -156, y: -26} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 3 + id: Tool Settings + index: 0 + layout: 1 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 0 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: -141, y: 149} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 1 + id: unity-grid-and-snap-toolbar + index: 1 + layout: 1 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 25} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: unity-scene-view-toolbar + index: 0 + layout: 1 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 1 + id: unity-search-toolbar + index: 1 + layout: 1 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 0 + containerId: overlay-container--left + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: unity-transform-toolbar + index: 0 + layout: 2 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 0 + containerId: overlay-container--left + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 197} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: unity-component-tools + index: 1 + layout: 2 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 0 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 67.5, y: 86} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Orientation + index: 0 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Light Settings + index: 0 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Camera + index: 1 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Cloth Constraints + index: 1 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Cloth Collisions + index: 2 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Navmesh Display + index: 4 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Agent Display + index: 5 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Obstacle Display + index: 6 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Occlusion Culling + index: 3 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Physics Debugger + index: 4 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Scene Visibility + index: 5 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Particles + index: 6 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Tilemap + index: 11 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Tilemap Palette Helper + index: 12 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 48, y: 48} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: AINavigationOverlay + index: 7 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 48, y: 48} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: APV Overlay + index: 8 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 48, y: 48} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/TrailRenderer + index: 9 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 48, y: 48} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: UnityEditor.SceneViewCameraOverlay + index: 10 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + m_OverlaysVisible: 1 + m_WindowGUID: 0cb2c61f44472b94391eccdfa982439b + m_Gizmos: 1 + m_OverrideSceneCullingMask: 6917529027641081856 + m_SceneIsLit: 1 + m_SceneLighting: 1 + m_2DMode: 0 + m_isRotationLocked: 0 + m_PlayAudio: 0 + m_AudioPlay: 0 + m_Position: + m_Target: {x: -0.77514386, y: 1.111945, z: 0.21188408} + speed: 2 + m_Value: {x: -0.77514386, y: 1.111945, z: 0.21188408} + m_RenderMode: 0 + m_CameraMode: + drawMode: 1 + name: Wireframe + section: Shading Mode + m_ValidateTrueMetals: 0 + m_DoValidateTrueMetals: 0 + m_SceneViewState: + m_AlwaysRefresh: 0 + showFog: 1 + showSkybox: 1 + showFlares: 1 + showImageEffects: 1 + showParticleSystems: 1 + showVisualEffectGraphs: 1 + m_FxEnabled: 1 + m_Grid: + xGrid: + m_Fade: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 1, y: 1} + yGrid: + m_Fade: + m_Target: 1 + speed: 2 + m_Value: 1 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 1, y: 1} + zGrid: + m_Fade: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 1, y: 1} + m_ShowGrid: 1 + m_GridAxis: 1 + m_gridOpacity: 0.5 + m_Rotation: + m_Target: {x: -0.09463347, y: 0.5513443, z: -0.06312191, w: -0.82649094} + speed: 2 + m_Value: {x: -0.09472768, y: 0.5501018, z: -0.062979646, w: -0.8273139} + m_Size: + m_Target: 1.2677885 + speed: 2 + m_Value: 1.2677885 + m_Ortho: + m_Target: 0 + speed: 2 + m_Value: 0 + m_CameraSettings: + m_Speed: 1 + m_SpeedNormalized: 0.5 + m_SpeedMin: 0.01 + m_SpeedMax: 2 + m_EasingEnabled: 1 + m_EasingDuration: 0.4 + m_AccelerationEnabled: 1 + m_FieldOfViewHorizontalOrVertical: 60 + m_NearClip: 0.03 + m_FarClip: 10000 + m_DynamicClip: 1 + m_OcclusionCulling: 0 + m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0} + m_LastSceneViewOrtho: 0 + m_ReplacementShader: {fileID: 0} + m_ReplacementString: + m_SceneVisActive: 1 + m_LastLockedObject: {fileID: 0} + m_ViewIsLockedToObject: 0 +--- !u!114 &6 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 482 + width: 775 + height: 457 + m_MinSize: {x: 201, y: 221} + m_MaxSize: {x: 4001, y: 4021} + m_ActualView: {fileID: 2} + m_Panes: + - {fileID: 2} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &7 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 8} + - {fileID: 13} + m_Position: + serializedVersion: 2 + x: 775 + y: 0 + width: 641 + height: 939 + m_MinSize: {x: 200, y: 100} + m_MaxSize: {x: 16192, y: 16192} + vertical: 1 + controlID: 290 +--- !u!114 &8 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 9} + - {fileID: 11} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 641 + height: 482 + m_MinSize: {x: 200, y: 50} + m_MaxSize: {x: 16192, y: 8096} + vertical: 0 + controlID: 213 +--- !u!114 &9 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: SceneHierarchyWindow + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 198 + height: 482 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_ActualView: {fileID: 10} + m_Panes: + - {fileID: 10} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &10 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Hierarchy + m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 775 + y: 73 + width: 196 + height: 461 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 + m_SceneHierarchy: + m_TreeViewState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: dcaafdffbcb0fdffc8b0fdff60b8fdff70c3fdffc8d4fdff84dcfdff9ae6fdff4eeefdff3291feffe4a8feffe6a8feffa4a9feff2cb7feffeeb7feffa6b8feff86b9feff04bffeff88c4feff60d9feff0cdefeffd8e2feff3ae7feff2cf0fefff4ffffff26a50000a6a600005ea70000fea7000022ab000066ab000070b600007cb6000030b70000c8b70000ceb7000088b800009eb80000bab900006eba000004bb00001abb0000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: Cylinder + m_OriginalName: Cylinder + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 47890 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 0 + m_IsRenamingFilename: 0 + m_ClientGUIView: {fileID: 9} + m_SearchString: + m_ExpandedScenes: [] + m_CurrenRootInstanceID: 0 + m_LockTracker: + m_IsLocked: 0 + m_CurrentSortingName: TransformSorting + m_WindowGUID: 9547c546af0ce3c41a8eebfaee4228ef +--- !u!114 &11 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 198 + y: 0 + width: 443 + height: 482 + m_MinSize: {x: 232, y: 271} + m_MaxSize: {x: 10002, y: 10021} + m_ActualView: {fileID: 12} + m_Panes: + - {fileID: 12} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &12 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 230, y: 250} + m_MaxSize: {x: 10000, y: 10000} + m_TitleContent: + m_Text: Project + m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 973 + y: 73 + width: 441 + height: 461 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 + m_SearchFilter: + m_NameFilter: + m_ClassNames: [] + m_AssetLabels: [] + m_AssetBundleNames: [] + m_ReferencingInstanceIDs: + m_SceneHandles: + m_ShowAllHits: 0 + m_SkipHidden: 0 + m_SearchArea: 1 + m_Folders: + - Assets/Source/HLSL/Resources + m_Globs: [] + m_OriginalText: + m_ImportLogFlags: 0 + m_FilterByTypeIntersection: 0 + m_ViewMode: 1 + m_StartGridSize: 16 + m_LastFolders: + - Assets/Source/HLSL/Resources + m_LastFoldersGridSize: 16 + m_LastProjectPath: C:\Users\22153\Documents\Repository\SDF[]\IsoMesh\IsoMesh + m_LockTracker: + m_IsLocked: 0 + m_FolderTreeState: + scrollPos: {x: 0, y: 79} + m_SelectedIDs: 08080000 + m_LastClickedID: 2056 + m_ExpandedIDs: ffffffff00000000fc0500004406000048060000bc0600002407000050070000a4070000c407000000ca9a3bffffff7f + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_AssetTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: b4070000 + m_LastClickedID: 1972 + m_ExpandedIDs: fffffffffc0500003006000048060000c0060000b4070000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_ListAreaState: + m_SelectedInstanceIDs: + m_LastClickedInstanceID: 0 + m_HadKeyboardFocusLastEvent: 1 + m_ExpandedInstanceIDs: + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: SDFMesh_Tube001_128 + m_OriginalName: SDFMesh_Tube001_128 + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: -89470 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 0 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 11} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_NewAssetIndexInList: -1 + m_ScrollPosition: {x: 0, y: 0} + m_GridSize: 16 + m_SkipHiddenPackages: 0 + m_DirectoriesAreaWidth: 144 +--- !u!114 &13 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: ConsoleWindow + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 482 + width: 641 + height: 457 + m_MinSize: {x: 102, y: 121} + m_MaxSize: {x: 4002, y: 4021} + m_ActualView: {fileID: 14} + m_Panes: + - {fileID: 14} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &14 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Console + m_Image: {fileID: 111653112392082826, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 775 + y: 555 + width: 639 + height: 436 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 +--- !u!114 &15 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 1416 + y: 0 + width: 504 + height: 939 + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} + m_ActualView: {fileID: 16} + m_Panes: + - {fileID: 16} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &16 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Inspector + m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 1416 + y: 73 + width: 503 + height: 918 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 + m_ObjectsLockedBeforeSerialization: [] + m_InstanceIDsLockedBeforeSerialization: + m_PreviewResizer: + m_CachedPref: 154 + m_ControlHash: -371814159 + m_PrefName: Preview_InspectorPreview + m_LastInspectedObjectInstanceID: -1 + m_LastVerticalScrollValue: 0 + m_GlobalObjectId: + m_InspectorMode: 0 + m_LockTracker: + m_IsLocked: 0 + m_PreviewWindow: {fileID: 0} diff --git a/IsoMesh/UserSettings/Layouts/default-2022.dwlt b/IsoMesh/UserSettings/Layouts/default-2022.dwlt new file mode 100644 index 0000000..3b7e5e5 --- /dev/null +++ b/IsoMesh/UserSettings/Layouts/default-2022.dwlt @@ -0,0 +1,1164 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_PixelRect: + serializedVersion: 2 + x: 0 + y: 43 + width: 1920 + height: 989 + m_ShowMode: 4 + m_Title: Console + m_RootView: {fileID: 6} + m_MinSize: {x: 875, y: 450} + m_MaxSize: {x: 10000, y: 10000} + m_Maximized: 1 +--- !u!114 &2 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: SceneHierarchyWindow + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 273 + height: 482 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_ActualView: {fileID: 16} + m_Panes: + - {fileID: 16} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &3 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 2} + - {fileID: 11} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 707 + height: 482 + m_MinSize: {x: 200, y: 50} + m_MaxSize: {x: 16192, y: 8096} + vertical: 0 + controlID: 4958 +--- !u!114 &4 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: ConsoleWindow + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 482 + width: 707 + height: 457 + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_ActualView: {fileID: 15} + m_Panes: + - {fileID: 15} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &5 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 3} + - {fileID: 4} + m_Position: + serializedVersion: 2 + x: 742 + y: 0 + width: 707 + height: 939 + m_MinSize: {x: 200, y: 100} + m_MaxSize: {x: 16192, y: 16192} + vertical: 1 + controlID: 4957 +--- !u!114 &6 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 7} + - {fileID: 8} + - {fileID: 9} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1920 + height: 989 + m_MinSize: {x: 875, y: 300} + m_MaxSize: {x: 10000, y: 10000} + m_UseTopView: 1 + m_TopViewHeight: 30 + m_UseBottomView: 1 + m_BottomViewHeight: 20 +--- !u!114 &7 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1920 + height: 30 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} + m_LastLoadedLayoutName: wanglin +--- !u!114 &8 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 10} + - {fileID: 5} + - {fileID: 12} + m_Position: + serializedVersion: 2 + x: 0 + y: 30 + width: 1920 + height: 939 + m_MinSize: {x: 400, y: 100} + m_MaxSize: {x: 32384, y: 16192} + vertical: 0 + controlID: 5048 +--- !u!114 &9 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 969 + width: 1920 + height: 20 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} +--- !u!114 &10 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 13} + - {fileID: 14} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 742 + height: 939 + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 8096, y: 16192} + vertical: 1 + controlID: 4912 +--- !u!114 &11 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 273 + y: 0 + width: 434 + height: 482 + m_MinSize: {x: 232, y: 271} + m_MaxSize: {x: 10002, y: 10021} + m_ActualView: {fileID: 18} + m_Panes: + - {fileID: 18} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &12 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 1449 + y: 0 + width: 471 + height: 939 + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} + m_ActualView: {fileID: 17} + m_Panes: + - {fileID: 17} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &13 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 742 + height: 482 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_ActualView: {fileID: 20} + m_Panes: + - {fileID: 20} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &14 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 482 + width: 742 + height: 457 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_ActualView: {fileID: 19} + m_Panes: + - {fileID: 19} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &15 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Console + m_Image: {fileID: 111653112392082826, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 742 + y: 555 + width: 705 + height: 436 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 +--- !u!114 &16 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Hierarchy + m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 742 + y: 73 + width: 271 + height: 461 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 + m_SceneHierarchy: + m_TreeViewState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: 7a680000 + m_LastClickedID: 26746 + m_ExpandedIDs: dcaafdffbcb0fdff6ea0ffffb2a5ffff76a6ffff32a7ffff52a8ffff64aeffff20afffffe0afffffa0b0ffff5cb1ffff1eb2ffff64b5ffff24b6ffff92b7ffff52b8ffff0eb9ffffceb9ffff90baffff6cbbffff28bcffffe8bcffffacbdffffea640000b46600005467000042680000586800008c680000a6680000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 0 + m_ClientGUIView: {fileID: 2} + m_SearchString: + m_ExpandedScenes: [] + m_CurrenRootInstanceID: 0 + m_LockTracker: + m_IsLocked: 0 + m_CurrentSortingName: TransformSorting + m_WindowGUID: 9547c546af0ce3c41a8eebfaee4228ef +--- !u!114 &17 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Inspector + m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 1449 + y: 73 + width: 470 + height: 918 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 + m_ObjectsLockedBeforeSerialization: [] + m_InstanceIDsLockedBeforeSerialization: + m_PreviewResizer: + m_CachedPref: 152 + m_ControlHash: -371814159 + m_PrefName: Preview_InspectorPreview + m_LastInspectedObjectInstanceID: -1 + m_LastVerticalScrollValue: 0 + m_GlobalObjectId: + m_InspectorMode: 0 + m_LockTracker: + m_IsLocked: 0 + m_PreviewWindow: {fileID: 0} +--- !u!114 &18 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 230, y: 250} + m_MaxSize: {x: 10000, y: 10000} + m_TitleContent: + m_Text: Project + m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 1015 + y: 73 + width: 432 + height: 461 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 + m_SearchFilter: + m_NameFilter: + m_ClassNames: [] + m_AssetLabels: [] + m_AssetBundleNames: [] + m_ReferencingInstanceIDs: + m_SceneHandles: + m_ShowAllHits: 0 + m_SkipHidden: 0 + m_SearchArea: 1 + m_Folders: + - Assets/Scenes + m_Globs: [] + m_OriginalText: + m_ImportLogFlags: 0 + m_FilterByTypeIntersection: 0 + m_ViewMode: 1 + m_StartGridSize: 16 + m_LastFolders: + - Assets/Scenes + m_LastFoldersGridSize: 16 + m_LastProjectPath: C:\Users\22153\Documents\Repository\SDF[]\IsoMesh\IsoMesh + m_LockTracker: + m_IsLocked: 0 + m_FolderTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: 365e0000 + m_LastClickedID: 24118 + m_ExpandedIDs: 00000000b45c0000b65c000000ca9a3bffffff7f + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_AssetTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 00000000b45c0000b65c000000ca9a3bffffff7f + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_ListAreaState: + m_SelectedInstanceIDs: + m_LastClickedInstanceID: 0 + m_HadKeyboardFocusLastEvent: 1 + m_ExpandedInstanceIDs: + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_NewAssetIndexInList: -1 + m_ScrollPosition: {x: 0, y: 0} + m_GridSize: 16 + m_SkipHiddenPackages: 0 + m_DirectoriesAreaWidth: 148 +--- !u!114 &19 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Game + m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 0 + y: 555 + width: 741 + height: 436 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_OverlaysVisible: 1 + m_SerializedViewNames: [] + m_SerializedViewValues: [] + m_PlayModeViewName: GameView + m_ShowGizmos: 0 + m_TargetDisplay: 0 + m_ClearColor: {r: 0, g: 0, b: 0, a: 0} + m_TargetSize: {x: 1920, y: 1080} + m_TextureFilterMode: 0 + m_TextureHideFlags: 61 + m_RenderIMGUI: 1 + m_EnterPlayModeBehavior: 0 + m_UseMipMap: 0 + m_VSyncEnabled: 0 + m_Gizmos: 0 + m_Stats: 0 + m_SelectedSizes: 07000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_ZoomArea: + m_HRangeLocked: 0 + m_VRangeLocked: 0 + hZoomLockedByDefault: 0 + vZoomLockedByDefault: 0 + m_HBaseRangeMin: -960 + m_HBaseRangeMax: 960 + m_VBaseRangeMin: -540 + m_VBaseRangeMax: 540 + m_HAllowExceedBaseRangeMin: 1 + m_HAllowExceedBaseRangeMax: 1 + m_VAllowExceedBaseRangeMin: 1 + m_VAllowExceedBaseRangeMax: 1 + m_ScaleWithWindow: 0 + m_HSlider: 0 + m_VSlider: 0 + m_IgnoreScrollWheelUntilClicked: 0 + m_EnableMouseInput: 1 + m_EnableSliderZoomHorizontal: 0 + m_EnableSliderZoomVertical: 0 + m_UniformScale: 1 + m_UpDirection: 1 + m_DrawArea: + serializedVersion: 2 + x: 0 + y: 21 + width: 741 + height: 415 + m_Scale: {x: 0.38425925, y: 0.38425925} + m_Translation: {x: 370.5, y: 207.5} + m_MarginLeft: 0 + m_MarginRight: 0 + m_MarginTop: 0 + m_MarginBottom: 0 + m_LastShownAreaInsideMargins: + serializedVersion: 2 + x: -964.1928 + y: -540 + width: 1928.3856 + height: 1080 + m_MinimalGUI: 1 + m_defaultScale: 0.38425925 + m_LastWindowPixelSize: {x: 741, y: 436} + m_ClearInEditMode: 1 + m_NoCameraWarning: 1 + m_LowResolutionForAspectRatios: 01000000000000000000 + m_XRRenderMode: 0 + m_RenderTexture: {fileID: 0} +--- !u!114 &20 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Scene + m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 0 + y: 73 + width: 741 + height: 461 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: + - dockPosition: 0 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: -156, y: -26} + snapCorner: 3 + id: Tool Settings + index: 0 + layout: 1 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 0 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: -141, y: 149} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 1 + id: unity-grid-and-snap-toolbar + index: 1 + layout: 1 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: -326, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 1 + id: unity-scene-view-toolbar + index: 0 + layout: 1 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 1 + id: unity-search-toolbar + index: 1 + layout: 1 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 0 + containerId: overlay-container--left + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: unity-transform-toolbar + index: 0 + layout: 2 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 0 + containerId: overlay-container--left + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 197} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: unity-component-tools + index: 1 + layout: 2 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 0 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 67.5, y: 86} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Orientation + index: 0 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Light Settings + index: 0 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Camera + index: 1 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Cloth Constraints + index: 1 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Cloth Collisions + index: 2 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Navmesh Display + index: 4 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Agent Display + index: 5 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Obstacle Display + index: 6 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Occlusion Culling + index: 3 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Physics Debugger + index: 4 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Scene Visibility + index: 5 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Particles + index: 6 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Tilemap + index: 11 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Tilemap Palette Helper + index: 12 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 48, y: 48} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: AINavigationOverlay + index: 7 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 48, y: 48} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: APV Overlay + index: 8 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 48, y: 48} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/TrailRenderer + index: 9 + layout: 4 + size: {x: 0, y: 0} + sizeOverriden: 0 + m_OverlaysVisible: 1 + m_WindowGUID: 0cb2c61f44472b94391eccdfa982439b + m_Gizmos: 1 + m_OverrideSceneCullingMask: 6917529027641081856 + m_SceneIsLit: 0 + m_SceneLighting: 1 + m_2DMode: 0 + m_isRotationLocked: 0 + m_PlayAudio: 0 + m_AudioPlay: 0 + m_Position: + m_Target: {x: -0.2244184, y: 0.9363248, z: 0.48246193} + speed: 2 + m_Value: {x: -0.2244184, y: 0.9363248, z: 0.48246193} + m_RenderMode: 0 + m_CameraMode: + drawMode: 2 + name: Shaded Wireframe + section: Shading Mode + m_ValidateTrueMetals: 0 + m_DoValidateTrueMetals: 0 + m_SceneViewState: + m_AlwaysRefresh: 0 + showFog: 1 + showSkybox: 1 + showFlares: 1 + showImageEffects: 1 + showParticleSystems: 1 + showVisualEffectGraphs: 1 + m_FxEnabled: 1 + m_Grid: + xGrid: + m_Fade: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0} + yGrid: + m_Fade: + m_Target: 1 + speed: 2 + m_Value: 1 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 1, y: 1} + zGrid: + m_Fade: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0} + m_ShowGrid: 1 + m_GridAxis: 1 + m_gridOpacity: 0.5 + m_Rotation: + m_Target: {x: 0.18200724, y: -0.43773478, z: 0.09095936, w: 0.87579024} + speed: 2 + m_Value: {x: 0.18214162, y: -0.43641615, z: 0.090685315, w: 0.8764369} + m_Size: + m_Target: 1.461736 + speed: 2 + m_Value: 1.3987904 + m_Ortho: + m_Target: 0 + speed: 2 + m_Value: 0 + m_CameraSettings: + m_Speed: 1 + m_SpeedNormalized: 0.5 + m_SpeedMin: 0.01 + m_SpeedMax: 2 + m_EasingEnabled: 1 + m_EasingDuration: 0.4 + m_AccelerationEnabled: 1 + m_FieldOfViewHorizontalOrVertical: 60 + m_NearClip: 0.03 + m_FarClip: 10000 + m_DynamicClip: 1 + m_OcclusionCulling: 0 + m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0} + m_LastSceneViewOrtho: 0 + m_ReplacementShader: {fileID: 0} + m_ReplacementString: + m_SceneVisActive: 1 + m_LastLockedObject: {fileID: 0} + m_ViewIsLockedToObject: 0 diff --git a/IsoMesh/UserSettings/Search.settings b/IsoMesh/UserSettings/Search.settings new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/IsoMesh/UserSettings/Search.settings @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/README.md b/README.md index 51d5a4f..ede4002 100644 --- a/README.md +++ b/README.md @@ -1,97 +1,146 @@ # IsoMesh IsoMesh is a group of related tools for Unity for converting meshes into signed distance field data, raymarching signed distance fields, and extracting signed distance field data back to meshes via surface nets or dual contouring. All the work is parallelized on the GPU using compute shaders. -My motivation for making this was simple: I want to make a game in which I morph and manipulate meshes, and this seemed like the right technique for the job. Isosurface extraction is most often used for stuff like terrain manipulation. Check out No Man's Sky, for example. - -I decided to share my code here because it represents a lot of trial and error and research on my part. And frankly, I just think it's cool. +这个项目是一个用于Unity的相关工具集,可将网格转换为有符号距离场数据(Signed Distance Field,SDF),通过光线行进SDF以及通过表面网格或双重等值面提取SDF数据并还原为网格。所有这些工作都是在GPU上使用计算着色器并行处理的。 ![isomesh10](https://user-images.githubusercontent.com/18707147/121936495-99b0c800-cd41-11eb-910b-83113b790c86.gif) -The project is currently being developed and tested on Unity 2021.2.0f1. ## Signed Distance Fields A signed distance field, or 'SDF', is a function which takes a position in space and returns the distance from that point to the surface of an object. The distance is negative if the point is inside the object. These functions can be used to represent all sorts of groovy shapes, and are in some sense 'volumetric', as opposed to the more traditional polygon-based way of representing geometry. If you're unfamiliar with SDFs, I would be remiss if I didn't point you to the great [Inigo Quilez](https://www.iquilezles.org/). I'm sure his stuff will do a much better job explaining it than I could. +有符号距离场,或称为'SDF',是一个函数,它接受空间中的一个位置并返回该点到物体表面的距离。如果点在物体内部,距离是负数。这些函数可用于表示各种复杂的形状,从某种程度上说是“体积化”的,与更传统的基于多边形的几何表示方法不同。 + +如果你对SDF不熟悉,我应该指出伊尼戈·基莱斯(Inigo Quilez)有很多关于它的很棒的内容。我相信他的内容会比我更好地解释它。 + ### Signed Distance Fields + Meshes While SDFs are really handy, they're mostly good for representing primitive shapes like spheres, cuboids, cones, etc. You can make some pretty impressive stuff just by combining and applying transformations to those forms, but for this project I wanted to try combine the mushy goodness of SDFs with the versatility of triangle meshes. I do this by sampling points in a bounding box around a mesh, and then interpolating the in-between bits. +虽然SDF非常方便,但主要用于表示诸如球体、立方体、圆锥体等基本形状。通过组合和应用这些形状的变换,你可以创建一些令人印象深刻的内容,但在这个项目中,我想尝试将SDF的柔软性与三角网格的多用途性结合起来。我通过在网格周围的一个边界框内对点进行采样,然后进行插值来实现这一点。 #### Adding Meshes In order to add a mesh of your own, open Tools > 'Mesh to SDF'. Give it a mesh reference and select a sample size, I suggest 64. Remember this is cubic, so the workload and resulting file size increases very quickly. +为了添加你自己的网格,请打开“工具” > “网格到SDF”。给它一个网格引用,并选择一个采样大小,我建议选择64。请记住,这是一个立方体,因此工作量和结果文件大小会非常迅速增长。 + There is also the option to tessellate the mesh before creating the SDF. This will take time and increase the GPU workload, but it will not alter the size of the resulting file. The advantage of the tessellation step is that the resulting polygons will have their positions interpolated according to the normals of the source vertices, turning the 'fake' surfaces of normal interpolation into true geometry. This can produce smoother looking results, but it's usually unnecessary. +还有一个选项,可以在创建SDF之前对网格进行镶嵌。这将花费时间并增加GPU的工作量,但不会改变结果文件的大小。镶嵌步骤的优点是,生成的多边形将根据源顶点的法线进行位置插值,将法线插值的“虚拟”表面转换为真实几何形状。这可以产生更平滑的结果,但通常是不必要的。 + If your mesh has UVs you can sample those too. This is currently just experimental: naively sampling UVs has a big assumption built in - namely that your UVs are continuous across ths surface of your mesh. As soon you hit seams you'll see pretty bad artefacts as the UVs rapidly interpolate from one part of your texture to the other. +如果你的网格具有UV,你也可以对其进行采样。目前这只是实验性的:天真地对UV进行采样有一个很大的假设,即你的UV在整个网格表面上是连续的。一旦你遇到接缝,你会看到相当严重的伪像,因为UV将从一个部分迅速插值到另一个部分。 + ![isomesh1](https://user-images.githubusercontent.com/18707147/115974173-d686ec80-a552-11eb-8308-87ddec99cd16.png) ## Project Structure In this project, you'll find some sample scenes, including one demonstrating mesh generation and one demonstrating raymarching. Both have very similar structures and are just meant to show how to use the tools. +在这个项目中,你会找到一些示例场景,包括一个演示网格生成和一个演示光线行进的场景。它们的结构非常相似,只是展示了如何使用这些工具。 + SDF objects are divided into three different components. These objects can be set to either 'min' or 'subtract' - min (minimum) objects will combine with others, subtract objects will 'cut holes' in all the objects above them in the hierarchy. These objects can be added to the scene by right-clicking in the hierarchy. +SDF对象分为三个不同的组件。这些对象可以设置为“min”或“subtract” - “min”(最小)对象将与其他对象组合,而“subtract”对象将在其上面的所有对象中“挖洞”。你可以通过在层次视图中右键单击来将这些对象添加到场景中。 + ![isomesh8](https://user-images.githubusercontent.com/18707147/118728208-b2ee5380-b82b-11eb-8467-1c533c6d352b.png) ### SDFPrimitives The SDFPrimitive component is standalone and can only currently represent four objects: a sphere, a (rounded) cuboid, a torus, and a box frame. Each of them has a few unique parameters, and they have nice reliable UVs. For now these are the only SDF primitives and operations I've added, [but there are many more.](https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm) +SDFPrimitive组件是独立的,目前只能表示四种对象:球体、(圆角)长方体、环体和框架。每种对象都有一些独特的参数,它们具有可靠的UV。目前这些是唯一的SDF原语和操作,[但还有更多](https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm)。 ### SDFMeshes SDFMeshes provide a reference to an SDFMeshAsset file generated by the Mesh to SDF tool. These objects behave much as you'd expect from a Unity GameObject: you can move them around, rotate them, etc. +SDFMeshes提供了对由网格到SDF工具生成的SDFMeshAsset文件的引用。这些对象的行为与你从Unity的GameObject中期望的行为非常相似:你可以移动它们、旋转它们等。 ### SDFOperations Currently there is only one SDFOperation supported - elongation. These works a little differently to primitives and meshes. An operation deforms the space of everything *below* it in the hierarchy. The elongation operation allows you to stretch space, which also works on the UVs! +目前只支持一种SDFOperation - 延展(elongation)。这与原语和网格的行为有些不同。操作会改变位于其层次结构下面的所有东西的空间。延展操作允许你拉伸空间,也适用于UV! ![blobbyBricks6](https://user-images.githubusercontent.com/18707147/118727975-90f4d100-b82b-11eb-871f-6aa2e96e8cc6.gif) You'll always have an 'SDFGroup' as the parent of everything within your system of SDFMeshes and SDFPrimitives. Objects within this system are expected to interact with one another and share the same visual properties such as colour and texture. +你的系统中的所有东西都应该有一个'SDFGroup'作为父对象,包括SDFMeshes和SDFPrimitives。这些对象预计会相互作用,并共享相同的视觉属性,如颜色和纹理。 + The final essential element is an 'SDFGroupRaymarcher' or 'SDFGroupMeshGenerator'. You can have as many of these as you want under one group. SDFGroupMeshGenerators can even represent chunks - though they need to overlap by the size of one cell on all sides, and should have all the same settings. -## Isosurface Extraction +最后一个关键元素是'SDFGroupRaymarcher'或'SDFGroupMeshGenerator'。你可以在一个组下拥有尽可能多的这些。SDFGroupMeshGenerators甚至可以表示块 - 尽管它们需要在所有边都有一个单元格的大小重叠,并且应具有相同的设置。 +## Isosurface Extraction +等值面提取 + Given a scalar field function, which returns a single value for any point, an isosurface is everywhere the function has the same value. In SDFs, the isosurface is simply the points where the distance to the surface is zero. +对于一个标量场函数,它为任何点返回一个值,等值面是函数在该点具有相同值的地方。在SDF中,等值面就是距离表面为零的点。 + Isosurface extraction here refers to converting an isosurface back into a triangle mesh. There are many different algorithms for isosurface extraction, perhaps the most well known being the 'marching cubes' algorithm. In this project, I implemented two (very similar) isosurface extraction algorithms: surface nets and dual contouring. I won't go into any more detail on these algorithms here, [as others have already explained them very well.](https://www.boristhebrave.com/2018/04/15/dual-contouring-tutorial/) +这里的等值面提取是指将等值面转换回三角网格。等值面提取有许多不同的算法,其中最知名的可能是“Marching Cubes”算法。在这个项目中,我实现了两种(非常相似的)等值面提取算法:surface nets和dual contouring。我不会在这里详细介绍这些算法,[因为其他人已经很好地解释过了](https://www.boristhebrave.com/2018/04/15/dual-contouring-tutorial/)。 + As I say above, in order to use the isosurface extraction just add an SDFGroupMeshGenerator under an SDFGroup. The number of options on this component is almost excessive, but don't let that get you down, they all have tooltips which do some explaining, and if you've done your homework they should feel fairly familiar: +正如我在上面提到的,要使用等值面提取,只需在SDFGroup下添加一个SDFGroupMeshGenerator。这个组件的选项数量几乎有点多,但不要灰心,它们都有工具提示来解释,如果你做了功课,它们应该感觉相当熟悉: + + ![isomesh10](https://user-images.githubusercontent.com/18707147/120230970-4ec68900-c248-11eb-9669-d531776f0227.png) Normal settings are handy to control the appearance of the mesh surface. 'Max angle tolerance' will generate new mesh vertices when normals are too distinct from the normal of their triangle. I like to keep this value around 40 degrees, as it retains sharp edges while keeping smooth curves. 'Visual smoothing' changes the distance between samples when generating mesh normals via central differences. +法线设置非常方便,可以控制网格表面的外观。当法线与其三角形的法线明显不同时,“最大角度容差”将生成新的网格顶点。我喜欢将这个值保持在大约40度左右,因为它保留了锐利的边缘,同时保持了平滑的曲线。“视觉平滑”在通过中心差异生成网格法线时改变采样点之间的距离。 + ![isomesh4](https://user-images.githubusercontent.com/18707147/115974786-21a2fe80-a557-11eb-84a0-62c28b537501.png) I provide two techniques for finding the exact surface intersection points between SDF samples - interpolation is fast but gives kinda poor results at corners. Binary search provides much more exact results but is an iterative solution. +我提供两种查找SDF样本之间精确表面交点的方法 - 插值是快速的,但在角落处效果不太好。二分查找提供了更精确的结果,但是它是一个迭代的解决方案。 + Gradient descent is another iterative improvement which simply moves the vertices back onto the isosurface. Honestly, I see no reason not to always have this on. +梯度下降是另一种迭代的改进方法,它简单地将顶点移回等值面上。老实说,我认为总是应该启用这个选项。 + ## Raymarching If you're familiar with SDFs, you're familiar with raymarching. They very often go hand-in-hand. [Raymarching will also be very familiar to you if you ever go on ShaderToy.](https://www.shadertoy.com/results?query=raymarch) Again I recommend checking out Inigo Quilez for an in-depth explanation, but raymarching is basically an iterative sort of 'pseudo-raytracing' algorithm for rendering complex surfaces like SDFs. +如果你熟悉SDF,你应该也熟悉光线行进。它们经常一起使用。[如果你经常去ShaderToy,你应该对光线行进非常熟悉。](https://www.shadertoy.com/results?query=raymarch)同样,我建议查看伊尼戈·基莱斯的内容,他详细解释了光线行进,但光线行进基本上是一种迭代的“伪射线追踪”算法,用于渲染复杂的表面,如SDF。 + In this project you can use an SDFGroupRaymarcher to visualize your SDFGroup. This component basically just creates a cube mesh and assigns it a special raymarching material. The resulting visual is much more accurate than the isosurface extraction, but it's expensive just to look at: unlike isosurface extraction which is just doing nothing while you're not manipulating the SDFs, raymarching is an active process on your GPU. +在这个项目中,你可以使用SDFGroupRaymarcher来可视化你的SDFGroup。这个组件基本上只是创建一个立方体网格,并为其分配一个特殊的光线行进材质。结果的视觉效果要比等值面提取更精确,但仅仅是查看时非常昂贵:与等值面提取不同,光线行进在你不操纵SDF时也在主动处理。 + The raymarching material is set up to be easy to modify - it's built around this subgraph: +光线行进材质设置得非常容易修改 - 它建立在这个子图之上: + ![isomesh5](https://user-images.githubusercontent.com/18707147/115975216-c5da7480-a55a-11eb-9452-18740e81286b.png) 'Hit' is simply a 0/1 int which tells you whether a surface was hit, 'Normal' is that point's surface normal, and that should be enough to set up your shader. I also provide a 'thickness' value to start you on your way to subsurface scattering. Neat! +'Hit'只是一个0/1整数,告诉你是否击中了表面,'Normal'是该点的表面法线,这应该足以设置你的着色器。我还提供了一个“厚度”值,让你更容易实现次表面散射。很酷! + It also outputs a UV. UVs are generated procedurally from primitives and for meshes they're sampled. The final UV of each point is a weighted average of the UV of each SDF in the group. Texturing combined shapes can look really funky: +它还输出UV。UV是从原语中生成的,对于网格,它们是采样的。每个点的最终UV是每个SDF在组中的UV的加权平均值。对组合形状进行纹理处理可能会看起来很有趣: + ![isomesh6](https://user-images.githubusercontent.com/18707147/115975359-fc64bf00-a55b-11eb-8aa8-b3895448221e.png) You can also directly visualize the UVs and iteration count. +你还可以直接可视化UV和迭代计数。 + ![isomesh7](https://user-images.githubusercontent.com/18707147/115975420-8745b980-a55c-11eb-9a6f-416848f5cc9e.png) ## Physics I also include a very fun sample scene showing how you might add physical interaction. Unfortunately, Unity doesn't allow for custom colliders at this time, nor does it allow for non-static concave meshes. Which leaves me pretty limited. However, Unity does allow for convex mesh colliders and even static concave mesh colliders. Creating mesh colliders is very expensive for large meshes though. This led me to experiment with generating very small colliders only around Rigidbodies, at fixed distance intervals. +我还包括了一个非常有趣的示例场景,展示了如何添加物理交互。不幸的是,Unity目前不允许自定义碰撞器,也不允许非静态的凹凸网格。这让我非常受限。然而,Unity允许凸凹网格碰撞器和静态凹凸网格碰撞器。创建大型网格碰撞器非常昂贵。这促使我尝试仅在Rigidbody周围的固定距离间隔内生成非常小的碰撞器。 + ![blobbyBricks9](https://user-images.githubusercontent.com/18707147/118203358-caa49100-b453-11eb-9d3a-a5af4fff5cca.gif) It works surprisingly well, even when moving the sdfs around! +它效果出奇地好,即使在移动SDF时也是如此! + ## Roadmap and Notes * ~~I want to be able to add physics to the generated meshes. In theory this should be as simple as adding a MeshCollider and Rigidbody to them, but Unity probably won't play well with these high-poly non-convex meshes, so I may need to split them into many convex meshes.~~