├── .gitignore ├── .vscode └── settings.json ├── Assets ├── Blender.meta ├── Blender │ ├── Aurra_HP.blend │ ├── Aurra_HP.blend.meta │ ├── Aurra_HP.blend1 │ ├── Aurra_HP.blend1.meta │ ├── Experimental.meta │ ├── Experimental │ │ ├── HighResCloth.blend │ │ ├── HighResCloth.blend.meta │ │ ├── HighResCloth.blend1 │ │ ├── HighResCloth.blend1.meta │ │ ├── SimpleCloth.blend │ │ ├── SimpleCloth.blend.meta │ │ ├── SimpleCloth.blend1 │ │ └── SimpleCloth.blend1.meta │ ├── Skirt_Simulation.blend │ ├── Skirt_Simulation.blend.meta │ ├── Skirt_Simulation.blend1 │ └── Skirt_Simulation.blend1.meta ├── CPUClothSimulation.meta ├── CPUClothSimulation │ ├── Editor.meta │ ├── Editor │ │ ├── CPUClothSimulationEditor.cs │ │ └── CPUClothSimulationEditor.cs.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── CPUClothSimulation.cs │ │ ├── CPUClothSimulation.cs.meta │ │ ├── PositionBasedDynamics.cs │ │ ├── PositionBasedDynamics.cs.meta │ │ ├── SpatialHashing.cs │ │ └── SpatialHashing.cs.meta │ └── Shaders.meta ├── GPUClothSimulation.meta ├── GPUClothSimulation │ ├── Editor.meta │ ├── Editor │ │ ├── GPUClothSimulationEditor.cs │ │ ├── GPUClothSimulationEditor.cs.meta │ │ ├── GPUClothSimulationLegacyEditor.cs │ │ └── GPUClothSimulationLegacyEditor.cs.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── GPUClothSimulation.cs │ │ ├── GPUClothSimulation.cs.meta │ │ ├── GPUClothSimulationLegacy.cs │ │ └── GPUClothSimulationLegacy.cs.meta │ ├── Shaders.meta │ └── Shaders │ │ ├── Cloth.shader │ │ ├── Cloth.shader.meta │ │ ├── ClothSolver.compute │ │ ├── ClothSolver.compute.meta │ │ ├── DataStruct.cginc │ │ ├── DataStruct.cginc.meta │ │ ├── PBDCloth.cginc │ │ ├── PBDCloth.cginc.meta │ │ ├── PBDClothSolver.compute │ │ ├── PBDClothSolver.compute.meta │ │ ├── PositionBasedDynamics.cginc │ │ ├── PositionBasedDynamics.cginc.meta │ │ ├── Utilities.cginc │ │ └── Utilities.cginc.meta ├── JsonDotNet.meta ├── JsonDotNet │ ├── Assemblies.meta │ ├── Assemblies │ │ ├── AOT.meta │ │ ├── AOT │ │ │ ├── Newtonsoft.Json.XML │ │ │ ├── Newtonsoft.Json.XML.meta │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.dll.meta │ │ ├── Standalone.meta │ │ ├── Standalone │ │ │ ├── Newtonsoft.Json.XML │ │ │ ├── Newtonsoft.Json.XML.meta │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.dll.meta │ │ ├── Windows.meta │ │ └── Windows │ │ │ ├── Newtonsoft.Json.XML │ │ │ ├── Newtonsoft.Json.XML.meta │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.dll.meta │ ├── Documentation.meta │ ├── Documentation │ │ ├── Json Net for Unity 2.0.1.pdf │ │ └── Json Net for Unity 2.0.1.pdf.meta │ ├── JsonDotNet201Source.zip │ ├── JsonDotNet201Source.zip.meta │ ├── link.xml │ └── link.xml.meta ├── Materials.meta ├── Materials │ ├── CPUCloth.meta │ ├── CPUCloth │ │ ├── ClothBackCPU.mat │ │ ├── ClothBackCPU.mat.meta │ │ ├── ClothFrontCPU.mat │ │ └── ClothFrontCPU.mat.meta │ ├── Default.mat │ ├── Default.mat.meta │ ├── GPUCloth.meta │ ├── GPUCloth │ │ ├── ClothBackGPU.mat │ │ ├── ClothBackGPU.mat.meta │ │ ├── ClothFrontGPU.mat │ │ └── ClothFrontGPU.mat.meta │ ├── Invisible.mat │ ├── Invisible.mat.meta │ ├── Invisible.shader │ ├── Invisible.shader.meta │ ├── Nomal.mat │ └── Nomal.mat.meta ├── Plugins.meta ├── Plugins │ ├── GitHub.meta │ └── GitHub │ │ ├── Editor.meta │ │ └── Editor │ │ ├── AsyncBridge.Net35.dll │ │ ├── AsyncBridge.Net35.dll.meta │ │ ├── ExtensionLoader.cs │ │ ├── ExtensionLoader.cs.meta │ │ ├── GitHub.Api.45.dll │ │ ├── GitHub.Api.45.dll.meta │ │ ├── GitHub.Api.dll │ │ ├── GitHub.Api.dll.meta │ │ ├── GitHub.Logging.dll │ │ ├── GitHub.Logging.dll.meta │ │ ├── GitHub.Unity.45.dll │ │ ├── GitHub.Unity.45.dll.meta │ │ ├── GitHub.Unity.dll │ │ ├── GitHub.Unity.dll.meta │ │ ├── GitHub.UnityShim.dll │ │ ├── GitHub.UnityShim.dll.meta │ │ ├── Mono.Posix.dll │ │ ├── Mono.Posix.dll.meta │ │ ├── QuickGuide.pdf │ │ ├── QuickGuide.pdf.meta │ │ ├── ReadOnlyCollectionsInterfaces.dll │ │ ├── ReadOnlyCollectionsInterfaces.dll.meta │ │ ├── System.Threading.dll │ │ ├── System.Threading.dll.meta │ │ ├── UnityAPIWrapper.cs │ │ ├── UnityAPIWrapper.cs.meta │ │ ├── big-logo@2x.png │ │ ├── big-logo@2x.png.meta │ │ ├── credits.txt │ │ ├── credits.txt.meta │ │ ├── eula.txt │ │ ├── eula.txt.meta │ │ ├── libsfw.bundle │ │ ├── libsfw.bundle.meta │ │ ├── libsfw.so │ │ ├── libsfw.so.meta │ │ ├── sfw.net.dll │ │ ├── sfw.net.dll.meta │ │ ├── x64.meta │ │ ├── x64 │ │ ├── pthreadVC2.dll │ │ ├── pthreadVC2.dll.meta │ │ ├── sfw_x64.dll │ │ └── sfw_x64.dll.meta │ │ ├── x86.meta │ │ └── x86 │ │ ├── pthreadVC2.dll │ │ ├── pthreadVC2.dll.meta │ │ ├── sfw_x86.dll │ │ └── sfw_x86.dll.meta ├── Scenes.meta ├── Scenes │ ├── SampleScene.meta │ ├── SampleScene.unity │ ├── SampleScene.unity.meta │ ├── SampleScene │ │ ├── LightingData.asset │ │ ├── LightingData.asset.meta │ │ ├── ReflectionProbe-0.exr │ │ └── ReflectionProbe-0.exr.meta │ ├── SampleScene_Profiles.meta │ └── SampleScene_Profiles │ │ ├── Post-process Volume Profile.asset │ │ └── Post-process Volume Profile.asset.meta ├── StreamingAssets.meta ├── StreamingAssets │ ├── BlenderExports.meta │ ├── BlenderExports │ │ ├── HighResCloth.json │ │ ├── HighResCloth.json.meta │ │ ├── SimpleCloth.json │ │ └── SimpleCloth.json.meta │ ├── ClothData.meta │ └── ClothData │ │ ├── Cape.json │ │ ├── Cape.json.meta │ │ ├── Cloak.json │ │ ├── Cloak.json.meta │ │ ├── SimpleCloth.json │ │ ├── SimpleCloth.json.meta │ │ ├── Skirt.json │ │ └── Skirt.json.meta ├── Textures.meta ├── Textures │ ├── EyeTex.jpg │ └── EyeTex.jpg.meta ├── UtilityTools.meta └── UtilityTools │ ├── ConditionalHideAttribute.cs │ ├── ConditionalHideAttribute.cs.meta │ ├── DataStructs.cs │ ├── DataStructs.cs.meta │ ├── Editor.meta │ ├── Editor │ ├── ConditionalHidePropertyDrawer.cs │ └── ConditionalHidePropertyDrawer.cs.meta │ ├── FPSDisplay.cs │ ├── FPSDisplay.cs.meta │ ├── Helper.cs │ ├── Helper.cs.meta │ ├── SkinnedMesh.cs │ ├── SkinnedMesh.cs.meta │ ├── SkinnedMeshDebug.cs │ ├── SkinnedMeshDebug.cs.meta │ ├── Utilities.cs │ └── Utilities.cs.meta ├── LICENSE ├── Packages ├── manifest.json └── packages-lock.json ├── Pictures ├── cloth_in_wind.png ├── cloth_simulation_parameters.PNG ├── materials.PNG └── simulation.PNG ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── PackageManagerSettings.asset ├── Packages │ └── com.unity.progrids │ │ └── Settings.json ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset ├── README.md └── UserSettings └── EditorUserSettings.asset /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Mm]emoryCaptures/ 12 | 13 | # Asset meta data should only be ignored when the corresponding asset is also ignored 14 | !/[Aa]ssets/**/*.meta 15 | 16 | # Uncomment this line if you wish to ignore the asset store tools plugin 17 | # /[Aa]ssets/AssetStoreTools* 18 | 19 | # Autogenerated Jetbrains Rider plugin 20 | [Aa]ssets/Plugins/Editor/JetBrains* 21 | 22 | # Visual Studio cache directory 23 | .vs/ 24 | 25 | # Gradle cache directory 26 | .gradle/ 27 | 28 | # Autogenerated VS/MD/Consulo solution and project files 29 | ExportedObj/ 30 | .consulo/ 31 | *.csproj 32 | *.unityproj 33 | *.sln 34 | *.suo 35 | *.tmp 36 | *.user 37 | *.userprefs 38 | *.pidb 39 | *.booproj 40 | *.svd 41 | *.pdb 42 | *.mdb 43 | *.opendb 44 | *.VC.db 45 | 46 | # Unity3D generated meta files 47 | *.pidb.meta 48 | *.pdb.meta 49 | *.mdb.meta 50 | 51 | # Unity3D generated file on crash reports 52 | sysinfo.txt 53 | 54 | # Builds 55 | *.apk 56 | *.unitypackage 57 | 58 | # Crashlytics generated file 59 | crashlytics-build.properties 60 | 61 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": 3 | { 4 | "**/.DS_Store":true, 5 | "**/.git":true, 6 | "**/.gitignore":true, 7 | "**/.gitmodules":true, 8 | "**/*.booproj":true, 9 | "**/*.pidb":true, 10 | "**/*.suo":true, 11 | "**/*.user":true, 12 | "**/*.userprefs":true, 13 | "**/*.unityproj":true, 14 | "**/*.dll":true, 15 | "**/*.exe":true, 16 | "**/*.pdf":true, 17 | "**/*.mid":true, 18 | "**/*.midi":true, 19 | "**/*.wav":true, 20 | "**/*.gif":true, 21 | "**/*.ico":true, 22 | "**/*.jpg":true, 23 | "**/*.jpeg":true, 24 | "**/*.png":true, 25 | "**/*.psd":true, 26 | "**/*.tga":true, 27 | "**/*.tif":true, 28 | "**/*.tiff":true, 29 | "**/*.3ds":true, 30 | "**/*.3DS":true, 31 | "**/*.fbx":true, 32 | "**/*.FBX":true, 33 | "**/*.lxo":true, 34 | "**/*.LXO":true, 35 | "**/*.ma":true, 36 | "**/*.MA":true, 37 | "**/*.obj":true, 38 | "**/*.OBJ":true, 39 | "**/*.asset":true, 40 | "**/*.cubemap":true, 41 | "**/*.flare":true, 42 | "**/*.mat":true, 43 | "**/*.meta":true, 44 | "**/*.prefab":true, 45 | "**/*.unity":true, 46 | "build/":true, 47 | "Build/":true, 48 | "Library/":true, 49 | "library/":true, 50 | "obj/":true, 51 | "Obj/":true, 52 | "ProjectSettings/":true, 53 | "temp/":true, 54 | "Temp/":true 55 | } 56 | } -------------------------------------------------------------------------------- /Assets/Blender.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd4a0b28759c0ea4baeba7aba3cc8800 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Blender/Aurra_HP.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Blender/Aurra_HP.blend -------------------------------------------------------------------------------- /Assets/Blender/Aurra_HP.blend.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 77b9eda70134cf24a82290bc735ab5ad 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: 6 | - first: 7 | 74: -623603649343465320 8 | second: Scene 9 | externalObjects: {} 10 | materials: 11 | materialImportMode: 1 12 | materialName: 0 13 | materialSearch: 1 14 | materialLocation: 1 15 | animations: 16 | legacyGenerateAnimations: 4 17 | bakeSimulation: 0 18 | resampleCurves: 1 19 | optimizeGameObjects: 0 20 | motionNodeName: 21 | rigImportErrors: 22 | rigImportWarnings: 23 | animationImportErrors: 24 | animationImportWarnings: 25 | animationRetargetingWarnings: 26 | animationDoRetargetingWarnings: 0 27 | importAnimatedCustomProperties: 0 28 | importConstraints: 0 29 | animationCompression: 1 30 | animationRotationError: 0.5 31 | animationPositionError: 0.5 32 | animationScaleError: 0.5 33 | animationWrapMode: 0 34 | extraExposedTransformPaths: [] 35 | extraUserProperties: [] 36 | clipAnimations: [] 37 | isReadable: 1 38 | meshes: 39 | lODScreenPercentages: [] 40 | globalScale: 1 41 | meshCompression: 0 42 | addColliders: 0 43 | useSRGBMaterialColor: 1 44 | sortHierarchyByName: 0 45 | importVisibility: 1 46 | importBlendShapes: 1 47 | importCameras: 0 48 | importLights: 0 49 | swapUVChannels: 0 50 | generateSecondaryUV: 0 51 | useFileUnits: 1 52 | keepQuads: 0 53 | weldVertices: 1 54 | preserveHierarchy: 1 55 | skinWeightsMode: 0 56 | maxBonesPerVertex: 4 57 | minBoneWeight: 0.001 58 | meshOptimizationFlags: -1 59 | indexFormat: 0 60 | secondaryUVAngleDistortion: 8 61 | secondaryUVAreaDistortion: 15.000001 62 | secondaryUVHardAngle: 88 63 | secondaryUVPackMargin: 4 64 | useFileScale: 1 65 | tangentSpace: 66 | normalSmoothAngle: 60 67 | normalImportMode: 0 68 | tangentImportMode: 3 69 | normalCalculationMode: 4 70 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 71 | blendShapeNormalImportMode: 1 72 | normalSmoothingSource: 0 73 | referencedClips: [] 74 | importAnimation: 1 75 | humanDescription: 76 | serializedVersion: 3 77 | human: [] 78 | skeleton: [] 79 | armTwist: 0.5 80 | foreArmTwist: 0.5 81 | upperLegTwist: 0.5 82 | legTwist: 0.5 83 | armStretch: 0.05 84 | legStretch: 0.05 85 | feetSpacing: 0 86 | globalScale: 1 87 | rootMotionBoneName: 88 | hasTranslationDoF: 0 89 | hasExtraRoot: 0 90 | skeletonHasParents: 1 91 | lastHumanDescriptionAvatarSource: {instanceID: 0} 92 | autoGenerateAvatarMappingIfUnspecified: 1 93 | animationType: 2 94 | humanoidOversampling: 1 95 | avatarSetup: 0 96 | additionalBone: 0 97 | userData: 98 | assetBundleName: 99 | assetBundleVariant: 100 | -------------------------------------------------------------------------------- /Assets/Blender/Aurra_HP.blend1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Blender/Aurra_HP.blend1 -------------------------------------------------------------------------------- /Assets/Blender/Aurra_HP.blend1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 910c6116c3978d947a0191dd69af10ed 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Blender/Experimental.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce9a5e28fc20f8842bcf49846e14bd7d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Blender/Experimental/HighResCloth.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Blender/Experimental/HighResCloth.blend -------------------------------------------------------------------------------- /Assets/Blender/Experimental/HighResCloth.blend.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 91431d7e37dd5924d83f1752f85edc3b 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: 6 | - first: 7 | 74: -623603649343465320 8 | second: Scene 9 | externalObjects: {} 10 | materials: 11 | materialImportMode: 1 12 | materialName: 0 13 | materialSearch: 1 14 | materialLocation: 1 15 | animations: 16 | legacyGenerateAnimations: 4 17 | bakeSimulation: 0 18 | resampleCurves: 1 19 | optimizeGameObjects: 0 20 | motionNodeName: 21 | rigImportErrors: 22 | rigImportWarnings: 23 | animationImportErrors: 24 | animationImportWarnings: 25 | animationRetargetingWarnings: 26 | animationDoRetargetingWarnings: 0 27 | importAnimatedCustomProperties: 0 28 | importConstraints: 0 29 | animationCompression: 1 30 | animationRotationError: 0.5 31 | animationPositionError: 0.5 32 | animationScaleError: 0.5 33 | animationWrapMode: 0 34 | extraExposedTransformPaths: [] 35 | extraUserProperties: [] 36 | clipAnimations: [] 37 | isReadable: 1 38 | meshes: 39 | lODScreenPercentages: [] 40 | globalScale: 1 41 | meshCompression: 0 42 | addColliders: 0 43 | useSRGBMaterialColor: 1 44 | sortHierarchyByName: 0 45 | importVisibility: 1 46 | importBlendShapes: 1 47 | importCameras: 0 48 | importLights: 0 49 | swapUVChannels: 0 50 | generateSecondaryUV: 0 51 | useFileUnits: 1 52 | keepQuads: 0 53 | weldVertices: 1 54 | preserveHierarchy: 1 55 | skinWeightsMode: 0 56 | maxBonesPerVertex: 4 57 | minBoneWeight: 0.001 58 | meshOptimizationFlags: -1 59 | indexFormat: 0 60 | secondaryUVAngleDistortion: 8 61 | secondaryUVAreaDistortion: 15.000001 62 | secondaryUVHardAngle: 88 63 | secondaryUVPackMargin: 4 64 | useFileScale: 1 65 | tangentSpace: 66 | normalSmoothAngle: 60 67 | normalImportMode: 0 68 | tangentImportMode: 3 69 | normalCalculationMode: 4 70 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 71 | blendShapeNormalImportMode: 1 72 | normalSmoothingSource: 0 73 | referencedClips: [] 74 | importAnimation: 1 75 | humanDescription: 76 | serializedVersion: 3 77 | human: [] 78 | skeleton: [] 79 | armTwist: 0.5 80 | foreArmTwist: 0.5 81 | upperLegTwist: 0.5 82 | legTwist: 0.5 83 | armStretch: 0.05 84 | legStretch: 0.05 85 | feetSpacing: 0 86 | globalScale: 1 87 | rootMotionBoneName: 88 | hasTranslationDoF: 0 89 | hasExtraRoot: 0 90 | skeletonHasParents: 1 91 | lastHumanDescriptionAvatarSource: {instanceID: 0} 92 | autoGenerateAvatarMappingIfUnspecified: 1 93 | animationType: 2 94 | humanoidOversampling: 1 95 | avatarSetup: 0 96 | additionalBone: 0 97 | userData: 98 | assetBundleName: 99 | assetBundleVariant: 100 | -------------------------------------------------------------------------------- /Assets/Blender/Experimental/HighResCloth.blend1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Blender/Experimental/HighResCloth.blend1 -------------------------------------------------------------------------------- /Assets/Blender/Experimental/HighResCloth.blend1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 431a9f5d47ab7c6459cf3c2002bb76f0 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Blender/Experimental/SimpleCloth.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Blender/Experimental/SimpleCloth.blend -------------------------------------------------------------------------------- /Assets/Blender/Experimental/SimpleCloth.blend.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a88c687591d5c0a4fac0e8fa67440f87 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: 6 | - first: 7 | 74: -623603649343465320 8 | second: Scene 9 | externalObjects: {} 10 | materials: 11 | materialImportMode: 1 12 | materialName: 0 13 | materialSearch: 1 14 | materialLocation: 1 15 | animations: 16 | legacyGenerateAnimations: 4 17 | bakeSimulation: 0 18 | resampleCurves: 1 19 | optimizeGameObjects: 0 20 | motionNodeName: 21 | rigImportErrors: 22 | rigImportWarnings: 23 | animationImportErrors: 24 | animationImportWarnings: 25 | animationRetargetingWarnings: 26 | animationDoRetargetingWarnings: 0 27 | importAnimatedCustomProperties: 0 28 | importConstraints: 0 29 | animationCompression: 1 30 | animationRotationError: 0.5 31 | animationPositionError: 0.5 32 | animationScaleError: 0.5 33 | animationWrapMode: 0 34 | extraExposedTransformPaths: [] 35 | extraUserProperties: [] 36 | clipAnimations: [] 37 | isReadable: 1 38 | meshes: 39 | lODScreenPercentages: [] 40 | globalScale: 1 41 | meshCompression: 0 42 | addColliders: 0 43 | useSRGBMaterialColor: 1 44 | sortHierarchyByName: 0 45 | importVisibility: 1 46 | importBlendShapes: 1 47 | importCameras: 0 48 | importLights: 0 49 | swapUVChannels: 0 50 | generateSecondaryUV: 0 51 | useFileUnits: 1 52 | keepQuads: 0 53 | weldVertices: 1 54 | preserveHierarchy: 1 55 | skinWeightsMode: 0 56 | maxBonesPerVertex: 4 57 | minBoneWeight: 0.001 58 | meshOptimizationFlags: -1 59 | indexFormat: 0 60 | secondaryUVAngleDistortion: 8 61 | secondaryUVAreaDistortion: 15.000001 62 | secondaryUVHardAngle: 88 63 | secondaryUVPackMargin: 4 64 | useFileScale: 1 65 | tangentSpace: 66 | normalSmoothAngle: 60 67 | normalImportMode: 0 68 | tangentImportMode: 3 69 | normalCalculationMode: 4 70 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 71 | blendShapeNormalImportMode: 1 72 | normalSmoothingSource: 0 73 | referencedClips: [] 74 | importAnimation: 1 75 | humanDescription: 76 | serializedVersion: 3 77 | human: [] 78 | skeleton: [] 79 | armTwist: 0.5 80 | foreArmTwist: 0.5 81 | upperLegTwist: 0.5 82 | legTwist: 0.5 83 | armStretch: 0.05 84 | legStretch: 0.05 85 | feetSpacing: 0 86 | globalScale: 1 87 | rootMotionBoneName: 88 | hasTranslationDoF: 0 89 | hasExtraRoot: 0 90 | skeletonHasParents: 1 91 | lastHumanDescriptionAvatarSource: {instanceID: 0} 92 | autoGenerateAvatarMappingIfUnspecified: 1 93 | animationType: 2 94 | humanoidOversampling: 1 95 | avatarSetup: 0 96 | additionalBone: 0 97 | userData: 98 | assetBundleName: 99 | assetBundleVariant: 100 | -------------------------------------------------------------------------------- /Assets/Blender/Experimental/SimpleCloth.blend1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Blender/Experimental/SimpleCloth.blend1 -------------------------------------------------------------------------------- /Assets/Blender/Experimental/SimpleCloth.blend1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71d67978844c0ae469ed1c64d82bd6ae 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Blender/Skirt_Simulation.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Blender/Skirt_Simulation.blend -------------------------------------------------------------------------------- /Assets/Blender/Skirt_Simulation.blend.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 376eea421b0ad3a44aabd2ca2c2903cf 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: 6 | - first: 7 | 74: -623603649343465320 8 | second: Scene 9 | externalObjects: {} 10 | materials: 11 | materialImportMode: 1 12 | materialName: 0 13 | materialSearch: 1 14 | materialLocation: 1 15 | animations: 16 | legacyGenerateAnimations: 4 17 | bakeSimulation: 0 18 | resampleCurves: 1 19 | optimizeGameObjects: 0 20 | motionNodeName: 21 | rigImportErrors: 22 | rigImportWarnings: 23 | animationImportErrors: 24 | animationImportWarnings: 25 | animationRetargetingWarnings: 26 | animationDoRetargetingWarnings: 0 27 | importAnimatedCustomProperties: 0 28 | importConstraints: 0 29 | animationCompression: 1 30 | animationRotationError: 0.5 31 | animationPositionError: 0.5 32 | animationScaleError: 0.5 33 | animationWrapMode: 0 34 | extraExposedTransformPaths: [] 35 | extraUserProperties: [] 36 | clipAnimations: [] 37 | isReadable: 1 38 | meshes: 39 | lODScreenPercentages: [] 40 | globalScale: 1 41 | meshCompression: 0 42 | addColliders: 0 43 | useSRGBMaterialColor: 1 44 | sortHierarchyByName: 0 45 | importVisibility: 1 46 | importBlendShapes: 1 47 | importCameras: 0 48 | importLights: 0 49 | swapUVChannels: 0 50 | generateSecondaryUV: 0 51 | useFileUnits: 1 52 | keepQuads: 0 53 | weldVertices: 1 54 | preserveHierarchy: 1 55 | skinWeightsMode: 0 56 | maxBonesPerVertex: 4 57 | minBoneWeight: 0.001 58 | meshOptimizationFlags: -1 59 | indexFormat: 0 60 | secondaryUVAngleDistortion: 8 61 | secondaryUVAreaDistortion: 15.000001 62 | secondaryUVHardAngle: 88 63 | secondaryUVPackMargin: 4 64 | useFileScale: 1 65 | tangentSpace: 66 | normalSmoothAngle: 60 67 | normalImportMode: 0 68 | tangentImportMode: 3 69 | normalCalculationMode: 4 70 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 71 | blendShapeNormalImportMode: 1 72 | normalSmoothingSource: 0 73 | referencedClips: [] 74 | importAnimation: 1 75 | humanDescription: 76 | serializedVersion: 3 77 | human: [] 78 | skeleton: [] 79 | armTwist: 0.5 80 | foreArmTwist: 0.5 81 | upperLegTwist: 0.5 82 | legTwist: 0.5 83 | armStretch: 0.05 84 | legStretch: 0.05 85 | feetSpacing: 0 86 | globalScale: 1 87 | rootMotionBoneName: 88 | hasTranslationDoF: 0 89 | hasExtraRoot: 0 90 | skeletonHasParents: 1 91 | lastHumanDescriptionAvatarSource: {instanceID: 0} 92 | autoGenerateAvatarMappingIfUnspecified: 1 93 | animationType: 2 94 | humanoidOversampling: 1 95 | avatarSetup: 0 96 | additionalBone: 0 97 | userData: 98 | assetBundleName: 99 | assetBundleVariant: 100 | -------------------------------------------------------------------------------- /Assets/Blender/Skirt_Simulation.blend1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Blender/Skirt_Simulation.blend1 -------------------------------------------------------------------------------- /Assets/Blender/Skirt_Simulation.blend1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53dbec5d27029c940bdc819345f9597c 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/CPUClothSimulation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 203452b8f846378488ab8e7e9509d937 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/CPUClothSimulation/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46e417a337d0f434fa9ac98b2fe50c18 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/CPUClothSimulation/Editor/CPUClothSimulationEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 24fed991d7b184d46a07673e98f32633 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/CPUClothSimulation/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab3322aceb4d5bc4fa149deb06b89930 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/CPUClothSimulation/Scripts/CPUClothSimulation.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | using DataStruct; 6 | using Utilities; 7 | using SpatialHashing; 8 | 9 | using PositionBasedDynamics; 10 | 11 | [RequireComponent(typeof(MeshFilter))] 12 | [RequireComponent(typeof(MeshRenderer))] 13 | public class CPUClothSimulation : MonoBehaviour 14 | { 15 | #region Initializattion; 16 | [ConditionalHideAttribute("hide"), SerializeField] 17 | public string path; 18 | [ConditionalHideAttribute("hide"), SerializeField] 19 | public int totalVerts; 20 | [ConditionalHideAttribute("hide"), SerializeField] 21 | public int totalEdges; 22 | [ConditionalHideAttribute("hide"), SerializeField] 23 | public int totalTriangles; 24 | [ConditionalHideAttribute("hide"), SerializeField] 25 | public int totalNeighborTriangles; 26 | 27 | [HideInInspector] 28 | public Mesh mesh; 29 | [HideInInspector] 30 | public MeshData meshData; 31 | [HideInInspector] 32 | public Mesh childMesh; 33 | [HideInInspector] 34 | public GameObject backSide; 35 | #endregion 36 | 37 | #region Materials 38 | [SerializeField] 39 | public Material frontMaterial; 40 | [SerializeField] 41 | public Material backMaterial; 42 | #endregion 43 | 44 | #region Cloth Parameters 45 | [SerializeField] 46 | public Vector3 gravity = new Vector3(0, -9.81f, 0); 47 | [Range(0, 1), SerializeField] 48 | public float compressionStiffness = 1; 49 | [Range(0, 1), SerializeField] 50 | public float stretchStiffness = 1; 51 | [Range(0, 1), SerializeField] 52 | public float bendingStiffness = 0.1f; 53 | public float thickness = 0.02f; 54 | [Range(0.9f, 1), SerializeField] 55 | public float damping = 0.99f; 56 | [SerializeField] 57 | public WindZone wind; 58 | #endregion 59 | 60 | #region Spatial Hashing 61 | [SerializeField] 62 | public int gridSize = 1; 63 | [ConditionalHideAttribute("hide"), SerializeField] 64 | public float invGridSize; 65 | [SerializeField] 66 | public int tableSize = 2000; 67 | #endregion 68 | 69 | #region Simulation Settings 70 | [SerializeField] 71 | public uint iterationSteps = 2; 72 | [SerializeField] 73 | public float deltaTimeStep = 0.01f; 74 | [SerializeField] 75 | public bool startSimulationOnPlay = true; 76 | #endregion 77 | 78 | #region Editor Stuffs 79 | [HideInInspector] 80 | public bool hide = false; 81 | [HideInInspector] 82 | public bool simulate = false; 83 | float timePassed = 0; 84 | [HideInInspector] 85 | public bool showInitialization, showMaterials, showClothParameters, showDefault; 86 | [HideInInspector] 87 | public bool showSpatialHashing, showSimulationSettings; 88 | #endregion 89 | 90 | void Start() 91 | { 92 | if (startSimulationOnPlay) simulate = true; 93 | // pinned particles 94 | // meshData.particles[264].invMass = 0; 95 | meshData.particles[0].invMass = 0; 96 | meshData.particles[52].invMass = 0; 97 | } 98 | 99 | void Update() 100 | { 101 | timePassed += Time.deltaTime; 102 | if (timePassed >= deltaTimeStep) timePassed = 0.0f; 103 | if (simulate && timePassed == 0.0f) 104 | { 105 | SimulateOneTimeStep(deltaTimeStep); 106 | UpdateDataToMesh(deltaTimeStep); 107 | } 108 | } 109 | 110 | void FixedUpdate() 111 | { 112 | // if (simulate) 113 | // { 114 | // SimulateOneTimeStep(deltaTimeStep); 115 | // UpdateDataToMesh(deltaTimeStep); 116 | // } 117 | } 118 | 119 | public void SimulateOneTimeStep(float dt) 120 | { 121 | #region Apply External Force 122 | for (int v=0; v < totalVerts; v++) 123 | { 124 | Vector3 force = Vector3.zero; 125 | Vector3 corr; 126 | // add gravity acceleration (f = ma) 127 | force += gravity * meshData.particles[v].mass; 128 | 129 | if (PBD.ExternalForce( 130 | dt, 131 | meshData.particles[v].predictedPos, 132 | meshData.particles[v].velocity, 133 | meshData.particles[v].invMass, 134 | force, 135 | damping, 136 | out corr)) meshData.particles[v].predictedPos += corr; 137 | } 138 | #endregion 139 | 140 | #region Apply Wind Force 141 | float dirX = wind.GetComponentInParent().eulerAngles.x % 360 / 360; 142 | float dirY = wind.GetComponentInParent().eulerAngles.y % 360 / 360; 143 | float dirZ = wind.GetComponentInParent().eulerAngles.z % 360 / 360; 144 | 145 | // TODO: change this to real direction the arrow is pointing 146 | Vector3 windDir = new Vector3(dirX, dirY, dirZ); 147 | 148 | float windForce = wind.windMain; 149 | for (int t=0; t < totalTriangles; t++) 150 | { 151 | Triangle tri = meshData.triangles[t]; 152 | Vector3 p0 = meshData.particles[tri.p0].predictedPos; 153 | Vector3 p1 = meshData.particles[tri.p1].predictedPos; 154 | Vector3 p2 = meshData.particles[tri.p2].predictedPos; 155 | 156 | float w0 = meshData.particles[tri.p0].invMass; 157 | float w1 = meshData.particles[tri.p1].invMass; 158 | float w2 = meshData.particles[tri.p2].invMass; 159 | 160 | Vector3 corr0, corr1, corr2; 161 | 162 | PBD.WindForce( 163 | dt, 164 | p0, w0, 165 | p1, w1, 166 | p2, w2, 167 | windDir, 168 | windForce, 169 | out corr0, out corr1, out corr2); 170 | 171 | meshData.particles[tri.p0].predictedPos += corr0; 172 | meshData.particles[tri.p1].predictedPos += corr1; 173 | meshData.particles[tri.p2].predictedPos += corr2; 174 | } 175 | #endregion 176 | 177 | #region Collision Constraints 178 | SH sh = new SH(gridSize, invGridSize, tableSize); 179 | SPHash[] spHash = new SPHash[tableSize]; 180 | 181 | for (int v=0; v < totalVerts; v++) 182 | { 183 | int hash = Mathf.Abs(sh.Hash(meshData.particles[v].predictedPos)); 184 | if (spHash[hash].indices == null) spHash[hash].indices = new List(); 185 | spHash[hash].indices.Add(meshData.particles[v].idx); 186 | } 187 | 188 | for (int t=0; t < totalTriangles; t++) 189 | { 190 | Triangle tri = meshData.triangles[t]; 191 | Vector3 p0 = meshData.particles[tri.p0].predictedPos; 192 | Vector3 p1 = meshData.particles[tri.p1].predictedPos; 193 | Vector3 p2 = meshData.particles[tri.p2].predictedPos; 194 | 195 | float w0 = meshData.particles[tri.p0].invMass; 196 | float w1 = meshData.particles[tri.p1].invMass; 197 | float w2 = meshData.particles[tri.p2].invMass; 198 | 199 | List hashes = sh.TriangleBoundingBoxHashes(p0, p1, p2); 200 | 201 | for (int h=0; h < hashes.Count; h++) 202 | { 203 | if (spHash[h].indices != null) 204 | { 205 | for (int sph=0; sph < spHash[h].indices.Count ; sph++) 206 | { 207 | int idx = spHash[h].indices[sph]; 208 | if ( 209 | idx != meshData.particles[tri.p0].idx && 210 | idx != meshData.particles[tri.p1].idx && 211 | idx != meshData.particles[tri.p2].idx) 212 | { 213 | Vector3 p = meshData.particles[idx].predictedPos; 214 | float w = meshData.particles[idx].invMass; 215 | 216 | Vector3 corr, corr0, corr1, corr2; 217 | if (PBD.TrianglePointDistanceConstraint( 218 | p, w, 219 | p0, w0, 220 | p1, w1, 221 | p2, w2, 222 | thickness, 1f, 0.0f, 223 | out corr, out corr0, out corr1, out corr2)) 224 | { 225 | meshData.particles[idx].predictedPos += corr; 226 | meshData.particles[tri.p0].predictedPos += corr0; 227 | meshData.particles[tri.p1].predictedPos += corr1; 228 | meshData.particles[tri.p2].predictedPos += corr2; 229 | } 230 | } 231 | } 232 | } 233 | } 234 | } 235 | #endregion 236 | 237 | #region Project Constraints 238 | for (int iter=0; iter < iterationSteps; iter++) 239 | { 240 | #region Distance Constraint 241 | for (int e=0; e < totalEdges; e++) 242 | { 243 | Vector3 corr0, corr1; 244 | Edge edge = meshData.edges[e]; 245 | Vector3 p0 = meshData.particles[edge.p0].predictedPos; 246 | Vector3 p1 = meshData.particles[edge.p1].predictedPos; 247 | 248 | float w0 = meshData.particles[edge.p0].invMass; 249 | float w1 = meshData.particles[edge.p1].invMass; 250 | 251 | if (PBD.DistanceConstraint( 252 | p0, w0, 253 | p1, w1, 254 | edge.restLength, 255 | stretchStiffness, 256 | compressionStiffness, 257 | out corr0, out corr1)) 258 | { 259 | meshData.particles[edge.p0].predictedPos += corr0; 260 | meshData.particles[edge.p1].predictedPos += corr1; 261 | } 262 | } 263 | #endregion 264 | 265 | #region Dihedral Constraint 266 | for (int n=0; n < totalNeighborTriangles; n++) 267 | { 268 | Vector3 corr0, corr1, corr2, corr3; 269 | NeighborTriangles neighbor = meshData.neighborTriangles[n]; 270 | Vector3 p0 = meshData.particles[neighbor.p0].predictedPos; 271 | Vector3 p1 = meshData.particles[neighbor.p1].predictedPos; 272 | Vector3 p2 = meshData.particles[neighbor.p2].predictedPos; 273 | Vector3 p3 = meshData.particles[neighbor.p3].predictedPos; 274 | 275 | float w0 = meshData.particles[neighbor.p0].invMass; 276 | float w1 = meshData.particles[neighbor.p1].invMass; 277 | float w2 = meshData.particles[neighbor.p2].invMass; 278 | float w3 = meshData.particles[neighbor.p3].invMass; 279 | 280 | if (PBD.DihedralConstraint( 281 | p0, w0, 282 | p1, w1, 283 | p2, w2, 284 | p3, w3, 285 | neighbor.restAngle, 286 | bendingStiffness, 287 | out corr0, out corr1, out corr2, out corr3)) 288 | { 289 | meshData.particles[neighbor.p0].predictedPos += corr0; 290 | meshData.particles[neighbor.p1].predictedPos += corr1; 291 | meshData.particles[neighbor.p2].predictedPos += corr2; 292 | meshData.particles[neighbor.p3].predictedPos += corr3; 293 | } 294 | } 295 | #endregion 296 | } 297 | #endregion 298 | } 299 | 300 | public void UpdateDataToMesh(float dt) 301 | { 302 | List meshVerts = new List(); 303 | for (int i=0; i < totalVerts; i++) 304 | { 305 | meshVerts.Add(meshData.particles[i].predictedPos); 306 | meshData.particles[i].velocity = (meshData.particles[i].predictedPos - meshData.particles[i].pos) / dt; 307 | meshData.particles[i].pos = meshData.particles[i].predictedPos; 308 | } 309 | 310 | mesh.SetVertices(meshVerts); 311 | mesh.RecalculateNormals(); 312 | childMesh.SetVertices(meshVerts); 313 | childMesh.RecalculateNormals(); 314 | } 315 | } 316 | -------------------------------------------------------------------------------- /Assets/CPUClothSimulation/Scripts/CPUClothSimulation.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea1b402d3fc4e6a4a97fd361f3f93c2c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/CPUClothSimulation/Scripts/PositionBasedDynamics.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0c9400a706846ce44a14b778ac5b5290 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/CPUClothSimulation/Scripts/SpatialHashing.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | using DataStruct; 6 | using Utilities; 7 | 8 | namespace SpatialHashing 9 | { 10 | public class SH 11 | { 12 | int p0 = 73856093; 13 | int p1 = 19349663; 14 | int p2 = 83492791; 15 | 16 | int gridSize; 17 | float invGridSize; 18 | int tableSize; 19 | 20 | public SH(int _gridSize, float _invGridSize, int _tableSize) 21 | { 22 | gridSize = _gridSize; 23 | invGridSize = _invGridSize; 24 | tableSize = _tableSize; 25 | } 26 | 27 | public int Hash(Vector3 coordinate) 28 | { 29 | int x = Mathf.RoundToInt(coordinate.x * invGridSize); 30 | int y = Mathf.RoundToInt(coordinate.y * invGridSize); 31 | int z = Mathf.RoundToInt(coordinate.z * invGridSize); 32 | 33 | return (x*p0 ^ y*p1 ^ z*p2) % tableSize; 34 | } 35 | 36 | public List TriangleBoundingBoxHashes(Vector3 p0, Vector3 p1, Vector3 p2) 37 | { 38 | int minX = Mathf.RoundToInt(Mathf.Min(new float[3]{p0.x, p1.x, p2.x})); 39 | int minY = Mathf.RoundToInt(Mathf.Min(new float[3]{p0.y, p1.y, p2.y})); 40 | int minZ = Mathf.RoundToInt(Mathf.Min(new float[3]{p0.z, p1.z, p2.z})); 41 | 42 | int maxX = Mathf.RoundToInt(Mathf.Max(new float[3]{p0.x, p1.x, p2.x})); 43 | int maxY = Mathf.RoundToInt(Mathf.Max(new float[3]{p0.y, p1.y, p2.y})); 44 | int maxZ = Mathf.RoundToInt(Mathf.Max(new float[3]{p0.z, p1.z, p2.z})); 45 | 46 | List hashes = new List(); 47 | for (int x=minX; x <= maxX; x+=gridSize) 48 | { 49 | for (int y=minY; y <= maxY; y+=gridSize) 50 | { 51 | for (int z=minZ; z <= maxZ; z+=gridSize) 52 | { 53 | hashes.Add(Mathf.Abs(Hash(new Vector3(x, y, z)))); 54 | } 55 | } 56 | } 57 | 58 | return hashes; 59 | } 60 | 61 | // public static int[] CollisionSearchTriangle(Vector3 p0, Vector3 p1, Vector3 p2, ) 62 | } 63 | } -------------------------------------------------------------------------------- /Assets/CPUClothSimulation/Scripts/SpatialHashing.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b2dabec857c90ae4bae3952fb79ca0c3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/CPUClothSimulation/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5e9187acee766964192dab6f6f5a6e20 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc209c873ef9ecf4bbdf6ec3910b71d7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9bba830b66f200d4381a3c4028022e24 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Editor/GPUClothSimulationEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b6a596887782a0a448b2fe2fd1f86b98 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Editor/GPUClothSimulationLegacyEditor.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using Helper; 4 | 5 | [CustomEditor(typeof(GPUClothSimulationLegacy))] 6 | class GPUClothSimulationLegacyEditor : Editor { 7 | 8 | GPUClothSimulationLegacy clothSim; 9 | 10 | void OnEnable() 11 | { 12 | clothSim = (GPUClothSimulationLegacy)target; 13 | } 14 | 15 | public override void OnInspectorGUI() 16 | { 17 | clothSim.mesh = clothSim.GetComponent().sharedMesh; 18 | clothSim.particleInvertMass = 1 / clothSim.particleMass; 19 | clothSim.restAngle = Mathf.Acos(clothSim.bendiness); 20 | 21 | _Vertex.InitRawMesh(clothSim.mesh, 22 | out clothSim.totalVerts, 23 | out clothSim.totalTrianglePoints); 24 | 25 | 26 | DrawDefaultInspector(); 27 | GUILayout.Space(20); 28 | 29 | if (clothSim.mesh == null) GUILayout.Label("Please add a SkinnedMeshRenderer component first"); 30 | else 31 | { 32 | GUILayout.BeginVertical("box"); 33 | GUILayout.BeginHorizontal(); 34 | GUI.backgroundColor = Color.cyan; 35 | if (GUILayout.Button("Sort Mesh Data")) 36 | { 37 | clothSim.SortMeshData(); 38 | } 39 | GUI.backgroundColor = Color.yellow; 40 | if (GUILayout.Button("Reload Mesh Data")) 41 | { 42 | clothSim.ReloadMeshData(); 43 | } 44 | GUILayout.EndHorizontal(); 45 | GUI.backgroundColor = Color.green; 46 | if (GUILayout.Button("Save Mesh Data")) 47 | { 48 | clothSim.SaveMeshData(); 49 | } 50 | GUILayout.EndVertical(); 51 | } 52 | 53 | } 54 | 55 | } -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Editor/GPUClothSimulationLegacyEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f902d66c21946214fb562d956bf96d90 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6fa27371b71ca448a51592bbfe8b53d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Scripts/GPUClothSimulation.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5c3af066673342a49b1721923e840617 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Scripts/GPUClothSimulationLegacy.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2dea6c8f08b4af84f9643cc746d7d0a0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: 7 | - mesh: {instanceID: 0} 8 | - frontMat: {fileID: 2100000, guid: 2e4675b0919018f49951c7bd638e9ee3, type: 2} 9 | - backMat: {fileID: 2100000, guid: 41dd5f661a1df694abdb1236dd89dabc, type: 2} 10 | - PBDClothSolver: {fileID: 7200000, guid: a625bdce07e4dcc42b23c2d549862493, type: 3} 11 | - skinnedMeshCollider: {instanceID: 0} 12 | executionOrder: 0 13 | icon: {instanceID: 0} 14 | userData: 15 | assetBundleName: 16 | assetBundleVariant: 17 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 723c19925f31bb5409f42b3ca26d2683 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/Cloth.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/Cloth" 2 | { 3 | Properties 4 | { 5 | _Color ("Color", Color) = (1,1,1,1) 6 | _MainTex ("Albedo (RGB)", 2D) = "white" {} 7 | _Glossiness ("Smoothness", Range(0,1)) = 0.5 8 | _Metallic ("Metallic", Range(0,1)) = 0.0 9 | _firstVertexIdx ("First Vertex ID", int) = 0 10 | } 11 | SubShader 12 | { 13 | Tags { "RenderType"="Opaque" } 14 | LOD 200 15 | 16 | CGPROGRAM 17 | #pragma surface surf Standard fullforwardshadows vertex:vert addshadow 18 | #pragma target 5.0 19 | 20 | #include "./DataStruct.cginc" 21 | 22 | // #ifdef SHADER_API_D3D11 23 | // StructuredBuffer pos; 24 | // #endif 25 | 26 | sampler2D _MainTex; 27 | half _Glossiness; 28 | half _Metallic; 29 | fixed4 _Color; 30 | int _firstVertexIdx; 31 | 32 | struct Input 33 | { 34 | float2 uv_MainTex; 35 | }; 36 | 37 | struct appdata 38 | { 39 | float4 vertex : POSITION; 40 | float3 normal : NORMAL; 41 | float4 texcoord : TEXCOORD0; 42 | float4 texcoord1 : TEXCOORD1; 43 | float4 texcoord2 : TEXCOORD2; 44 | 45 | uint idx : SV_VertexID; 46 | }; 47 | 48 | UNITY_INSTANCING_BUFFER_START(Props) 49 | // put more per-instance properties here 50 | UNITY_INSTANCING_BUFFER_END(Props) 51 | 52 | void vert(inout appdata v, out Input o) 53 | { 54 | UNITY_INITIALIZE_OUTPUT(Input, o); 55 | #ifdef SHADER_API_D3D11 56 | v.vertex.xyz = pos[v.idx + _firstVertexIdx]; 57 | #endif 58 | } 59 | 60 | void surf (Input IN, inout SurfaceOutputStandard o) 61 | { 62 | // Albedo comes from a texture tinted by color 63 | fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; 64 | o.Albedo = c.rgb; 65 | // Metallic and smoothness come from slider variables 66 | o.Metallic = _Metallic; 67 | o.Smoothness = _Glossiness; 68 | o.Alpha = c.a; 69 | } 70 | ENDCG 71 | } 72 | FallBack "Diffuse" 73 | } 74 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/Cloth.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0aa72f4ec1e5ff54d8106db5a439fae0 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/ClothSolver.compute: -------------------------------------------------------------------------------- 1 | #include "./PositionBasedDynamics.cginc" 2 | 3 | #define THREADS [numthreads(512, 1, 1)] 4 | 5 | #pragma kernel SolveExternalForce 6 | THREADS 7 | void SolveExternalForce(uint3 id: SV_DispatchThreadID) 8 | { 9 | uint idx = id.x; 10 | if (idx > totalVerts) return; 11 | 12 | float3 p = predictedPos[idx]; 13 | float3 v = velocity[idx]; 14 | float w = invMass[idx]; 15 | float m = mass[idx]; 16 | 17 | float3 force = gravity * m; 18 | 19 | float3 corr; 20 | if (ExternalForce( 21 | deltaT, 22 | p, v, w, 23 | force, 24 | damping, 25 | corr)) 26 | { 27 | predictedPos[idx] += corr; 28 | } 29 | } 30 | 31 | #pragma kernel SolveDistanceConstraint 32 | THREADS 33 | void SolveDistanceConstraint(uint3 id: SV_DispatchThreadID) 34 | { 35 | uint idx = id.x; 36 | if (idx*3 + 2 > totalTriangles) return; 37 | 38 | int t0 = tri[idx*3]; 39 | int t1 = tri[idx*3 + 1]; 40 | int t2 = tri[idx*3 + 2]; 41 | } 42 | 43 | 44 | #pragma kernel SolveWindForce 45 | THREADS 46 | void SolveWindForce(uint3 id: SV_DispatchThreadID) 47 | { 48 | uint idx = id.x; 49 | if (idx*2 + 1 > totalEdges) return; 50 | 51 | int e0 = edge[idx*2]; 52 | int e1 = edge[idx*2 + 1]; 53 | float r = restLength[idx]; 54 | 55 | float3 p0 = predictedPos[e0]; 56 | float3 p1 = predictedPos[e1]; 57 | float w0 = invMass[e0]; 58 | float w1 = invMass[e1]; 59 | 60 | float3 corr0; 61 | float3 corr1; 62 | if (DistanceConstraint( 63 | p0, w0, 64 | p1, w1, 65 | r, 66 | stretchStiffness, 67 | compressionStiffness, 68 | corr0, corr1)) 69 | { 70 | // particles[e0].predictedPos += corr0; 71 | // particles[e1].predictedPos += corr1; 72 | AtomicAddDelta(e0, corr0.x, 0); 73 | AtomicAddDelta(e0, corr0.y, 1); 74 | AtomicAddDelta(e0, corr0.z, 2); 75 | 76 | AtomicAddDelta(e1, corr1.x, 0); 77 | AtomicAddDelta(e1, corr1.y, 1); 78 | AtomicAddDelta(e1, corr1.z, 2); 79 | 80 | InterlockedAdd(deltaCount[e0], 1); 81 | InterlockedAdd(deltaCount[e1], 1); 82 | } 83 | } 84 | 85 | #pragma kernel SolveDihedralConstraint 86 | THREADS 87 | void SolveDihedralConstraint(uint3 id: SV_DispatchThreadID) 88 | { 89 | uint idx = id.x; 90 | if (idx*4 + 3 > totalNeighborTriangles) return; 91 | 92 | int t0 = neighborTriangle[idx*4]; 93 | int t1 = neighborTriangle[idx*4 + 1]; 94 | int t2 = neighborTriangle[idx*4 + 2]; 95 | int t3 = neighborTriangle[idx*4 + 3]; 96 | float r = restAngle[idx]; 97 | 98 | float3 p0 = predictedPos[t0]; 99 | float3 p1 = predictedPos[t1]; 100 | float3 p2 = predictedPos[t2]; 101 | float3 p3 = predictedPos[t3]; 102 | float w0 = invMass[t0]; 103 | float w1 = invMass[t1]; 104 | float w2 = invMass[t2]; 105 | float w3 = invMass[t3]; 106 | 107 | float3 corr0; 108 | float3 corr1; 109 | float3 corr2; 110 | float3 corr3; 111 | if (DihedralConstraint( 112 | p0, w0, 113 | p1, w1, 114 | p2, w2, 115 | p3, w3, 116 | r, 117 | bendingStiffness, 118 | corr0, corr1, corr2, corr3)) 119 | { 120 | AtomicAddDelta(t0, corr0.x, 0); 121 | AtomicAddDelta(t0, corr0.y, 1); 122 | AtomicAddDelta(t0, corr0.z, 2); 123 | 124 | AtomicAddDelta(t1, corr1.x, 0); 125 | AtomicAddDelta(t1, corr1.y, 1); 126 | AtomicAddDelta(t1, corr1.z, 2); 127 | 128 | AtomicAddDelta(t2, corr2.x, 0); 129 | AtomicAddDelta(t2, corr2.y, 1); 130 | AtomicAddDelta(t2, corr2.z, 2); 131 | 132 | AtomicAddDelta(t3, corr3.x, 0); 133 | AtomicAddDelta(t3, corr3.y, 1); 134 | AtomicAddDelta(t3, corr3.z, 2); 135 | 136 | InterlockedAdd(deltaCount[t0], 1); 137 | InterlockedAdd(deltaCount[t1], 1); 138 | InterlockedAdd(deltaCount[t2], 1); 139 | InterlockedAdd(deltaCount[t3], 1); 140 | } 141 | } 142 | 143 | #pragma kernel AverageConstraintDeltas 144 | THREADS 145 | void AverageConstraintDeltas(uint3 id : SV_DispatchThreadID) 146 | { 147 | uint idx = id.x; 148 | 149 | if (deltaCount[idx] > EPSILON) 150 | { 151 | float3 deltaPos; 152 | deltaPos.x = asfloat(deltaPosUint[idx].x); 153 | deltaPos.y = asfloat(deltaPosUint[idx].y); 154 | deltaPos.z = asfloat(deltaPosUint[idx].z); 155 | 156 | deltaPos /= deltaCount[idx]; 157 | predictedPos[idx] += deltaPos * 1.5; 158 | } 159 | 160 | // reset delta buffers to zero 161 | deltaPosUint[idx] = uint3(0, 0, 0); 162 | deltaCount[idx] = 0; 163 | } -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/ClothSolver.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5a32586e29d51c24fa4e9eba3ae55066 3 | ComputeShaderImporter: 4 | externalObjects: {} 5 | currentAPIMask: 4 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/DataStruct.cginc: -------------------------------------------------------------------------------- 1 | // We use SoA instead of AoS 2 | #ifdef SHADER_API_D3D11 3 | RWStructuredBuffer pos; 4 | RWStructuredBuffer predictedPos; 5 | RWStructuredBuffer velocity; 6 | RWStructuredBuffer mass; 7 | RWStructuredBuffer invMass; 8 | 9 | StructuredBuffer edge; 10 | StructuredBuffer restLength; 11 | 12 | StructuredBuffer neighborTriangle; 13 | StructuredBuffer restAngle; 14 | 15 | StructuredBuffer tri; 16 | 17 | RWStructuredBuffer deltaPosUint; 18 | RWStructuredBuffer deltaCount; 19 | #endif 20 | 21 | float deltaT; 22 | static const uint MAX_VERTICES_PER_BIN = 32; 23 | static const float EPSILON = 0.00001; 24 | 25 | uint totalVerts; 26 | uint totalEdges; 27 | uint totalTriangles; 28 | uint totalNeighborTriangles; 29 | 30 | float damping; 31 | float3 gravity; 32 | float stretchStiffness; 33 | float compressionStiffness; 34 | float bendingStiffness; 35 | float thickness; -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/DataStruct.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 38a1d4e185497e84fb163d22718e193c 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/PBDCloth.cginc: -------------------------------------------------------------------------------- 1 | struct Triangleids 2 | { 3 | int A; 4 | int B; 5 | int C; 6 | 7 | float AB; 8 | float BC; 9 | float CA; 10 | }; 11 | 12 | struct NeighborTriangleids 13 | { 14 | int A; 15 | int B; 16 | int C; 17 | int D; 18 | }; 19 | 20 | #define Threads_8 [numthreads(8, 1, 1)] 21 | 22 | // uniform data 23 | float deltaT; 24 | float time; 25 | 26 | half3 gravity; 27 | half stiffness, bendingStiffness; 28 | float restAngle; 29 | half clothThickness; 30 | half meshThickness; 31 | 32 | float particleMass, particleInvertMass; 33 | 34 | half3 windVelocity; 35 | half windSpeed, turbulence; 36 | half drag, lift; 37 | 38 | uint totalSimulationVerts, totalSimulationTriangles, totalMeshVerts, totalSphereColliders; 39 | 40 | // buffers 41 | RWStructuredBuffer positions, projectedPositions, velocities; 42 | 43 | RWStructuredBuffer deltaPos; 44 | RWStructuredBuffer deltaPosAsInt; 45 | RWStructuredBuffer deltaCount; 46 | 47 | StructuredBuffer boneWeight; 48 | 49 | StructuredBuffer sortedTriangles; 50 | StructuredBuffer neighborTriangles; 51 | 52 | RWStructuredBuffer skinnedMeshPositions; 53 | StructuredBuffer projectedSkinnedMeshPositions; 54 | StructuredBuffer skinnedMeshNormals; 55 | 56 | RWStructuredBuffer sphereColliderPositions; 57 | StructuredBuffer projectedSphereColliderPositions; 58 | StructuredBuffer sphereColliderRadius; -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/PBDCloth.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5e612e1c062d4ab498fcb889e274f426 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/PBDClothSolver.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a625bdce07e4dcc42b23c2d549862493 3 | ComputeShaderImporter: 4 | externalObjects: {} 5 | currentAPIMask: 4 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/PositionBasedDynamics.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 242a8441f20541746b9504bb1450a48d 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/Utilities.cginc: -------------------------------------------------------------------------------- 1 | #include "./DataStruct.cginc" 2 | 3 | void AtomicAddDelta(int indexIntoDeltaPos, float newDeltaVal, int axis) 4 | { 5 | uint i_val = asuint(newDeltaVal); 6 | uint tmp0 = 0; 7 | uint tmp1; 8 | 9 | [allow_uav_condition] 10 | while (true) 11 | { 12 | InterlockedCompareExchange(deltaPosUint[indexIntoDeltaPos][axis], tmp0, i_val, tmp1); 13 | 14 | if (tmp1 == tmp0) break; 15 | 16 | tmp0 = tmp1; 17 | i_val = asuint(newDeltaVal + asfloat(tmp1)); 18 | } 19 | 20 | return; 21 | } -------------------------------------------------------------------------------- /Assets/GPUClothSimulation/Shaders/Utilities.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80fdec1711cb90d48b7299b6a5181753 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/JsonDotNet.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27047d3fa45c42b40bdfc80369f46832 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 180768b591f25f047b39b1336cb10a21 3 | folderAsset: yes 4 | timeCreated: 1466788344 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/AOT.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a26186fba3287841b94ba517cabac08 3 | folderAsset: yes 4 | timeCreated: 1466788345 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35fc4fbe382d61f4aa5dcedbd3333295 3 | timeCreated: 1466788355 4 | licenseType: Store 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2305bd463a5642142b5d43c2ff9eb2db 3 | timeCreated: 1466788352 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 1 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | platformData: 11 | Android: 12 | enabled: 1 13 | settings: 14 | CPU: AnyCPU 15 | Any: 16 | enabled: 0 17 | settings: {} 18 | Editor: 19 | enabled: 0 20 | settings: 21 | CPU: AnyCPU 22 | DefaultValueInitialized: true 23 | OS: AnyOS 24 | Linux: 25 | enabled: 0 26 | settings: 27 | CPU: x86 28 | Linux64: 29 | enabled: 0 30 | settings: 31 | CPU: x86_64 32 | OSXIntel: 33 | enabled: 0 34 | settings: 35 | CPU: AnyCPU 36 | OSXIntel64: 37 | enabled: 0 38 | settings: 39 | CPU: AnyCPU 40 | SamsungTV: 41 | enabled: 1 42 | settings: 43 | STV_MODEL: STANDARD_13 44 | Tizen: 45 | enabled: 1 46 | settings: {} 47 | WebGL: 48 | enabled: 1 49 | settings: {} 50 | Win: 51 | enabled: 0 52 | settings: 53 | CPU: AnyCPU 54 | Win64: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | WindowsStoreApps: 59 | enabled: 1 60 | settings: 61 | CPU: AnyCPU 62 | DontProcess: False 63 | PlaceholderPath: Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll 64 | SDK: AnySDK 65 | ScriptingBackend: Il2Cpp 66 | iOS: 67 | enabled: 1 68 | settings: 69 | CompileFlags: 70 | FrameworkDependencies: 71 | tvOS: 72 | enabled: 1 73 | settings: {} 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/Standalone.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fd166d91ec7c8b94db0f7d96da348698 3 | folderAsset: yes 4 | timeCreated: 1466788344 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5725b56982962544c8d039c81f7e08f9 3 | timeCreated: 1466788355 4 | licenseType: Store 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db90326a55fac0c419057d6e1a31b448 3 | timeCreated: 1466788349 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 1 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | platformData: 11 | Android: 12 | enabled: 0 13 | settings: 14 | CPU: AnyCPU 15 | Any: 16 | enabled: 0 17 | settings: {} 18 | Editor: 19 | enabled: 1 20 | settings: 21 | CPU: AnyCPU 22 | DefaultValueInitialized: true 23 | OS: AnyOS 24 | Linux: 25 | enabled: 1 26 | settings: 27 | CPU: x86 28 | Linux64: 29 | enabled: 1 30 | settings: 31 | CPU: x86_64 32 | LinuxUniversal: 33 | enabled: 1 34 | settings: 35 | CPU: AnyCPU 36 | OSXIntel: 37 | enabled: 1 38 | settings: 39 | CPU: AnyCPU 40 | OSXIntel64: 41 | enabled: 1 42 | settings: 43 | CPU: AnyCPU 44 | OSXUniversal: 45 | enabled: 1 46 | settings: 47 | CPU: AnyCPU 48 | SamsungTV: 49 | enabled: 0 50 | settings: 51 | STV_MODEL: STANDARD_13 52 | Win: 53 | enabled: 1 54 | settings: 55 | CPU: AnyCPU 56 | Win64: 57 | enabled: 1 58 | settings: 59 | CPU: AnyCPU 60 | WindowsStoreApps: 61 | enabled: 0 62 | settings: 63 | CPU: AnyCPU 64 | DontProcess: False 65 | PlaceholderPath: 66 | SDK: AnySDK 67 | ScriptingBackend: Il2Cpp 68 | iOS: 69 | enabled: 0 70 | settings: 71 | CompileFlags: 72 | FrameworkDependencies: 73 | userData: 74 | assetBundleName: 75 | assetBundleVariant: 76 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/Windows.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0b52cf2dccc68254fbba9f3a44f55b3d 3 | folderAsset: yes 4 | timeCreated: 1466788345 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d86fe8a91cd38ee4780ea91ae2b40d69 3 | timeCreated: 1466788355 4 | licenseType: Store 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /Assets/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fb5f321735207f47816f16dd03608ab 3 | timeCreated: 1466788355 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 1 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | platformData: 11 | Android: 12 | enabled: 0 13 | settings: 14 | CPU: AnyCPU 15 | Any: 16 | enabled: 0 17 | settings: {} 18 | Editor: 19 | enabled: 0 20 | settings: 21 | CPU: AnyCPU 22 | DefaultValueInitialized: true 23 | OS: AnyOS 24 | Linux: 25 | enabled: 0 26 | settings: 27 | CPU: x86 28 | Linux64: 29 | enabled: 0 30 | settings: 31 | CPU: x86_64 32 | OSXIntel: 33 | enabled: 0 34 | settings: 35 | CPU: AnyCPU 36 | OSXIntel64: 37 | enabled: 0 38 | settings: 39 | CPU: AnyCPU 40 | SamsungTV: 41 | enabled: 0 42 | settings: 43 | STV_MODEL: STANDARD_13 44 | Win: 45 | enabled: 0 46 | settings: 47 | CPU: AnyCPU 48 | Win64: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | WindowsStoreApps: 53 | enabled: 1 54 | settings: 55 | CPU: AnyCPU 56 | DontProcess: False 57 | PlaceholderPath: Assets/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll 58 | SDK: AnySDK 59 | ScriptingBackend: DotNet 60 | iOS: 61 | enabled: 0 62 | settings: 63 | CompileFlags: 64 | FrameworkDependencies: 65 | userData: 66 | assetBundleName: 67 | assetBundleVariant: 68 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e3185615b2690b489da1add95a54328 3 | folderAsset: yes 4 | timeCreated: 1466010535 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf -------------------------------------------------------------------------------- /Assets/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a9b598091b243b442ba4b4f7a389aec7 3 | timeCreated: 1466788421 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/JsonDotNet201Source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/JsonDotNet/JsonDotNet201Source.zip -------------------------------------------------------------------------------- /Assets/JsonDotNet/JsonDotNet201Source.zip.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35ab7790ff748b6408d67bd58e94de6c 3 | timeCreated: 1466790933 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/link.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Assets/JsonDotNet/link.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 434d0ec6c6e82da46b46940e5d57caec 3 | TextScriptImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87da3a890aad58c4f9b9964644bdfd7d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/CPUCloth.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3567825c68a10b0429500f6e084242eb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/CPUCloth/ClothBackCPU.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: ClothBackCPU 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Assets/Materials/CPUCloth/ClothBackCPU.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 41dd5f661a1df694abdb1236dd89dabc 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/CPUCloth/ClothFrontCPU.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: ClothFrontCPU 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0, g: 1, b: 0.681, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Assets/Materials/CPUCloth/ClothFrontCPU.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e4675b0919018f49951c7bd638e9ee3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Default.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Default 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Assets/Materials/Default.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 927fb0430aa9fca4fb60c95ee7440c47 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/GPUCloth.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f2219287968e6bf48903fa903312c807 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/GPUCloth/ClothBackGPU.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: ClothBackGPU 11 | m_Shader: {fileID: 4800000, guid: 0aa72f4ec1e5ff54d8106db5a439fae0, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _MainTex: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | m_Floats: 27 | - _Glossiness: 0.5 28 | - _Metallic: 0 29 | - _firstVertexIdx: 0 30 | m_Colors: 31 | - _Color: {r: 1, g: 1, b: 0, a: 1} 32 | m_BuildTextureStacks: [] 33 | -------------------------------------------------------------------------------- /Assets/Materials/GPUCloth/ClothBackGPU.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 73f8ab611aa439143a88eeaf3adde9e6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/GPUCloth/ClothFrontGPU.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: ClothFrontGPU 11 | m_Shader: {fileID: 4800000, guid: 0aa72f4ec1e5ff54d8106db5a439fae0, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _MainTex: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | m_Floats: 27 | - _Glossiness: 0.5 28 | - _Metallic: 0 29 | - _firstVertexIdx: 0 30 | m_Colors: 31 | - _Color: {r: 0, g: 1, b: 0.68235296, a: 1} 32 | m_BuildTextureStacks: [] 33 | -------------------------------------------------------------------------------- /Assets/Materials/GPUCloth/ClothFrontGPU.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: da2c2d06e0fbed84e9ca4a6a6bfb914f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Invisible.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Invisible 11 | m_Shader: {fileID: 4800000, guid: 0324d6a6299ae2745933f91bb29b9732, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _MainTex: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | m_Floats: 27 | - _Invisible: 1 28 | m_Colors: [] 29 | m_BuildTextureStacks: [] 30 | -------------------------------------------------------------------------------- /Assets/Materials/Invisible.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f60e1fadb0ff4c9439b26027c8084389 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Invisible.shader: -------------------------------------------------------------------------------- 1 | Shader "Unlit/Invisible" 2 | { 3 | Properties 4 | { 5 | _Invisible("Invisible", Range(0, 1)) = 0 6 | } 7 | SubShader 8 | { 9 | Tags { "RenderType"="Opaque" } 10 | LOD 100 11 | 12 | Pass 13 | { 14 | CGPROGRAM 15 | #pragma vertex vert 16 | #pragma fragment frag 17 | 18 | struct appdata 19 | { 20 | float4 vertex : POSITION; 21 | float2 uv : TEXCOORD0; 22 | }; 23 | 24 | struct v2f 25 | { 26 | float2 uv : TEXCOORD0; 27 | float4 vertex : SV_POSITION; 28 | }; 29 | 30 | fixed _Invisible; 31 | 32 | v2f vert (appdata v) 33 | { 34 | v2f o; 35 | UNITY_INITIALIZE_OUTPUT(appdata, o); 36 | return o; 37 | }; 38 | 39 | fixed4 frag (v2f i) : SV_Target 40 | { 41 | if (_Invisible == 1) 42 | { 43 | return float4(0, 0, 0, 0); 44 | } else 45 | { 46 | return float4(0.18, 0.19, 0.19, 1); 47 | } 48 | } 49 | ENDCG 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Assets/Materials/Invisible.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0324d6a6299ae2745933f91bb29b9732 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/Nomal.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Nomal 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.2 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.4716981, g: 0.4716981, b: 0.4716981, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Assets/Materials/Nomal.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0d3c04df2dab75b428cdef978bbd7008 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 720712be6e31c444f88f57bb85bf5fa5 3 | folderAsset: yes 4 | timeCreated: 1504268238 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18e096a98c2704c40a818dd1214cd179 3 | folderAsset: yes 4 | timeCreated: 1503666358 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cad92998c5182496e8b989b406d9f156 3 | folderAsset: yes 4 | timeCreated: 1503666365 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/AsyncBridge.Net35.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/AsyncBridge.Net35.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/AsyncBridge.Net35.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d516f2a1bec6a9645a084ef8c9237132 3 | timeCreated: 1491391262 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | data: 26 | first: 27 | Windows Store Apps: WindowsStoreApps 28 | second: 29 | enabled: 0 30 | settings: 31 | CPU: AnyCPU 32 | userData: 33 | assetBundleName: 34 | assetBundleVariant: 35 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/ExtensionLoader.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | using System.IO; 4 | using System; 5 | 6 | namespace GitHub.Unity 7 | { 8 | [InitializeOnLoad] 9 | public class ExtensionLoader : ScriptableSingleton 10 | { 11 | [SerializeField] private bool initialized = true; 12 | 13 | public bool Initialized 14 | { 15 | get 16 | { 17 | return initialized; 18 | } 19 | set 20 | { 21 | initialized = value; 22 | Save(true); 23 | } 24 | } 25 | 26 | private static bool inSourceMode = false; 27 | private const string sourceModePath = "Assets/Editor/build/"; 28 | private const string realPath = "Assets/Plugins/GitHub/Editor/"; 29 | 30 | private static string[] assemblies20 = { "System.Threading.dll", "AsyncBridge.Net35.dll", "ReadOnlyCollectionsInterfaces.dll", "GitHub.Api.dll", "GitHub.Unity.dll" }; 31 | private static string[] assemblies45 = { "GitHub.Api.45.dll", "GitHub.Unity.45.dll" }; 32 | 33 | private const string GITHUB_UNITY_DISABLE = "GITHUB_UNITY_DISABLE"; 34 | private static bool IsDisabled { get { return Environment.GetEnvironmentVariable(GITHUB_UNITY_DISABLE) == "1"; } } 35 | 36 | static ExtensionLoader() 37 | { 38 | if (IsDisabled) 39 | { 40 | return; 41 | } 42 | EditorApplication.update += Initialize; 43 | } 44 | 45 | private static void Initialize() 46 | { 47 | EditorApplication.update -= Initialize; 48 | 49 | // we're always doing this right now because if the plugin gets updated all the meta files will be disabled and we need to re-enable them 50 | // we should probably detect if our assets change and re-run this instead of doing it every time 51 | //if (!ExtensionLoader.instance.Initialized) 52 | { 53 | var scriptPath = Path.Combine(Application.dataPath, "Editor" + Path.DirectorySeparatorChar + "GitHub.Unity" + Path.DirectorySeparatorChar + "EntryPoint.cs"); 54 | inSourceMode = File.Exists(scriptPath); 55 | ToggleAssemblies(); 56 | //ExtensionLoader.instance.Initialized = true; 57 | AssetDatabase.SaveAssets(); 58 | } 59 | 60 | } 61 | 62 | private static void ToggleAssemblies() 63 | { 64 | var path = inSourceMode ? sourceModePath : realPath; 65 | #if NET_4_6 66 | ToggleAssemblies(path, assemblies20, false); 67 | ToggleAssemblies(path, assemblies45, true); 68 | #else 69 | ToggleAssemblies(path, assemblies45, false); 70 | ToggleAssemblies(path, assemblies20, true); 71 | #endif 72 | } 73 | 74 | private static void ToggleAssemblies(string path, string[] assemblies, bool enable) 75 | { 76 | foreach (var file in assemblies) 77 | { 78 | var filepath = path + file; 79 | PluginImporter importer = AssetImporter.GetAtPath(filepath) as PluginImporter; 80 | if (importer == null) 81 | { 82 | Debug.LogFormat("GitHub for Unity: Could not find importer for {0}. Some functionality may fail.", filepath); 83 | continue; 84 | } 85 | if (importer.GetCompatibleWithEditor() != enable) 86 | { 87 | importer.SetCompatibleWithEditor(enable); 88 | importer.SaveAndReimport(); 89 | } 90 | } 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/ExtensionLoader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dae2ecee8a704dd59797e26554ff8606 3 | timeCreated: 1534504082 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 1 23 | settings: 24 | DefaultValueInitialized: true 25 | data: 26 | first: 27 | Windows Store Apps: WindowsStoreApps 28 | second: 29 | enabled: 0 30 | settings: 31 | CPU: AnyCPU 32 | userData: 33 | assetBundleName: 34 | assetBundleVariant: 35 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Api.45.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/GitHub.Api.45.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Api.45.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c743ae24ee231884887054d20ccdd0ab 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 1 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Windows Store Apps: WindowsStoreApps 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: AnyCPU 31 | userData: 32 | assetBundleName: 33 | assetBundleVariant: 34 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/GitHub.Api.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Api.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c743ae24ee231884887054d20ccdd0ae 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Windows Store Apps: WindowsStoreApps 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: AnyCPU 31 | userData: 32 | assetBundleName: 33 | assetBundleVariant: 34 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Logging.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/GitHub.Logging.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Logging.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 15ca2bebf173f2d4484686a03a45b56d 3 | timeCreated: 1491391259 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 1 23 | settings: 24 | DefaultValueInitialized: true 25 | data: 26 | first: 27 | Windows Store Apps: WindowsStoreApps 28 | second: 29 | enabled: 0 30 | settings: 31 | CPU: AnyCPU 32 | userData: 33 | assetBundleName: 34 | assetBundleVariant: 35 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Unity.45.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/GitHub.Unity.45.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Unity.45.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68c7e4565cde54155bb78d8e935f1ddb 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 1 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Windows Store Apps: WindowsStoreApps 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: AnyCPU 31 | userData: 32 | assetBundleName: 33 | assetBundleVariant: 34 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Unity.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/GitHub.Unity.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.Unity.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68c7e4565cde54155bb78d8e935f1dd4 3 | timeCreated: 1527097377 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | data: 26 | first: 27 | Windows Store Apps: WindowsStoreApps 28 | second: 29 | enabled: 0 30 | settings: 31 | CPU: AnyCPU 32 | userData: 33 | assetBundleName: 34 | assetBundleVariant: 35 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.UnityShim.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/GitHub.UnityShim.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/GitHub.UnityShim.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 863e1b9976c4e46d29bf83928b3a8ab2 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 1 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Windows Store Apps: WindowsStoreApps 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: AnyCPU 31 | userData: 32 | assetBundleName: 33 | assetBundleVariant: 34 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/Mono.Posix.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/Mono.Posix.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/Mono.Posix.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ddb8611e748af425a82a497ac5a98c0c 3 | timeCreated: 1503427590 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | data: 26 | first: 27 | Windows Store Apps: WindowsStoreApps 28 | second: 29 | enabled: 0 30 | settings: 31 | CPU: AnyCPU 32 | userData: 33 | assetBundleName: 34 | assetBundleVariant: 35 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/QuickGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/QuickGuide.pdf -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/QuickGuide.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d601ecb6855bb432bae2aa49d8fd82e8 3 | timeCreated: 1526676893 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/ReadOnlyCollectionsInterfaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/ReadOnlyCollectionsInterfaces.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/ReadOnlyCollectionsInterfaces.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 48c22d5d7479fcb49ab3be0cdd2ccec0 3 | timeCreated: 1491391260 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | data: 26 | first: 27 | Windows Store Apps: WindowsStoreApps 28 | second: 29 | enabled: 0 30 | settings: 31 | CPU: AnyCPU 32 | userData: 33 | assetBundleName: 34 | assetBundleVariant: 35 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/System.Threading.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/System.Threading.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/System.Threading.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 790749ba7e4b18141953e39cb13f1b79 3 | timeCreated: 1491392717 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | data: 26 | first: 27 | Windows Store Apps: WindowsStoreApps 28 | second: 29 | enabled: 0 30 | settings: 31 | CPU: AnyCPU 32 | userData: 33 | assetBundleName: 34 | assetBundleVariant: 35 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/UnityAPIWrapper.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | using System.IO; 4 | using System; 5 | 6 | namespace GitHub.Unity 7 | { 8 | [InitializeOnLoad] 9 | public class UnityAPIWrapper : ScriptableSingleton 10 | { 11 | static UnityAPIWrapper() 12 | { 13 | #if UNITY_2018_2_OR_NEWER 14 | Editor.finishedDefaultHeaderGUI += editor => { 15 | UnityShim.Raise_Editor_finishedDefaultHeaderGUI(editor); 16 | }; 17 | #endif 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/UnityAPIWrapper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 555cd6f54c03341b1970d950df1a5ee5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/big-logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/big-logo@2x.png -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/big-logo@2x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f81094832d834c64d93b198cb16b6a3e 3 | timeCreated: 1491392813 4 | licenseType: Store 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 0 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 1 46 | spriteTessellationDetail: -1 47 | textureType: 0 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 2048 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | - buildTarget: Standalone 62 | maxTextureSize: 2048 63 | textureFormat: -1 64 | textureCompression: 1 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | - buildTarget: iPhone 70 | maxTextureSize: 2048 71 | textureFormat: -1 72 | textureCompression: 1 73 | compressionQuality: 50 74 | crunchedCompression: 0 75 | allowsAlphaSplitting: 0 76 | overridden: 0 77 | - buildTarget: tvOS 78 | maxTextureSize: 2048 79 | textureFormat: -1 80 | textureCompression: 1 81 | compressionQuality: 50 82 | crunchedCompression: 0 83 | allowsAlphaSplitting: 0 84 | overridden: 0 85 | - buildTarget: Android 86 | maxTextureSize: 2048 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | - buildTarget: WebGL 94 | maxTextureSize: 2048 95 | textureFormat: -1 96 | textureCompression: 1 97 | compressionQuality: 50 98 | crunchedCompression: 0 99 | allowsAlphaSplitting: 0 100 | overridden: 0 101 | spriteSheet: 102 | serializedVersion: 2 103 | sprites: [] 104 | outline: [] 105 | spritePackingTag: 106 | userData: 107 | assetBundleName: 108 | assetBundleVariant: 109 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/credits.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/credits.txt -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/credits.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0188ec438976e5849b40a2c1ce5f20f9 3 | timeCreated: 1491603973 4 | licenseType: Store 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/eula.txt: -------------------------------------------------------------------------------- 1 | END-USER LICENSE AGREEMENT 2 | 3 | This End-User License Agreement (EULA) is a legal agreement between you (either as an individual or on behalf of an entity) and GitHub, Inc. regarding your use of GitHub® for Unity, and associated documentation (the "Software"). 4 | 5 | IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS EULA, DO NOT INSTALL, USE OR COPY THE SOFTWARE. 6 | 7 | SUMMARY 8 | 9 | • You must agree to all of the terms of this EULA to use this Software. 10 | • If so, you may use the Software for free and for any lawful purpose. 11 | • This Software automatically communicates with GitHub servers 12 | for two reasons: (1) to send error reports; and 13 | (2) to send anonymized usage information. You can view 14 | sample data to see what information is sent, and you may opt out of 15 | sending the anonymized usage data. 16 | • This Software is provided "as-is" with no warranties, and you agree 17 | that GitHub is not liable for anything you do with it. 18 | • You really ought to just go ahead and read the whole EULA. 19 | It's not all that long. You should not only rely on this summary. 20 | 21 | THE AGREEMENT 22 | 23 | By downloading, installing, using, or copying the Software, you accept and agree to be bound by the terms of this EULA. If you do not agree to all of the terms of this EULA, you may not download, install, use or copy the Software. 24 | 25 | THE LICENSE 26 | 27 | This EULA entitles you to install as many copies of the Software as you want, and use the Software for any lawful purpose consistent with this EULA. Your license to use the Software is expressly conditioned upon your agreement to all of the terms of this EULA. This software is licensed, not sold. GitHub reserves all other rights not granted by this EULA. 28 | 29 | THE RESTRICTIONS 30 | 31 | 1. When using the Software you must use it in a manner that complies 32 | with the applicable laws in the jurisdiction(s) in which you use the 33 | Software. 34 | 35 | 2. You may not sell, resell, rent, lease or exchange the Software for 36 | anything of value. 37 | 38 | 3. You may redistribute the software, but it must include this EULA 39 | and you may not repackage or bundle the Software with any 40 | other software. 41 | 42 | 4. You may not remove or alter any proprietary notices or marks on 43 | the Software. 44 | 45 | PRIVACY NOTICES 46 | 47 | The Software automatically communicates with GitHub servers for two purposes: (1) sending error reports; and (2) sending anonymized usage data so we may improve the Software. If you would like to learn more about the specific information we send, please visit https://unity.github.com/samples.html. You may opt out of sending the anonymized usage data, but if you do not want the Software to send error reports, you must uninstall the Software. 48 | 49 | 1. ERROR REPORTS. In order to help us improve the Software, when the 50 | Software encounters certain errors, it will automatically send some 51 | information to GitHub about the error (as described at the URL 52 | above). 53 | This feature may not be disabled. If you do not want to send error 54 | reports to GitHub, you must uninstall the Software. 55 | 56 | 2. ANONYMIZED USAGE DATA. GitHub collects anonymized data about 57 | your usage of the Software to help us make it more awesome. 58 | Approximately once a day the Software sends such data 59 | (as described in more detail at the URL above) to GitHub's servers. 60 | If you do not want to send anonymized usage data to GitHub, 61 | you may opt out by changing your settings in the 62 | Settings dialog under the GitHub dialog. 63 | 64 | OPEN-SOURCE NOTICES 65 | 66 | Certain components of the Software may be subject to open-source software licenses ("Open-Source Components"), which means any software license approved as open-source licenses by the Open Source Initiative or any substantially similar licenses, including without limitation any license that, as a condition of distribution of the software licensed under such license, requires that the distributor make the software available in source code format. If you would like to see copies of the licenses applicable to the Open-Source Components, see CREDITS.txt. 67 | 68 | To the extent there is conflict between the license terms covering the Open-Source Components and this EULA, the terms of such licenses will apply in lieu of the terms of this EULA. To the extent the terms of the licenses applicable to Open-Source Components prohibit any of the restrictions in this Agreement with respect to such Open-Source Component, such restrictions will not apply to such Open-Source Component. To the extent the terms of the licenses applicable to Open-Source Components require Licensor to make an offer to provide source code in connection with the Product, such offer is hereby made, and you may exercise it by contacting support@github.com 69 | 70 | INTELLECTUAL PROPERTY NOTICES 71 | 72 | The Software and all worldwide copyrights, trade secrets, and other intellectual property rights therein are the exclusive property of GitHub. GitHub reserves all rights in and to the Software not expressly granted to you in this EULA. 73 | 74 | GitHub®, Atom™, their stylized versions and the Invertocat® are GitHub's Trademarks or registered Trademarks. You agree not to display or use these trademarks in any manner without GitHub's prior, written permission, except as allowed by GitHub's Logos and Usage Policy: https://github.com/logos. 75 | 76 | DISCLAIMERS AND LIMITATIONS ON LIABILITY 77 | 78 | THE SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND NO WARRANTY, EITHER EXPRESS OR IMPLIED, IS GIVEN. YOUR USE OF THE SOFTWARE IS AT YOUR SOLE RISK. GitHub does not warrant that (i) the Software will meet your specific requirements; (ii) the Software is fully compatible with any particular platform; (iii) your use of the Software will be uninterrupted, timely, secure, or error-free; (iv) the results that may be obtained from the use of the Software will be accurate or reliable; (v) the quality of any products, services, information, or other material purchased or obtained by you through the Software will meet your expectations; or (vi) any errors in the Software will be corrected. 79 | 80 | YOU EXPRESSLY UNDERSTAND AND AGREE THAT GITHUB SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF GITHUB HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES) RELATED TO THE SOFTWARE, including, for example: (i) the use or the inability to use the Software; (ii) the cost of procurement of substitute goods and services resulting from any goods, data, information or services purchased or obtained or messages received or transactions entered into through or from the Software; (iii) unauthorized access to or alteration of your transmissions or data; (iv) statements or conduct of any third-party on the Software; (v) or any other matter relating to the Software. 81 | 82 | GitHub reserves the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Software (or any part thereof) with or without notice. GitHub shall not be liable to you or to any third-party for any modification, price change, suspension or discontinuance of the Software. 83 | 84 | MISCELLANEA 85 | 86 | 1. If you configure the Software to work with one or more accounts 87 | on the GitHub.com website or with an instance of GitHub Enterprise, 88 | your use of the Software will also be governed by the GitHub.com 89 | website Terms of Service and/or the license agreement applicable to 90 | your instance of GitHub Enterprise. 91 | 92 | 2. The failure of GitHub to exercise or enforce any right or provision 93 | of this EULA shall not constitute a waiver of such right or provision. 94 | 95 | 3. This EULA constitutes the entire agreement between you and GitHub 96 | and governs your use of the Software, superseding any prior 97 | agreements between you and GitHub (including, but not limited to, 98 | any prior versions of the EULA). 99 | 100 | 4. You agree that this EULA and your use of the Software are governed 101 | under California law and any dispute related to the Software must 102 | be brought in a tribunal of competent jurisdiction located in or 103 | near San Francisco, California. 104 | 105 | 5. Please send any questions about this EULA to support@github.com. 106 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/eula.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 136dc24f151211d438acee17aff4e934 3 | timeCreated: 1491603974 4 | licenseType: Store 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/libsfw.bundle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/libsfw.bundle -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/libsfw.bundle.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 636d33ae594884e7d80b569f429d245d 3 | timeCreated: 1503667182 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Editor: 0 19 | Exclude Linux: 1 20 | Exclude Linux64: 1 21 | Exclude LinuxUniversal: 1 22 | Exclude OSXIntel: 1 23 | Exclude OSXIntel64: 1 24 | Exclude OSXUniversal: 1 25 | Exclude Win: 1 26 | Exclude Win64: 1 27 | data: 28 | first: 29 | '': Editor 30 | second: 31 | enabled: 0 32 | settings: 33 | CPU: AnyCPU 34 | OS: OSX 35 | data: 36 | first: 37 | Any: 38 | second: 39 | enabled: 0 40 | settings: {} 41 | data: 42 | first: 43 | Editor: Editor 44 | second: 45 | enabled: 1 46 | settings: 47 | DefaultValueInitialized: true 48 | data: 49 | first: 50 | Facebook: Win 51 | second: 52 | enabled: 0 53 | settings: 54 | CPU: AnyCPU 55 | data: 56 | first: 57 | Facebook: Win64 58 | second: 59 | enabled: 0 60 | settings: 61 | CPU: AnyCPU 62 | data: 63 | first: 64 | Standalone: Linux 65 | second: 66 | enabled: 0 67 | settings: 68 | CPU: x86 69 | data: 70 | first: 71 | Standalone: Linux64 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: x86_64 76 | data: 77 | first: 78 | Standalone: OSXIntel 79 | second: 80 | enabled: 0 81 | settings: 82 | CPU: AnyCPU 83 | data: 84 | first: 85 | Standalone: OSXIntel64 86 | second: 87 | enabled: 0 88 | settings: 89 | CPU: AnyCPU 90 | data: 91 | first: 92 | Standalone: Win 93 | second: 94 | enabled: 0 95 | settings: 96 | CPU: AnyCPU 97 | data: 98 | first: 99 | Standalone: Win64 100 | second: 101 | enabled: 0 102 | settings: 103 | CPU: AnyCPU 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/libsfw.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/libsfw.so -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/libsfw.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 21206c65839f84d0e9ae14bc1fdc68db 3 | timeCreated: 1503931807 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Editor: 0 19 | Exclude Linux: 1 20 | Exclude Linux64: 1 21 | Exclude LinuxUniversal: 1 22 | Exclude OSXIntel: 1 23 | Exclude OSXIntel64: 1 24 | Exclude OSXUniversal: 1 25 | Exclude Win: 1 26 | Exclude Win64: 1 27 | data: 28 | first: 29 | '': Editor 30 | second: 31 | enabled: 0 32 | settings: 33 | CPU: AnyCPU 34 | OS: Linux 35 | data: 36 | first: 37 | Any: 38 | second: 39 | enabled: 0 40 | settings: {} 41 | data: 42 | first: 43 | Editor: Editor 44 | second: 45 | enabled: 1 46 | settings: 47 | DefaultValueInitialized: true 48 | data: 49 | first: 50 | Facebook: Win 51 | second: 52 | enabled: 0 53 | settings: 54 | CPU: AnyCPU 55 | data: 56 | first: 57 | Facebook: Win64 58 | second: 59 | enabled: 0 60 | settings: 61 | CPU: AnyCPU 62 | data: 63 | first: 64 | Standalone: Linux 65 | second: 66 | enabled: 0 67 | settings: 68 | CPU: x86 69 | data: 70 | first: 71 | Standalone: Linux64 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: x86_64 76 | data: 77 | first: 78 | Standalone: OSXIntel 79 | second: 80 | enabled: 0 81 | settings: 82 | CPU: AnyCPU 83 | data: 84 | first: 85 | Standalone: OSXIntel64 86 | second: 87 | enabled: 0 88 | settings: 89 | CPU: AnyCPU 90 | data: 91 | first: 92 | Standalone: Win 93 | second: 94 | enabled: 0 95 | settings: 96 | CPU: AnyCPU 97 | data: 98 | first: 99 | Standalone: Win64 100 | second: 101 | enabled: 0 102 | settings: 103 | CPU: AnyCPU 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/sfw.net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/sfw.net.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/sfw.net.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9fc9b08ecd899944adf9860b4abd6b6 3 | timeCreated: 1491392718 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 1 23 | settings: 24 | DefaultValueInitialized: true 25 | data: 26 | first: 27 | Windows Store Apps: WindowsStoreApps 28 | second: 29 | enabled: 0 30 | settings: 31 | CPU: AnyCPU 32 | userData: 33 | assetBundleName: 34 | assetBundleVariant: 35 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x64.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a0ded7adcc817ce489fec07977f16d13 3 | folderAsset: yes 4 | timeCreated: 1493304320 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x64/pthreadVC2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/x64/pthreadVC2.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x64/pthreadVC2.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 868fbb4c41814baebc00f96e24ede2f8 3 | timeCreated: 1491391266 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Editor: 0 19 | Exclude Linux: 1 20 | Exclude Linux64: 1 21 | Exclude LinuxUniversal: 1 22 | Exclude OSXIntel: 1 23 | Exclude OSXIntel64: 1 24 | Exclude OSXUniversal: 1 25 | Exclude Win: 1 26 | Exclude Win64: 1 27 | data: 28 | first: 29 | '': Editor 30 | second: 31 | enabled: 0 32 | settings: 33 | CPU: x86_64 34 | OS: Windows 35 | data: 36 | first: 37 | Android: Android 38 | second: 39 | enabled: 0 40 | settings: 41 | CPU: ARMv7 42 | data: 43 | first: 44 | Any: 45 | second: 46 | enabled: 0 47 | settings: 48 | Exclude Android: 1 49 | Exclude Editor: 0 50 | Exclude Linux: 1 51 | Exclude Linux64: 1 52 | Exclude LinuxUniversal: 1 53 | Exclude OSXIntel: 1 54 | Exclude OSXIntel64: 1 55 | Exclude OSXUniversal: 1 56 | Exclude SamsungTV: 1 57 | Exclude Tizen: 1 58 | Exclude WebGL: 1 59 | Exclude Win: 1 60 | Exclude Win64: 1 61 | Exclude WindowsStoreApps: 1 62 | Exclude iOS: 1 63 | Exclude tvOS: 1 64 | data: 65 | first: 66 | Editor: Editor 67 | second: 68 | enabled: 1 69 | settings: 70 | CPU: x86_64 71 | DefaultValueInitialized: true 72 | OS: Windows 73 | data: 74 | first: 75 | Facebook: Win 76 | second: 77 | enabled: 0 78 | settings: 79 | CPU: AnyCPU 80 | data: 81 | first: 82 | Facebook: Win64 83 | second: 84 | enabled: 0 85 | settings: 86 | CPU: AnyCPU 87 | data: 88 | first: 89 | Samsung TV: SamsungTV 90 | second: 91 | enabled: 0 92 | settings: 93 | STV_MODEL: STANDARD_15 94 | data: 95 | first: 96 | Standalone: Linux 97 | second: 98 | enabled: 0 99 | settings: 100 | CPU: x86 101 | data: 102 | first: 103 | Standalone: Linux64 104 | second: 105 | enabled: 0 106 | settings: 107 | CPU: x86_64 108 | data: 109 | first: 110 | Standalone: OSXIntel 111 | second: 112 | enabled: 0 113 | settings: 114 | CPU: AnyCPU 115 | data: 116 | first: 117 | Standalone: OSXIntel64 118 | second: 119 | enabled: 0 120 | settings: 121 | CPU: AnyCPU 122 | data: 123 | first: 124 | Standalone: Win 125 | second: 126 | enabled: 0 127 | settings: 128 | CPU: AnyCPU 129 | data: 130 | first: 131 | Standalone: Win64 132 | second: 133 | enabled: 0 134 | settings: 135 | CPU: AnyCPU 136 | data: 137 | first: 138 | Windows Store Apps: WindowsStoreApps 139 | second: 140 | enabled: 0 141 | settings: 142 | CPU: AnyCPU 143 | DontProcess: False 144 | PlaceholderPath: 145 | SDK: AnySDK 146 | ScriptingBackend: AnyScriptingBackend 147 | data: 148 | first: 149 | iPhone: iOS 150 | second: 151 | enabled: 0 152 | settings: 153 | CompileFlags: 154 | FrameworkDependencies: 155 | data: 156 | first: 157 | tvOS: tvOS 158 | second: 159 | enabled: 0 160 | settings: 161 | CompileFlags: 162 | FrameworkDependencies: 163 | userData: 164 | assetBundleName: 165 | assetBundleVariant: 166 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x64/sfw_x64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/x64/sfw_x64.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x64/sfw_x64.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe5abeadcbe591e4fa9107fbc02f3998 3 | timeCreated: 1493304330 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Editor: 0 19 | Exclude Linux: 1 20 | Exclude Linux64: 1 21 | Exclude LinuxUniversal: 1 22 | Exclude OSXIntel: 1 23 | Exclude OSXIntel64: 1 24 | Exclude OSXUniversal: 1 25 | Exclude Win: 1 26 | Exclude Win64: 1 27 | data: 28 | first: 29 | '': Editor 30 | second: 31 | enabled: 0 32 | settings: 33 | CPU: AnyCPU 34 | OS: Windows 35 | data: 36 | first: 37 | Android: Android 38 | second: 39 | enabled: 0 40 | settings: 41 | CPU: ARMv7 42 | data: 43 | first: 44 | Any: 45 | second: 46 | enabled: 0 47 | settings: 48 | Exclude Android: 1 49 | Exclude Editor: 0 50 | Exclude Linux: 1 51 | Exclude Linux64: 1 52 | Exclude LinuxUniversal: 1 53 | Exclude OSXIntel: 1 54 | Exclude OSXIntel64: 1 55 | Exclude OSXUniversal: 1 56 | Exclude SamsungTV: 1 57 | Exclude Tizen: 1 58 | Exclude WebGL: 1 59 | Exclude Win: 1 60 | Exclude Win64: 1 61 | Exclude WindowsStoreApps: 1 62 | Exclude iOS: 1 63 | Exclude tvOS: 1 64 | data: 65 | first: 66 | Editor: Editor 67 | second: 68 | enabled: 1 69 | settings: 70 | CPU: x86_64 71 | DefaultValueInitialized: true 72 | OS: Windows 73 | data: 74 | first: 75 | Facebook: Win 76 | second: 77 | enabled: 0 78 | settings: 79 | CPU: AnyCPU 80 | data: 81 | first: 82 | Facebook: Win64 83 | second: 84 | enabled: 0 85 | settings: 86 | CPU: AnyCPU 87 | data: 88 | first: 89 | Samsung TV: SamsungTV 90 | second: 91 | enabled: 0 92 | settings: 93 | STV_MODEL: STANDARD_15 94 | data: 95 | first: 96 | Standalone: Linux 97 | second: 98 | enabled: 0 99 | settings: 100 | CPU: x86 101 | data: 102 | first: 103 | Standalone: Linux64 104 | second: 105 | enabled: 0 106 | settings: 107 | CPU: x86_64 108 | data: 109 | first: 110 | Standalone: OSXIntel 111 | second: 112 | enabled: 0 113 | settings: 114 | CPU: AnyCPU 115 | data: 116 | first: 117 | Standalone: OSXIntel64 118 | second: 119 | enabled: 0 120 | settings: 121 | CPU: AnyCPU 122 | data: 123 | first: 124 | Standalone: Win 125 | second: 126 | enabled: 0 127 | settings: 128 | CPU: AnyCPU 129 | data: 130 | first: 131 | Standalone: Win64 132 | second: 133 | enabled: 0 134 | settings: 135 | CPU: AnyCPU 136 | data: 137 | first: 138 | Windows Store Apps: WindowsStoreApps 139 | second: 140 | enabled: 0 141 | settings: 142 | CPU: AnyCPU 143 | DontProcess: False 144 | PlaceholderPath: 145 | SDK: AnySDK 146 | ScriptingBackend: AnyScriptingBackend 147 | data: 148 | first: 149 | iPhone: iOS 150 | second: 151 | enabled: 0 152 | settings: 153 | CompileFlags: 154 | FrameworkDependencies: 155 | data: 156 | first: 157 | tvOS: tvOS 158 | second: 159 | enabled: 0 160 | settings: 161 | CompileFlags: 162 | FrameworkDependencies: 163 | userData: 164 | assetBundleName: 165 | assetBundleVariant: 166 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x86.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99b48d4d4f6a66340ab06bd487d70a45 3 | folderAsset: yes 4 | timeCreated: 1493304320 5 | licenseType: Store 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x86/pthreadVC2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/x86/pthreadVC2.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x86/pthreadVC2.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 151a1d946b98deb4b98445400983ba92 3 | timeCreated: 1493300307 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Editor: 0 19 | Exclude Linux: 1 20 | Exclude Linux64: 1 21 | Exclude LinuxUniversal: 1 22 | Exclude OSXIntel: 1 23 | Exclude OSXIntel64: 1 24 | Exclude OSXUniversal: 1 25 | Exclude Win: 1 26 | Exclude Win64: 1 27 | data: 28 | first: 29 | '': Editor 30 | second: 31 | enabled: 0 32 | settings: 33 | CPU: x86 34 | OS: Windows 35 | data: 36 | first: 37 | Android: Android 38 | second: 39 | enabled: 0 40 | settings: 41 | CPU: ARMv7 42 | data: 43 | first: 44 | Any: 45 | second: 46 | enabled: 0 47 | settings: 48 | Exclude Android: 1 49 | Exclude Editor: 0 50 | Exclude Linux: 1 51 | Exclude Linux64: 1 52 | Exclude LinuxUniversal: 1 53 | Exclude OSXIntel: 1 54 | Exclude OSXIntel64: 1 55 | Exclude OSXUniversal: 1 56 | Exclude SamsungTV: 1 57 | Exclude Tizen: 1 58 | Exclude WebGL: 1 59 | Exclude Win: 1 60 | Exclude Win64: 1 61 | Exclude WindowsStoreApps: 1 62 | Exclude iOS: 1 63 | Exclude tvOS: 1 64 | data: 65 | first: 66 | Editor: Editor 67 | second: 68 | enabled: 1 69 | settings: 70 | CPU: x86 71 | DefaultValueInitialized: true 72 | OS: Windows 73 | data: 74 | first: 75 | Facebook: Win 76 | second: 77 | enabled: 0 78 | settings: 79 | CPU: AnyCPU 80 | data: 81 | first: 82 | Facebook: Win64 83 | second: 84 | enabled: 0 85 | settings: 86 | CPU: AnyCPU 87 | data: 88 | first: 89 | Samsung TV: SamsungTV 90 | second: 91 | enabled: 0 92 | settings: 93 | STV_MODEL: STANDARD_15 94 | data: 95 | first: 96 | Standalone: Linux 97 | second: 98 | enabled: 0 99 | settings: 100 | CPU: x86 101 | data: 102 | first: 103 | Standalone: Linux64 104 | second: 105 | enabled: 0 106 | settings: 107 | CPU: x86_64 108 | data: 109 | first: 110 | Standalone: OSXIntel 111 | second: 112 | enabled: 0 113 | settings: 114 | CPU: AnyCPU 115 | data: 116 | first: 117 | Standalone: OSXIntel64 118 | second: 119 | enabled: 0 120 | settings: 121 | CPU: AnyCPU 122 | data: 123 | first: 124 | Standalone: Win 125 | second: 126 | enabled: 0 127 | settings: 128 | CPU: AnyCPU 129 | data: 130 | first: 131 | Standalone: Win64 132 | second: 133 | enabled: 0 134 | settings: 135 | CPU: AnyCPU 136 | data: 137 | first: 138 | Windows Store Apps: WindowsStoreApps 139 | second: 140 | enabled: 0 141 | settings: 142 | CPU: AnyCPU 143 | DontProcess: False 144 | PlaceholderPath: 145 | SDK: AnySDK 146 | ScriptingBackend: AnyScriptingBackend 147 | data: 148 | first: 149 | iPhone: iOS 150 | second: 151 | enabled: 0 152 | settings: 153 | CompileFlags: 154 | FrameworkDependencies: 155 | data: 156 | first: 157 | tvOS: tvOS 158 | second: 159 | enabled: 0 160 | settings: 161 | CompileFlags: 162 | FrameworkDependencies: 163 | userData: 164 | assetBundleName: 165 | assetBundleVariant: 166 | -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x86/sfw_x86.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Plugins/GitHub/Editor/x86/sfw_x86.dll -------------------------------------------------------------------------------- /Assets/Plugins/GitHub/Editor/x86/sfw_x86.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a83159a46d87d2a4f8cec651049b9231 3 | timeCreated: 1493304330 4 | licenseType: Store 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Editor: 0 19 | Exclude Linux: 1 20 | Exclude Linux64: 1 21 | Exclude LinuxUniversal: 1 22 | Exclude OSXIntel: 1 23 | Exclude OSXIntel64: 1 24 | Exclude OSXUniversal: 1 25 | Exclude Win: 1 26 | Exclude Win64: 1 27 | data: 28 | first: 29 | '': Editor 30 | second: 31 | enabled: 0 32 | settings: 33 | CPU: x86 34 | OS: Windows 35 | data: 36 | first: 37 | Android: Android 38 | second: 39 | enabled: 0 40 | settings: 41 | CPU: ARMv7 42 | data: 43 | first: 44 | Any: 45 | second: 46 | enabled: 0 47 | settings: 48 | Exclude Android: 1 49 | Exclude Editor: 0 50 | Exclude Linux: 1 51 | Exclude Linux64: 1 52 | Exclude LinuxUniversal: 1 53 | Exclude OSXIntel: 1 54 | Exclude OSXIntel64: 1 55 | Exclude OSXUniversal: 1 56 | Exclude SamsungTV: 1 57 | Exclude Tizen: 1 58 | Exclude WebGL: 1 59 | Exclude Win: 1 60 | Exclude Win64: 1 61 | Exclude WindowsStoreApps: 1 62 | Exclude iOS: 1 63 | Exclude tvOS: 1 64 | data: 65 | first: 66 | Editor: Editor 67 | second: 68 | enabled: 1 69 | settings: 70 | CPU: x86 71 | DefaultValueInitialized: true 72 | OS: Windows 73 | data: 74 | first: 75 | Facebook: Win 76 | second: 77 | enabled: 0 78 | settings: 79 | CPU: AnyCPU 80 | data: 81 | first: 82 | Facebook: Win64 83 | second: 84 | enabled: 0 85 | settings: 86 | CPU: AnyCPU 87 | data: 88 | first: 89 | Samsung TV: SamsungTV 90 | second: 91 | enabled: 0 92 | settings: 93 | STV_MODEL: STANDARD_15 94 | data: 95 | first: 96 | Standalone: Linux 97 | second: 98 | enabled: 0 99 | settings: 100 | CPU: x86 101 | data: 102 | first: 103 | Standalone: Linux64 104 | second: 105 | enabled: 0 106 | settings: 107 | CPU: x86_64 108 | data: 109 | first: 110 | Standalone: OSXIntel 111 | second: 112 | enabled: 0 113 | settings: 114 | CPU: AnyCPU 115 | data: 116 | first: 117 | Standalone: OSXIntel64 118 | second: 119 | enabled: 0 120 | settings: 121 | CPU: AnyCPU 122 | data: 123 | first: 124 | Standalone: Win 125 | second: 126 | enabled: 0 127 | settings: 128 | CPU: AnyCPU 129 | data: 130 | first: 131 | Standalone: Win64 132 | second: 133 | enabled: 0 134 | settings: 135 | CPU: AnyCPU 136 | data: 137 | first: 138 | Windows Store Apps: WindowsStoreApps 139 | second: 140 | enabled: 0 141 | settings: 142 | CPU: AnyCPU 143 | DontProcess: False 144 | PlaceholderPath: 145 | SDK: AnySDK 146 | ScriptingBackend: AnyScriptingBackend 147 | data: 148 | first: 149 | iPhone: iOS 150 | second: 151 | enabled: 0 152 | settings: 153 | CompileFlags: 154 | FrameworkDependencies: 155 | data: 156 | first: 157 | tvOS: tvOS 158 | second: 159 | enabled: 0 160 | settings: 161 | CompileFlags: 162 | FrameworkDependencies: 163 | userData: 164 | assetBundleName: 165 | assetBundleVariant: 166 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 802f124275c321c47932116be051a7af 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9ff582ebd1f4a64582dd5f11ac6bdb1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene/LightingData.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Scenes/SampleScene/LightingData.asset -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene/LightingData.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 862a15e5aefd69d47a9ae74d89bccbde 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene/ReflectionProbe-0.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Scenes/SampleScene/ReflectionProbe-0.exr -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene/ReflectionProbe-0.exr.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d862a5e6862b87b409e7a65d25fbd6f0 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 1 30 | seamlessCubemap: 1 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: 2 36 | aniso: 0 37 | mipBias: 0 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 1 41 | nPOTScale: 1 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 0 54 | spriteTessellationDetail: -1 55 | textureType: 0 56 | textureShape: 2 57 | singleChannelComponent: 0 58 | maxTextureSizeSet: 0 59 | compressionQualitySet: 0 60 | textureFormatSet: 0 61 | ignorePngGamma: 0 62 | applyGammaDecoding: 0 63 | platformSettings: 64 | - serializedVersion: 3 65 | buildTarget: DefaultTexturePlatform 66 | maxTextureSize: 2048 67 | resizeAlgorithm: 0 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 100 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | androidETC2FallbackOverride: 0 75 | forceMaximumCompressionQuality_BC6H_BC7: 0 76 | spriteSheet: 77 | serializedVersion: 2 78 | sprites: [] 79 | outline: [] 80 | physicsShape: [] 81 | bones: [] 82 | spriteID: 83 | internalID: 0 84 | vertices: [] 85 | indices: 86 | edges: [] 87 | weights: [] 88 | secondaryTextures: [] 89 | spritePackingTag: 90 | pSDRemoveMatte: 0 91 | pSDShowRemoveMatteOption: 0 92 | userData: 93 | assetBundleName: 94 | assetBundleVariant: 95 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene_Profiles.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5c3647bf1c60feb4186534a8823c47eb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene_Profiles/Post-process Volume Profile.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-5891118617269607956 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 3 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 48a79b01ea5641d4aa6daa2e23605641, type: 3} 13 | m_Name: Bloom 14 | m_EditorClassIdentifier: 15 | active: 1 16 | enabled: 17 | overrideState: 1 18 | value: 1 19 | intensity: 20 | overrideState: 1 21 | value: 1 22 | threshold: 23 | overrideState: 1 24 | value: 0.9 25 | softKnee: 26 | overrideState: 1 27 | value: 0.5 28 | clamp: 29 | overrideState: 1 30 | value: 65472 31 | diffusion: 32 | overrideState: 1 33 | value: 7 34 | anamorphicRatio: 35 | overrideState: 1 36 | value: 0 37 | color: 38 | overrideState: 1 39 | value: {r: 1, g: 1, b: 1, a: 1} 40 | fastMode: 41 | overrideState: 1 42 | value: 0 43 | dirtTexture: 44 | overrideState: 0 45 | value: {fileID: 0} 46 | defaultState: 1 47 | dirtIntensity: 48 | overrideState: 0 49 | value: 0 50 | --- !u!114 &-2778436302782693315 51 | MonoBehaviour: 52 | m_ObjectHideFlags: 3 53 | m_CorrespondingSourceObject: {fileID: 0} 54 | m_PrefabInstance: {fileID: 0} 55 | m_PrefabAsset: {fileID: 0} 56 | m_GameObject: {fileID: 0} 57 | m_Enabled: 1 58 | m_EditorHideFlags: 0 59 | m_Script: {fileID: 11500000, guid: c1cb7e9e120078f43bce4f0b1be547a7, type: 3} 60 | m_Name: AmbientOcclusion 61 | m_EditorClassIdentifier: 62 | active: 1 63 | enabled: 64 | overrideState: 1 65 | value: 1 66 | mode: 67 | overrideState: 1 68 | value: 1 69 | intensity: 70 | overrideState: 1 71 | value: 0.3 72 | color: 73 | overrideState: 1 74 | value: {r: 0, g: 0, b: 0, a: 1} 75 | ambientOnly: 76 | overrideState: 1 77 | value: 1 78 | noiseFilterTolerance: 79 | overrideState: 1 80 | value: 0 81 | blurTolerance: 82 | overrideState: 1 83 | value: -4.6 84 | upsampleTolerance: 85 | overrideState: 1 86 | value: -12 87 | thicknessModifier: 88 | overrideState: 1 89 | value: 1.3 90 | directLightingStrength: 91 | overrideState: 1 92 | value: 0 93 | radius: 94 | overrideState: 1 95 | value: 0.25 96 | quality: 97 | overrideState: 1 98 | value: 2 99 | --- !u!114 &11400000 100 | MonoBehaviour: 101 | m_ObjectHideFlags: 0 102 | m_CorrespondingSourceObject: {fileID: 0} 103 | m_PrefabInstance: {fileID: 0} 104 | m_PrefabAsset: {fileID: 0} 105 | m_GameObject: {fileID: 0} 106 | m_Enabled: 1 107 | m_EditorHideFlags: 0 108 | m_Script: {fileID: 11500000, guid: 8e6292b2c06870d4495f009f912b9600, type: 3} 109 | m_Name: Post-process Volume Profile 110 | m_EditorClassIdentifier: 111 | settings: 112 | - {fileID: -5891118617269607956} 113 | - {fileID: -2778436302782693315} 114 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene_Profiles/Post-process Volume Profile.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 879cd1200ba1c704f9109c1c6dfe7ece 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/StreamingAssets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 700baae6e0695b241b3df605f7abb9be 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/StreamingAssets/BlenderExports.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 31f8a24439e447c4bb66df64e824de69 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/StreamingAssets/BlenderExports/HighResCloth.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d7ddd28bb125175459db4c9a9fd3297d 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/StreamingAssets/BlenderExports/SimpleCloth.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 33afac6b19f235042880a26fb3822915 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/StreamingAssets/ClothData.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e41547f56673ca4fb629aa2d6860cd7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/StreamingAssets/ClothData/Cape.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 324d1876dd218f7479f06d4d09008a4d 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/StreamingAssets/ClothData/Cloak.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5354ac342cf98144c84b2ade27bb736e 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/StreamingAssets/ClothData/SimpleCloth.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 938634a41b6480c4fbab8900ca6d763a 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/StreamingAssets/ClothData/Skirt.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b99b46809b14b6b4d8ad9460a9aabfb8 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0e01bb89cf9a13e488fb6f88e2ea05a6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Textures/EyeTex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Assets/Textures/EyeTex.jpg -------------------------------------------------------------------------------- /Assets/Textures/EyeTex.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0dd330933ee67664b93dcce9edc93d35 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /Assets/UtilityTools.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2a607730f19fb24697d638395081493 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UtilityTools/ConditionalHideAttribute.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System; 3 | using System.Collections; 4 | 5 | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | 6 | AttributeTargets.Class | AttributeTargets.Struct, Inherited = true)] 7 | public class ConditionalHideAttribute : PropertyAttribute 8 | { 9 | //The name of the bool field that will be in control 10 | public string ConditionalSourceField = ""; 11 | //TRUE = Hide in inspector / FALSE = Disable in inspector 12 | public bool HideInInspector = false; 13 | 14 | public ConditionalHideAttribute(string conditionalSourceField) 15 | { 16 | this.ConditionalSourceField = conditionalSourceField; 17 | this.HideInInspector = false; 18 | } 19 | 20 | public ConditionalHideAttribute(string conditionalSourceField, bool hideInInspector) 21 | { 22 | this.ConditionalSourceField = conditionalSourceField; 23 | this.HideInInspector = hideInInspector; 24 | } 25 | } -------------------------------------------------------------------------------- /Assets/UtilityTools/ConditionalHideAttribute.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92228a3032778c2459168e7832cca202 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UtilityTools/DataStructs.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System; 5 | 6 | namespace DataStruct 7 | { 8 | [Serializable] 9 | public class Particle 10 | { 11 | public Vector3 pos; 12 | public Vector3 predictedPos; 13 | public Vector3 velocity; 14 | public float invMass; 15 | public float mass; 16 | public int idx; 17 | public int phase; 18 | 19 | public Particle( 20 | float[] _pos, 21 | float[] _predictedPos, 22 | float[] _veloctiy, 23 | float _invMass, 24 | float _mass, 25 | int _idx, 26 | int _phase) 27 | { 28 | pos = new Vector3(_pos[0], _pos[1], _pos[2]); 29 | predictedPos = new Vector3(_predictedPos[0], _predictedPos[1], _predictedPos[2]); 30 | velocity = new Vector3(_veloctiy[0], _veloctiy[1], _veloctiy[2]); 31 | invMass = _invMass; 32 | mass = _mass; 33 | idx = _idx; 34 | phase = _phase; 35 | } 36 | } 37 | 38 | [Serializable] 39 | public struct Edge 40 | { 41 | public int p0; 42 | public int p1; 43 | public float restLength; 44 | public int idx; 45 | } 46 | 47 | [Serializable] 48 | public struct Triangle 49 | { 50 | public int p0; 51 | public int p1; 52 | public int p2; 53 | public int idx; 54 | } 55 | 56 | [Serializable] 57 | public struct NeighborTriangles 58 | { 59 | public int p0; 60 | public int p1; 61 | public int p2; 62 | public int p3; 63 | public float restAngle; 64 | } 65 | 66 | [Serializable] 67 | public struct MeshData 68 | { 69 | public Particle[] particles; 70 | public Edge[] edges; 71 | public Triangle[] triangles; 72 | public NeighborTriangles[] neighborTriangles; 73 | public int[] sequence; 74 | } 75 | 76 | public struct SPHash 77 | { 78 | public List indices; 79 | } 80 | 81 | public struct uint3 82 | { 83 | public uint u1; 84 | public uint u2; 85 | public uint u3; 86 | } 87 | } -------------------------------------------------------------------------------- /Assets/UtilityTools/DataStructs.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 289cc7f2562bde148965a1bb66ecacaf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UtilityTools/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b9eb00b3f1355ff4f9ce8a435cff7e72 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UtilityTools/Editor/ConditionalHidePropertyDrawer.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | [CustomPropertyDrawer(typeof(ConditionalHideAttribute))] 5 | public class ConditionalHidePropertyDrawer : PropertyDrawer 6 | { 7 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 8 | { 9 | ConditionalHideAttribute condHAtt = (ConditionalHideAttribute)attribute; 10 | bool enabled = GetConditionalHideAttributeResult(condHAtt, property); 11 | 12 | bool wasEnabled = GUI.enabled; 13 | GUI.enabled = enabled; 14 | if (!condHAtt.HideInInspector || enabled) 15 | { 16 | EditorGUI.PropertyField(position, property, label, true); 17 | } 18 | 19 | GUI.enabled = wasEnabled; 20 | } 21 | 22 | public override float GetPropertyHeight(SerializedProperty property, GUIContent label) 23 | { 24 | ConditionalHideAttribute condHAtt = (ConditionalHideAttribute)attribute; 25 | bool enabled = GetConditionalHideAttributeResult(condHAtt, property); 26 | 27 | if (!condHAtt.HideInInspector || enabled) 28 | { 29 | return EditorGUI.GetPropertyHeight(property, label); 30 | } 31 | else 32 | { 33 | return -EditorGUIUtility.standardVerticalSpacing; 34 | } 35 | } 36 | 37 | private bool GetConditionalHideAttributeResult(ConditionalHideAttribute condHAtt, SerializedProperty property) 38 | { 39 | bool enabled = true; 40 | string propertyPath = property.propertyPath; //returns the property path of the property we want to apply the attribute to 41 | string conditionPath = propertyPath.Replace(property.name, condHAtt.ConditionalSourceField); //changes the path to the conditionalsource property path 42 | SerializedProperty sourcePropertyValue = property.serializedObject.FindProperty(conditionPath); 43 | 44 | if (sourcePropertyValue != null) 45 | { 46 | enabled = sourcePropertyValue.boolValue; 47 | } 48 | else 49 | { 50 | Debug.LogWarning("Attempting to use a ConditionalHideAttribute but no matching SourcePropertyValue found in object: " + condHAtt.ConditionalSourceField); 51 | } 52 | 53 | return enabled; 54 | } 55 | } -------------------------------------------------------------------------------- /Assets/UtilityTools/Editor/ConditionalHidePropertyDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9b3e60f023d17c6429ea6b805cfc56fa 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UtilityTools/FPSDisplay.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class FPSDisplay : MonoBehaviour 5 | { 6 | float deltaTime = 0.0f; 7 | 8 | void Update() 9 | { 10 | deltaTime += (Time.unscaledDeltaTime - deltaTime) * 0.1f; 11 | } 12 | 13 | void OnGUI() 14 | { 15 | int w = Screen.width, h = Screen.height; 16 | 17 | GUIStyle style = new GUIStyle(); 18 | 19 | Rect rect = new Rect(0, 0, w, h * 2 / 100); 20 | style.alignment = TextAnchor.UpperLeft; 21 | style.fontSize = h * 2 / 100; 22 | style.normal.textColor = new Color (1.0f, 1.0f, 1.0f, 1.0f); 23 | float msec = deltaTime * 1000.0f; 24 | float fps = 1.0f / deltaTime; 25 | string text = string.Format("{0:0.0} ms ({1:0.} fps)", msec, fps); 26 | GUI.Label(rect, text, style); 27 | } 28 | } -------------------------------------------------------------------------------- /Assets/UtilityTools/FPSDisplay.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68df0177d30724046a83ddbb741204a4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UtilityTools/Helper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d7989f44832468f40880928f73b08fbf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UtilityTools/SkinnedMesh.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | 4 | // https://forum.unity.com/threads/get-skinned-vertices-in-real-time.15685/ 5 | 6 | /// 7 | /// Compute a skinned mesh's deformation. 8 | /// 9 | /// The script must be attached aside a SkinnedMeshRenderer, 10 | /// which is only used to get the bone list and the mesh 11 | /// (it doesn't even need to be enabled). 12 | /// 13 | /// Make sure the scripts accessing the results run after this one 14 | /// (otherwise you'll have a 1-frame delay), 15 | /// or use the OnResultsReady delegate. 16 | /// 17 | [RequireComponent(typeof(SkinnedMeshRenderer))] 18 | public class SkinnedMesh : MonoBehaviour 19 | { 20 | Mesh mesh; 21 | SkinnedMeshRenderer skin; 22 | Mesh tempMesh; 23 | [ConditionalHideAttribute("hide")] 24 | public int vertexCount; 25 | [HideInInspector] 26 | public List bakedVertices = new List(); 27 | [HideInInspector] 28 | public List bakedNormals = new List(); 29 | public System.Action OnResultsReady; 30 | 31 | public float bakedScale = 1f; 32 | public bool transformBaked = false; 33 | // public bool independentScript = false; 34 | 35 | #region Editor Stuffs 36 | [HideInInspector] 37 | public bool hide = false; 38 | #endregion 39 | 40 | // #region UnityCallbacks 41 | // void Start() 42 | // { 43 | // if (independentScript) 44 | // Init(); 45 | // } 46 | 47 | // void LateUpdate() 48 | // { 49 | // if (independentScript) 50 | // BakeMeshData(); 51 | // } 52 | // #endregion 53 | 54 | public void Init() 55 | { 56 | skin = GetComponent(); 57 | mesh = skin.sharedMesh; 58 | vertexCount = mesh.vertexCount; 59 | tempMesh = new Mesh(); 60 | tempMesh.MarkDynamic(); 61 | //Debug.LogError("Don't use this class, use skin.BakeMesh()"); 62 | } 63 | 64 | public void BakeMeshData() 65 | { 66 | // 1,300 fps with bake mesh 67 | skin.BakeMesh(tempMesh); 68 | // don't use tempMesh.vertices; or tempMesh.normals; (creates memory) 69 | // lists are ok 70 | tempMesh.GetVertices(bakedVertices); 71 | tempMesh.GetNormals(bakedNormals); 72 | 73 | if (transformBaked) 74 | { 75 | for (int i = 0; i < mesh.vertexCount; i++) 76 | { 77 | bakedVertices[i] = transform.TransformPoint(bakedVertices[i] * bakedScale); 78 | bakedNormals[i] = transform.TransformDirection(bakedNormals[i]).normalized; 79 | } 80 | } 81 | if (OnResultsReady != null) 82 | { 83 | OnResultsReady(this); 84 | } 85 | } 86 | 87 | } -------------------------------------------------------------------------------- /Assets/UtilityTools/SkinnedMesh.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d93d6555cdd3390499e2a8a0b4d40de4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UtilityTools/SkinnedMeshDebug.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [RequireComponent(typeof(SkinnedMeshRenderer))] 4 | public class SkinnedMeshDebug : MonoBehaviour 5 | { 6 | public float normalLength = 5.0f; 7 | 8 | void Start() 9 | { 10 | SkinnedMesh mesh = GetComponent(); 11 | mesh.OnResultsReady += DrawVertices; 12 | } 13 | 14 | void DrawVertices(SkinnedMesh mesh) 15 | { 16 | Color color = Color.green; 17 | var m = transform.localToWorldMatrix; 18 | for (int i = 0; i < mesh.vertexCount; i++) 19 | { 20 | Vector3 position = mesh.bakedVertices[i]; 21 | Vector3 normal = mesh.bakedNormals[i]; 22 | Debug.DrawLine(position, position + (normal * normalLength), color); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Assets/UtilityTools/SkinnedMeshDebug.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b8307d3601b35b540b0d6f6d02107335 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UtilityTools/Utilities.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | 5 | namespace Utilities 6 | { 7 | public class _Convert 8 | { 9 | 10 | public static float[] Vector3ToFloat(Vector3 vect) 11 | { 12 | return new float[3]{vect.x, vect.y, vect.z}; 13 | } 14 | 15 | public static Vector3 FloatToVector3(float[] flts) 16 | { 17 | if (flts.Length == 3) 18 | { 19 | return new Vector3(flts[0], flts[1], flts[2]); 20 | } else 21 | { 22 | Debug.LogError("Float passed does not have exactly length of 3"); 23 | return new Vector3(0, 0, 0); 24 | } 25 | } 26 | 27 | public static Vector3[] FloatArrayToVector3Array(float[][] fltArray) 28 | { 29 | if (fltArray != null) 30 | { 31 | Vector3[] vc3Array = new Vector3[fltArray.Length]; 32 | 33 | for (int i=0; i < fltArray.Length; i++) 34 | { 35 | vc3Array[i] = FloatToVector3(fltArray[i]); 36 | } 37 | 38 | return vc3Array; 39 | } else 40 | { 41 | return new Vector3[0]; 42 | } 43 | } 44 | 45 | public static float[][] Vector3ArrayToFloatArray(Vector3[] vc3Array) 46 | { 47 | if (vc3Array != null) 48 | { 49 | float[][] fltArray = new float[vc3Array.Length][]; 50 | 51 | for (int i=0; i < vc3Array.Length; i++) 52 | { 53 | fltArray[i] = Vector3ToFloat(vc3Array[i]); 54 | } 55 | 56 | return fltArray; 57 | } else 58 | { 59 | return new float[0][]; 60 | } 61 | } 62 | 63 | public static Vector3[] LocalVector3ListToWold(Transform transform, Vector3[] vc3List) 64 | { 65 | for (int i=0; i < vc3List.Length; i++) 66 | { 67 | vc3List[i] = transform.TransformPoint(vc3List[i]); 68 | } 69 | return vc3List; 70 | } 71 | 72 | public static Vector3[] WoldVector3ListToLocal(Transform transform, Vector3[] vc3List) 73 | { 74 | for (int i=0; i < vc3List.Length; i++) 75 | { 76 | vc3List[i] = transform.InverseTransformPoint(vc3List[i]); 77 | } 78 | return vc3List; 79 | } 80 | 81 | } 82 | 83 | public class _Math 84 | { 85 | public static float[] AddFloatArray(float[] floatArray1, float[] floatArray2) 86 | { 87 | if (floatArray1.Length == floatArray2.Length) 88 | { 89 | float[] finalFloatArray = new float[floatArray1.Length]; 90 | for (int i=0; i < floatArray1.Length; i++) 91 | { 92 | finalFloatArray[i] = floatArray1[i] + floatArray2[i]; 93 | } 94 | return finalFloatArray; 95 | } else 96 | { 97 | return null; 98 | } 99 | } 100 | 101 | public static float[] SubtractFloatArray(float[] floatArray1, float[] floatArray2) 102 | { 103 | if (floatArray1.Length == floatArray2.Length) 104 | { 105 | float[] finalFloatArray = new float[floatArray1.Length]; 106 | for (int i=0; i < floatArray1.Length; i++) 107 | { 108 | finalFloatArray[i] = floatArray1[i] - floatArray2[i]; 109 | } 110 | return finalFloatArray; 111 | } else 112 | { 113 | return null; 114 | } 115 | } 116 | 117 | } 118 | 119 | public class _Mesh 120 | { 121 | public static Vector3[] ReverseNormals(Vector3[] normals) 122 | { 123 | Vector3[] reverseNormals = normals; 124 | for (int i = 0; i < reverseNormals.Length; i++) 125 | { 126 | reverseNormals[i] *= -1; 127 | } 128 | return reverseNormals; 129 | } 130 | 131 | public static Mesh DeepCopyMesh(Mesh mesh) 132 | { 133 | Mesh newMesh = new Mesh(); 134 | newMesh.vertices = mesh.vertices; 135 | newMesh.triangles = mesh.triangles; 136 | newMesh.RecalculateBounds(); 137 | newMesh.RecalculateNormals(); 138 | newMesh.RecalculateTangents(); 139 | return newMesh; 140 | } 141 | } 142 | 143 | } -------------------------------------------------------------------------------- /Assets/UtilityTools/Utilities.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5a6ef3dc495df91429c9b7963d6bfecc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Voxell 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ide.visualstudio": "2.0.2", 4 | "com.unity.ide.vscode": "1.2.1", 5 | "com.unity.postprocessing": "2.3.0", 6 | "com.unity.progrids": "3.0.3-preview.6", 7 | "com.unity.test-framework": "1.1.16", 8 | "com.unity.textmeshpro": "3.0.1", 9 | "com.unity.timeline": "1.3.4", 10 | "com.unity.ugui": "1.0.0", 11 | "com.unity.modules.ai": "1.0.0", 12 | "com.unity.modules.androidjni": "1.0.0", 13 | "com.unity.modules.animation": "1.0.0", 14 | "com.unity.modules.assetbundle": "1.0.0", 15 | "com.unity.modules.audio": "1.0.0", 16 | "com.unity.modules.cloth": "1.0.0", 17 | "com.unity.modules.director": "1.0.0", 18 | "com.unity.modules.imageconversion": "1.0.0", 19 | "com.unity.modules.imgui": "1.0.0", 20 | "com.unity.modules.jsonserialize": "1.0.0", 21 | "com.unity.modules.particlesystem": "1.0.0", 22 | "com.unity.modules.physics": "1.0.0", 23 | "com.unity.modules.physics2d": "1.0.0", 24 | "com.unity.modules.screencapture": "1.0.0", 25 | "com.unity.modules.terrain": "1.0.0", 26 | "com.unity.modules.terrainphysics": "1.0.0", 27 | "com.unity.modules.tilemap": "1.0.0", 28 | "com.unity.modules.ui": "1.0.0", 29 | "com.unity.modules.uielements": "1.0.0", 30 | "com.unity.modules.umbra": "1.0.0", 31 | "com.unity.modules.unityanalytics": "1.0.0", 32 | "com.unity.modules.unitywebrequest": "1.0.0", 33 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 34 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 35 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 36 | "com.unity.modules.unitywebrequestwww": "1.0.0", 37 | "com.unity.modules.vehicles": "1.0.0", 38 | "com.unity.modules.video": "1.0.0", 39 | "com.unity.modules.vr": "1.0.0", 40 | "com.unity.modules.wind": "1.0.0", 41 | "com.unity.modules.xr": "1.0.0" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ext.nunit": { 4 | "version": "1.0.0", 5 | "depth": 1, 6 | "source": "registry", 7 | "dependencies": {}, 8 | "url": "https://packages.unity.com" 9 | }, 10 | "com.unity.ide.visualstudio": { 11 | "version": "2.0.2", 12 | "depth": 0, 13 | "source": "registry", 14 | "dependencies": {}, 15 | "url": "https://packages.unity.com" 16 | }, 17 | "com.unity.ide.vscode": { 18 | "version": "1.2.1", 19 | "depth": 0, 20 | "source": "registry", 21 | "dependencies": {}, 22 | "url": "https://packages.unity.com" 23 | }, 24 | "com.unity.postprocessing": { 25 | "version": "2.3.0", 26 | "depth": 0, 27 | "source": "registry", 28 | "dependencies": {}, 29 | "url": "https://packages.unity.com" 30 | }, 31 | "com.unity.progrids": { 32 | "version": "3.0.3-preview.6", 33 | "depth": 0, 34 | "source": "registry", 35 | "dependencies": { 36 | "com.unity.settings-manager": "1.0.2" 37 | }, 38 | "url": "https://packages.unity.com" 39 | }, 40 | "com.unity.settings-manager": { 41 | "version": "1.0.2", 42 | "depth": 1, 43 | "source": "registry", 44 | "dependencies": {}, 45 | "url": "https://packages.unity.com" 46 | }, 47 | "com.unity.test-framework": { 48 | "version": "1.1.16", 49 | "depth": 0, 50 | "source": "registry", 51 | "dependencies": { 52 | "com.unity.ext.nunit": "1.0.0", 53 | "com.unity.modules.imgui": "1.0.0", 54 | "com.unity.modules.jsonserialize": "1.0.0" 55 | }, 56 | "url": "https://packages.unity.com" 57 | }, 58 | "com.unity.textmeshpro": { 59 | "version": "3.0.1", 60 | "depth": 0, 61 | "source": "registry", 62 | "dependencies": { 63 | "com.unity.ugui": "1.0.0" 64 | }, 65 | "url": "https://packages.unity.com" 66 | }, 67 | "com.unity.timeline": { 68 | "version": "1.3.4", 69 | "depth": 0, 70 | "source": "registry", 71 | "dependencies": {}, 72 | "url": "https://packages.unity.com" 73 | }, 74 | "com.unity.ugui": { 75 | "version": "1.0.0", 76 | "depth": 0, 77 | "source": "builtin", 78 | "dependencies": { 79 | "com.unity.modules.ui": "1.0.0", 80 | "com.unity.modules.imgui": "1.0.0" 81 | } 82 | }, 83 | "com.unity.modules.ai": { 84 | "version": "1.0.0", 85 | "depth": 0, 86 | "source": "builtin", 87 | "dependencies": {} 88 | }, 89 | "com.unity.modules.androidjni": { 90 | "version": "1.0.0", 91 | "depth": 0, 92 | "source": "builtin", 93 | "dependencies": {} 94 | }, 95 | "com.unity.modules.animation": { 96 | "version": "1.0.0", 97 | "depth": 0, 98 | "source": "builtin", 99 | "dependencies": {} 100 | }, 101 | "com.unity.modules.assetbundle": { 102 | "version": "1.0.0", 103 | "depth": 0, 104 | "source": "builtin", 105 | "dependencies": {} 106 | }, 107 | "com.unity.modules.audio": { 108 | "version": "1.0.0", 109 | "depth": 0, 110 | "source": "builtin", 111 | "dependencies": {} 112 | }, 113 | "com.unity.modules.cloth": { 114 | "version": "1.0.0", 115 | "depth": 0, 116 | "source": "builtin", 117 | "dependencies": { 118 | "com.unity.modules.physics": "1.0.0" 119 | } 120 | }, 121 | "com.unity.modules.director": { 122 | "version": "1.0.0", 123 | "depth": 0, 124 | "source": "builtin", 125 | "dependencies": { 126 | "com.unity.modules.audio": "1.0.0", 127 | "com.unity.modules.animation": "1.0.0" 128 | } 129 | }, 130 | "com.unity.modules.imageconversion": { 131 | "version": "1.0.0", 132 | "depth": 0, 133 | "source": "builtin", 134 | "dependencies": {} 135 | }, 136 | "com.unity.modules.imgui": { 137 | "version": "1.0.0", 138 | "depth": 0, 139 | "source": "builtin", 140 | "dependencies": {} 141 | }, 142 | "com.unity.modules.jsonserialize": { 143 | "version": "1.0.0", 144 | "depth": 0, 145 | "source": "builtin", 146 | "dependencies": {} 147 | }, 148 | "com.unity.modules.particlesystem": { 149 | "version": "1.0.0", 150 | "depth": 0, 151 | "source": "builtin", 152 | "dependencies": {} 153 | }, 154 | "com.unity.modules.physics": { 155 | "version": "1.0.0", 156 | "depth": 0, 157 | "source": "builtin", 158 | "dependencies": {} 159 | }, 160 | "com.unity.modules.physics2d": { 161 | "version": "1.0.0", 162 | "depth": 0, 163 | "source": "builtin", 164 | "dependencies": {} 165 | }, 166 | "com.unity.modules.screencapture": { 167 | "version": "1.0.0", 168 | "depth": 0, 169 | "source": "builtin", 170 | "dependencies": { 171 | "com.unity.modules.imageconversion": "1.0.0" 172 | } 173 | }, 174 | "com.unity.modules.subsystems": { 175 | "version": "1.0.0", 176 | "depth": 1, 177 | "source": "builtin", 178 | "dependencies": { 179 | "com.unity.modules.jsonserialize": "1.0.0" 180 | } 181 | }, 182 | "com.unity.modules.terrain": { 183 | "version": "1.0.0", 184 | "depth": 0, 185 | "source": "builtin", 186 | "dependencies": {} 187 | }, 188 | "com.unity.modules.terrainphysics": { 189 | "version": "1.0.0", 190 | "depth": 0, 191 | "source": "builtin", 192 | "dependencies": { 193 | "com.unity.modules.physics": "1.0.0", 194 | "com.unity.modules.terrain": "1.0.0" 195 | } 196 | }, 197 | "com.unity.modules.tilemap": { 198 | "version": "1.0.0", 199 | "depth": 0, 200 | "source": "builtin", 201 | "dependencies": { 202 | "com.unity.modules.physics2d": "1.0.0" 203 | } 204 | }, 205 | "com.unity.modules.ui": { 206 | "version": "1.0.0", 207 | "depth": 0, 208 | "source": "builtin", 209 | "dependencies": {} 210 | }, 211 | "com.unity.modules.uielements": { 212 | "version": "1.0.0", 213 | "depth": 0, 214 | "source": "builtin", 215 | "dependencies": { 216 | "com.unity.modules.ui": "1.0.0", 217 | "com.unity.modules.imgui": "1.0.0", 218 | "com.unity.modules.jsonserialize": "1.0.0", 219 | "com.unity.modules.uielementsnative": "1.0.0" 220 | } 221 | }, 222 | "com.unity.modules.uielementsnative": { 223 | "version": "1.0.0", 224 | "depth": 1, 225 | "source": "builtin", 226 | "dependencies": { 227 | "com.unity.modules.ui": "1.0.0", 228 | "com.unity.modules.imgui": "1.0.0", 229 | "com.unity.modules.jsonserialize": "1.0.0" 230 | } 231 | }, 232 | "com.unity.modules.umbra": { 233 | "version": "1.0.0", 234 | "depth": 0, 235 | "source": "builtin", 236 | "dependencies": {} 237 | }, 238 | "com.unity.modules.unityanalytics": { 239 | "version": "1.0.0", 240 | "depth": 0, 241 | "source": "builtin", 242 | "dependencies": { 243 | "com.unity.modules.unitywebrequest": "1.0.0", 244 | "com.unity.modules.jsonserialize": "1.0.0" 245 | } 246 | }, 247 | "com.unity.modules.unitywebrequest": { 248 | "version": "1.0.0", 249 | "depth": 0, 250 | "source": "builtin", 251 | "dependencies": {} 252 | }, 253 | "com.unity.modules.unitywebrequestassetbundle": { 254 | "version": "1.0.0", 255 | "depth": 0, 256 | "source": "builtin", 257 | "dependencies": { 258 | "com.unity.modules.assetbundle": "1.0.0", 259 | "com.unity.modules.unitywebrequest": "1.0.0" 260 | } 261 | }, 262 | "com.unity.modules.unitywebrequestaudio": { 263 | "version": "1.0.0", 264 | "depth": 0, 265 | "source": "builtin", 266 | "dependencies": { 267 | "com.unity.modules.unitywebrequest": "1.0.0", 268 | "com.unity.modules.audio": "1.0.0" 269 | } 270 | }, 271 | "com.unity.modules.unitywebrequesttexture": { 272 | "version": "1.0.0", 273 | "depth": 0, 274 | "source": "builtin", 275 | "dependencies": { 276 | "com.unity.modules.unitywebrequest": "1.0.0", 277 | "com.unity.modules.imageconversion": "1.0.0" 278 | } 279 | }, 280 | "com.unity.modules.unitywebrequestwww": { 281 | "version": "1.0.0", 282 | "depth": 0, 283 | "source": "builtin", 284 | "dependencies": { 285 | "com.unity.modules.unitywebrequest": "1.0.0", 286 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 287 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 288 | "com.unity.modules.audio": "1.0.0", 289 | "com.unity.modules.assetbundle": "1.0.0", 290 | "com.unity.modules.imageconversion": "1.0.0" 291 | } 292 | }, 293 | "com.unity.modules.vehicles": { 294 | "version": "1.0.0", 295 | "depth": 0, 296 | "source": "builtin", 297 | "dependencies": { 298 | "com.unity.modules.physics": "1.0.0" 299 | } 300 | }, 301 | "com.unity.modules.video": { 302 | "version": "1.0.0", 303 | "depth": 0, 304 | "source": "builtin", 305 | "dependencies": { 306 | "com.unity.modules.audio": "1.0.0", 307 | "com.unity.modules.ui": "1.0.0", 308 | "com.unity.modules.unitywebrequest": "1.0.0" 309 | } 310 | }, 311 | "com.unity.modules.vr": { 312 | "version": "1.0.0", 313 | "depth": 0, 314 | "source": "builtin", 315 | "dependencies": { 316 | "com.unity.modules.jsonserialize": "1.0.0", 317 | "com.unity.modules.physics": "1.0.0", 318 | "com.unity.modules.xr": "1.0.0" 319 | } 320 | }, 321 | "com.unity.modules.wind": { 322 | "version": "1.0.0", 323 | "depth": 0, 324 | "source": "builtin", 325 | "dependencies": {} 326 | }, 327 | "com.unity.modules.xr": { 328 | "version": "1.0.0", 329 | "depth": 0, 330 | "source": "builtin", 331 | "dependencies": { 332 | "com.unity.modules.physics": "1.0.0", 333 | "com.unity.modules.jsonserialize": "1.0.0", 334 | "com.unity.modules.subsystems": "1.0.0" 335 | } 336 | } 337 | } 338 | } 339 | -------------------------------------------------------------------------------- /Pictures/cloth_in_wind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Pictures/cloth_in_wind.png -------------------------------------------------------------------------------- /Pictures/cloth_simulation_parameters.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Pictures/cloth_simulation_parameters.PNG -------------------------------------------------------------------------------- /Pictures/materials.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Pictures/materials.PNG -------------------------------------------------------------------------------- /Pictures/simulation.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nixon-voxell/GPUClothSimulationInUnity/935fc20df3344aa03966dd5dc16089fdca44e49d/Pictures/simulation.PNG -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | m_LogWhenShaderIsCompiled: 0 63 | m_AllowEnlightenSupportForUpgradedProject: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreviewPackages: 1 16 | m_EnablePackageDependencies: 1 17 | m_AdvancedSettingsExpanded: 1 18 | oneTimeWarningShown: 1 19 | -------------------------------------------------------------------------------- /ProjectSettings/Packages/com.unity.progrids/Settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "m_Name": "Settings", 3 | "m_Path": "ProjectSettings/Packages/com.unity.progrids/Settings.json", 4 | "m_Dictionary": { 5 | "m_DictionaryValues": [] 6 | } 7 | } -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2020.1.3f1 2 | m_EditorVersionWithRevision: 2020.1.3f1 (cf5c4788e1d8) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Stadia: 5 227 | Standalone: 5 228 | WebGL: 3 229 | Windows Store Apps: 5 230 | XboxOne: 5 231 | iPhone: 2 232 | tvOS: 2 233 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - PostProcessing 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | GPU Cloth Simulation For Real-time Application 2 | --- 3 | 4 | This repository is still currently under development, so everything is still in testing mode. A lot of things will break, download at your own risk :/ 5 | 6 | > *Disclaimer: This project is in a paused state so there won't be more updates. In the future, if there are any changes to this project, I will post an issue update on this repository. Stay tune!* 7 | 8 | My goal is to replicate what this legend did: https://youtu.be/kCGHXlLR3l8 (A smooth and interactive cloth simulation) 9 | 10 | Currently, my cloth simulation uses Postion Based Dynamics and supports: 11 | - Distance Constraint 12 | - Bending Constraint 13 | - Point Triangle Distance Constraint (Self Collision) 14 | - Aerodynamics (Wind Effect) 15 | 16 | Features comming soon: 17 | - Vivace Gauss Seidel Method for optimization on GPU (random graph coloring) 18 | - Primitive Shape Collision (Sphere, Box and Capsule) 19 | 20 | Check out my [YouTube Playlist](https://www.youtube.com/playlist?list=PLlnBGPe6GFdP8So9oS0YVoVjqkmJoREI_) where I record my journey on how I approach this problem! 21 | 22 | Support me on [Patreon](https://www.patreon.com/voxelltech) so that I can allocate more time to work on this project! 23 | 24 | 25 | How to use? 26 | --- 27 | *Note: The GPU version is not fully developed yet, this tutorial section will not work for the GPU version. 28 | 1. Create a mesh in [Blender](https://blender.org) that you want to simulate. 29 | 2. Use my custom Blender Addon - [Blender Mesh to JSON](https://github.com/voxell-tech/BlenderMeshToJSON) to transform your mesh into PBD form and export it into your Unity's `StreamingAssets` folder. 30 | 3. Create an empty GameObject in Unity. 31 | 4. Drag and drop `CPUClothSimulation.cs` or `GPUClothSimulation.cs` script onto the GameObject. (Check [Cloth Configurations](#cloth-configurations) for more cloth parameters' information.) 32 | 5. Select the correct JSON file that the Blender Cloth Exporter Tool exports using the button - `Select JSON File`. 33 | 6. Press the button - `Load Data from JSON`. 34 | 7. Put in your `Front Material` and `Back Material`. 35 | 8. Press `Build Mesh` to build the mesh that you have modeled in Blender. 36 | 9. Press `Create Back Side` to build the other side of the mesh. 37 | 10. Press `Apply Materials` to apply materials on both sides. 38 | 39 | 40 | Cloth Configurations 41 | --- 42 | These are the similar parameters in both CPU and GPU Cloth Simulation: 43 | 44 | ![Materials](./Pictures/materials.PNG) 45 | 46 | This determines the front material and back material for the cloth. 47 | 48 | ![ClothSimParam](./Pictures/cloth_simulation_parameters.PNG) 49 | 50 | Tweak these parameters to change the behaviour for the cloth. 51 | 1. Gravity: Constant acceleration. 52 | 2. Compression Stiffness: Coefficient for distance constraint when 2 particles are too close together. 53 | 3. Stretch Stiffness: Coefficient for distance constraint when 2 particles are too far away. 54 | 4. Bending Stiffness: Coefficient for bending constraint when 2 neighbor triangles are not at their rest angle. 55 | 5. Thickness: Cloth thickness for all collisions. 56 | 6. Damping: Multiplier of velocity for every simulation to reduce velocity (as air resistance). 57 | 58 | ![Simulation](./Pictures/simulation.PNG) 59 | 60 | Tweak these parameters to balance between accuracy and performance. 61 | 1. Iteration Steps: Number of iterations to solve constraints for every simulation. 62 | 2. Delta Time Step: Time pass between 2 simulations. 63 | 3. Start Simulation On Play: Choose if you want to start the simulation once you enter play mode. 64 | 65 | License 66 | --- 67 | This project is under MIT License. 68 | -------------------------------------------------------------------------------- /UserSettings/EditorUserSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!162 &1 4 | EditorUserSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_ConfigSettings: 8 | lightmappingDeviceAndPlatform: 9 | value: 53 10 | flags: 0 11 | vcSharedLogLevel: 12 | value: 0d5e400f0650 13 | flags: 0 14 | m_VCAutomaticAdd: 1 15 | m_VCDebugCom: 0 16 | m_VCDebugCmd: 0 17 | m_VCDebugOut: 0 18 | m_SemanticMergeMode: 2 19 | m_VCShowFailedCheckout: 1 20 | m_VCOverwriteFailedCheckoutAssets: 1 21 | m_VCOverlayIcons: 1 22 | m_VCAllowAsyncUpdate: 0 23 | --------------------------------------------------------------------------------