├── .gitignore ├── .gitignore.swp ├── Assets ├── Mistral Water.meta └── Mistral Water │ ├── Demo.meta │ ├── Demo │ ├── FFT Mesh.unity │ ├── FFT Mesh.unity.meta │ ├── Ocean Demo.unity │ ├── Ocean Demo.unity.meta │ ├── Pond.unity │ ├── Pond.unity.meta │ └── etc.meta │ ├── Materials.meta │ ├── Materials │ ├── New Material.mat │ ├── New Material.mat.meta │ ├── Pond Sand.mat │ ├── Pond Sand.mat.meta │ ├── Pond Water Mat.mat │ ├── Pond Water Mat.mat.meta │ ├── TestAnim.mat │ ├── TestAnim.mat.meta │ ├── TestFFT.mat │ └── TestFFT.mat.meta │ ├── Models.meta │ ├── Models │ ├── Ground.FBX │ └── Ground.FBX.meta │ ├── Papers.meta │ ├── Papers │ ├── 10.1.1.161.9102.pdf │ ├── 10.1.1.161.9102.pdf.meta │ ├── Liris-5812.pdf │ ├── Liris-5812.pdf.meta │ ├── Point-based_Rendering_of_Water_Surfaces_with_Splas.pdf │ ├── Point-based_Rendering_of_Water_Surfaces_with_Splas.pdf.meta │ ├── Realtime_GPU_ocean_rendering (1).pdf │ ├── Realtime_GPU_ocean_rendering (1).pdf.meta │ ├── paper_final.pdf │ ├── paper_final.pdf.meta │ ├── tr-2008-62.pdf │ ├── tr-2008-62.pdf.meta │ ├── wavesSCA.pdf │ └── wavesSCA.pdf.meta │ ├── Scripts.meta │ ├── Scripts │ ├── FFTMesh.cs │ ├── FFTMesh.cs.meta │ ├── OceanRenderer.cs │ └── OceanRenderer.cs.meta │ ├── Shaders.meta │ ├── Shaders │ ├── FFT.meta │ ├── FFT │ │ ├── Dispersion.shader │ │ ├── Dispersion.shader.meta │ │ ├── FFTCommon.cginc │ │ ├── FFTCommon.cginc.meta │ │ ├── InitialSpectrum.shader │ │ ├── InitialSpectrum.shader.meta │ │ ├── OceanNormal.shader │ │ ├── OceanNormal.shader.meta │ │ ├── Spectrum.shader │ │ ├── Spectrum.shader.meta │ │ ├── SpectrumHeight.shader │ │ ├── SpectrumHeight.shader.meta │ │ ├── Stockham.shader │ │ ├── Stockham.shader.meta │ │ ├── TestVertexAnim.shader │ │ ├── TestVertexAnim.shader.meta │ │ ├── WhiteCap.shader │ │ └── WhiteCap.shader.meta │ ├── MistralWaterBasic.shader │ ├── MistralWaterBasic.shader.meta │ ├── MistralWaterCommon.cginc │ ├── MistralWaterCommon.cginc.meta │ ├── MistralWaterLib.cginc │ ├── MistralWaterLib.cginc.meta │ ├── MistralWaterProperty.cginc │ ├── MistralWaterProperty.cginc.meta │ ├── TestOcean.shader │ └── TestOcean.shader.meta │ ├── Textures.meta │ └── Textures │ ├── 1514367473(1).png │ ├── 1514367473(1).png.meta │ ├── Sand3.png │ ├── Sand3.png.meta │ ├── Sunny4.cubemap │ ├── Sunny4.cubemap.meta │ ├── dice.jpg │ └── dice.jpg.meta ├── LICENSE ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset └── UnityConnectSettings.asset ├── Readme.md ├── Screenshot.png └── UnityPackageManager └── manifest.json /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | Assets/AssetStoreTools* 7 | 8 | # Visual Studio 2015 cache directory 9 | /.vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | 26 | Assets/Calm Water/ 27 | Assets/LowPolyWaterv2/ 28 | Assets/Standard Assets/ 29 | Assets/Calm Water.meta 30 | Assets/LowPolyWaterv2.meta 31 | Assets/Standard Assets.meta 32 | Assets/KriptoFX 33 | Assets/KriptoFX.meta 34 | 35 | # Unity3D generated meta files 36 | *.pidb.meta 37 | *.pdb.meta 38 | 39 | # Unity3D Generated File On Crash Reports 40 | sysinfo.txt 41 | 42 | # Builds 43 | *.apk 44 | *.unitypackage -------------------------------------------------------------------------------- /.gitignore.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/.gitignore.swp -------------------------------------------------------------------------------- /Assets/Mistral Water.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00de9b3c9c97db143b64265e0caf33d1 3 | folderAsset: yes 4 | timeCreated: 1510545463 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Demo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f85a8042207c95049bc4c1d5287af62f 3 | folderAsset: yes 4 | timeCreated: 1519724471 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Demo/FFT Mesh.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 8 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 11 46 | m_GIWorkflowMode: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_TemporalCoherenceThreshold: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 1 56 | m_LightmapEditorSettings: 57 | serializedVersion: 9 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_TextureWidth: 1024 61 | m_TextureHeight: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_LightingDataAsset: {fileID: 0} 92 | m_UseShadowmask: 1 93 | --- !u!196 &4 94 | NavMeshSettings: 95 | serializedVersion: 2 96 | m_ObjectHideFlags: 0 97 | m_BuildSettings: 98 | serializedVersion: 2 99 | agentTypeID: 0 100 | agentRadius: 0.5 101 | agentHeight: 2 102 | agentSlope: 45 103 | agentClimb: 0.4 104 | ledgeDropHeight: 0 105 | maxJumpAcrossDistance: 0 106 | minRegionArea: 2 107 | manualCellSize: 0 108 | cellSize: 0.16666667 109 | manualTileSize: 0 110 | tileSize: 256 111 | accuratePlacement: 0 112 | debug: 113 | m_Flags: 0 114 | m_NavMeshData: {fileID: 0} 115 | --- !u!1 &6018768 116 | GameObject: 117 | m_ObjectHideFlags: 0 118 | m_PrefabParentObject: {fileID: 0} 119 | m_PrefabInternal: {fileID: 0} 120 | serializedVersion: 5 121 | m_Component: 122 | - component: {fileID: 6018773} 123 | - component: {fileID: 6018772} 124 | - component: {fileID: 6018771} 125 | - component: {fileID: 6018770} 126 | - component: {fileID: 6018769} 127 | m_Layer: 0 128 | m_Name: Cube 129 | m_TagString: Untagged 130 | m_Icon: {fileID: 0} 131 | m_NavMeshLayer: 0 132 | m_StaticEditorFlags: 0 133 | m_IsActive: 1 134 | --- !u!114 &6018769 135 | MonoBehaviour: 136 | m_ObjectHideFlags: 0 137 | m_PrefabParentObject: {fileID: 0} 138 | m_PrefabInternal: {fileID: 0} 139 | m_GameObject: {fileID: 6018768} 140 | m_Enabled: 1 141 | m_EditorHideFlags: 0 142 | m_Script: {fileID: 11500000, guid: 8cc73d807e375a14e98139a65b524be7, type: 3} 143 | m_Name: 144 | m_EditorClassIdentifier: 145 | choppiness: 1 146 | tDivision: 1 147 | resolution: 12 148 | unitWidth: 1 149 | generate: 0 150 | length: 12.39 151 | wind: {x: 5, y: 3} 152 | amplitude: 0.01 153 | --- !u!23 &6018770 154 | MeshRenderer: 155 | m_ObjectHideFlags: 0 156 | m_PrefabParentObject: {fileID: 0} 157 | m_PrefabInternal: {fileID: 0} 158 | m_GameObject: {fileID: 6018768} 159 | m_Enabled: 1 160 | m_CastShadows: 1 161 | m_ReceiveShadows: 1 162 | m_DynamicOccludee: 1 163 | m_MotionVectors: 1 164 | m_LightProbeUsage: 1 165 | m_ReflectionProbeUsage: 1 166 | m_Materials: 167 | - {fileID: 2100000, guid: f221c53949cb0744abe86e744a2bb8c3, type: 2} 168 | m_StaticBatchInfo: 169 | firstSubMesh: 0 170 | subMeshCount: 0 171 | m_StaticBatchRoot: {fileID: 0} 172 | m_ProbeAnchor: {fileID: 0} 173 | m_LightProbeVolumeOverride: {fileID: 0} 174 | m_ScaleInLightmap: 1 175 | m_PreserveUVs: 1 176 | m_IgnoreNormalsForChartDetection: 0 177 | m_ImportantGI: 0 178 | m_StitchLightmapSeams: 0 179 | m_SelectedEditorRenderState: 3 180 | m_MinimumChartSize: 4 181 | m_AutoUVMaxDistance: 0.5 182 | m_AutoUVMaxAngle: 89 183 | m_LightmapParameters: {fileID: 0} 184 | m_SortingLayerID: 0 185 | m_SortingLayer: 0 186 | m_SortingOrder: 0 187 | --- !u!65 &6018771 188 | BoxCollider: 189 | m_ObjectHideFlags: 0 190 | m_PrefabParentObject: {fileID: 0} 191 | m_PrefabInternal: {fileID: 0} 192 | m_GameObject: {fileID: 6018768} 193 | m_Material: {fileID: 0} 194 | m_IsTrigger: 0 195 | m_Enabled: 1 196 | serializedVersion: 2 197 | m_Size: {x: 1, y: 1, z: 1} 198 | m_Center: {x: 0, y: 0, z: 0} 199 | --- !u!33 &6018772 200 | MeshFilter: 201 | m_ObjectHideFlags: 0 202 | m_PrefabParentObject: {fileID: 0} 203 | m_PrefabInternal: {fileID: 0} 204 | m_GameObject: {fileID: 6018768} 205 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 206 | --- !u!4 &6018773 207 | Transform: 208 | m_ObjectHideFlags: 0 209 | m_PrefabParentObject: {fileID: 0} 210 | m_PrefabInternal: {fileID: 0} 211 | m_GameObject: {fileID: 6018768} 212 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 213 | m_LocalPosition: {x: 0, y: 0, z: 0} 214 | m_LocalScale: {x: 1, y: 1, z: 1} 215 | m_Children: [] 216 | m_Father: {fileID: 0} 217 | m_RootOrder: 2 218 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 219 | --- !u!1 &1637165134 220 | GameObject: 221 | m_ObjectHideFlags: 0 222 | m_PrefabParentObject: {fileID: 0} 223 | m_PrefabInternal: {fileID: 0} 224 | serializedVersion: 5 225 | m_Component: 226 | - component: {fileID: 1637165138} 227 | - component: {fileID: 1637165137} 228 | - component: {fileID: 1637165136} 229 | - component: {fileID: 1637165135} 230 | m_Layer: 0 231 | m_Name: Main Camera 232 | m_TagString: MainCamera 233 | m_Icon: {fileID: 0} 234 | m_NavMeshLayer: 0 235 | m_StaticEditorFlags: 0 236 | m_IsActive: 1 237 | --- !u!81 &1637165135 238 | AudioListener: 239 | m_ObjectHideFlags: 0 240 | m_PrefabParentObject: {fileID: 0} 241 | m_PrefabInternal: {fileID: 0} 242 | m_GameObject: {fileID: 1637165134} 243 | m_Enabled: 1 244 | --- !u!124 &1637165136 245 | Behaviour: 246 | m_ObjectHideFlags: 0 247 | m_PrefabParentObject: {fileID: 0} 248 | m_PrefabInternal: {fileID: 0} 249 | m_GameObject: {fileID: 1637165134} 250 | m_Enabled: 1 251 | --- !u!20 &1637165137 252 | Camera: 253 | m_ObjectHideFlags: 0 254 | m_PrefabParentObject: {fileID: 0} 255 | m_PrefabInternal: {fileID: 0} 256 | m_GameObject: {fileID: 1637165134} 257 | m_Enabled: 1 258 | serializedVersion: 2 259 | m_ClearFlags: 1 260 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 261 | m_NormalizedViewPortRect: 262 | serializedVersion: 2 263 | x: 0 264 | y: 0 265 | width: 1 266 | height: 1 267 | near clip plane: 0.3 268 | far clip plane: 1000 269 | field of view: 60 270 | orthographic: 0 271 | orthographic size: 5 272 | m_Depth: -1 273 | m_CullingMask: 274 | serializedVersion: 2 275 | m_Bits: 4294967295 276 | m_RenderingPath: -1 277 | m_TargetTexture: {fileID: 0} 278 | m_TargetDisplay: 0 279 | m_TargetEye: 3 280 | m_HDR: 1 281 | m_AllowMSAA: 1 282 | m_ForceIntoRT: 0 283 | m_OcclusionCulling: 1 284 | m_StereoConvergence: 10 285 | m_StereoSeparation: 0.022 286 | --- !u!4 &1637165138 287 | Transform: 288 | m_ObjectHideFlags: 0 289 | m_PrefabParentObject: {fileID: 0} 290 | m_PrefabInternal: {fileID: 0} 291 | m_GameObject: {fileID: 1637165134} 292 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 293 | m_LocalPosition: {x: 0, y: 1, z: -10} 294 | m_LocalScale: {x: 1, y: 1, z: 1} 295 | m_Children: [] 296 | m_Father: {fileID: 0} 297 | m_RootOrder: 0 298 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 299 | --- !u!1 &2024254833 300 | GameObject: 301 | m_ObjectHideFlags: 0 302 | m_PrefabParentObject: {fileID: 0} 303 | m_PrefabInternal: {fileID: 0} 304 | serializedVersion: 5 305 | m_Component: 306 | - component: {fileID: 2024254835} 307 | - component: {fileID: 2024254834} 308 | m_Layer: 0 309 | m_Name: Directional Light 310 | m_TagString: Untagged 311 | m_Icon: {fileID: 0} 312 | m_NavMeshLayer: 0 313 | m_StaticEditorFlags: 0 314 | m_IsActive: 1 315 | --- !u!108 &2024254834 316 | Light: 317 | m_ObjectHideFlags: 0 318 | m_PrefabParentObject: {fileID: 0} 319 | m_PrefabInternal: {fileID: 0} 320 | m_GameObject: {fileID: 2024254833} 321 | m_Enabled: 1 322 | serializedVersion: 8 323 | m_Type: 1 324 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 325 | m_Intensity: 1 326 | m_Range: 10 327 | m_SpotAngle: 30 328 | m_CookieSize: 10 329 | m_Shadows: 330 | m_Type: 2 331 | m_Resolution: -1 332 | m_CustomResolution: -1 333 | m_Strength: 1 334 | m_Bias: 0.05 335 | m_NormalBias: 0.4 336 | m_NearPlane: 0.2 337 | m_Cookie: {fileID: 0} 338 | m_DrawHalo: 0 339 | m_Flare: {fileID: 0} 340 | m_RenderMode: 0 341 | m_CullingMask: 342 | serializedVersion: 2 343 | m_Bits: 4294967295 344 | m_Lightmapping: 4 345 | m_AreaSize: {x: 1, y: 1} 346 | m_BounceIntensity: 1 347 | m_ColorTemperature: 6570 348 | m_UseColorTemperature: 0 349 | m_ShadowRadius: 0 350 | m_ShadowAngle: 0 351 | --- !u!4 &2024254835 352 | Transform: 353 | m_ObjectHideFlags: 0 354 | m_PrefabParentObject: {fileID: 0} 355 | m_PrefabInternal: {fileID: 0} 356 | m_GameObject: {fileID: 2024254833} 357 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 358 | m_LocalPosition: {x: 0, y: 3, z: 0} 359 | m_LocalScale: {x: 1, y: 1, z: 1} 360 | m_Children: [] 361 | m_Father: {fileID: 0} 362 | m_RootOrder: 1 363 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 364 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Demo/FFT Mesh.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c67e32bcfe671448b426e68c5d747cc 3 | timeCreated: 1519726277 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Demo/Ocean Demo.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 8 17 | m_Fog: 0 18 | m_FogColor: {r: 0.89705884, g: 1, b: 0.9829615, a: 1} 19 | m_FogMode: 1 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 12.2 22 | m_LinearFogEnd: 22.3 23 | m_AmbientSkyColor: {r: 0.15500648, g: 0.29827133, b: 0.3455882, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 0.9 27 | m_AmbientMode: 3 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 2100000, guid: 4cdd49a883b276e42ae463ae8a0839b4, type: 2} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 0.58 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 0.58} 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 11 46 | m_GIWorkflowMode: 1 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_TemporalCoherenceThreshold: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 0 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 9 58 | m_Resolution: 0.5 59 | m_BakeResolution: 10 60 | m_TextureWidth: 1024 61 | m_TextureHeight: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 0 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 1024 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_LightingDataAsset: {fileID: 0} 92 | m_UseShadowmask: 1 93 | --- !u!196 &4 94 | NavMeshSettings: 95 | serializedVersion: 2 96 | m_ObjectHideFlags: 0 97 | m_BuildSettings: 98 | serializedVersion: 2 99 | agentTypeID: 0 100 | agentRadius: 0.5 101 | agentHeight: 2 102 | agentSlope: 45 103 | agentClimb: 0.4 104 | ledgeDropHeight: 0 105 | maxJumpAcrossDistance: 0 106 | minRegionArea: 2 107 | manualCellSize: 0 108 | cellSize: 0.16666667 109 | manualTileSize: 0 110 | tileSize: 256 111 | accuratePlacement: 0 112 | debug: 113 | m_Flags: 0 114 | m_NavMeshData: {fileID: 0} 115 | --- !u!1 &643142075 116 | GameObject: 117 | m_ObjectHideFlags: 0 118 | m_PrefabParentObject: {fileID: 0} 119 | m_PrefabInternal: {fileID: 0} 120 | serializedVersion: 5 121 | m_Component: 122 | - component: {fileID: 643142080} 123 | - component: {fileID: 643142079} 124 | - component: {fileID: 643142078} 125 | - component: {fileID: 643142077} 126 | - component: {fileID: 643142076} 127 | - component: {fileID: 643142081} 128 | - component: {fileID: 643142083} 129 | - component: {fileID: 643142082} 130 | - component: {fileID: 643142085} 131 | m_Layer: 0 132 | m_Name: Main Camera 133 | m_TagString: MainCamera 134 | m_Icon: {fileID: 0} 135 | m_NavMeshLayer: 0 136 | m_StaticEditorFlags: 0 137 | m_IsActive: 1 138 | --- !u!81 &643142076 139 | AudioListener: 140 | m_ObjectHideFlags: 0 141 | m_PrefabParentObject: {fileID: 0} 142 | m_PrefabInternal: {fileID: 0} 143 | m_GameObject: {fileID: 643142075} 144 | m_Enabled: 1 145 | --- !u!124 &643142077 146 | Behaviour: 147 | m_ObjectHideFlags: 0 148 | m_PrefabParentObject: {fileID: 0} 149 | m_PrefabInternal: {fileID: 0} 150 | m_GameObject: {fileID: 643142075} 151 | m_Enabled: 1 152 | --- !u!92 &643142078 153 | Behaviour: 154 | m_ObjectHideFlags: 0 155 | m_PrefabParentObject: {fileID: 0} 156 | m_PrefabInternal: {fileID: 0} 157 | m_GameObject: {fileID: 643142075} 158 | m_Enabled: 1 159 | --- !u!20 &643142079 160 | Camera: 161 | m_ObjectHideFlags: 0 162 | m_PrefabParentObject: {fileID: 0} 163 | m_PrefabInternal: {fileID: 0} 164 | m_GameObject: {fileID: 643142075} 165 | m_Enabled: 1 166 | serializedVersion: 2 167 | m_ClearFlags: 1 168 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} 169 | m_NormalizedViewPortRect: 170 | serializedVersion: 2 171 | x: 0 172 | y: 0 173 | width: 1 174 | height: 1 175 | near clip plane: 0.3 176 | far clip plane: 119.91 177 | field of view: 60 178 | orthographic: 0 179 | orthographic size: 5 180 | m_Depth: -1 181 | m_CullingMask: 182 | serializedVersion: 2 183 | m_Bits: 4294967295 184 | m_RenderingPath: -1 185 | m_TargetTexture: {fileID: 0} 186 | m_TargetDisplay: 0 187 | m_TargetEye: 3 188 | m_HDR: 0 189 | m_AllowMSAA: 1 190 | m_ForceIntoRT: 0 191 | m_OcclusionCulling: 1 192 | m_StereoConvergence: 10 193 | m_StereoSeparation: 0.022 194 | --- !u!4 &643142080 195 | Transform: 196 | m_ObjectHideFlags: 0 197 | m_PrefabParentObject: {fileID: 0} 198 | m_PrefabInternal: {fileID: 0} 199 | m_GameObject: {fileID: 643142075} 200 | m_LocalRotation: {x: -0.24654442, y: 0.6684956, z: -0.25162762, w: -0.654991} 201 | m_LocalPosition: {x: 21.320992, y: 24.874317, z: 4.926752} 202 | m_LocalScale: {x: 1, y: 1, z: 1} 203 | m_Children: [] 204 | m_Father: {fileID: 0} 205 | m_RootOrder: 0 206 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 207 | --- !u!114 &643142081 208 | MonoBehaviour: 209 | m_ObjectHideFlags: 0 210 | m_PrefabParentObject: {fileID: 0} 211 | m_PrefabInternal: {fileID: 0} 212 | m_GameObject: {fileID: 643142075} 213 | m_Enabled: 0 214 | m_EditorHideFlags: 0 215 | m_Script: {fileID: 11500000, guid: b07a4d92a9d44f44d8dfaba535d722a5, type: 3} 216 | m_Name: 217 | m_EditorClassIdentifier: 218 | fogColor: {r: 0.18101212, g: 0.45588237, b: 0.30802116, a: 0} 219 | height: -0.27 220 | heightDensity: 3.77 221 | startDistance: 0 222 | fogShader: {fileID: 4800000, guid: 472da7a0e387cf14abf12a99c96998fd, type: 3} 223 | --- !u!114 &643142082 224 | MonoBehaviour: 225 | m_ObjectHideFlags: 0 226 | m_PrefabParentObject: {fileID: 0} 227 | m_PrefabInternal: {fileID: 0} 228 | m_GameObject: {fileID: 643142075} 229 | m_Enabled: 1 230 | m_EditorHideFlags: 0 231 | m_Script: {fileID: 11500000, guid: 89ab086a088dbdf43af34865bb629a61, type: 3} 232 | m_Name: 233 | m_EditorClassIdentifier: 234 | target: {fileID: 0} 235 | distance: 10 236 | xSpeed: 10 237 | ySpeed: 10 238 | scrollSpeed: 1 239 | yMinLimit: -25 240 | yMaxLimit: 80 241 | distanceMin: 2 242 | distanceMax: 15 243 | smoothTime: 1 244 | --- !u!114 &643142083 245 | MonoBehaviour: 246 | m_ObjectHideFlags: 0 247 | m_PrefabParentObject: {fileID: 0} 248 | m_PrefabInternal: {fileID: 0} 249 | m_GameObject: {fileID: 643142075} 250 | m_Enabled: 1 251 | m_EditorHideFlags: 0 252 | m_Script: {fileID: 11500000, guid: ac7cf5b78ee0626469d578a6d36e8711, type: 3} 253 | m_Name: 254 | m_EditorClassIdentifier: 255 | FadeSpeed: 0.1 256 | --- !u!114 &643142085 257 | MonoBehaviour: 258 | m_ObjectHideFlags: 0 259 | m_PrefabParentObject: {fileID: 0} 260 | m_PrefabInternal: {fileID: 0} 261 | m_GameObject: {fileID: 643142075} 262 | m_Enabled: 1 263 | m_EditorHideFlags: 0 264 | m_Script: {fileID: 11500000, guid: b13eae8395451ad4fb04aabb9cf6ef20, type: 3} 265 | m_Name: 266 | m_EditorClassIdentifier: 267 | --- !u!1 &1170006395 268 | GameObject: 269 | m_ObjectHideFlags: 0 270 | m_PrefabParentObject: {fileID: 0} 271 | m_PrefabInternal: {fileID: 0} 272 | serializedVersion: 5 273 | m_Component: 274 | - component: {fileID: 1170006399} 275 | - component: {fileID: 1170006398} 276 | - component: {fileID: 1170006397} 277 | - component: {fileID: 1170006396} 278 | m_Layer: 0 279 | m_Name: Cube (1) 280 | m_TagString: Untagged 281 | m_Icon: {fileID: 0} 282 | m_NavMeshLayer: 0 283 | m_StaticEditorFlags: 0 284 | m_IsActive: 1 285 | --- !u!114 &1170006396 286 | MonoBehaviour: 287 | m_ObjectHideFlags: 0 288 | m_PrefabParentObject: {fileID: 0} 289 | m_PrefabInternal: {fileID: 0} 290 | m_GameObject: {fileID: 1170006395} 291 | m_Enabled: 1 292 | m_EditorHideFlags: 0 293 | m_Script: {fileID: 11500000, guid: 43d70ac175181bc4d9adfb8cd3265fa4, type: 3} 294 | m_Name: 295 | m_EditorClassIdentifier: 296 | mult: 1.5 297 | unitWidth: 1 298 | resolution: 128 299 | length: 434.48 300 | choppiness: 0.46 301 | amplitude: 0.41 302 | wind: {x: 14.45, y: 12} 303 | initialShader: {fileID: 4800000, guid: 21c4ac58ae010c34d80548258a7d04cb, type: 3} 304 | spectrumShader: {fileID: 4800000, guid: 2d916f91fd03d9d4db57387d980c2dca, type: 3} 305 | spectrumHeightShader: {fileID: 4800000, guid: 9aada42521b6c9b4bb7715f7cdc382ad, 306 | type: 3} 307 | fftShader: {fileID: 4800000, guid: dd0778c9e8af33e48926e95a32aeca5b, type: 3} 308 | dispersionShader: {fileID: 4800000, guid: 12885d2a1a42c4c44a62faed049a0f93, type: 3} 309 | normalShader: {fileID: 4800000, guid: a9e529eb686332a4691cbc08853ec8ba, type: 3} 310 | whiteShader: {fileID: 4800000, guid: 870a8f53e1970f54ba070e16dd12b13b, type: 3} 311 | --- !u!23 &1170006397 312 | MeshRenderer: 313 | m_ObjectHideFlags: 0 314 | m_PrefabParentObject: {fileID: 0} 315 | m_PrefabInternal: {fileID: 0} 316 | m_GameObject: {fileID: 1170006395} 317 | m_Enabled: 1 318 | m_CastShadows: 1 319 | m_ReceiveShadows: 1 320 | m_DynamicOccludee: 1 321 | m_MotionVectors: 1 322 | m_LightProbeUsage: 1 323 | m_ReflectionProbeUsage: 1 324 | m_Materials: 325 | - {fileID: 2100000, guid: c057b2bcc4cd83a42bfe72b30332bf2a, type: 2} 326 | m_StaticBatchInfo: 327 | firstSubMesh: 0 328 | subMeshCount: 0 329 | m_StaticBatchRoot: {fileID: 0} 330 | m_ProbeAnchor: {fileID: 0} 331 | m_LightProbeVolumeOverride: {fileID: 0} 332 | m_ScaleInLightmap: 1 333 | m_PreserveUVs: 1 334 | m_IgnoreNormalsForChartDetection: 0 335 | m_ImportantGI: 0 336 | m_StitchLightmapSeams: 0 337 | m_SelectedEditorRenderState: 3 338 | m_MinimumChartSize: 4 339 | m_AutoUVMaxDistance: 0.5 340 | m_AutoUVMaxAngle: 89 341 | m_LightmapParameters: {fileID: 0} 342 | m_SortingLayerID: 0 343 | m_SortingLayer: 0 344 | m_SortingOrder: 0 345 | --- !u!33 &1170006398 346 | MeshFilter: 347 | m_ObjectHideFlags: 0 348 | m_PrefabParentObject: {fileID: 0} 349 | m_PrefabInternal: {fileID: 0} 350 | m_GameObject: {fileID: 1170006395} 351 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 352 | --- !u!4 &1170006399 353 | Transform: 354 | m_ObjectHideFlags: 0 355 | m_PrefabParentObject: {fileID: 0} 356 | m_PrefabInternal: {fileID: 0} 357 | m_GameObject: {fileID: 1170006395} 358 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 359 | m_LocalPosition: {x: -10.247284, y: 26.6, z: 5.0143905} 360 | m_LocalScale: {x: 1, y: 1, z: 1} 361 | m_Children: [] 362 | m_Father: {fileID: 0} 363 | m_RootOrder: 1 364 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 365 | --- !u!1 &1320248789 366 | GameObject: 367 | m_ObjectHideFlags: 0 368 | m_PrefabParentObject: {fileID: 0} 369 | m_PrefabInternal: {fileID: 0} 370 | serializedVersion: 5 371 | m_Component: 372 | - component: {fileID: 1320248791} 373 | - component: {fileID: 1320248790} 374 | m_Layer: 0 375 | m_Name: Directional light 376 | m_TagString: Untagged 377 | m_Icon: {fileID: 0} 378 | m_NavMeshLayer: 0 379 | m_StaticEditorFlags: 0 380 | m_IsActive: 1 381 | --- !u!108 &1320248790 382 | Light: 383 | m_ObjectHideFlags: 0 384 | m_PrefabParentObject: {fileID: 0} 385 | m_PrefabInternal: {fileID: 0} 386 | m_GameObject: {fileID: 1320248789} 387 | m_Enabled: 1 388 | serializedVersion: 8 389 | m_Type: 1 390 | m_Color: {r: 1, g: 1, b: 1, a: 1} 391 | m_Intensity: 1 392 | m_Range: 10 393 | m_SpotAngle: 30 394 | m_CookieSize: 10 395 | m_Shadows: 396 | m_Type: 0 397 | m_Resolution: -1 398 | m_CustomResolution: -1 399 | m_Strength: 1 400 | m_Bias: 0.05 401 | m_NormalBias: 0.4 402 | m_NearPlane: 0.2 403 | m_Cookie: {fileID: 0} 404 | m_DrawHalo: 0 405 | m_Flare: {fileID: 0} 406 | m_RenderMode: 0 407 | m_CullingMask: 408 | serializedVersion: 2 409 | m_Bits: 4294967295 410 | m_Lightmapping: 4 411 | m_AreaSize: {x: 1, y: 1} 412 | m_BounceIntensity: 1 413 | m_ColorTemperature: 6570 414 | m_UseColorTemperature: 0 415 | m_ShadowRadius: 0 416 | m_ShadowAngle: 0 417 | --- !u!4 &1320248791 418 | Transform: 419 | m_ObjectHideFlags: 0 420 | m_PrefabParentObject: {fileID: 0} 421 | m_PrefabInternal: {fileID: 0} 422 | m_GameObject: {fileID: 1320248789} 423 | m_LocalRotation: {x: -0.1367863, y: 0.8402927, z: -0.46178302, w: -0.24890593} 424 | m_LocalPosition: {x: -74.2144, y: 11.719749, z: -15.08461} 425 | m_LocalScale: {x: 1, y: 1, z: 1} 426 | m_Children: [] 427 | m_Father: {fileID: 0} 428 | m_RootOrder: 2 429 | m_LocalEulerAnglesHint: {x: 57.582005, y: 213, z: 0} 430 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Demo/Ocean Demo.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 72aa016e1f59c9f499a7c09817225c76 3 | timeCreated: 1519724487 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Demo/Pond.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 8 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 11 46 | m_GIWorkflowMode: 1 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_TemporalCoherenceThreshold: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 1 56 | m_LightmapEditorSettings: 57 | serializedVersion: 9 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_TextureWidth: 1024 61 | m_TextureHeight: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_LightingDataAsset: {fileID: 0} 92 | m_UseShadowmask: 1 93 | --- !u!196 &4 94 | NavMeshSettings: 95 | serializedVersion: 2 96 | m_ObjectHideFlags: 0 97 | m_BuildSettings: 98 | serializedVersion: 2 99 | agentTypeID: 0 100 | agentRadius: 0.5 101 | agentHeight: 2 102 | agentSlope: 45 103 | agentClimb: 0.4 104 | ledgeDropHeight: 0 105 | maxJumpAcrossDistance: 0 106 | minRegionArea: 2 107 | manualCellSize: 0 108 | cellSize: 0.16666667 109 | manualTileSize: 0 110 | tileSize: 256 111 | accuratePlacement: 0 112 | debug: 113 | m_Flags: 0 114 | m_NavMeshData: {fileID: 0} 115 | --- !u!1 &326792560 116 | GameObject: 117 | m_ObjectHideFlags: 0 118 | m_PrefabParentObject: {fileID: 0} 119 | m_PrefabInternal: {fileID: 0} 120 | serializedVersion: 5 121 | m_Component: 122 | - component: {fileID: 326792564} 123 | - component: {fileID: 326792563} 124 | - component: {fileID: 326792562} 125 | - component: {fileID: 326792561} 126 | m_Layer: 0 127 | m_Name: Capsule 128 | m_TagString: Untagged 129 | m_Icon: {fileID: 0} 130 | m_NavMeshLayer: 0 131 | m_StaticEditorFlags: 0 132 | m_IsActive: 1 133 | --- !u!23 &326792561 134 | MeshRenderer: 135 | m_ObjectHideFlags: 0 136 | m_PrefabParentObject: {fileID: 0} 137 | m_PrefabInternal: {fileID: 0} 138 | m_GameObject: {fileID: 326792560} 139 | m_Enabled: 1 140 | m_CastShadows: 1 141 | m_ReceiveShadows: 1 142 | m_DynamicOccludee: 1 143 | m_MotionVectors: 1 144 | m_LightProbeUsage: 1 145 | m_ReflectionProbeUsage: 1 146 | m_Materials: 147 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 148 | m_StaticBatchInfo: 149 | firstSubMesh: 0 150 | subMeshCount: 0 151 | m_StaticBatchRoot: {fileID: 0} 152 | m_ProbeAnchor: {fileID: 0} 153 | m_LightProbeVolumeOverride: {fileID: 0} 154 | m_ScaleInLightmap: 1 155 | m_PreserveUVs: 1 156 | m_IgnoreNormalsForChartDetection: 0 157 | m_ImportantGI: 0 158 | m_StitchLightmapSeams: 0 159 | m_SelectedEditorRenderState: 3 160 | m_MinimumChartSize: 4 161 | m_AutoUVMaxDistance: 0.5 162 | m_AutoUVMaxAngle: 89 163 | m_LightmapParameters: {fileID: 0} 164 | m_SortingLayerID: 0 165 | m_SortingLayer: 0 166 | m_SortingOrder: 0 167 | --- !u!136 &326792562 168 | CapsuleCollider: 169 | m_ObjectHideFlags: 0 170 | m_PrefabParentObject: {fileID: 0} 171 | m_PrefabInternal: {fileID: 0} 172 | m_GameObject: {fileID: 326792560} 173 | m_Material: {fileID: 0} 174 | m_IsTrigger: 0 175 | m_Enabled: 1 176 | m_Radius: 0.5 177 | m_Height: 2 178 | m_Direction: 1 179 | m_Center: {x: 0, y: 0, z: 0} 180 | --- !u!33 &326792563 181 | MeshFilter: 182 | m_ObjectHideFlags: 0 183 | m_PrefabParentObject: {fileID: 0} 184 | m_PrefabInternal: {fileID: 0} 185 | m_GameObject: {fileID: 326792560} 186 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 187 | --- !u!4 &326792564 188 | Transform: 189 | m_ObjectHideFlags: 0 190 | m_PrefabParentObject: {fileID: 0} 191 | m_PrefabInternal: {fileID: 0} 192 | m_GameObject: {fileID: 326792560} 193 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 194 | m_LocalPosition: {x: -3.78, y: 1.67, z: -4.57} 195 | m_LocalScale: {x: 3, y: 3, z: 3} 196 | m_Children: [] 197 | m_Father: {fileID: 0} 198 | m_RootOrder: 5 199 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 200 | --- !u!1 &1086200614 201 | GameObject: 202 | m_ObjectHideFlags: 0 203 | m_PrefabParentObject: {fileID: 0} 204 | m_PrefabInternal: {fileID: 0} 205 | serializedVersion: 5 206 | m_Component: 207 | - component: {fileID: 1086200616} 208 | - component: {fileID: 1086200615} 209 | m_Layer: 0 210 | m_Name: Point light 211 | m_TagString: Untagged 212 | m_Icon: {fileID: 0} 213 | m_NavMeshLayer: 0 214 | m_StaticEditorFlags: 0 215 | m_IsActive: 1 216 | --- !u!108 &1086200615 217 | Light: 218 | m_ObjectHideFlags: 0 219 | m_PrefabParentObject: {fileID: 0} 220 | m_PrefabInternal: {fileID: 0} 221 | m_GameObject: {fileID: 1086200614} 222 | m_Enabled: 1 223 | serializedVersion: 8 224 | m_Type: 2 225 | m_Color: {r: 1, g: 1, b: 1, a: 1} 226 | m_Intensity: 1 227 | m_Range: 52.7 228 | m_SpotAngle: 30 229 | m_CookieSize: 10 230 | m_Shadows: 231 | m_Type: 0 232 | m_Resolution: -1 233 | m_CustomResolution: -1 234 | m_Strength: 1 235 | m_Bias: 0.05 236 | m_NormalBias: 0.4 237 | m_NearPlane: 0.2 238 | m_Cookie: {fileID: 0} 239 | m_DrawHalo: 0 240 | m_Flare: {fileID: 0} 241 | m_RenderMode: 0 242 | m_CullingMask: 243 | serializedVersion: 2 244 | m_Bits: 4294967295 245 | m_Lightmapping: 4 246 | m_AreaSize: {x: 1, y: 1} 247 | m_BounceIntensity: 1 248 | m_ColorTemperature: 6570 249 | m_UseColorTemperature: 0 250 | m_ShadowRadius: 0 251 | m_ShadowAngle: 0 252 | --- !u!4 &1086200616 253 | Transform: 254 | m_ObjectHideFlags: 0 255 | m_PrefabParentObject: {fileID: 0} 256 | m_PrefabInternal: {fileID: 0} 257 | m_GameObject: {fileID: 1086200614} 258 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 259 | m_LocalPosition: {x: 5.64, y: 2.79, z: -2.25} 260 | m_LocalScale: {x: 1, y: 1, z: 1} 261 | m_Children: [] 262 | m_Father: {fileID: 0} 263 | m_RootOrder: 4 264 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 265 | --- !u!1 &1094788049 266 | GameObject: 267 | m_ObjectHideFlags: 0 268 | m_PrefabParentObject: {fileID: 0} 269 | m_PrefabInternal: {fileID: 0} 270 | serializedVersion: 5 271 | m_Component: 272 | - component: {fileID: 1094788051} 273 | - component: {fileID: 1094788050} 274 | m_Layer: 0 275 | m_Name: Directional Light 276 | m_TagString: Untagged 277 | m_Icon: {fileID: 0} 278 | m_NavMeshLayer: 0 279 | m_StaticEditorFlags: 0 280 | m_IsActive: 1 281 | --- !u!108 &1094788050 282 | Light: 283 | m_ObjectHideFlags: 0 284 | m_PrefabParentObject: {fileID: 0} 285 | m_PrefabInternal: {fileID: 0} 286 | m_GameObject: {fileID: 1094788049} 287 | m_Enabled: 1 288 | serializedVersion: 8 289 | m_Type: 1 290 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 291 | m_Intensity: 1 292 | m_Range: 10 293 | m_SpotAngle: 30 294 | m_CookieSize: 10 295 | m_Shadows: 296 | m_Type: 2 297 | m_Resolution: -1 298 | m_CustomResolution: -1 299 | m_Strength: 1 300 | m_Bias: 0.05 301 | m_NormalBias: 0.4 302 | m_NearPlane: 0.2 303 | m_Cookie: {fileID: 0} 304 | m_DrawHalo: 0 305 | m_Flare: {fileID: 0} 306 | m_RenderMode: 0 307 | m_CullingMask: 308 | serializedVersion: 2 309 | m_Bits: 4294967295 310 | m_Lightmapping: 4 311 | m_AreaSize: {x: 1, y: 1} 312 | m_BounceIntensity: 1 313 | m_ColorTemperature: 6570 314 | m_UseColorTemperature: 0 315 | m_ShadowRadius: 0 316 | m_ShadowAngle: 0 317 | --- !u!4 &1094788051 318 | Transform: 319 | m_ObjectHideFlags: 0 320 | m_PrefabParentObject: {fileID: 0} 321 | m_PrefabInternal: {fileID: 0} 322 | m_GameObject: {fileID: 1094788049} 323 | m_LocalRotation: {x: 0.31638676, y: -0.24454117, z: 0.08477556, w: 0.9126402} 324 | m_LocalPosition: {x: 0, y: 3, z: 0} 325 | m_LocalScale: {x: 1, y: 1, z: 1} 326 | m_Children: [] 327 | m_Father: {fileID: 0} 328 | m_RootOrder: 2 329 | m_LocalEulerAnglesHint: {x: 38.24, y: -30, z: 0} 330 | --- !u!1 &1411385538 331 | GameObject: 332 | m_ObjectHideFlags: 0 333 | m_PrefabParentObject: {fileID: 0} 334 | m_PrefabInternal: {fileID: 0} 335 | serializedVersion: 5 336 | m_Component: 337 | - component: {fileID: 1411385542} 338 | - component: {fileID: 1411385541} 339 | - component: {fileID: 1411385540} 340 | - component: {fileID: 1411385539} 341 | - component: {fileID: 1411385543} 342 | m_Layer: 4 343 | m_Name: Plane 344 | m_TagString: Untagged 345 | m_Icon: {fileID: 0} 346 | m_NavMeshLayer: 0 347 | m_StaticEditorFlags: 0 348 | m_IsActive: 1 349 | --- !u!23 &1411385539 350 | MeshRenderer: 351 | m_ObjectHideFlags: 0 352 | m_PrefabParentObject: {fileID: 0} 353 | m_PrefabInternal: {fileID: 0} 354 | m_GameObject: {fileID: 1411385538} 355 | m_Enabled: 1 356 | m_CastShadows: 1 357 | m_ReceiveShadows: 1 358 | m_DynamicOccludee: 1 359 | m_MotionVectors: 1 360 | m_LightProbeUsage: 1 361 | m_ReflectionProbeUsage: 1 362 | m_Materials: 363 | - {fileID: 2100000, guid: f221c53949cb0744abe86e744a2bb8c3, type: 2} 364 | m_StaticBatchInfo: 365 | firstSubMesh: 0 366 | subMeshCount: 0 367 | m_StaticBatchRoot: {fileID: 0} 368 | m_ProbeAnchor: {fileID: 0} 369 | m_LightProbeVolumeOverride: {fileID: 0} 370 | m_ScaleInLightmap: 1 371 | m_PreserveUVs: 1 372 | m_IgnoreNormalsForChartDetection: 0 373 | m_ImportantGI: 0 374 | m_StitchLightmapSeams: 0 375 | m_SelectedEditorRenderState: 3 376 | m_MinimumChartSize: 4 377 | m_AutoUVMaxDistance: 0.5 378 | m_AutoUVMaxAngle: 89 379 | m_LightmapParameters: {fileID: 0} 380 | m_SortingLayerID: 0 381 | m_SortingLayer: 0 382 | m_SortingOrder: 0 383 | --- !u!64 &1411385540 384 | MeshCollider: 385 | m_ObjectHideFlags: 0 386 | m_PrefabParentObject: {fileID: 0} 387 | m_PrefabInternal: {fileID: 0} 388 | m_GameObject: {fileID: 1411385538} 389 | m_Material: {fileID: 0} 390 | m_IsTrigger: 0 391 | m_Enabled: 1 392 | serializedVersion: 2 393 | m_Convex: 0 394 | m_InflateMesh: 0 395 | m_SkinWidth: 0.01 396 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 397 | --- !u!33 &1411385541 398 | MeshFilter: 399 | m_ObjectHideFlags: 0 400 | m_PrefabParentObject: {fileID: 0} 401 | m_PrefabInternal: {fileID: 0} 402 | m_GameObject: {fileID: 1411385538} 403 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 404 | --- !u!4 &1411385542 405 | Transform: 406 | m_ObjectHideFlags: 0 407 | m_PrefabParentObject: {fileID: 0} 408 | m_PrefabInternal: {fileID: 0} 409 | m_GameObject: {fileID: 1411385538} 410 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 411 | m_LocalPosition: {x: 0, y: -0.65, z: 0} 412 | m_LocalScale: {x: 1.8, y: 1.8, z: 1.8} 413 | m_Children: [] 414 | m_Father: {fileID: 0} 415 | m_RootOrder: 3 416 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 417 | --- !u!114 &1411385543 418 | MonoBehaviour: 419 | m_ObjectHideFlags: 0 420 | m_PrefabParentObject: {fileID: 0} 421 | m_PrefabInternal: {fileID: 0} 422 | m_GameObject: {fileID: 1411385538} 423 | m_Enabled: 1 424 | m_EditorHideFlags: 0 425 | m_Script: {fileID: 11500000, guid: d68db923f95adea46bcea255ebacf5f8, type: 3} 426 | m_Name: 427 | m_EditorClassIdentifier: 428 | reflectionMask: 429 | serializedVersion: 2 430 | m_Bits: 4294967295 431 | clearColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 432 | reflectSkybox: 1 433 | m_DisablePixelLights: 0 434 | UpdateSceneView: 1 435 | clipPlaneOffset: 0.07 436 | --- !u!1001 &1568721199 437 | Prefab: 438 | m_ObjectHideFlags: 0 439 | serializedVersion: 2 440 | m_Modification: 441 | m_TransformParent: {fileID: 0} 442 | m_Modifications: 443 | - target: {fileID: 400000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 444 | propertyPath: m_LocalPosition.x 445 | value: 0 446 | objectReference: {fileID: 0} 447 | - target: {fileID: 400000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 448 | propertyPath: m_LocalPosition.y 449 | value: 0 450 | objectReference: {fileID: 0} 451 | - target: {fileID: 400000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 452 | propertyPath: m_LocalPosition.z 453 | value: 0 454 | objectReference: {fileID: 0} 455 | - target: {fileID: 400000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 456 | propertyPath: m_LocalRotation.x 457 | value: 0.000000021855694 458 | objectReference: {fileID: 0} 459 | - target: {fileID: 400000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 460 | propertyPath: m_LocalRotation.y 461 | value: -0 462 | objectReference: {fileID: 0} 463 | - target: {fileID: 400000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 464 | propertyPath: m_LocalRotation.z 465 | value: -0 466 | objectReference: {fileID: 0} 467 | - target: {fileID: 400000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 468 | propertyPath: m_LocalRotation.w 469 | value: 1 470 | objectReference: {fileID: 0} 471 | - target: {fileID: 400000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 472 | propertyPath: m_RootOrder 473 | value: 1 474 | objectReference: {fileID: 0} 475 | - target: {fileID: 2300000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 476 | propertyPath: m_Materials.Array.data[0] 477 | value: 478 | objectReference: {fileID: 2100000, guid: 6a8b68c907de5ca4babc89c8b85f9123, type: 2} 479 | m_RemovedComponents: [] 480 | m_ParentPrefab: {fileID: 100100000, guid: bd2088ec9c92d204ba361ca2d9ae4c34, type: 3} 481 | m_IsPrefabParent: 0 482 | --- !u!1 &1770168287 483 | GameObject: 484 | m_ObjectHideFlags: 0 485 | m_PrefabParentObject: {fileID: 0} 486 | m_PrefabInternal: {fileID: 0} 487 | serializedVersion: 5 488 | m_Component: 489 | - component: {fileID: 1770168291} 490 | - component: {fileID: 1770168290} 491 | - component: {fileID: 1770168289} 492 | - component: {fileID: 1770168288} 493 | - component: {fileID: 1770168293} 494 | - component: {fileID: 1770168292} 495 | m_Layer: 4 496 | m_Name: Main Camera 497 | m_TagString: MainCamera 498 | m_Icon: {fileID: 0} 499 | m_NavMeshLayer: 0 500 | m_StaticEditorFlags: 0 501 | m_IsActive: 1 502 | --- !u!81 &1770168288 503 | AudioListener: 504 | m_ObjectHideFlags: 0 505 | m_PrefabParentObject: {fileID: 0} 506 | m_PrefabInternal: {fileID: 0} 507 | m_GameObject: {fileID: 1770168287} 508 | m_Enabled: 1 509 | --- !u!124 &1770168289 510 | Behaviour: 511 | m_ObjectHideFlags: 0 512 | m_PrefabParentObject: {fileID: 0} 513 | m_PrefabInternal: {fileID: 0} 514 | m_GameObject: {fileID: 1770168287} 515 | m_Enabled: 1 516 | --- !u!20 &1770168290 517 | Camera: 518 | m_ObjectHideFlags: 0 519 | m_PrefabParentObject: {fileID: 0} 520 | m_PrefabInternal: {fileID: 0} 521 | m_GameObject: {fileID: 1770168287} 522 | m_Enabled: 1 523 | serializedVersion: 2 524 | m_ClearFlags: 1 525 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 526 | m_NormalizedViewPortRect: 527 | serializedVersion: 2 528 | x: 0 529 | y: 0 530 | width: 1 531 | height: 1 532 | near clip plane: 0.3 533 | far clip plane: 1000 534 | field of view: 60 535 | orthographic: 0 536 | orthographic size: 5 537 | m_Depth: -1 538 | m_CullingMask: 539 | serializedVersion: 2 540 | m_Bits: 4294967295 541 | m_RenderingPath: -1 542 | m_TargetTexture: {fileID: 0} 543 | m_TargetDisplay: 0 544 | m_TargetEye: 3 545 | m_HDR: 1 546 | m_AllowMSAA: 1 547 | m_ForceIntoRT: 0 548 | m_OcclusionCulling: 1 549 | m_StereoConvergence: 10 550 | m_StereoSeparation: 0.022 551 | --- !u!4 &1770168291 552 | Transform: 553 | m_ObjectHideFlags: 0 554 | m_PrefabParentObject: {fileID: 0} 555 | m_PrefabInternal: {fileID: 0} 556 | m_GameObject: {fileID: 1770168287} 557 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 558 | m_LocalPosition: {x: 0, y: 1, z: -10} 559 | m_LocalScale: {x: 1, y: 1, z: 1} 560 | m_Children: [] 561 | m_Father: {fileID: 0} 562 | m_RootOrder: 0 563 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 564 | --- !u!114 &1770168292 565 | MonoBehaviour: 566 | m_ObjectHideFlags: 0 567 | m_PrefabParentObject: {fileID: 0} 568 | m_PrefabInternal: {fileID: 0} 569 | m_GameObject: {fileID: 1770168287} 570 | m_Enabled: 1 571 | m_EditorHideFlags: 0 572 | m_Script: {fileID: 11500000, guid: d68db923f95adea46bcea255ebacf5f8, type: 3} 573 | m_Name: 574 | m_EditorClassIdentifier: 575 | reflectionMask: 576 | serializedVersion: 2 577 | m_Bits: 4294967295 578 | clearColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 579 | reflectSkybox: 1 580 | m_DisablePixelLights: 0 581 | UpdateSceneView: 1 582 | clipPlaneOffset: 0.07 583 | --- !u!23 &1770168293 584 | MeshRenderer: 585 | m_ObjectHideFlags: 0 586 | m_PrefabParentObject: {fileID: 0} 587 | m_PrefabInternal: {fileID: 0} 588 | m_GameObject: {fileID: 1770168287} 589 | m_Enabled: 1 590 | m_CastShadows: 1 591 | m_ReceiveShadows: 1 592 | m_DynamicOccludee: 1 593 | m_MotionVectors: 1 594 | m_LightProbeUsage: 1 595 | m_ReflectionProbeUsage: 1 596 | m_Materials: 597 | - {fileID: 0} 598 | m_StaticBatchInfo: 599 | firstSubMesh: 0 600 | subMeshCount: 0 601 | m_StaticBatchRoot: {fileID: 0} 602 | m_ProbeAnchor: {fileID: 0} 603 | m_LightProbeVolumeOverride: {fileID: 0} 604 | m_ScaleInLightmap: 1 605 | m_PreserveUVs: 0 606 | m_IgnoreNormalsForChartDetection: 0 607 | m_ImportantGI: 0 608 | m_StitchLightmapSeams: 0 609 | m_SelectedEditorRenderState: 3 610 | m_MinimumChartSize: 4 611 | m_AutoUVMaxDistance: 0.5 612 | m_AutoUVMaxAngle: 89 613 | m_LightmapParameters: {fileID: 0} 614 | m_SortingLayerID: 0 615 | m_SortingLayer: 0 616 | m_SortingOrder: 0 617 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Demo/Pond.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d3624445b89878446bcacde2eb6c145a 3 | timeCreated: 1520775417 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Demo/etc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2f6a493b57137bf458b1eb7ef7a4bee0 3 | folderAsset: yes 4 | timeCreated: 1523430513 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9455bf949dd517c4e8c342f54795b3cb 3 | folderAsset: yes 4 | timeCreated: 1510557395 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/New Material.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_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: New Material 10 | m_Shader: {fileID: 4800000, guid: 8b502de671330ce4999aefe109ebaf08, type: 3} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _Anim: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _Bump: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _BumpMap: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailAlbedoMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _DetailMask: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _DetailNormalMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _EmissionMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _Height: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _MainTex: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _MetallicGlossMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | - _OcclusionMap: 62 | m_Texture: {fileID: 0} 63 | m_Scale: {x: 1, y: 1} 64 | m_Offset: {x: 0, y: 0} 65 | - _ParallaxMap: 66 | m_Texture: {fileID: 0} 67 | m_Scale: {x: 1, y: 1} 68 | m_Offset: {x: 0, y: 0} 69 | - _White: 70 | m_Texture: {fileID: 0} 71 | m_Scale: {x: 1, y: 1} 72 | m_Offset: {x: 0, y: 0} 73 | m_Floats: 74 | - _BumpScale: 1 75 | - _Cutoff: 0.5 76 | - _DetailNormalMapScale: 1 77 | - _DstBlend: 0 78 | - _GlossMapScale: 1 79 | - _Glossiness: 20 80 | - _GlossyReflections: 1 81 | - _LightWrap: 0.79 82 | - _Metallic: 0 83 | - _Mode: 0 84 | - _OcclusionStrength: 1 85 | - _Parallax: 0.02 86 | - _SmoothnessTextureChannel: 0 87 | - _SpecularHighlights: 1 88 | - _SrcBlend: 1 89 | - _UVSec: 0 90 | - _ZWrite: 1 91 | m_Colors: 92 | - _Color: {r: 1, g: 1, b: 1, a: 1} 93 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 94 | - _RimColor: {r: 0, g: 0.07834684, b: 0.1102941, a: 1} 95 | - _SpecColor: {r: 0.072934695, g: 0.11760231, b: 0.1397059, a: 1} 96 | - _Tint: {r: 0.2297794, g: 0.31249997, b: 0.36764705, a: 1} 97 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/New Material.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c057b2bcc4cd83a42bfe72b30332bf2a 3 | timeCreated: 1513606637 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/Pond Sand.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_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Pond Sand 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 2800000, guid: 41b38f6f6da8273438f13a1582f0696b, type: 3} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.5 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 1, g: 1, b: 1, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/Pond Sand.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6a8b68c907de5ca4babc89c8b85f9123 3 | timeCreated: 1520775268 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/Pond Water Mat.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_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Pond Water Mat 10 | m_Shader: {fileID: 4800000, guid: b13ed00e64f067a44868005035aa9344, type: 3} 11 | m_ShaderKeywords: _DEPTHFOG_ON _DISPLACEMENTMODE_GERSTNER _FOAM_ON _REFLECTIONTYPE_REALTIME 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _Anim: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _Bump: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _BumpMap: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _BumpTex: 34 | m_Texture: {fileID: 2800000, guid: 26409920616e41e44bcf1e1d60dcbfb2, type: 3} 35 | m_Scale: {x: 3, y: 3} 36 | m_Offset: {x: 0, y: 0} 37 | - _CubeMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _DetailAlbedoMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _DetailMask: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _DetailNormalMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _EmissionMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _FoamTex: 58 | m_Texture: {fileID: 2800000, guid: f3ed797cad96fec41b94d8626de3f1ab, type: 3} 59 | m_Scale: {x: 3, y: 3} 60 | m_Offset: {x: 0, y: 0} 61 | - _Height: 62 | m_Texture: {fileID: 0} 63 | m_Scale: {x: 1, y: 1} 64 | m_Offset: {x: 0, y: 0} 65 | - _MainTex: 66 | m_Texture: {fileID: 0} 67 | m_Scale: {x: 1, y: 1} 68 | m_Offset: {x: 0, y: 0} 69 | - _MetallicGlossMap: 70 | m_Texture: {fileID: 0} 71 | m_Scale: {x: 1, y: 1} 72 | m_Offset: {x: 0, y: 0} 73 | - _OcclusionMap: 74 | m_Texture: {fileID: 0} 75 | m_Scale: {x: 1, y: 1} 76 | m_Offset: {x: 0, y: 0} 77 | - _ParallaxMap: 78 | m_Texture: {fileID: 0} 79 | m_Scale: {x: 1, y: 1} 80 | m_Offset: {x: 0, y: 0} 81 | - _ReflectionTex: 82 | m_Texture: {fileID: 0} 83 | m_Scale: {x: 1, y: 1} 84 | m_Offset: {x: 0, y: 0} 85 | - _White: 86 | m_Texture: {fileID: 0} 87 | m_Scale: {x: 1, y: 1} 88 | m_Offset: {x: 0, y: 0} 89 | m_Floats: 90 | - _Amplitude: 10 91 | - _BumpScale: 0.619 92 | - _BumpSpeedX: 0.5 93 | - _BumpSpeedY: 0.5 94 | - _Cutoff: 0.5 95 | - _DepthAmount: 1.19 96 | - _DetailNormalMapScale: 1 97 | - _DisplacementMode: 2 98 | - _Distortion: 63.2 99 | - _DstBlend: 0 100 | - _EdgeFade: 3 101 | - _EnableFoam: 1 102 | - _EnableFog: 1 103 | - _FoamSize: 3 104 | - _Frequency: 2.58 105 | - _FresnelAngle: 3.7 106 | - _GlossMapScale: 1 107 | - _Glossiness: 0.5 108 | - _GlossyReflections: 1 109 | - _InvFade: 1 110 | - _Metallic: 0 111 | - _Mode: 0 112 | - _OcclusionStrength: 1 113 | - _Parallax: 0.02 114 | - _ReflectionStrength: 1 115 | - _ReflectionType: 0 116 | - _Smoothing: 1 117 | - _Smoothness: 0.8 118 | - _SmoothnessTextureChannel: 0 119 | - _SpecularHighlights: 1 120 | - _Speed: 0 121 | - _SrcBlend: 1 122 | - _Steepness: 0.99 123 | - _UVSec: 0 124 | - _ZWrite: 1 125 | m_Colors: 126 | - _Color: {r: 1, g: 1, b: 1, a: 1} 127 | - _CubeTint: {r: 1, g: 1, b: 1, a: 1} 128 | - _DeepColor: {r: 0.07947666, g: 0.3886402, b: 0.5147059, a: 1} 129 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 130 | - _FoamColor: {r: 1, g: 1, b: 1, a: 1} 131 | - _ShallowColor: {r: 0.47442687, g: 0.99264705, b: 0.99264705, a: 1} 132 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} 133 | - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} 134 | - _WDirectionAB: {r: 0.3, g: 0.73, b: 0.85, a: 0.25} 135 | - _WDirectionCD: {r: -0.25, g: 1.11, b: 0.5, a: 0.5} 136 | - _WSpeed: {r: 1.2, g: 0.71, b: 1.1, a: 0.73} 137 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/Pond Water Mat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f221c53949cb0744abe86e744a2bb8c3 3 | timeCreated: 1510557459 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/TestAnim.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_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: TestAnim 10 | m_Shader: {fileID: 4800000, guid: 2b6dd8c0e9339f14bbb8aa51bffed3e1, type: 3} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _Anim: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _BumpMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailAlbedoMap: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailMask: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _DetailNormalMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _EmissionMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MainTex: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _MetallicGlossMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _OcclusionMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _ParallaxMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | m_Floats: 62 | - _BumpScale: 1 63 | - _Cutoff: 0.5 64 | - _DetailNormalMapScale: 1 65 | - _DstBlend: 0 66 | - _GlossMapScale: 1 67 | - _Glossiness: 0.5 68 | - _GlossyReflections: 1 69 | - _Metallic: 0 70 | - _Mode: 0 71 | - _OcclusionStrength: 1 72 | - _Parallax: 0.02 73 | - _SmoothnessTextureChannel: 0 74 | - _SpecularHighlights: 1 75 | - _SrcBlend: 1 76 | - _UVSec: 0 77 | - _ZWrite: 1 78 | m_Colors: 79 | - _Color: {r: 1, g: 1, b: 1, a: 1} 80 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 81 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/TestAnim.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 317cec4f2d29ee94aae512d9251f72f0 3 | timeCreated: 1514132908 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/TestFFT.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_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: TestFFT 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.5 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 1, g: 1, b: 1, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Materials/TestFFT.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d67e90ccf9cb4284081492a39e3225a5 3 | timeCreated: 1511145606 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Models.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ce41e7c8f0b01744836bcd19dd4e448 3 | folderAsset: yes 4 | timeCreated: 1520775233 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Models/Ground.FBX: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Models/Ground.FBX -------------------------------------------------------------------------------- /Assets/Mistral Water/Models/Ground.FBX.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd2088ec9c92d204ba361ca2d9ae4c34 3 | timeCreated: 1450889067 4 | licenseType: Store 5 | ModelImporter: 6 | serializedVersion: 19 7 | fileIDToRecycleName: 8 | 100000: //RootNode 9 | 400000: //RootNode 10 | 2300000: //RootNode 11 | 3300000: //RootNode 12 | 4300000: Ground 13 | 9500000: //RootNode 14 | materials: 15 | importMaterials: 0 16 | materialName: 0 17 | materialSearch: 1 18 | animations: 19 | legacyGenerateAnimations: 4 20 | bakeSimulation: 0 21 | resampleRotations: 1 22 | optimizeGameObjects: 0 23 | motionNodeName: 24 | animationImportErrors: 25 | animationImportWarnings: 26 | animationRetargetingWarnings: 27 | animationDoRetargetingWarnings: 0 28 | animationCompression: 1 29 | animationRotationError: 0.5 30 | animationPositionError: 0.5 31 | animationScaleError: 0.5 32 | animationWrapMode: 0 33 | extraExposedTransformPaths: [] 34 | clipAnimations: [] 35 | isReadable: 1 36 | meshes: 37 | lODScreenPercentages: [] 38 | globalScale: 100 39 | meshCompression: 0 40 | addColliders: 0 41 | importBlendShapes: 1 42 | swapUVChannels: 0 43 | generateSecondaryUV: 0 44 | useFileUnits: 1 45 | optimizeMeshForGPU: 1 46 | keepQuads: 0 47 | weldVertices: 1 48 | secondaryUVAngleDistortion: 8 49 | secondaryUVAreaDistortion: 15.000001 50 | secondaryUVHardAngle: 88 51 | secondaryUVPackMargin: 4 52 | useFileScale: 1 53 | tangentSpace: 54 | normalSmoothAngle: 60 55 | normalImportMode: 0 56 | tangentImportMode: 3 57 | importAnimation: 1 58 | copyAvatar: 0 59 | humanDescription: 60 | human: [] 61 | skeleton: [] 62 | armTwist: 0.5 63 | foreArmTwist: 0.5 64 | upperLegTwist: 0.5 65 | legTwist: 0.5 66 | armStretch: 0.05 67 | legStretch: 0.05 68 | feetSpacing: 0 69 | rootMotionBoneName: 70 | hasTranslationDoF: 0 71 | lastHumanDescriptionAvatarSource: {instanceID: 0} 72 | animationType: 0 73 | humanoidOversampling: 1 74 | additionalBone: 0 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce47075c6b6862d41af3666e37113ad4 3 | folderAsset: yes 4 | timeCreated: 1519725545 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/10.1.1.161.9102.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Papers/10.1.1.161.9102.pdf -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/10.1.1.161.9102.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a89c30610b71fc54680ea1de74d7aa9b 3 | timeCreated: 1519725545 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/Liris-5812.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Papers/Liris-5812.pdf -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/Liris-5812.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 54f22af7cd9e3dc4e820d5b2c6418e15 3 | timeCreated: 1519725545 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/Point-based_Rendering_of_Water_Surfaces_with_Splas.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Papers/Point-based_Rendering_of_Water_Surfaces_with_Splas.pdf -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/Point-based_Rendering_of_Water_Surfaces_with_Splas.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f2c85d17e72884242a0c6de84d1ff6bf 3 | timeCreated: 1519725545 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/Realtime_GPU_ocean_rendering (1).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Papers/Realtime_GPU_ocean_rendering (1).pdf -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/Realtime_GPU_ocean_rendering (1).pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9b56864451cfcf04092ca94a9d0dd27e 3 | timeCreated: 1519725545 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/paper_final.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Papers/paper_final.pdf -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/paper_final.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 55aa766b726e2a049ae18bb5262e1e05 3 | timeCreated: 1519725545 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/tr-2008-62.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Papers/tr-2008-62.pdf -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/tr-2008-62.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 79e8fc0ebf424ad4caa4b8107d8a6938 3 | timeCreated: 1519725545 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/wavesSCA.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Papers/wavesSCA.pdf -------------------------------------------------------------------------------- /Assets/Mistral Water/Papers/wavesSCA.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b055005df753e6c44beb0b84a7d9efa6 3 | timeCreated: 1519725545 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 28b897b4fe10a9e498e3e85acbb3eeff 3 | folderAsset: yes 4 | timeCreated: 1511145840 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Scripts/FFTMesh.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class FFTMesh : MonoBehaviour 6 | { 7 | #region Parameter Variabels 8 | 9 | public float choppiness = 1f; 10 | 11 | public float tDivision = 1f; 12 | 13 | public int resolution = 50; 14 | 15 | public float unitWidth = 1f; 16 | 17 | public bool generate = false; 18 | 19 | public float length = 1f; 20 | 21 | public Vector2 wind = new Vector2(1f, 1f); 22 | 23 | public float amplitude = 1f; 24 | 25 | #endregion 26 | 27 | #region Private Variables 28 | 29 | private MeshFilter filter; 30 | 31 | private Mesh mesh; 32 | 33 | private Vector3[] vertices; 34 | 35 | private Vector2[] verttilde; 36 | private Vector2[] vertConj; 37 | private Vector3[] vertMeow; 38 | private Vector2[] uvs; 39 | 40 | private int[] indices; 41 | 42 | private Vector3[] normals; 43 | 44 | private float timer = 0f; 45 | 46 | #endregion 47 | 48 | #region Constants 49 | 50 | private static float PI = 3.1415926536f; 51 | 52 | private static float G = 9.81f; 53 | 54 | private static float EPSILON = 0.0001f; 55 | 56 | #endregion 57 | 58 | #region MonoBehaviours 59 | 60 | private void Update() 61 | { 62 | if (generate) 63 | { 64 | timer = 0f; 65 | SetParams(); 66 | GenerateMesh(); 67 | generate = false; 68 | } 69 | 70 | timer += Time.deltaTime / tDivision; 71 | 72 | EvaluateWaves(timer); 73 | } 74 | 75 | private void Awake() 76 | { 77 | filter = GetComponent(); 78 | if (filter == null) 79 | gameObject.AddComponent(); 80 | mesh = new Mesh(); 81 | filter.mesh = mesh; 82 | SetParams(); 83 | GenerateMesh(); 84 | } 85 | 86 | #endregion 87 | 88 | #region Private Methods 89 | 90 | private void SetParams() 91 | { 92 | vertices = new Vector3[resolution * resolution]; 93 | indices = new int[(resolution - 1) * (resolution - 1) * 6]; 94 | normals = new Vector3[resolution * resolution]; 95 | vertConj = new Vector2[resolution * resolution]; 96 | verttilde = new Vector2[resolution * resolution]; 97 | vertMeow = new Vector3[resolution * resolution]; 98 | uvs = new Vector2[resolution * resolution]; 99 | } 100 | 101 | private void GenerateMesh() 102 | { 103 | int indiceCount = 0; 104 | int halfResolution = resolution / 2; 105 | for (int i = 0; i < resolution; i++) 106 | { 107 | float horizontalPosition = (i - halfResolution) * unitWidth; 108 | for (int j = 0; j < resolution; j++) 109 | { 110 | int currentIdx = i * (resolution) + j; 111 | float verticalPosition = (j - halfResolution) * unitWidth; 112 | vertices[currentIdx] = new Vector3(horizontalPosition + (resolution % 2 == 0? unitWidth / 2f : 0f), 0f, verticalPosition + (resolution % 2 == 0? unitWidth / 2f : 0f)); 113 | normals[currentIdx] = new Vector3(0f, 1f, 0f); 114 | verttilde[currentIdx] = htilde0(i, j); 115 | Vector2 temp = htilde0(resolution - i, resolution - j); 116 | vertConj[currentIdx] = new Vector2(temp.x, -temp.y); 117 | uvs[currentIdx] = new Vector2(i * 1.0f / (resolution - 1), j * 1.0f / (resolution - 1)); 118 | if (j == resolution - 1) 119 | continue; 120 | if (i != resolution - 1) 121 | { 122 | indices[indiceCount++] = currentIdx; 123 | indices[indiceCount++] = currentIdx + 1; 124 | indices[indiceCount++] = currentIdx + resolution; 125 | } 126 | if (i != 0) 127 | { 128 | indices[indiceCount++] = currentIdx; 129 | indices[indiceCount++] = currentIdx - resolution + 1; 130 | indices[indiceCount++] = currentIdx + 1; 131 | } 132 | } 133 | } 134 | mesh.vertices = vertices; 135 | mesh.SetIndices(indices, MeshTopology.Triangles, 0); 136 | mesh.normals = normals; 137 | mesh.uv = uvs; 138 | filter.mesh = mesh; 139 | } 140 | 141 | private float Dispersion(int n, int m) 142 | { 143 | float w = 2 * PI / (length); 144 | float kx = PI * (2 * n - resolution) / length; 145 | float kz = PI * (2 * m - resolution) / length; 146 | return Mathf.Floor(Mathf.Sqrt(G * Mathf.Sqrt(kx * kx + kz * kz)) / w) * w; 147 | } 148 | 149 | private float Phillips(int n, int m) 150 | { 151 | Vector2 k = new Vector2((2 * n - resolution) / length * PI, (2 * m - resolution) / length * PI); 152 | float k_length = k.magnitude; 153 | if (k_length < EPSILON) 154 | return 0.0f; 155 | float k_length2 = k_length * k_length; 156 | float k_length4 = k_length2 * k_length2; 157 | 158 | float kDotW = Vector2.Dot(k.normalized, wind.normalized); 159 | float kDotW2 = kDotW * kDotW; 160 | float w_length = wind.magnitude; 161 | float l = w_length * w_length / G; 162 | float l2 = l * l; 163 | float damping = 0.001f; 164 | float L2 = l2 * damping * damping; 165 | return amplitude * Mathf.Exp(-1f / (k_length2 * l2)) / k_length4 * kDotW2 * Mathf.Exp(-k_length2 * L2); 166 | } 167 | 168 | private Vector2 htilde0(int n, int m) 169 | { 170 | Vector2 r = new Vector2(); 171 | float z1 = Random.value; 172 | float z2 = Random.value; 173 | r.x = Mathf.Sqrt(-2f * Mathf.Log(z1)) * Mathf.Cos(2 * PI * z2); 174 | r.y = Mathf.Sqrt(-2f * Mathf.Log(z1)) * Mathf.Sin(2 * PI * z2); 175 | return r * Mathf.Sqrt(Phillips(n, m) / 2f); 176 | } 177 | 178 | private Vector2 htilde(float t, int n, int m) 179 | { 180 | int index = n * resolution + m; 181 | Vector2 h0 = verttilde[index]; 182 | Vector2 h0conj = vertConj[index]; 183 | float omegat = Dispersion(n, m) * t; 184 | float _cos = Mathf.Cos(omegat); 185 | float _sin = Mathf.Sin(omegat); 186 | Vector2 c0 = new Vector2(_cos, _sin); 187 | Vector2 c1 = new Vector2(_cos, -_sin); 188 | Vector2 res = new Vector2(h0.x * c0.x - h0.y * c0.y + h0conj.x * c1.x - h0conj.y * c1.y, h0.x * c0.y + h0.y * c0.x + h0conj.x * c1.y + h0conj.y * c1.x); 189 | return res; 190 | } 191 | 192 | private Vector3 Displacement(Vector2 x, float t, out Vector3 nor) 193 | { 194 | Vector2 h = new Vector2(0f, 0f); 195 | Vector2 d = new Vector2(0f, 0f); 196 | Vector3 n = Vector3.zero; 197 | Vector2 c, htilde_c, k; 198 | float kx, kz, k_length, kDotX; 199 | for (int i = 0; i < resolution; i++) 200 | { 201 | kx = 2 * PI * (i - resolution / 2.0f) / length; 202 | for (int j = 0; j < resolution; j++) 203 | { 204 | kz = 2 * PI * (j - resolution / 2.0f) / length; 205 | k = new Vector2(kx, kz); 206 | k_length = k.magnitude; 207 | kDotX = Vector2.Dot(k, x); 208 | c = new Vector2(Mathf.Cos(kDotX), Mathf.Sin(kDotX)); 209 | Vector2 temp = htilde(t, i, j); 210 | htilde_c = new Vector2(temp.x * c.x - temp.y * c.y, temp.x * c.y + temp.y * c.x); 211 | h += htilde_c; 212 | n += new Vector3(-kx * htilde_c.y, 0f, -kz * htilde_c.y); 213 | if (k_length < EPSILON) 214 | continue; 215 | d += new Vector2(kx / k_length * htilde_c.y, -kz / k_length * htilde_c.y); 216 | } 217 | } 218 | nor = Vector3.Normalize(Vector3.up - n); 219 | return new Vector3(d.x, h.x, d.y); 220 | } 221 | 222 | private Vector2[] hds; 223 | 224 | private void EvaluateWaves(float t) 225 | { 226 | hds = new Vector2[resolution * resolution]; 227 | 228 | for (int i = 0; i < resolution; i++) 229 | { 230 | for (int j = 0; j < resolution; j++) 231 | { 232 | int index = i * resolution + j; 233 | vertMeow[index] = vertices[index]; 234 | } 235 | } 236 | for (int i = 0; i < resolution; i++) 237 | { 238 | for (int j = 0; j < resolution; j++) 239 | { 240 | int index = i * resolution + j; 241 | Vector3 nor = new Vector3(0f, 0f, 0f); 242 | Vector3 hd = Displacement(new Vector2(vertMeow[index].x, vertMeow[index].z), t, out nor); 243 | vertMeow[index].y = hd.y; 244 | vertMeow[index].z = vertices[index].z - hd.z * choppiness; 245 | vertMeow[index].x = vertices[index].x - hd.x * choppiness; 246 | normals[index] = nor; 247 | hds[index] = new Vector2(hd.x, hd.z); 248 | } 249 | } 250 | 251 | Color[] colors = new Color[resolution * resolution]; 252 | 253 | for (int i = 0; i < resolution; i++) 254 | { 255 | for (int j = 0; j < resolution; j++) 256 | { 257 | int index = i * resolution + j; 258 | Vector2 dDdx = Vector2.zero; 259 | Vector2 dDdy = Vector2.zero; 260 | if (i != resolution - 1) 261 | { 262 | dDdx = 0.5f * (hds[index] - hds[index + resolution]); 263 | } 264 | if (j != resolution - 1) 265 | { 266 | dDdy = 0.5f * (hds[index] - hds[index + 1]); 267 | } 268 | float jacobian = (1 + dDdx.x) * (1 + dDdy.y) - dDdx.y * dDdy.x; 269 | Vector2 noise = new Vector2(Mathf.Abs(normals[index].x), Mathf.Abs(normals[index].z)) * 0.3f; 270 | float turb = Mathf.Max(1f - jacobian + noise.magnitude, 0f); 271 | float xx = 1f + 3f * Mathf.SmoothStep(1.2f, 1.8f, turb); 272 | xx = Mathf.Min(turb, 1.0f); 273 | xx = Mathf.SmoothStep(0f, 1f, turb); 274 | colors[index] = new Color(xx, xx, xx, xx); 275 | } 276 | } 277 | mesh.vertices = vertMeow; 278 | mesh.normals = normals; 279 | mesh.colors = colors; 280 | } 281 | 282 | #endregion 283 | } 284 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Scripts/FFTMesh.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8cc73d807e375a14e98139a65b524be7 3 | timeCreated: 1511145850 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Scripts/OceanRenderer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System; 5 | 6 | public class OceanRenderer : MonoBehaviour 7 | { 8 | #region Public Variables 9 | 10 | [Range(0f, 3f)] 11 | public float mult = 2f; 12 | public float unitWidth = 1f; 13 | public int resolution = 256; 14 | public float length = 256f; 15 | [Range(0f, 2f)] 16 | public float choppiness = 1.5f; 17 | [Range(0f, 2f)] 18 | public float amplitude = 1f; 19 | public Vector2 wind; 20 | 21 | public Shader initialShader; 22 | public Shader spectrumShader; 23 | public Shader spectrumHeightShader; 24 | public Shader fftShader; 25 | public Shader dispersionShader; 26 | public Shader normalShader; 27 | public Shader whiteShader; 28 | 29 | #endregion 30 | 31 | #region Private Variables 32 | 33 | private bool saved = false; 34 | 35 | private float oldLength; 36 | private float oldChoppiness; 37 | private float oldAmplitude; 38 | private Vector2 oldWind; 39 | 40 | private bool currentPhase = false; 41 | 42 | private Mesh mesh; 43 | private Vector3[] vertices; 44 | private Vector2[] uvs; 45 | private int[] indices; 46 | private Vector3[] normals; 47 | 48 | private MeshFilter filter; 49 | 50 | private Material initialMat; 51 | private Material spectrumMat; 52 | private Material heightMat; 53 | private Material fftMat; 54 | private Material dispersionMat; 55 | private Material normalMat; 56 | private Material normalSpecMat; 57 | private Material whiteMat; 58 | 59 | private RenderTexture initialTexture; 60 | private RenderTexture pingPhaseTexture; 61 | private RenderTexture pongPhaseTexture; 62 | private RenderTexture pingTransformTexture; 63 | private RenderTexture pongTransformTexture; 64 | private RenderTexture spectrumTexture; 65 | private RenderTexture heightTexture; 66 | private RenderTexture displacementTexture; 67 | private RenderTexture normalTexture; 68 | private RenderTexture whiteTexture; 69 | 70 | private Material oceanMat; 71 | 72 | #endregion 73 | 74 | #region MonoBehaviours 75 | 76 | private void Awake() 77 | { 78 | /// Normally this parameter should be pretty small ... 79 | filter = GetComponent(); 80 | if (filter == null) 81 | { 82 | filter = gameObject.AddComponent(); 83 | } 84 | mesh = new Mesh(); 85 | filter.mesh = mesh; 86 | SetParams(); 87 | GenerateMesh(); 88 | RenderInitial(); 89 | } 90 | 91 | private void Update() 92 | { 93 | GenerateTexture(); 94 | dispersionMat.SetFloat("_Length", length); 95 | 96 | spectrumMat.SetFloat("_Choppiness", choppiness); 97 | spectrumMat.SetFloat("_Length", length); 98 | if (oldLength != length || oldWind != wind || oldAmplitude != amplitude) 99 | { 100 | initialMat.SetFloat("_Amplitude", amplitude / 10000f); 101 | initialMat.SetFloat("_Length", length); 102 | initialMat.SetVector("_Wind", wind); 103 | oldLength = length; 104 | oldChoppiness = choppiness; 105 | oldAmplitude = amplitude; 106 | oldWind.x = wind.x; 107 | oldWind.y = wind.y; 108 | RenderInitial(); 109 | } 110 | } 111 | 112 | #endregion 113 | 114 | #region Methods 115 | 116 | private void SetParams() 117 | { 118 | oldLength = length; 119 | oldChoppiness = choppiness; 120 | oldAmplitude = amplitude; 121 | oldWind = new Vector2(); 122 | oldWind.x = wind.x; 123 | oldWind.y = wind.y; 124 | initialMat = new Material(initialShader); 125 | spectrumMat = new Material(spectrumShader); 126 | fftMat = new Material(fftShader); 127 | heightMat = new Material(spectrumHeightShader); 128 | dispersionMat = new Material(dispersionShader); 129 | normalMat = new Material(normalShader); 130 | whiteMat = new Material(whiteShader); 131 | oceanMat = GetComponent().material; 132 | vertices = new Vector3[resolution * resolution]; 133 | indices = new int[(resolution - 1) * (resolution - 1) * 6]; 134 | normals = new Vector3[resolution * resolution]; 135 | uvs = new Vector2[resolution * resolution]; 136 | resolution *= 8; 137 | initialTexture = new RenderTexture(resolution , resolution, 0, RenderTextureFormat.ARGBFloat); 138 | pingPhaseTexture = new RenderTexture(resolution, resolution, 0, RenderTextureFormat.RFloat); 139 | pongPhaseTexture = new RenderTexture(resolution, resolution, 0, RenderTextureFormat.RFloat); 140 | pingTransformTexture = new RenderTexture(resolution, resolution, 0, RenderTextureFormat.ARGBFloat); 141 | pongTransformTexture = new RenderTexture(resolution, resolution, 0, RenderTextureFormat.ARGBFloat); 142 | spectrumTexture = new RenderTexture(resolution, resolution, 0, RenderTextureFormat.ARGBFloat); 143 | heightTexture = new RenderTexture(resolution, resolution, 0, RenderTextureFormat.ARGBFloat); 144 | displacementTexture = new RenderTexture(resolution, resolution, 0, RenderTextureFormat.ARGBFloat); 145 | normalTexture = new RenderTexture(resolution, resolution, 0, RenderTextureFormat.ARGBFloat); 146 | whiteTexture = new RenderTexture(resolution, resolution, 0, RenderTextureFormat.ARGBFloat); 147 | initialMat.SetFloat("_RandomSeed1", UnityEngine.Random.value * 10f); 148 | initialMat.SetFloat("_RandomSeed2", UnityEngine.Random.value * 10f); 149 | initialMat.SetFloat("_Amplitude", amplitude / 10000f); 150 | initialMat.SetFloat("_Length", length); 151 | initialMat.SetFloat("_Resolution", resolution); 152 | initialMat.SetVector("_Wind", wind); 153 | 154 | dispersionMat.SetFloat("_Length", length); 155 | dispersionMat.SetInt("_Resolution", resolution); 156 | 157 | spectrumMat.SetFloat("_Choppiness", choppiness); 158 | spectrumMat.SetFloat("_Length", length); 159 | spectrumMat.SetInt("_Resolution", resolution); 160 | 161 | heightMat.SetFloat("_Choppiness", choppiness); 162 | heightMat.SetFloat("_Length", length); 163 | heightMat.SetInt("_Resolution", resolution); 164 | 165 | normalMat.SetFloat("_Length", length); 166 | normalMat.SetFloat("_Resolution", resolution); 167 | 168 | fftMat.SetFloat("_TransformSize", resolution); 169 | resolution /= 8; 170 | } 171 | 172 | private void GenerateMesh() 173 | { 174 | int indiceCount = 0; 175 | int halfResolution = resolution / 2; 176 | for (int i = 0; i < resolution; i++) 177 | { 178 | float horizontalPosition = (i - halfResolution) * unitWidth; 179 | for (int j = 0; j < resolution; j++) 180 | { 181 | int currentIdx = i * (resolution) + j; 182 | float verticalPosition = (j - halfResolution) * unitWidth; 183 | vertices[currentIdx] = new Vector3(horizontalPosition + (resolution % 2 == 0? unitWidth / 2f : 0f), 0f, verticalPosition + (resolution % 2 == 0? unitWidth / 2f : 0f)); 184 | normals[currentIdx] = new Vector3(0f, 1f, 0f); 185 | uvs[currentIdx] = new Vector2(i * 1.0f / (resolution - 1), j * 1.0f / (resolution - 1)); 186 | if (j == resolution - 1) 187 | continue; 188 | if (i != resolution - 1) 189 | { 190 | indices[indiceCount++] = currentIdx; 191 | indices[indiceCount++] = currentIdx + 1; 192 | indices[indiceCount++] = currentIdx + resolution; 193 | } 194 | if (i != 0) 195 | { 196 | indices[indiceCount++] = currentIdx; 197 | indices[indiceCount++] = currentIdx - resolution + 1; 198 | indices[indiceCount++] = currentIdx + 1; 199 | } 200 | } 201 | } 202 | mesh.vertices = vertices; 203 | mesh.SetIndices(indices, MeshTopology.Triangles, 0); 204 | mesh.normals = normals; 205 | mesh.uv = uvs; 206 | filter.mesh = mesh; 207 | } 208 | 209 | private void RenderInitial() 210 | { 211 | Graphics.Blit(null, initialTexture, initialMat); 212 | spectrumMat.SetTexture("_Initial", initialTexture); 213 | heightMat.SetTexture("_Initial", initialTexture); 214 | } 215 | 216 | private void GenerateTexture() 217 | { 218 | float deltaTime = Time.deltaTime; 219 | 220 | currentPhase = !currentPhase; 221 | RenderTexture rt = currentPhase ? pingPhaseTexture : pongPhaseTexture; 222 | dispersionMat.SetTexture("_Phase", currentPhase? pongPhaseTexture : pingPhaseTexture); 223 | dispersionMat.SetFloat("_DeltaTime", deltaTime * mult); 224 | Graphics.Blit(null, rt, dispersionMat); 225 | 226 | spectrumMat.SetTexture("_Phase", currentPhase? pingPhaseTexture : pongPhaseTexture); 227 | Graphics.Blit(null, spectrumTexture, spectrumMat); 228 | 229 | fftMat.EnableKeyword("_HORIZONTAL"); 230 | fftMat.DisableKeyword("_VERTICAL"); 231 | int iterations = Mathf.CeilToInt((float)Math.Log(resolution * 8, 2)) * 2; 232 | for (int i = 0; i < iterations; i++) 233 | { 234 | RenderTexture blitTarget; 235 | fftMat.SetFloat("_SubTransformSize", Mathf.Pow(2, (i % (iterations / 2)) + 1)); 236 | if (i == 0) 237 | { 238 | fftMat.SetTexture("_Input", spectrumTexture); 239 | blitTarget = pingTransformTexture; 240 | } 241 | else if (i == iterations - 1) 242 | { 243 | fftMat.SetTexture("_Input", (iterations % 2 == 0) ? pingTransformTexture : pongTransformTexture); 244 | blitTarget = displacementTexture; 245 | } 246 | else if (i % 2 == 1) 247 | { 248 | fftMat.SetTexture("_Input", pingTransformTexture); 249 | blitTarget = pongTransformTexture; 250 | } 251 | else 252 | { 253 | fftMat.SetTexture("_Input", pongTransformTexture); 254 | blitTarget = pingTransformTexture; 255 | } 256 | if (i == iterations / 2) 257 | { 258 | fftMat.DisableKeyword("_HORIZONTAL"); 259 | fftMat.EnableKeyword("_VERTICAL"); 260 | } 261 | Graphics.Blit(null, blitTarget, fftMat); 262 | } 263 | 264 | heightMat.SetTexture("_Phase", currentPhase? pingPhaseTexture : pongPhaseTexture); 265 | Graphics.Blit(null, spectrumTexture, heightMat); 266 | fftMat.EnableKeyword("_HORIZONTAL"); 267 | fftMat.DisableKeyword("_VERTICAL"); 268 | for (int i = 0; i < iterations; i++) 269 | { 270 | RenderTexture blitTarget; 271 | fftMat.SetFloat("_SubTransformSize", Mathf.Pow(2, (i % (iterations / 2)) + 1)); 272 | if (i == 0) 273 | { 274 | fftMat.SetTexture("_Input", spectrumTexture); 275 | blitTarget = pingTransformTexture; 276 | } 277 | else if (i == iterations - 1) 278 | { 279 | fftMat.SetTexture("_Input", (iterations % 2 == 0) ? pingTransformTexture : pongTransformTexture); 280 | blitTarget = heightTexture; 281 | } 282 | else if (i % 2 == 1) 283 | { 284 | fftMat.SetTexture("_Input", pingTransformTexture); 285 | blitTarget = pongTransformTexture; 286 | } 287 | else 288 | { 289 | fftMat.SetTexture("_Input", pongTransformTexture); 290 | blitTarget = pingTransformTexture; 291 | } 292 | if (i == iterations / 2) 293 | { 294 | fftMat.DisableKeyword("_HORIZONTAL"); 295 | fftMat.EnableKeyword("_VERTICAL"); 296 | } 297 | Graphics.Blit(null, blitTarget, fftMat); 298 | } 299 | 300 | normalMat.SetTexture("_DisplacementMap", displacementTexture); 301 | normalMat.SetTexture("_HeightMap", heightTexture); 302 | Graphics.Blit(null, normalTexture, normalMat); 303 | whiteMat.SetTexture("_Displacement", displacementTexture); 304 | whiteMat.SetTexture("_Bump", normalTexture); 305 | whiteMat.SetFloat("_Resolution", resolution * 8); 306 | whiteMat.SetFloat("_Length", resolution); 307 | Graphics.Blit(null, whiteTexture, whiteMat); 308 | if (!saved) 309 | { 310 | oceanMat.SetTexture("_Anim", displacementTexture); 311 | oceanMat.SetTexture("_Bump", normalTexture); 312 | oceanMat.SetTexture("_White", whiteTexture); 313 | oceanMat.SetTexture("_Height", heightTexture); 314 | saved = true; 315 | } 316 | } 317 | 318 | #endregion 319 | } 320 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Scripts/OceanRenderer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43d70ac175181bc4d9adfb8cd3265fa4 3 | timeCreated: 1514105863 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a74f936130969349a0330050b89152a 3 | folderAsset: yes 4 | timeCreated: 1510545471 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed3379e7f453ae14e9143904a37a8746 3 | folderAsset: yes 4 | timeCreated: 1514096498 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/Dispersion.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/Mistral Water/Helper/Vertex/Dispersion" 2 | { 3 | Properties 4 | { 5 | _Length ("Wave Length", Float) = 256 6 | _Resolution ("Ocean Resolution", int) = 256 7 | _DeltaTime ("Delta Time", Float) = 0.016 8 | _Phase ("Last Phase", 2D) = "black" {} 9 | } 10 | 11 | SubShader 12 | { 13 | Pass 14 | { 15 | Cull Off 16 | ZWrite Off 17 | ZTest Off 18 | ColorMask R 19 | 20 | CGPROGRAM 21 | 22 | #include "FFTCommon.cginc" 23 | 24 | #pragma vertex vert_quad 25 | #pragma fragment frag 26 | 27 | uniform float _DeltaTime; 28 | uniform float _Length; 29 | uniform int _Resolution; 30 | uniform sampler2D _Phase; 31 | 32 | float4 frag(FFTVertexOutput i) : SV_TARGET 33 | { 34 | float n = (i.texcoord.x * _Resolution); 35 | float m = (i.texcoord.y * _Resolution); 36 | 37 | float deltaPhase = CalcDispersion(n, m, _Length, _DeltaTime, _Resolution); 38 | float phase = tex2D(_Phase, i.texcoord).r; 39 | 40 | return float4(GetDispersion(phase, deltaPhase), 0, 0, 0); 41 | } 42 | 43 | ENDCG 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/Dispersion.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 12885d2a1a42c4c44a62faed049a0f93 3 | timeCreated: 1514099562 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/FFTCommon.cginc: -------------------------------------------------------------------------------- 1 | /* 2 | This is the helper common methods and definitions used in FFT calculation. 3 | */ 4 | 5 | #include "UnityCG.cginc" 6 | 7 | static float PI = 3.1415926536; 8 | static float EPSILON = 0.0001; 9 | static float G = 9.81f; 10 | 11 | struct FFTVertexInput 12 | { 13 | float4 vertex : POSITION; 14 | float4 texcoord : TEXCOORD0; 15 | }; 16 | 17 | struct FFTVertexOutput 18 | { 19 | float4 pos : SV_POSITION; 20 | float4 texcoord : TEXCOORD0; 21 | float4 screenPos : TEXCOORD1; 22 | }; 23 | 24 | FFTVertexOutput vert_quad(FFTVertexInput v) 25 | { 26 | FFTVertexOutput o; 27 | 28 | o.pos = UnityObjectToClipPos(v.vertex); 29 | 30 | o.texcoord = v.texcoord; 31 | 32 | o.screenPos = ComputeScreenPos(o.pos); 33 | 34 | return o; 35 | } 36 | 37 | inline float UVRandom(float2 uv, float salt, float random) 38 | { 39 | uv += float2(salt, random); 40 | return frac(sin(dot(uv, float2(12.9898, 78.233))) * 43758.5453); 41 | } 42 | 43 | inline float2 MultComplex(float2 a, float2 b) 44 | { 45 | return float2(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x); 46 | } 47 | 48 | inline float2 MultByI(float2 a) 49 | { 50 | return float2(-a.y, a.x); 51 | } 52 | 53 | inline float2 Conj(float2 a) 54 | { 55 | return float2(a.x, -a.y); 56 | } 57 | 58 | inline float2 GetWave(float n, float m, float len, float res) 59 | { 60 | //return PI * float2(2 * n - res, 2 * m - res) / len; 61 | n -= 0.5; 62 | m -= 0.5; 63 | n = ((n < res * 0.5) ? n : n - res); 64 | m = ((m < res * 0.5) ? m : m - res); 65 | return 2 * PI * float2(n, m) / len; 66 | 67 | } 68 | 69 | inline float Phillips(float n, float m, float amp, float2 wind, float res, float len) 70 | { 71 | float2 k = GetWave(n, m, len, res); 72 | float klen = length(k); 73 | float klen2 = klen * klen; 74 | float klen4 = klen2 * klen2; 75 | if(klen < EPSILON) 76 | return 0; 77 | float kDotW = dot(normalize(k), normalize(wind)); 78 | float kDotW2 = kDotW * kDotW; 79 | float wlen = length(wind); 80 | float l = wlen * wlen / G; 81 | float l2 = l * l; 82 | float damping = 0.01; 83 | float L2 = l2 * damping * damping; 84 | return amp * exp(-1 / (klen2 * l2)) / klen4 * kDotW2 * exp(-klen2 * L2); 85 | } 86 | 87 | inline float2 hTilde0(float2 uv, float r1, float r2, float phi) 88 | { 89 | float2 r; 90 | float rand1 = UVRandom(uv, 10.612, r1); 91 | float rand2 = UVRandom(uv, 11.899, r2); 92 | rand1 = clamp(rand1, 0.01, 1); 93 | rand2 = clamp(rand2, 0.01, 1); 94 | float x = sqrt(-2 * log(rand1)); 95 | float y = 2 * PI * rand2; 96 | r.x = x * cos(y); 97 | r.y = x * sin(y); 98 | return r * sqrt(phi / 2); 99 | } 100 | 101 | inline float GetDispersion(float oldPhase, float newPhase) 102 | { 103 | return fmod(oldPhase + newPhase, 2 * PI); 104 | } 105 | 106 | inline float CalcDispersion(float n, float m, float len, float dt, float res) 107 | { 108 | float2 wave = GetWave(n, m, len, res); 109 | float w = 2 * PI / len; 110 | float wlen = length(wave); 111 | //Don't know what km(370) is .... 112 | return sqrt(G * length(wave) * (1 + wlen * wlen / 370 / 370)) * dt; 113 | //return floor(sqrt(G * length(wave) / w)) * w * dt; 114 | } 115 | 116 | inline float GetTwiddle(float ratio) 117 | { 118 | return -2 * PI * ratio; 119 | } 120 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/FFTCommon.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3f4aff6e29951774f97c343333793550 3 | timeCreated: 1514096841 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/InitialSpectrum.shader: -------------------------------------------------------------------------------- 1 | /* 2 | This Shader helps render the initial spectrum, namely the htilde and htilde_conj in Tessendorf's paper. 3 | The two complex numbers, four values would be output into the render target. 4 | First the Phillips Spectrum is calculated. 5 | Later it will be applied to the htilde and its conjugate. 6 | */ 7 | Shader "Hidden/Mistral Water/Helper/Vertex/Initial Spectrum" 8 | { 9 | Properties 10 | { 11 | _RandomSeed1 ("Random Seed 1", Float) = 1.5122 12 | _RandomSeed2 ("Random Seed 2", Float) = 6.1152 13 | _Amplitude ("Phillips Ampitude", Float) = 1 14 | _Length ("Wave Length", Float) = 256 15 | _Resolution ("Ocean Resolution", int) = 256 16 | _Wind ("Wind Direction (XY)", Vector) = (1, 1, 0, 0) 17 | } 18 | 19 | SubShader 20 | { 21 | Pass 22 | { 23 | Cull Off 24 | ZWrite Off 25 | ZTest Off 26 | ColorMask RGBA 27 | 28 | CGPROGRAM 29 | 30 | #include "FFTCommon.cginc" 31 | 32 | #pragma vertex vert_quad 33 | #pragma fragment frag 34 | 35 | uniform float _RandomSeed1; 36 | uniform float _RandomSeed2; 37 | uniform float _Amplitude; 38 | uniform float _Length; 39 | uniform int _Resolution; 40 | uniform float2 _Wind; 41 | 42 | float4 frag(FFTVertexOutput i) : SV_TARGET 43 | { 44 | float n = (i.texcoord.x * _Resolution); 45 | float m = (i.texcoord.y * _Resolution); 46 | 47 | float phi1 = Phillips(n, m, _Amplitude, _Wind, _Resolution, _Length); 48 | float phi2 = Phillips(_Resolution - n, _Resolution - m, _Amplitude, _Wind, _Resolution, _Length); 49 | 50 | float2 h0 = hTilde0(i.texcoord.xy, _RandomSeed1 / 2, _RandomSeed2 * 2, phi1); 51 | float2 h0conj = Conj(hTilde0(i.texcoord.xy, _RandomSeed1, _RandomSeed2, phi2)); 52 | 53 | return float4(h0, h0conj); 54 | } 55 | 56 | ENDCG 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/InitialSpectrum.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 21c4ac58ae010c34d80548258a7d04cb 3 | timeCreated: 1514096512 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/OceanNormal.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/Mistral Water/Helper/Map/Ocean Normal" 2 | { 3 | Properties 4 | { 5 | _DisplacementMap ("Displacement Map", 2D) = "black" {} 6 | _HeightMap ("Height Map", 2D) = "black" {} 7 | _Length ("Wave Length", Float) = 512 8 | _Resolution ("Resolution", Float) = 512 9 | } 10 | 11 | SubShader 12 | { 13 | Pass 14 | { 15 | Cull Off 16 | ZWrite Off 17 | ZTest Off 18 | ColorMask RGBA 19 | 20 | CGPROGRAM 21 | 22 | #include "FFTCommon.cginc" 23 | 24 | #pragma vertex vert_quad 25 | #pragma fragment frag 26 | 27 | uniform sampler2D _DisplacementMap; 28 | uniform sampler2D _HeightMap; 29 | uniform float _Length; 30 | uniform float _Resolution; 31 | 32 | inline float3 GetVec(float4 tc) 33 | { 34 | float2 xz = tex2D(_DisplacementMap, tc).rb; 35 | float y = tex2D(_HeightMap, tc).r; 36 | return float3(xz.x, y, xz.y); 37 | } 38 | 39 | float4 frag(FFTVertexOutput i) : SV_TARGET 40 | { 41 | float texel = 1 / _Resolution; 42 | float texelSize = _Length / _Resolution; 43 | 44 | float3 center = tex2D(_DisplacementMap, i.texcoord).rgb; 45 | float3 right = float3(texelSize, 0, 0) + GetVec(i.texcoord + float4(texel, 0, 0, 0)) - center; 46 | float3 left = float3(-texelSize, 0, 0) + GetVec(i.texcoord + float4(-texel, 0, 0, 0)) - center; 47 | float3 top = float3(0, 0, -texelSize) + GetVec(i.texcoord + float4(0, -texel, 0, 0)) - center; 48 | float3 bottom = float3(0, 0, texelSize) + GetVec(i.texcoord + float4(0, texel, 0, 0)) - center; 49 | 50 | float3 topRight = cross(right, top); 51 | float3 topLeft = cross(top, left); 52 | float3 bottomLeft = cross(left, bottom); 53 | float3 bottomRight = cross(bottom, right); 54 | 55 | return float4(normalize(topRight + topLeft + bottomLeft + bottomRight), 1.0); 56 | } 57 | 58 | ENDCG 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/OceanNormal.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a9e529eb686332a4691cbc08853ec8ba 3 | timeCreated: 1514349235 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/Spectrum.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/Mistral Water/Helper/Vertex/Spectrum" 2 | { 3 | Properties 4 | { 5 | _Length ("Wave Length", Float) = 256 6 | _Resolution ("Ocean Resolution", int) = 256 7 | _Phase ("Last Phase", 2D) = "black" {} 8 | _Initial ("Intial Spectrum", 2D) = "black" {} 9 | _Choppiness ("Choppiness", Float) = 1 10 | } 11 | 12 | SubShader 13 | { 14 | Pass 15 | { 16 | Cull Off 17 | ZWrite Off 18 | ZTest Off 19 | ColorMask RGBA 20 | 21 | CGPROGRAM 22 | 23 | #include "FFTCommon.cginc" 24 | 25 | #pragma vertex vert_quad 26 | #pragma fragment frag 27 | 28 | uniform sampler2D _Phase; 29 | uniform sampler2D _Initial; 30 | uniform float _Length; 31 | uniform int _Resolution; 32 | uniform float _Choppiness; 33 | 34 | float4 frag(FFTVertexOutput i) : SV_TARGET 35 | { 36 | float n = (i.texcoord.x * _Resolution); 37 | float m = (i.texcoord.y * _Resolution); 38 | float2 wave = GetWave(n, m, _Length, _Resolution); 39 | float w = length(wave); 40 | float phase = tex2D(_Phase, i.texcoord).r; 41 | float2 pv = float2(cos(phase), sin(phase)); 42 | float2 h0 = tex2D(_Initial, i.texcoord).rg; 43 | float2 h0conj = tex2D(_Initial, i.texcoord).ba; 44 | //h0conj = MultByI(h0conj); 45 | float2 h = MultComplex(h0, pv) + MultComplex(h0conj, Conj(pv)); 46 | //return float4(h, h); 47 | w = max(0.0001, w); 48 | float2 hx = -MultByI(h * wave.x / w) * _Choppiness; 49 | float2 hz = -MultByI(h * wave.y / w) * _Choppiness; 50 | return float4(hx, hz); 51 | } 52 | 53 | ENDCG 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/Spectrum.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2d916f91fd03d9d4db57387d980c2dca 3 | timeCreated: 1514100524 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/SpectrumHeight.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/Mistral Water/Helper/Vertex/Spectrum Height" 2 | { 3 | Properties 4 | { 5 | _Length ("Wave Length", Float) = 256 6 | _Resolution ("Ocean Resolution", int) = 256 7 | _Phase ("Last Phase", 2D) = "black" {} 8 | _Initial ("Intial Spectrum", 2D) = "black" {} 9 | _Choppiness ("Choppiness", Float) = 1 10 | } 11 | 12 | SubShader 13 | { 14 | Pass 15 | { 16 | Cull Off 17 | ZWrite Off 18 | ZTest Off 19 | ColorMask RGBA 20 | 21 | CGPROGRAM 22 | 23 | #include "FFTCommon.cginc" 24 | 25 | #pragma vertex vert_quad 26 | #pragma fragment frag 27 | 28 | uniform sampler2D _Phase; 29 | uniform sampler2D _Initial; 30 | uniform float _Length; 31 | uniform int _Resolution; 32 | uniform float _Choppiness; 33 | 34 | float4 frag(FFTVertexOutput i) : SV_TARGET 35 | { 36 | float n = (i.texcoord.x * _Resolution); 37 | float m = (i.texcoord.y * _Resolution); 38 | float2 wave = GetWave(n, m, _Length, _Resolution); 39 | float w = length(wave); 40 | float phase = tex2D(_Phase, i.texcoord).r; 41 | float2 pv = float2(cos(phase), sin(phase)); 42 | float2 h0 = tex2D(_Initial, i.texcoord).rg; 43 | float2 h0conj = tex2D(_Initial, i.texcoord).ba; 44 | //h0conj = MultByI(h0conj); 45 | float2 h = MultComplex(h0, pv) + MultComplex(h0conj, Conj(pv)); 46 | return float4(h, h); 47 | } 48 | 49 | ENDCG 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/SpectrumHeight.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9aada42521b6c9b4bb7715f7cdc382ad 3 | timeCreated: 1514475853 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/Stockham.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/Mistral Water/Helper/Vertex/Stockham" 2 | { 3 | Properties 4 | { 5 | _Input ("Input Sampler", 2D) = "black" {} 6 | _TransformSize ("Transform Size", Float) = 256 7 | _SubTransformSize ("Log Size", Float) = 8 8 | } 9 | 10 | SubShader 11 | { 12 | Pass 13 | { 14 | Cull Off 15 | ZWrite Off 16 | ZTest Off 17 | ColorMask RGBA 18 | 19 | CGPROGRAM 20 | 21 | #include "FFTCommon.cginc" 22 | 23 | #pragma vertex vert_quad 24 | #pragma fragment frag 25 | #pragma multi_compile _HORIZONTAL _VERTICAL 26 | 27 | uniform sampler2D _Input; 28 | uniform float _TransformSize; 29 | uniform float _SubTransformSize; 30 | 31 | float4 frag(FFTVertexOutput i) : SV_TARGET 32 | { 33 | float index; 34 | 35 | #ifdef _HORIZONTAL 36 | index = i.texcoord.x * _TransformSize - 0.5; 37 | #else 38 | index = i.texcoord.y * _TransformSize - 0.5; 39 | #endif 40 | 41 | float evenIndex = floor(index / _SubTransformSize) * (_SubTransformSize * 0.5) + fmod(index, _SubTransformSize * 0.5) + 0.5; 42 | 43 | #ifdef _HORIZONTAL 44 | float4 even = tex2D(_Input, float2((evenIndex), i.texcoord.y * _TransformSize) / _TransformSize); 45 | float4 odd = tex2D(_Input, float2((evenIndex + _TransformSize * 0.5), i.texcoord.y * _TransformSize) / _TransformSize); 46 | #else 47 | float4 even = tex2D(_Input, float2(i.texcoord.x * _TransformSize, (evenIndex)) / _TransformSize); 48 | float4 odd = tex2D(_Input, float2(i.texcoord.x * _TransformSize, (evenIndex + _TransformSize * 0.5)) / _TransformSize); 49 | #endif 50 | 51 | float twiddleV = GetTwiddle(index / _SubTransformSize); 52 | float2 twiddle = float2(cos(twiddleV), sin(twiddleV)); 53 | float2 outputA = even.xy + MultComplex(twiddle, odd.xy); 54 | float2 outputB = even.zw + MultComplex(twiddle, odd.zw); 55 | 56 | return float4(outputA, outputB); 57 | } 58 | 59 | ENDCG 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/Stockham.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd0778c9e8af33e48926e95a32aeca5b 3 | timeCreated: 1514104541 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/TestVertexAnim.shader: -------------------------------------------------------------------------------- 1 | Shader "f" 2 | { 3 | Properties 4 | { 5 | _Anim ("asdf", 2D) = "black" {} 6 | _Bump ("asdff", 2D)= "bump" {} 7 | } 8 | 9 | SubShader 10 | { 11 | Pass 12 | { 13 | CGPROGRAM 14 | 15 | #include "UnityCG.cginc" 16 | 17 | #pragma target 4.0 18 | #pragma vertex vert 19 | #pragma fragment frag 20 | 21 | uniform sampler2D _Anim; 22 | uniform sampler2D _Bump; 23 | 24 | struct vin 25 | { 26 | float4 vertex : POSITION; 27 | float4 texcoord : TEXCOORD0; 28 | }; 29 | 30 | struct v2f 31 | { 32 | float4 pos : SV_POSITION; 33 | float4 texcoord : TEXCOORD0; 34 | }; 35 | 36 | v2f vert(vin v) 37 | { 38 | v2f o; 39 | 40 | v.vertex.y += tex2Dlod(_Anim, v.texcoord).g / 8; 41 | v.vertex.xz += tex2Dlod(_Anim, v.texcoord).rb / 8; 42 | 43 | //v.vertex.xy += tex2Dlod(_Anim, v.texcoord).rb / 1000; 44 | 45 | o.pos = UnityObjectToClipPos(v.vertex); 46 | 47 | o.texcoord = v.texcoord; 48 | 49 | return o; 50 | } 51 | 52 | fixed4 frag(v2f i) : COLOR 53 | { 54 | //return float4(tex2D(_Anim, i.texcoord).rgb / 8, 1); 55 | return 1; 56 | } 57 | 58 | ENDCG 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/TestVertexAnim.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b6dd8c0e9339f14bbb8aa51bffed3e1 3 | timeCreated: 1514132531 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/WhiteCap.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/Mistral Water/Helper/Map/Ocean Normal" 2 | { 3 | Properties 4 | { 5 | _Resolution ("Resolution", Float) = 512 6 | _Length ("Sea Width", Float) = 512 7 | _Displacement ("Displacement", 2D) = "black" {} 8 | _Bump ("_Bump", 2D) = "bump" {} 9 | } 10 | 11 | SubShader 12 | { 13 | Pass 14 | { 15 | Cull Off 16 | ZWrite Off 17 | ZTest Off 18 | ColorMask R 19 | 20 | CGPROGRAM 21 | 22 | #include "FFTCommon.cginc" 23 | 24 | #pragma vertex vert_quad 25 | #pragma fragment frag 26 | 27 | uniform float _Resolution; 28 | uniform float _Length; 29 | uniform sampler2D _Displacement; 30 | uniform float4 _Displacement_TexelSize; 31 | uniform sampler2D _Bump; 32 | 33 | float4 frag(FFTVertexOutput i) : SV_TARGET 34 | { 35 | float texelSize = 1 / _Length; 36 | float2 dDdy = -0.5 * (tex2D(_Displacement, i.texcoord + float4(0, -texelSize, 0, 0)).rb - tex2D(_Displacement, i.texcoord + float4(0, texelSize, 0, 0)).rb) / 8; 37 | float2 dDdx = -0.5 * (tex2D(_Displacement, i.texcoord + float4(-texelSize, 0, 0, 0)).rb - tex2D(_Displacement, i.texcoord + float4(texelSize, 0, 0, 0)).rb) / 8; 38 | float2 noise = 0.3 * tex2D(_Bump, i.texcoord).xz; 39 | float jacobian = (1 + dDdx.x) * (1 + dDdy.y) - dDdx.y * dDdy.x; 40 | float turb = max(0, 1 - jacobian + length(noise)); 41 | float xx = 1 + 3 * smoothstep(1.2, 1.8, turb); 42 | xx = min(turb, 1); 43 | xx = smoothstep(0, 1, turb); 44 | return float4(xx, xx, xx, 1); 45 | } 46 | 47 | ENDCG 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/FFT/WhiteCap.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 870a8f53e1970f54ba070e16dd12b13b 3 | timeCreated: 1514384492 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/MistralWaterBasic.shader: -------------------------------------------------------------------------------- 1 | Shader "Mistral Water/Basic" 2 | { 3 | Properties 4 | { 5 | _ShallowColor ("Color in the Shallow Area", Color) = (1, 1, 1, 1) 6 | _DeepColor ("Color in the Deep Area", Color) = (0, 0, 0, 0) 7 | _DepthAmount ("The maximum of depth", Float) = 1 8 | 9 | [Toggle(_DEPTHFOG_ON)] 10 | _EnableFog ("Whether Enable Depth Fog", Float) = 0 11 | _EdgeFade ("Edge Fade", Float) = 1 12 | 13 | _SpecularColor ("Specular Color", Color) = (1, 1, 1, 1) 14 | _Smoothness ("Specular Smoothness", Range(0.01, 10)) = 0.5 15 | 16 | _BumpTex ("Normal Map", 2D) = "bump" {} 17 | _BumpScale ("Normal Strength", Range(0, 2)) = 1 18 | _BumpSpeedX ("Normal Speed [X]", Float) = 0.5 19 | _BumpSpeedY ("Normal Speed [Y]", Float) = 0.5 20 | 21 | _Distortion ("Reflection & Refraction Distortion Scale", Range(0, 100)) = 50.0 22 | 23 | [KeywordEnum(RealTime, CubeMap)] 24 | _ReflectionType ("Reflection Type", Float) = 0 25 | 26 | _CubeTint ("Cube Color Tint", Color) = (1, 1, 1, 1) 27 | 28 | [NoScaleOffset] 29 | _CubeMap ("Cube Map", Cube) = "white" {} 30 | 31 | [NoScaleOffset] 32 | _ReflectionTex ("Reflection Map (No Editting!)", 2D) = "white" {} 33 | 34 | _ReflectionStrength ("Reflection Strength", Range(0, 1)) = 1 35 | _FresnelAngle ("Fresnel Angle", Range(1, 45)) = 5 36 | 37 | [Toggle(_FOAM_ON)] 38 | _EnableFoam ("Whether Enable Foam", Float) = 0 39 | _FoamColor ("Foam Color Tint", Color) = (1, 1, 1, 1) 40 | _FoamTex ("Foam Texture", 2D) = "white" {} 41 | _FoamSize ("Foam Size", Float) = 0.5 42 | 43 | [KeywordEnum(Off, Wave, Gerstner, FFT)] 44 | _DisplacementMode ("Displacement Mode", Float) = 0 45 | 46 | _Amplitude ("Amplitude", Float) = 0.05 47 | _Frequency ("Frequency", Float) = 1 48 | _Speed ("Wave Speed", Float) = 1 49 | _Steepness ("Wave Steepness", Float) = 1 50 | 51 | _WSpeed ("Wave Speed", Vector) = (1.2, 1.375, 1.1, 1.5) 52 | _WDirectionAB ("Wave1 Direction", Vector) = (0.3, 0.85, 0.85, 0.25) 53 | _WDirectionCD ("Wave2 Direction", Vector) = (0.1, 0.9, 0.5, 0.5) 54 | 55 | _Smoothing ("Normal Smoothing", Range(0, 1)) = 1 56 | } 57 | 58 | SubShader 59 | { 60 | Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } 61 | 62 | GrabPass 63 | { 64 | Tags { "LightMode" = "Always" } 65 | } 66 | 67 | Pass 68 | { 69 | Tags { "LightMode" = "ForwardBase" } 70 | ZWrite On 71 | ZTest LEqual 72 | Cull Back 73 | 74 | CGPROGRAM 75 | 76 | #include "UnityCG.cginc" 77 | #include "AutoLight.cginc" 78 | #include "MistralWaterCommon.cginc" 79 | 80 | #pragma target 3.0 81 | #pragma hull hs_surf 82 | #pragma domain ds_surf 83 | #pragma vertex tessvert 84 | #pragma fragment frag 85 | #pragma multi_compile_fwdbase 86 | #pragma multi_compile_fog 87 | #pragma fragmentoption ARB_precision_hint_fastest 88 | 89 | #pragma shader_feature _REFLECTIONTYPE_CUBEMAP _REFLECTIONTYPE_REALTIME 90 | #pragma shader_feature __ _FOAM_ON 91 | #pragma shader_feature __ _DEPTHFOG_ON 92 | #pragma shader_feature __ _DISPLECEMENTMODE_OFF _DISPLACEMENTMODE_WAVE _DISPLACEMENTMODE_GERSTNER _DISPLACEMENTMODE_FFT 93 | 94 | ENDCG 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/MistralWaterBasic.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b13ed00e64f067a44868005035aa9344 3 | timeCreated: 1510547092 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/MistralWaterCommon.cginc: -------------------------------------------------------------------------------- 1 | #ifndef MISTRAL_WATER_COMMON_INCLUDED 2 | #define MISTRAL_WATER_COMMON_INCLUDED 3 | 4 | #include "Tessellation.cginc" 5 | #include "MistralWaterLib.cginc" 6 | 7 | VertexOutput vert(VertexInput v) 8 | { 9 | VertexOutput o; 10 | 11 | UNITY_INITIALIZE_OUTPUT(VertexOutput, o); 12 | 13 | #if !_DISPLACEMENTMODE_OFF 14 | 15 | #if !_DISPLACEMENTMODE_FFT 16 | 17 | Displacement(v); 18 | 19 | #else 20 | 21 | /// Just do not ask me what the bloody hell 8 is. 22 | v.vertex.y += tex2Dlod(_Height, float4(v.texcoord, 0, 0)).x / 8; 23 | v.vertex.xz += tex2Dlod(_Anim, float4(v.texcoord, 0, 0)).xz / 8; 24 | 25 | #endif 26 | 27 | #endif 28 | 29 | o.pos = UnityObjectToClipPos(v.vertex); 30 | o.grabUV = ComputeGrabScreenPos(o.pos); 31 | o.screenPos = ComputeScreenPos(o.pos); 32 | COMPUTE_EYEDEPTH(o.screenPos.z); 33 | 34 | o.animUV = AnimateBump(v.texcoord); 35 | 36 | #if _FOAM_ON 37 | 38 | o.foamUV = TRANSFORM_TEX(v.texcoord, _FoamTex); 39 | 40 | #endif 41 | 42 | float4 worldPos = mul(unity_ObjectToWorld, v.vertex); 43 | half3 worldNormal = UnityObjectToWorldNormal(v.normal); 44 | half3 worldTangent = UnityObjectToWorldDir(v.tangent); 45 | half3 worldBitangent = cross(worldTangent, worldNormal); 46 | 47 | o.tSpace0 = half4(worldTangent.x, worldBitangent.x, worldNormal.x, worldPos.x); 48 | o.tSpace1 = half4(worldTangent.y, worldBitangent.y, worldNormal.y, worldPos.y); 49 | o.tSpace2 = half4(worldTangent.z, worldBitangent.z, worldNormal.z, worldPos.z); 50 | o.worldPos = worldPos; 51 | 52 | o.ambient = ShadeSH9(half4(worldNormal, 1)); 53 | 54 | #if _DISPLACEMENTMODE_FFT 55 | 56 | o.color = tex2Dlod(_White, float4(v.texcoord, 0, 0)).r; 57 | 58 | #else 59 | 60 | o.color = v.color / 1.2; 61 | 62 | #endif 63 | 64 | #ifdef UNITY_PASS_FORWARDBASE 65 | 66 | UNITY_TRANSFER_FOG(o, o.pos); 67 | 68 | #endif 69 | 70 | return o; 71 | } 72 | 73 | fixed4 frag(VertexOutput i) : SV_TARGET 74 | { 75 | half4 normal1 = tex2D(_BumpTex, i.animUV.xy); 76 | half4 normal2 = tex2D(_BumpTex, i.animUV.zw); 77 | half3 normal = UnpackNormalBlend(normal1, normal2, _BumpScale); 78 | 79 | half3 worldNormal = normalize(half3(dot(i.tSpace0.xyz, normal), dot(i.tSpace1.xyz, normal), dot(i.tSpace2.xyz, normal))); 80 | half3 viewDirection = normalize(UnityWorldSpaceViewDir(i.worldPos)); 81 | //return fixed4(worldNormal, 1); 82 | #ifdef CULL_FRONT 83 | 84 | worldViewDir = -worldViewDir; 85 | 86 | #endif 87 | 88 | #ifndef USING_DIRECTIONAL_LIGHT 89 | 90 | half3 lightDirection = normalize(UnityWorldSpaceLightDir(i.worldPos)); 91 | 92 | #else 93 | 94 | half3 lightDirection = normalize(_WorldSpaceLightPos0.xyz); 95 | 96 | #endif 97 | 98 | half2 offset = worldNormal.xz * _GrabTexture_TexelSize.xy * _Distortion; 99 | half4 screenUV = half4(offset * i.screenPos.z + i.screenPos.xy, i.screenPos.zw); 100 | 101 | #ifdef UNITY_Z_0_FAR_FROM_CLIPSPACE 102 | 103 | half4 grabUV = half4(offset * UNITY_Z_0_FAR_FROM_CLIPSPACE(i.grabUV.z) + i.grabUV.xy, i.grabUV.zw); 104 | 105 | #else 106 | 107 | half4 grabUV = half4(offset * i.grabUV.z + i.graUV.xy, i.grabUV.zw); 108 | 109 | #endif 110 | 111 | fixed4 refraction = tex2Dproj(_GrabTexture, UNITY_PROJ_COORD(grabUV)); 112 | fixed4 cleanRefraction = tex2Dproj(_GrabTexture, UNITY_PROJ_COORD(i.grabUV)); 113 | 114 | float sceneDepth = LinearEyeDepth(SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.screenPos))); 115 | float waterDepth = LinearEyeDepth(SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(screenUV))); 116 | 117 | refraction.a = saturate(_DepthAmount / abs(waterDepth - screenUV.z)); 118 | cleanRefraction.a = saturate(_DepthAmount / abs(sceneDepth - i.screenPos.z)); 119 | 120 | #ifndef CULL_FRONT 121 | 122 | refraction = lerp(cleanRefraction, refraction, step(screenUV.z, waterDepth)); 123 | 124 | #endif 125 | 126 | #ifndef CULL_FRONT 127 | 128 | #if _DEPTHFOG_ON 129 | 130 | fixed3 finalColor = lerp(_ShallowColor.rgb * refraction.rgb, _DeepColor.rgb, 1 - refraction.a); 131 | 132 | #else 133 | 134 | fixed3 finalColor = lerp(_ShallowColor.rgb, _DeepColor.rgb, 1 - refraction.a) * refraction.rgb; 135 | 136 | #endif 137 | 138 | #else 139 | 140 | fixed3 finalColor = lerp(_ShallowColor.rgb, _DeepColor.rgb, 0.5) * refraction.rgb; 141 | 142 | #endif 143 | 144 | #ifndef CULL_FRONT 145 | 146 | #if _REFLECTIONTYPE_CUBEMAP 147 | 148 | half3 worldReflect = reflect(-viewDirection, worldNormal); 149 | fixed3 cubeMap = texCUBE(_CubeMap, worldReflect).rgb * _CubeTint.rgb; 150 | 151 | #endif 152 | 153 | #if _REFLECTIONTYPE_REALTIME 154 | 155 | fixed3 rtReflection = tex2Dproj(_ReflectionTex, UNITY_PROJ_COORD(screenUV)) * _ReflectionStrength; 156 | 157 | #endif 158 | 159 | #if _REFLECTIONTYPE_REALTIME 160 | 161 | fixed3 finalReflection = rtReflection; 162 | 163 | #endif 164 | 165 | #if _REFLECTIONTYPE_CUBEMAP 166 | 167 | fixed3 finalReflection = cubeMap; 168 | 169 | #endif 170 | 171 | 172 | #endif 173 | 174 | #if _FOAM_ON 175 | 176 | float2 foamUV = i.foamUV; 177 | 178 | fixed foamTex = tex2D(_FoamTex, foamUV + normal.xy * 0.02).r; 179 | 180 | fixed3 foam = 1 - saturate(_FoamSize * (sceneDepth - screenUV.z)); 181 | foam *= _FoamColor.rgb * foamTex * max(_LightColor0.rgb, i.ambient.rgb); 182 | 183 | finalColor += min(1, 2 * foam); 184 | 185 | #endif 186 | 187 | fixed NdotL = saturate(dot(worldNormal, lightDirection)); 188 | 189 | #ifndef CULL_FRONT 190 | 191 | fixed NdotV = saturate(1 - dot(worldNormal, viewDirection)); 192 | half fresnel = pow(NdotV, _FresnelAngle); 193 | finalColor = lerp(finalColor, finalReflection + finalColor, fresnel * _ReflectionStrength); 194 | 195 | #endif 196 | 197 | fixed3 specularColor = pow(saturate(dot(reflect(-lightDirection, worldNormal), viewDirection)), _Smoothness * 128) * _SpecularColor.rgb * _LightColor0.rgb; 198 | fixed3 color = finalColor * max(i.ambient, NdotL * _LightColor0.rgb) + specularColor; 199 | fixed alpha = saturate(_EdgeFade * (sceneDepth - screenUV.z)) * _ShallowColor.a; 200 | 201 | #ifndef UNITY_PASS_FORWARDADD 202 | 203 | color.rgb = lerp(cleanRefraction.rgb, color, alpha); 204 | UNITY_APPLY_FOG(i.fogCoord, color); 205 | 206 | #else 207 | 208 | color.rgb = diffuse * alpha * 2; 209 | 210 | #endif 211 | 212 | return fixed4(color + 0 * pow(saturate(i.color.rgb), 1.6), 1); 213 | } 214 | 215 | #ifdef UNITY_CAN_COMPILE_TESSELLATION 216 | struct TessVertex 217 | { 218 | float4 vertex : INTERNALTESSPOS; 219 | float3 normal : NORMAL; 220 | float4 tangent : TANGENT; 221 | float2 texcoord : TEXCOORD0; 222 | float4 color : COLOR; 223 | #ifdef UNITY_PASS_FORWARDADD 224 | float2 texcoord1 : TEXCOORD1; 225 | #endif 226 | //float4 color : COLOR; 227 | }; 228 | 229 | struct OutputPatchConstant 230 | { 231 | float edge[3] : SV_TessFactor; 232 | float inside : SV_InsideTessFactor; 233 | }; 234 | 235 | TessVertex tessvert (VertexInput v) 236 | { 237 | TessVertex o; 238 | o.vertex = v.vertex; 239 | o.normal = v.normal; 240 | o.tangent = v.tangent; 241 | o.texcoord = v.texcoord; 242 | o.color = v.color; 243 | #ifdef UNITY_PASS_FORWARDADD 244 | o.texcoord1 = v.texcoord1; 245 | #endif 246 | //o.color = v.color; 247 | return o; 248 | } 249 | 250 | float4 Tessellation(TessVertex v, TessVertex v1, TessVertex v2) 251 | { 252 | return UnityEdgeLengthBasedTess(v.vertex, v1.vertex, v2.vertex, 32 - 1); 253 | } 254 | 255 | OutputPatchConstant hullconst (InputPatch v) 256 | { 257 | OutputPatchConstant o; 258 | float4 ts = Tessellation( v[0], v[1], v[2] ); 259 | o.edge[0] = ts.x; 260 | o.edge[1] = ts.y; 261 | o.edge[2] = ts.z; 262 | o.inside = ts.w; 263 | return o; 264 | } 265 | 266 | [domain("tri")] 267 | [partitioning("fractional_odd")] 268 | [outputtopology("triangle_cw")] 269 | [patchconstantfunc("hullconst")] 270 | [outputcontrolpoints(3)] 271 | TessVertex hs_surf (InputPatch v, uint id : SV_OutputControlPointID) 272 | { 273 | return v[id]; 274 | } 275 | 276 | [domain("tri")] 277 | VertexOutput ds_surf (OutputPatchConstant tessFactors, const OutputPatch vi, float3 bary : SV_DomainLocation) 278 | { 279 | VertexInput v = (VertexInput)0; 280 | 281 | v.vertex = vi[0].vertex*bary.x + vi[1].vertex*bary.y + vi[2].vertex*bary.z; 282 | v.texcoord = vi[0].texcoord*bary.x + vi[1].texcoord*bary.y + vi[2].texcoord*bary.z; 283 | #ifdef UNITY_PASS_FORWARDADD 284 | v.texcoord1 = vi[0].texcoord1*bary.x + vi[1].texcoord1*bary.y + vi[2].texcoord1*bary.z; 285 | #endif 286 | //v.color = vi[0].color*bary.x + vi[1].color*bary.y + vi[2].color*bary.z; 287 | v.tangent = vi[0].tangent*bary.x + vi[1].tangent*bary.y + vi[2].tangent*bary.z; 288 | v.normal = vi[0].normal*bary.x + vi[1].normal*bary.y + vi[2].normal*bary.z; 289 | v.color = vi[0].color*bary.x + vi[1].color*bary.y + vi[2].color*bary.z; 290 | 291 | VertexOutput o = vert(v); 292 | 293 | return o; 294 | } 295 | 296 | #endif 297 | 298 | #endif 299 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/MistralWaterCommon.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 466f32a1054aa1543a63215917e57b49 3 | timeCreated: 1510545530 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/MistralWaterLib.cginc: -------------------------------------------------------------------------------- 1 | #ifndef MISTRAL_WATER_LIB_INCLUDED 2 | // Upgrade NOTE: excluded shader from DX11 because it uses wrong array syntax (type[size] name) 3 | #pragma exclude_renderers d3d11 4 | #define MISTRAL_WATER_LIB_INCLUDED 5 | 6 | #include "MistralWaterProperty.cginc" 7 | 8 | #if _DISPLACEMENTMODE_FFT 9 | uniform sampler2D _Anim; 10 | uniform sampler2D _Bump; 11 | uniform sampler2D _Height; 12 | uniform sampler2D _White; 13 | #endif 14 | 15 | uniform sampler2D _GrabTexture; 16 | uniform half4 _GrabTexture_TexelSize; 17 | uniform sampler2D_float _CameraDepthTexture; 18 | 19 | #if _REFLECTIONTYPE_REALTIME 20 | 21 | uniform sampler2D _ReflectionTex; 22 | 23 | #endif 24 | 25 | uniform sampler2D _BumpTex; 26 | uniform half _BumpScale; 27 | uniform half4 _BumpTex_ST; 28 | uniform half _BumpSpeedX; 29 | uniform half _BumpSpeedY; 30 | 31 | #if _FOAM_ON 32 | 33 | uniform sampler2D _FoamTex; 34 | uniform half4 _FoamTex_ST; 35 | uniform fixed3 _FoamColor; 36 | uniform half _FoamSize; 37 | 38 | #endif 39 | 40 | uniform fixed4 _ShallowColor; 41 | uniform fixed4 _DeepColor; 42 | uniform half _DepthAmount; 43 | uniform half _EdgeFade; 44 | 45 | uniform fixed3 _SpecularColor; 46 | uniform half _Smoothness; 47 | 48 | uniform half _ReflectionStrength; 49 | uniform half _FresnelAngle; 50 | uniform samplerCUBE _CubeMap; 51 | uniform fixed3 _CubeTint; 52 | 53 | uniform half _Amplitude; 54 | uniform half _Frequency; 55 | uniform half _Speed; 56 | 57 | #if _DISPLACEMENTMODE_GERSTNER 58 | 59 | uniform half _Steepness; 60 | uniform half4 _WSpeed; 61 | uniform half4 _WDirectionAB; 62 | uniform half4 _WDirectionCD; 63 | 64 | #endif 65 | 66 | uniform half _Smoothing; 67 | uniform half _Distortion; 68 | 69 | uniform fixed4 _LightColor0; 70 | 71 | inline void Gerstner(out half3 offsets, out half3 normal, half3 vertex, half3 sVertex, 72 | half amplitude, half frequency, half steepness, 73 | half4 speed, half4 directionAB, half4 directionCD) 74 | { 75 | half3 offs; 76 | 77 | half4 AB = steepness * amplitude * directionAB; 78 | half4 CD = steepness * amplitude * directionCD; 79 | 80 | half4 dotABCD = frequency * half4(dot(directionAB.xy, sVertex.xz), dot(directionAB.zw, sVertex.xz), dot(directionCD.xy, sVertex.xz), dot(directionCD.zw, sVertex.xz)); 81 | half4 t = _Time.yyyy * speed; 82 | 83 | half4 COS = cos(dotABCD + t); 84 | half4 SIN = sin(dotABCD + t); 85 | 86 | offs.x = dot(COS, half4(AB.xz, CD.xz)); 87 | offs.z = dot(COS, half4(AB.yw, CD.yw)); 88 | offs.y = dot(SIN, amplitude); 89 | 90 | offsets = offs; 91 | 92 | normal = half3(0, 2, 0); 93 | 94 | normal.x -= offs.x; 95 | normal.y -= offs.z; 96 | normal.xz *= _Smoothing; 97 | normal = normalize(normal); 98 | normal = half3(0, 1, 0); 99 | } 100 | 101 | inline void GerstnerLevelOne(out half3 offsets, out half3 normal, half3 vertex, half3 sVertex, 102 | half amplitude, half frequency, half steepness, half speed, 103 | half4 directionAB, half4 directionCD) 104 | { 105 | const float amps[5] = {0.7, 0.6, 0.6, 0.7, 0.9}; 106 | const float steeps[5] = {0.95, 0.615, 0.821, 0.462, 0.611}; 107 | const float speeds[5] = {-2.112, 0.6124, -0.878, -3.6234, 1}; 108 | const half2 dir[5] = {half2(1, -0.2), half2(-0.9, 1), half2(0.2, 0.2), half2(-1.0, 0.77), half2(0.99, -1.145)}; 109 | const float fs[5] = {0.954, 1.52, 0.44, 0.21, 0.8}; 110 | half3 offs = 0; 111 | 112 | for(int i = 0;i < 5;i++) 113 | { 114 | offs.x += steepness * amplitude * steeps[i] * amps[i] * dir[i].x * cos(frequency * fs[i] * dot(sVertex.xz, dir[i]) + speeds[i] * frequency * fs[i] * _Time.y); 115 | offs.z += steepness * amplitude * steeps[i] * amps[i] * dir[i].y * cos(frequency * fs[i] * dot(sVertex.xz, dir[i]) + speeds[i] * frequency * fs[i] * _Time.y); 116 | offs.y += amplitude * amps[i] * sin(frequency * fs[i] * dot(sVertex.xz, dir[i].xy) + speeds[i] * frequency * fs[i] * _Time.y); 117 | } 118 | 119 | offsets = offs; 120 | 121 | normal = half3(0, 1, 0); 122 | //normal.x -= directionAB.x * frequency * amplitude * cos(frequency * dot(directionAB.xy, offs.xz) + speed * frequency * _Time.y); 123 | //normal.z -= directionAB.y * frequency * amplitude * cos(frequency * dot(directionAB.xy, offs.xz) + speed * frequency * _Time.y); 124 | //normal.y += 1 - offs.y; 125 | } 126 | 127 | inline void Wave(out half3 offsets, out half3 normal, half3 vertex, half4 sVertex, half amplitude, half frequency, half s) 128 | { 129 | float4 v0 = sVertex; 130 | float4 v1 = v0 + float4(0.05,0,0,0); 131 | float4 v2 = v0 + float4(0,0,0.05,0); 132 | 133 | float speed = s * _Time.y; 134 | amplitude *= 0.01; 135 | 136 | v0.y += sin ( speed + (v0.x * frequency )) * amplitude; 137 | v1.y += sin ( speed + (v1.x * frequency )) * amplitude; 138 | v2.y += sin ( speed + (v2.x * frequency )) * amplitude; 139 | 140 | v0.y -= cos ( speed + (v0.z * frequency )) * amplitude; 141 | v1.y -= cos ( speed + (v1.z * frequency )) * amplitude; 142 | v2.y -= cos ( speed + (v2.z * frequency )) * amplitude; 143 | 144 | v1.y -= (v1.y - v0.y) * (1 - _Smoothing); 145 | v2.y -= (v2.y - v0.y) * (1 - _Smoothing); 146 | 147 | float3 vna = cross(v2 - v0,v1 - v0); 148 | 149 | float4 vn = mul(float4x4(unity_WorldToObject), float4(vna, 0) ); 150 | normal = normalize(vn).xyz; 151 | offsets = mul(float4x4(unity_WorldToObject), v0).xyz; 152 | } 153 | 154 | inline void Displacement(inout VertexInput v) 155 | { 156 | half4 worldPos = mul(unity_ObjectToWorld, v.vertex); 157 | half3 offsets; 158 | half3 normal; 159 | 160 | #if _DISPLACEMENTMODE_WAVE 161 | 162 | Wave(offsets, normal, v.vertex.xyz, worldPos, _Amplitude, _Frequency, _Speed); 163 | v.vertex.y += offsets.y; 164 | v.normal = normal; 165 | 166 | #endif 167 | 168 | #if _DISPLACEMENTMODE_GERSTNER 169 | 170 | half3 squashedVertex = worldPos.xzz; 171 | Gerstner(offsets, normal, v.vertex.xyz, squashedVertex, 172 | _Amplitude * 0.01, _Frequency, _Steepness, 173 | _WSpeed, _WDirectionAB, _WDirectionCD 174 | ); 175 | 176 | v.vertex.xyz += offsets; 177 | v.normal = normal; 178 | 179 | #endif 180 | } 181 | 182 | inline half4 AnimateBump(half2 uv) 183 | { 184 | half4 coords; 185 | 186 | coords.xy = TRANSFORM_TEX(uv, _BumpTex); 187 | coords.zw = TRANSFORM_TEX(uv, _BumpTex) * 0.5; 188 | 189 | coords.x += frac(_BumpSpeedX * _Time.x); 190 | coords.y += frac(_BumpSpeedY * _Time.x); 191 | coords.z -= frac(_BumpSpeedX * 0.5 * _Time.x); 192 | coords.w -= frac(_BumpSpeedY * 0.5 * _Time.x); 193 | 194 | return coords; 195 | } 196 | 197 | inline half3 UnpackNormalBlend(half4 normal1, half4 normal2, half scale) 198 | { 199 | half3 normal = normalize((normal1.xyz * 2 - 1) + (normal2.xyz * 2 - 1)); 200 | normal.xy *= scale; 201 | normal.xy = (normal1.wy * 2 - 1) + (normal2.wy * 2 - 1); 202 | normal.xy *= scale; 203 | normal.z = sqrt(1.0 - saturate(dot(normal.xy, normal.xy))); 204 | return normalize(normal); 205 | } 206 | 207 | #endif 208 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/MistralWaterLib.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c9640600187429940b5f3963c2104ccc 3 | timeCreated: 1510662447 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/MistralWaterProperty.cginc: -------------------------------------------------------------------------------- 1 | #ifndef MISTRAL_WATER_PROPERTY_INCLUDED 2 | #define MISTRAL_WATER_PROPERTY_INCLUDED 3 | 4 | struct VertexInput 5 | { 6 | float4 vertex : POSITION; 7 | half3 normal : NORMAL; 8 | half4 tangent : TANGENT; 9 | half2 texcoord : TEXCOORD0; 10 | half4 color : COLOR; 11 | }; 12 | 13 | struct VertexOutput 14 | { 15 | float4 pos : SV_POSITION; 16 | fixed3 ambient : TEXCOORD9; 17 | 18 | half4 tSpace0 : TEXCOORD0; 19 | half4 tSpace1 : TEXCOORD1; 20 | half4 tSpace2 : TEXCOORD2; 21 | 22 | float3 worldPos : TEXCOORD3; 23 | half4 grabUV : TEXCOORD4; 24 | half4 screenPos : TEXCOORD5; 25 | half4 animUV : TEXCOORD6; 26 | half4 color : TEXCOORD10; 27 | 28 | #if _FOAM_ON 29 | 30 | half2 foamUV : TEXCOORD7; 31 | 32 | #endif 33 | 34 | #ifdef UNITY_PASS_FORWARDBASE 35 | 36 | UNITY_FOG_COORDS(8) 37 | 38 | #endif 39 | }; 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/MistralWaterProperty.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7990ead856e38a64f9ed393dcc3b36f1 3 | timeCreated: 1510662599 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/TestOcean.shader: -------------------------------------------------------------------------------- 1 | Shader "Test/Ocean" 2 | { 3 | Properties 4 | { 5 | _Anim ("Displacement Map", 2D) = "black" {} 6 | _Height ("Height Map", 2D) = "black" {} 7 | _Bump ("Normal Map",2D) = "bump" {} 8 | _White ("White Cap Map", 2D) = "black" {} 9 | _LightWrap ("Light Wrapping Value", Float) = 1 10 | _Tint ("Color Tint", Color) = (0.5, 0.65, 0.75, 1) 11 | _SpecColor ("Specular Color", Color) = (1, 0.25, 0, 1) 12 | _Glossiness ("Glossiness", Float) = 64 13 | _RimColor ("Rim Color", Color) = (0, 0, 1, 1) 14 | } 15 | 16 | SubShader 17 | { 18 | Pass 19 | { 20 | Cull Back 21 | ZWrite On 22 | ZTest LEqual 23 | ColorMask RGB 24 | 25 | CGPROGRAM 26 | 27 | #include "UnityCG.cginc" 28 | 29 | #pragma vertex vert 30 | #pragma fragment frag 31 | 32 | uniform sampler2D _Anim; 33 | uniform sampler2D _Height; 34 | uniform sampler2D _Bump; 35 | uniform sampler2D _White; 36 | 37 | uniform float4 _Tint; 38 | uniform float4 _SpecColor; 39 | uniform float _Glossiness; 40 | uniform float _LightWrap; 41 | uniform fixed4 _RimColor; 42 | 43 | uniform float4 _LightColor0; 44 | 45 | struct VertexInput 46 | { 47 | float4 vertex : POSITION; 48 | float4 texcoord : TEXCOORD0; 49 | }; 50 | 51 | struct VertexOutput 52 | { 53 | float4 pos : SV_POSITION; 54 | float3 normal : TEXCOORD1; 55 | float4 texcoord : TEXCOORD0; 56 | float4 color : TEXCOORD2; 57 | float3 lightDir : TEXCOORD3; 58 | float3 viewDir : TEXCOORD4; 59 | }; 60 | 61 | VertexOutput vert(VertexInput v) 62 | { 63 | VertexOutput o; 64 | 65 | v.vertex.y += tex2Dlod(_Height, v.texcoord).r / 8; 66 | v.vertex.xz += tex2Dlod(_Anim, v.texcoord).rb / 8; 67 | 68 | o.pos = UnityObjectToClipPos(v.vertex); 69 | 70 | o.normal = UnityObjectToWorldNormal(tex2Dlod(_Bump, v.texcoord).rgb); 71 | 72 | o.color = tex2Dlod(_White, v.texcoord).r; 73 | 74 | o.lightDir = normalize(WorldSpaceLightDir(v.vertex)); 75 | o.viewDir = normalize(WorldSpaceViewDir(v.vertex)); 76 | o.texcoord = v.texcoord; 77 | 78 | return o; 79 | } 80 | 81 | float4 frag(VertexOutput i) : COLOR 82 | { 83 | i.normal = tex2D(_Bump, i.texcoord).rgb; 84 | i.normal = normalize(i.normal); 85 | i.normal = UnityObjectToWorldNormal(i.normal); 86 | float4 diffuse = saturate(dot(i.normal, i.lightDir)); 87 | diffuse = pow(saturate(diffuse * (1 - _LightWrap) + _LightWrap), 2 * _LightWrap + 1) * _Tint * _LightColor0; 88 | i.viewDir = normalize(i.viewDir); 89 | i.lightDir = normalize(i.lightDir); 90 | float3 H = normalize(i.viewDir + i.lightDir); 91 | float NdotH = saturate(dot(i.normal, H)); 92 | float4 specular = _SpecColor * saturate(pow(NdotH, _Glossiness)) * _LightColor0; 93 | float4 rim = _RimColor * pow(max(0, 1 - saturate(dot(i.normal, i.viewDir))), 1.5); 94 | //return saturate(pow(NdotH, _Glossiness)); 95 | return diffuse + specular + pow(i.color / 2, 2) + rim; 96 | } 97 | 98 | ENDCG 99 | } 100 | } 101 | } -------------------------------------------------------------------------------- /Assets/Mistral Water/Shaders/TestOcean.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8b502de671330ce4999aefe109ebaf08 3 | timeCreated: 1514520109 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 44744a9cc3f20e948b878db8e80fba18 3 | folderAsset: yes 4 | timeCreated: 1510545476 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Textures/1514367473(1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Textures/1514367473(1).png -------------------------------------------------------------------------------- /Assets/Mistral Water/Textures/1514367473(1).png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0974597a6d16d8146bc942522b10e5fe 3 | timeCreated: 1514367493 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 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: -1 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 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | spriteSheet: 69 | serializedVersion: 2 70 | sprites: [] 71 | outline: [] 72 | physicsShape: [] 73 | spritePackingTag: 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Textures/Sand3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Textures/Sand3.png -------------------------------------------------------------------------------- /Assets/Mistral Water/Textures/Sand3.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b2f0fdda285f1d4286c94c3c2d507ce 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 4 6 | mipmaps: 7 | mipMapMode: 0 8 | enableMipMap: 1 9 | sRGBTexture: 1 10 | linearTexture: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 1 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: 0.25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 0 22 | generateCubemap: 6 23 | cubemapConvolution: 0 24 | seamlessCubemap: 0 25 | textureFormat: -1 26 | maxTextureSize: 1024 27 | textureSettings: 28 | filterMode: -1 29 | aniso: -1 30 | mipBias: -1 31 | wrapMode: -1 32 | nPOTScale: 1 33 | lightmap: 0 34 | compressionQuality: 50 35 | spriteMode: 0 36 | spriteExtrude: 1 37 | spriteMeshType: 1 38 | alignment: 0 39 | spritePivot: {x: 0.5, y: 0.5} 40 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 41 | spritePixelsToUnits: 100 42 | alphaUsage: 1 43 | alphaIsTransparency: 0 44 | spriteTessellationDetail: -1 45 | textureType: 0 46 | textureShape: 1 47 | maxTextureSizeSet: 0 48 | compressionQualitySet: 0 49 | textureFormatSet: 0 50 | platformSettings: 51 | - buildTarget: DefaultTexturePlatform 52 | maxTextureSize: 1024 53 | textureFormat: -1 54 | textureCompression: 1 55 | compressionQuality: 50 56 | crunchedCompression: 0 57 | allowsAlphaSplitting: 0 58 | overridden: 0 59 | - buildTarget: Android 60 | maxTextureSize: 256 61 | textureFormat: -1 62 | textureCompression: 1 63 | compressionQuality: 50 64 | crunchedCompression: 0 65 | allowsAlphaSplitting: 0 66 | overridden: 1 67 | spriteSheet: 68 | serializedVersion: 2 69 | sprites: [] 70 | outline: [] 71 | spritePackingTag: 72 | userData: 73 | assetBundleName: 74 | assetBundleVariant: 75 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Textures/Sunny4.cubemap.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 19a9bb3d7df0ca3448d95ddfdb767932 3 | timeCreated: 1437273775 4 | licenseType: Store 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Mistral Water/Textures/dice.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Assets/Mistral Water/Textures/dice.jpg -------------------------------------------------------------------------------- /Assets/Mistral Water/Textures/dice.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fe38b7605d329443acfc739811124da 3 | timeCreated: 1514131172 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 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: -1 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 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | spriteSheet: 69 | serializedVersion: 2 70 | sprites: [] 71 | outline: [] 72 | physicsShape: [] 73 | spritePackingTag: 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Jingping Yu 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 | -------------------------------------------------------------------------------- /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 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /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: 3 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_EnablePCM: 1 18 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 19 | m_AutoSimulation: 1 20 | m_AutoSyncTransforms: 1 21 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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: 5 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_DefaultBehaviorMode: 0 10 | m_SpritePackerMode: 0 11 | m_SpritePackerPaddingPower: 1 12 | m_EtcTextureCompressorBehavior: 1 13 | m_EtcTextureFastCompressor: 1 14 | m_EtcTextureNormalCompressor: 2 15 | m_EtcTextureBestCompressor: 4 16 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd 17 | m_ProjectGenerationRootNamespace: 18 | m_UserGeneratedProjectSuffix: 19 | m_CollabEditorSettings: 20 | inProgressEnabled: 1 21 | -------------------------------------------------------------------------------- /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: 12 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 | -------------------------------------------------------------------------------- /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/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /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: 3 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_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AutoSyncTransforms: 1 28 | m_AlwaysShowColliders: 0 29 | m_ShowColliderSleep: 1 30 | m_ShowColliderContacts: 0 31 | m_ShowColliderAABB: 0 32 | m_ContactArrowScale: 0.2 33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 38 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | productGUID: 73434f4ac2d5360439101a1b9aa9ff65 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | defaultScreenOrientation: 4 11 | targetDevice: 2 12 | useOnDemandResources: 0 13 | accelerometerFrequency: 60 14 | companyName: DefaultCompany 15 | productName: Water Simulation 16 | defaultCursor: {fileID: 0} 17 | cursorHotspot: {x: 0, y: 0} 18 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 19 | m_ShowUnitySplashScreen: 1 20 | m_ShowUnitySplashLogo: 1 21 | m_SplashScreenOverlayOpacity: 1 22 | m_SplashScreenAnimation: 1 23 | m_SplashScreenLogoStyle: 1 24 | m_SplashScreenDrawMode: 0 25 | m_SplashScreenBackgroundAnimationZoom: 1 26 | m_SplashScreenLogoAnimationZoom: 1 27 | m_SplashScreenBackgroundLandscapeAspect: 1 28 | m_SplashScreenBackgroundPortraitAspect: 1 29 | m_SplashScreenBackgroundLandscapeUvs: 30 | serializedVersion: 2 31 | x: 0 32 | y: 0 33 | width: 1 34 | height: 1 35 | m_SplashScreenBackgroundPortraitUvs: 36 | serializedVersion: 2 37 | x: 0 38 | y: 0 39 | width: 1 40 | height: 1 41 | m_SplashScreenLogos: [] 42 | m_VirtualRealitySplashScreen: {fileID: 0} 43 | m_HolographicTrackingLossScreen: {fileID: 0} 44 | defaultScreenWidth: 1024 45 | defaultScreenHeight: 768 46 | defaultScreenWidthWeb: 960 47 | defaultScreenHeightWeb: 600 48 | m_StereoRenderingPath: 0 49 | m_ActiveColorSpace: 0 50 | m_MTRendering: 1 51 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 52 | iosShowActivityIndicatorOnLoading: -1 53 | androidShowActivityIndicatorOnLoading: -1 54 | tizenShowActivityIndicatorOnLoading: -1 55 | iosAppInBackgroundBehavior: 0 56 | displayResolutionDialog: 1 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | disableDepthAndStencilBuffers: 0 65 | androidBlitType: 0 66 | defaultIsFullScreen: 1 67 | defaultIsNativeResolution: 1 68 | macRetinaSupport: 1 69 | runInBackground: 0 70 | captureSingleScreen: 0 71 | muteOtherAudioSources: 0 72 | Prepare IOS For Recording: 0 73 | Force IOS Speakers When Recording: 0 74 | submitAnalytics: 1 75 | usePlayerLog: 1 76 | bakeCollisionMeshes: 0 77 | forceSingleInstance: 0 78 | resizableWindow: 0 79 | useMacAppStoreValidation: 0 80 | macAppStoreCategory: public.app-category.games 81 | gpuSkinning: 0 82 | graphicsJobs: 0 83 | xboxPIXTextureCapture: 0 84 | xboxEnableAvatar: 0 85 | xboxEnableKinect: 0 86 | xboxEnableKinectAutoTracking: 0 87 | xboxEnableFitness: 0 88 | visibleInBackground: 1 89 | allowFullscreenSwitch: 1 90 | graphicsJobMode: 0 91 | macFullscreenMode: 2 92 | d3d9FullscreenMode: 1 93 | d3d11FullscreenMode: 1 94 | xboxSpeechDB: 0 95 | xboxEnableHeadOrientation: 0 96 | xboxEnableGuest: 0 97 | xboxEnablePIXSampling: 0 98 | metalFramebufferOnly: 0 99 | n3dsDisableStereoscopicView: 0 100 | n3dsEnableSharedListOpt: 1 101 | n3dsEnableVSync: 0 102 | ignoreAlphaClear: 0 103 | xboxOneResolution: 0 104 | xboxOneMonoLoggingLevel: 0 105 | xboxOneLoggingLevel: 1 106 | xboxOneDisableEsram: 0 107 | xboxOnePresentImmediateThreshold: 0 108 | videoMemoryForVertexBuffers: 0 109 | psp2PowerMode: 0 110 | psp2AcquireBGM: 1 111 | wiiUTVResolution: 0 112 | wiiUGamePadMSAA: 1 113 | wiiUSupportsNunchuk: 0 114 | wiiUSupportsClassicController: 0 115 | wiiUSupportsBalanceBoard: 0 116 | wiiUSupportsMotionPlus: 0 117 | wiiUSupportsProController: 0 118 | wiiUAllowScreenCapture: 1 119 | wiiUControllerCount: 0 120 | m_SupportedAspectRatios: 121 | 4:3: 1 122 | 5:4: 1 123 | 16:10: 1 124 | 16:9: 1 125 | Others: 1 126 | bundleVersion: 1.0 127 | preloadedAssets: [] 128 | metroInputSource: 0 129 | m_HolographicPauseOnTrackingLoss: 1 130 | xboxOneDisableKinectGpuReservation: 0 131 | xboxOneEnable7thCore: 0 132 | vrSettings: 133 | cardboard: 134 | depthFormat: 0 135 | enableTransitionView: 0 136 | daydream: 137 | depthFormat: 0 138 | useSustainedPerformanceMode: 0 139 | enableVideoLayer: 0 140 | useProtectedVideoMemory: 0 141 | hololens: 142 | depthFormat: 1 143 | protectGraphicsMemory: 0 144 | useHDRDisplay: 0 145 | m_ColorGamuts: 00000000 146 | targetPixelDensity: 0 147 | resolutionScalingMode: 0 148 | androidSupportedAspectRatio: 1 149 | androidMaxAspectRatio: 2.1 150 | applicationIdentifier: {} 151 | buildNumber: {} 152 | AndroidBundleVersionCode: 1 153 | AndroidMinSdkVersion: 16 154 | AndroidTargetSdkVersion: 0 155 | AndroidPreferredInstallLocation: 1 156 | aotOptions: 157 | stripEngineCode: 1 158 | iPhoneStrippingLevel: 0 159 | iPhoneScriptCallOptimization: 0 160 | ForceInternetPermission: 0 161 | ForceSDCardPermission: 0 162 | CreateWallpaper: 0 163 | APKExpansionFiles: 0 164 | keepLoadedShadersAlive: 0 165 | StripUnusedMeshComponents: 0 166 | VertexChannelCompressionMask: 167 | serializedVersion: 2 168 | m_Bits: 238 169 | iPhoneSdkVersion: 988 170 | iOSTargetOSVersionString: 7.0 171 | tvOSSdkVersion: 0 172 | tvOSRequireExtendedGameController: 0 173 | tvOSTargetOSVersionString: 9.0 174 | uIPrerenderedIcon: 0 175 | uIRequiresPersistentWiFi: 0 176 | uIRequiresFullScreen: 1 177 | uIStatusBarHidden: 1 178 | uIExitOnSuspend: 0 179 | uIStatusBarStyle: 0 180 | iPhoneSplashScreen: {fileID: 0} 181 | iPhoneHighResSplashScreen: {fileID: 0} 182 | iPhoneTallHighResSplashScreen: {fileID: 0} 183 | iPhone47inSplashScreen: {fileID: 0} 184 | iPhone55inPortraitSplashScreen: {fileID: 0} 185 | iPhone55inLandscapeSplashScreen: {fileID: 0} 186 | iPadPortraitSplashScreen: {fileID: 0} 187 | iPadHighResPortraitSplashScreen: {fileID: 0} 188 | iPadLandscapeSplashScreen: {fileID: 0} 189 | iPadHighResLandscapeSplashScreen: {fileID: 0} 190 | appleTVSplashScreen: {fileID: 0} 191 | tvOSSmallIconLayers: [] 192 | tvOSLargeIconLayers: [] 193 | tvOSTopShelfImageLayers: [] 194 | tvOSTopShelfImageWideLayers: [] 195 | iOSLaunchScreenType: 0 196 | iOSLaunchScreenPortrait: {fileID: 0} 197 | iOSLaunchScreenLandscape: {fileID: 0} 198 | iOSLaunchScreenBackgroundColor: 199 | serializedVersion: 2 200 | rgba: 0 201 | iOSLaunchScreenFillPct: 100 202 | iOSLaunchScreenSize: 100 203 | iOSLaunchScreenCustomXibPath: 204 | iOSLaunchScreeniPadType: 0 205 | iOSLaunchScreeniPadImage: {fileID: 0} 206 | iOSLaunchScreeniPadBackgroundColor: 207 | serializedVersion: 2 208 | rgba: 0 209 | iOSLaunchScreeniPadFillPct: 100 210 | iOSLaunchScreeniPadSize: 100 211 | iOSLaunchScreeniPadCustomXibPath: 212 | iOSDeviceRequirements: [] 213 | iOSURLSchemes: [] 214 | iOSBackgroundModes: 0 215 | iOSMetalForceHardShadows: 0 216 | metalEditorSupport: 1 217 | metalAPIValidation: 1 218 | iOSRenderExtraFrameOnPause: 0 219 | appleDeveloperTeamID: 220 | iOSManualSigningProvisioningProfileID: 221 | tvOSManualSigningProvisioningProfileID: 222 | appleEnableAutomaticSigning: 0 223 | AndroidTargetDevice: 0 224 | AndroidSplashScreenScale: 0 225 | androidSplashScreen: {fileID: 0} 226 | AndroidKeystoreName: 227 | AndroidKeyaliasName: 228 | AndroidTVCompatibility: 1 229 | AndroidIsGame: 1 230 | AndroidEnableTango: 0 231 | androidEnableBanner: 1 232 | androidUseLowAccuracyLocation: 0 233 | m_AndroidBanners: 234 | - width: 320 235 | height: 180 236 | banner: {fileID: 0} 237 | androidGamepadSupportLevel: 0 238 | resolutionDialogBanner: {fileID: 0} 239 | m_BuildTargetIcons: [] 240 | m_BuildTargetBatching: [] 241 | m_BuildTargetGraphicsAPIs: [] 242 | m_BuildTargetVRSettings: [] 243 | m_BuildTargetEnableVuforiaSettings: [] 244 | openGLRequireES31: 0 245 | openGLRequireES31AEP: 0 246 | m_TemplateCustomTags: {} 247 | mobileMTRendering: 248 | Android: 1 249 | iPhone: 1 250 | tvOS: 1 251 | wiiUTitleID: 0005000011000000 252 | wiiUGroupID: 00010000 253 | wiiUCommonSaveSize: 4096 254 | wiiUAccountSaveSize: 2048 255 | wiiUOlvAccessKey: 0 256 | wiiUTinCode: 0 257 | wiiUJoinGameId: 0 258 | wiiUJoinGameModeMask: 0000000000000000 259 | wiiUCommonBossSize: 0 260 | wiiUAccountBossSize: 0 261 | wiiUAddOnUniqueIDs: [] 262 | wiiUMainThreadStackSize: 3072 263 | wiiULoaderThreadStackSize: 1024 264 | wiiUSystemHeapSize: 128 265 | wiiUTVStartupScreen: {fileID: 0} 266 | wiiUGamePadStartupScreen: {fileID: 0} 267 | wiiUDrcBufferDisabled: 0 268 | wiiUProfilerLibPath: 269 | playModeTestRunnerEnabled: 0 270 | actionOnDotNetUnhandledException: 1 271 | enableInternalProfiler: 0 272 | logObjCUncaughtExceptions: 1 273 | enableCrashReportAPI: 0 274 | cameraUsageDescription: 275 | locationUsageDescription: 276 | microphoneUsageDescription: 277 | switchNetLibKey: 278 | switchSocketMemoryPoolSize: 6144 279 | switchSocketAllocatorPoolSize: 128 280 | switchSocketConcurrencyLimit: 14 281 | switchScreenResolutionBehavior: 2 282 | switchUseCPUProfiler: 0 283 | switchApplicationID: 0x01004b9000490000 284 | switchNSODependencies: 285 | switchTitleNames_0: 286 | switchTitleNames_1: 287 | switchTitleNames_2: 288 | switchTitleNames_3: 289 | switchTitleNames_4: 290 | switchTitleNames_5: 291 | switchTitleNames_6: 292 | switchTitleNames_7: 293 | switchTitleNames_8: 294 | switchTitleNames_9: 295 | switchTitleNames_10: 296 | switchTitleNames_11: 297 | switchPublisherNames_0: 298 | switchPublisherNames_1: 299 | switchPublisherNames_2: 300 | switchPublisherNames_3: 301 | switchPublisherNames_4: 302 | switchPublisherNames_5: 303 | switchPublisherNames_6: 304 | switchPublisherNames_7: 305 | switchPublisherNames_8: 306 | switchPublisherNames_9: 307 | switchPublisherNames_10: 308 | switchPublisherNames_11: 309 | switchIcons_0: {fileID: 0} 310 | switchIcons_1: {fileID: 0} 311 | switchIcons_2: {fileID: 0} 312 | switchIcons_3: {fileID: 0} 313 | switchIcons_4: {fileID: 0} 314 | switchIcons_5: {fileID: 0} 315 | switchIcons_6: {fileID: 0} 316 | switchIcons_7: {fileID: 0} 317 | switchIcons_8: {fileID: 0} 318 | switchIcons_9: {fileID: 0} 319 | switchIcons_10: {fileID: 0} 320 | switchIcons_11: {fileID: 0} 321 | switchSmallIcons_0: {fileID: 0} 322 | switchSmallIcons_1: {fileID: 0} 323 | switchSmallIcons_2: {fileID: 0} 324 | switchSmallIcons_3: {fileID: 0} 325 | switchSmallIcons_4: {fileID: 0} 326 | switchSmallIcons_5: {fileID: 0} 327 | switchSmallIcons_6: {fileID: 0} 328 | switchSmallIcons_7: {fileID: 0} 329 | switchSmallIcons_8: {fileID: 0} 330 | switchSmallIcons_9: {fileID: 0} 331 | switchSmallIcons_10: {fileID: 0} 332 | switchSmallIcons_11: {fileID: 0} 333 | switchManualHTML: 334 | switchAccessibleURLs: 335 | switchLegalInformation: 336 | switchMainThreadStackSize: 1048576 337 | switchPresenceGroupId: 338 | switchLogoHandling: 0 339 | switchReleaseVersion: 0 340 | switchDisplayVersion: 1.0.0 341 | switchStartupUserAccount: 0 342 | switchTouchScreenUsage: 0 343 | switchSupportedLanguagesMask: 0 344 | switchLogoType: 0 345 | switchApplicationErrorCodeCategory: 346 | switchUserAccountSaveDataSize: 0 347 | switchUserAccountSaveDataJournalSize: 0 348 | switchApplicationAttribute: 0 349 | switchCardSpecSize: -1 350 | switchCardSpecClock: -1 351 | switchRatingsMask: 0 352 | switchRatingsInt_0: 0 353 | switchRatingsInt_1: 0 354 | switchRatingsInt_2: 0 355 | switchRatingsInt_3: 0 356 | switchRatingsInt_4: 0 357 | switchRatingsInt_5: 0 358 | switchRatingsInt_6: 0 359 | switchRatingsInt_7: 0 360 | switchRatingsInt_8: 0 361 | switchRatingsInt_9: 0 362 | switchRatingsInt_10: 0 363 | switchRatingsInt_11: 0 364 | switchLocalCommunicationIds_0: 365 | switchLocalCommunicationIds_1: 366 | switchLocalCommunicationIds_2: 367 | switchLocalCommunicationIds_3: 368 | switchLocalCommunicationIds_4: 369 | switchLocalCommunicationIds_5: 370 | switchLocalCommunicationIds_6: 371 | switchLocalCommunicationIds_7: 372 | switchParentalControl: 0 373 | switchAllowsScreenshot: 1 374 | switchDataLossConfirmation: 0 375 | switchSupportedNpadStyles: 3 376 | switchSocketConfigEnabled: 0 377 | switchTcpInitialSendBufferSize: 32 378 | switchTcpInitialReceiveBufferSize: 64 379 | switchTcpAutoSendBufferSizeMax: 256 380 | switchTcpAutoReceiveBufferSizeMax: 256 381 | switchUdpSendBufferSize: 9 382 | switchUdpReceiveBufferSize: 42 383 | switchSocketBufferEfficiency: 4 384 | switchSocketInitializeEnabled: 1 385 | switchNetworkInterfaceManagerInitializeEnabled: 1 386 | switchPlayerConnectionEnabled: 1 387 | ps4NPAgeRating: 12 388 | ps4NPTitleSecret: 389 | ps4NPTrophyPackPath: 390 | ps4ParentalLevel: 11 391 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 392 | ps4Category: 0 393 | ps4MasterVersion: 01.00 394 | ps4AppVersion: 01.00 395 | ps4AppType: 0 396 | ps4ParamSfxPath: 397 | ps4VideoOutPixelFormat: 0 398 | ps4VideoOutInitialWidth: 1920 399 | ps4VideoOutBaseModeInitialWidth: 1920 400 | ps4VideoOutReprojectionRate: 60 401 | ps4PronunciationXMLPath: 402 | ps4PronunciationSIGPath: 403 | ps4BackgroundImagePath: 404 | ps4StartupImagePath: 405 | ps4SaveDataImagePath: 406 | ps4SdkOverride: 407 | ps4BGMPath: 408 | ps4ShareFilePath: 409 | ps4ShareOverlayImagePath: 410 | ps4PrivacyGuardImagePath: 411 | ps4NPtitleDatPath: 412 | ps4RemotePlayKeyAssignment: -1 413 | ps4RemotePlayKeyMappingDir: 414 | ps4PlayTogetherPlayerCount: 0 415 | ps4EnterButtonAssignment: 1 416 | ps4ApplicationParam1: 0 417 | ps4ApplicationParam2: 0 418 | ps4ApplicationParam3: 0 419 | ps4ApplicationParam4: 0 420 | ps4DownloadDataSize: 0 421 | ps4GarlicHeapSize: 2048 422 | ps4ProGarlicHeapSize: 2560 423 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 424 | ps4pnSessions: 1 425 | ps4pnPresence: 1 426 | ps4pnFriends: 1 427 | ps4pnGameCustomData: 1 428 | playerPrefsSupport: 0 429 | restrictedAudioUsageRights: 0 430 | ps4UseResolutionFallback: 0 431 | ps4ReprojectionSupport: 0 432 | ps4UseAudio3dBackend: 0 433 | ps4SocialScreenEnabled: 0 434 | ps4ScriptOptimizationLevel: 0 435 | ps4Audio3dVirtualSpeakerCount: 14 436 | ps4attribCpuUsage: 0 437 | ps4PatchPkgPath: 438 | ps4PatchLatestPkgPath: 439 | ps4PatchChangeinfoPath: 440 | ps4PatchDayOne: 0 441 | ps4attribUserManagement: 0 442 | ps4attribMoveSupport: 0 443 | ps4attrib3DSupport: 0 444 | ps4attribShareSupport: 0 445 | ps4attribExclusiveVR: 0 446 | ps4disableAutoHideSplash: 0 447 | ps4videoRecordingFeaturesUsed: 0 448 | ps4contentSearchFeaturesUsed: 0 449 | ps4attribEyeToEyeDistanceSettingVR: 0 450 | ps4IncludedModules: [] 451 | monoEnv: 452 | psp2Splashimage: {fileID: 0} 453 | psp2NPTrophyPackPath: 454 | psp2NPSupportGBMorGJP: 0 455 | psp2NPAgeRating: 12 456 | psp2NPTitleDatPath: 457 | psp2NPCommsID: 458 | psp2NPCommunicationsID: 459 | psp2NPCommsPassphrase: 460 | psp2NPCommsSig: 461 | psp2ParamSfxPath: 462 | psp2ManualPath: 463 | psp2LiveAreaGatePath: 464 | psp2LiveAreaBackroundPath: 465 | psp2LiveAreaPath: 466 | psp2LiveAreaTrialPath: 467 | psp2PatchChangeInfoPath: 468 | psp2PatchOriginalPackage: 469 | psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui 470 | psp2KeystoneFile: 471 | psp2MemoryExpansionMode: 0 472 | psp2DRMType: 0 473 | psp2StorageType: 0 474 | psp2MediaCapacity: 0 475 | psp2DLCConfigPath: 476 | psp2ThumbnailPath: 477 | psp2BackgroundPath: 478 | psp2SoundPath: 479 | psp2TrophyCommId: 480 | psp2TrophyPackagePath: 481 | psp2PackagedResourcesPath: 482 | psp2SaveDataQuota: 10240 483 | psp2ParentalLevel: 1 484 | psp2ShortTitle: Not Set 485 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF 486 | psp2Category: 0 487 | psp2MasterVersion: 01.00 488 | psp2AppVersion: 01.00 489 | psp2TVBootMode: 0 490 | psp2EnterButtonAssignment: 2 491 | psp2TVDisableEmu: 0 492 | psp2AllowTwitterDialog: 1 493 | psp2Upgradable: 0 494 | psp2HealthWarning: 0 495 | psp2UseLibLocation: 0 496 | psp2InfoBarOnStartup: 0 497 | psp2InfoBarColor: 0 498 | psp2ScriptOptimizationLevel: 0 499 | psmSplashimage: {fileID: 0} 500 | splashScreenBackgroundSourceLandscape: {fileID: 0} 501 | splashScreenBackgroundSourcePortrait: {fileID: 0} 502 | spritePackerPolicy: 503 | webGLMemorySize: 256 504 | webGLExceptionSupport: 1 505 | webGLNameFilesAsHashes: 0 506 | webGLDataCaching: 0 507 | webGLDebugSymbols: 0 508 | webGLEmscriptenArgs: 509 | webGLModulesDirectory: 510 | webGLTemplate: APPLICATION:Default 511 | webGLAnalyzeBuildSize: 0 512 | webGLUseEmbeddedResources: 0 513 | webGLUseWasm: 0 514 | webGLCompressionFormat: 1 515 | scriptingDefineSymbols: {} 516 | platformArchitecture: {} 517 | scriptingBackend: {} 518 | incrementalIl2cppBuild: {} 519 | additionalIl2CppArgs: 520 | scriptingRuntimeVersion: 0 521 | apiCompatibilityLevelPerPlatform: {} 522 | m_RenderingPath: 1 523 | m_MobileRenderingPath: 1 524 | metroPackageName: Water Simulation 525 | metroPackageVersion: 526 | metroCertificatePath: 527 | metroCertificatePassword: 528 | metroCertificateSubject: 529 | metroCertificateIssuer: 530 | metroCertificateNotAfter: 0000000000000000 531 | metroApplicationDescription: Water Simulation 532 | wsaImages: {} 533 | metroTileShortName: 534 | metroCommandLineArgsFile: 535 | metroTileShowName: 0 536 | metroMediumTileShowName: 0 537 | metroLargeTileShowName: 0 538 | metroWideTileShowName: 0 539 | metroDefaultTileSize: 1 540 | metroTileForegroundText: 2 541 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 542 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 543 | a: 1} 544 | metroSplashScreenUseBackgroundColor: 0 545 | platformCapabilities: {} 546 | metroFTAName: 547 | metroFTAFileTypes: [] 548 | metroProtocolName: 549 | metroCompilationOverrides: 1 550 | tizenProductDescription: 551 | tizenProductURL: 552 | tizenSigningProfileName: 553 | tizenGPSPermissions: 0 554 | tizenMicrophonePermissions: 0 555 | tizenDeploymentTarget: 556 | tizenDeploymentTargetType: -1 557 | tizenMinOSVersion: 1 558 | n3dsUseExtSaveData: 0 559 | n3dsCompressStaticMem: 1 560 | n3dsExtSaveDataNumber: 0x12345 561 | n3dsStackSize: 131072 562 | n3dsTargetPlatform: 2 563 | n3dsRegion: 7 564 | n3dsMediaSize: 0 565 | n3dsLogoStyle: 3 566 | n3dsTitle: GameName 567 | n3dsProductCode: 568 | n3dsApplicationId: 0xFF3FF 569 | stvDeviceAddress: 570 | stvProductDescription: 571 | stvProductAuthor: 572 | stvProductAuthorEmail: 573 | stvProductLink: 574 | stvProductCategory: 0 575 | XboxOneProductId: 576 | XboxOneUpdateKey: 577 | XboxOneSandboxId: 578 | XboxOneContentId: 579 | XboxOneTitleId: 580 | XboxOneSCId: 581 | XboxOneGameOsOverridePath: 582 | XboxOnePackagingOverridePath: 583 | XboxOneAppManifestOverridePath: 584 | XboxOnePackageEncryption: 0 585 | XboxOnePackageUpdateGranularity: 2 586 | XboxOneDescription: 587 | XboxOneLanguage: 588 | - enus 589 | XboxOneCapability: [] 590 | XboxOneGameRating: {} 591 | XboxOneIsContentPackage: 0 592 | XboxOneEnableGPUVariability: 0 593 | XboxOneSockets: {} 594 | XboxOneSplashScreen: {fileID: 0} 595 | XboxOneAllowedProductIds: [] 596 | XboxOnePersistentLocalStorageSize: 0 597 | xboxOneScriptCompiler: 0 598 | vrEditorSettings: 599 | daydream: 600 | daydreamIconForeground: {fileID: 0} 601 | daydreamIconBackground: {fileID: 0} 602 | cloudServicesEnabled: 603 | UNet: 1 604 | facebookSdkVersion: 7.9.4 605 | apiCompatibilityLevel: 2 606 | cloudProjectId: b2787ede-adbf-43e7-a279-88fc5a7e7630 607 | projectName: Water Simulation 608 | organizationId: jingping-yu 609 | cloudEnabled: 0 610 | enableNativePlatformBackendsForNewInputSystem: 0 611 | disableOldInputManagerSupport: 0 612 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2017.2.0f3 2 | -------------------------------------------------------------------------------- /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 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 4 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 4 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 0 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 4 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 70 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 2 136 | antiAliasing: 2 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 4 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 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: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 4 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSM: 5 183 | PSP2: 2 184 | Samsung TV: 2 185 | Standalone: 5 186 | Tizen: 2 187 | WebGL: 3 188 | WiiU: 5 189 | Windows Store Apps: 5 190 | XboxOne: 5 191 | iPhone: 2 192 | tvOS: 2 193 | -------------------------------------------------------------------------------- /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 | - 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 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | m_TestInitMode: 0 11 | CrashReportingSettings: 12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate 14 | m_Enabled: 0 15 | m_CaptureEditorExceptions: 1 16 | UnityPurchasingSettings: 17 | m_Enabled: 0 18 | m_TestMode: 0 19 | UnityAnalyticsSettings: 20 | m_Enabled: 1 21 | m_InitializeOnStartup: 1 22 | m_TestMode: 0 23 | m_TestEventUrl: 24 | m_TestConfigUrl: 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 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # Mistral Water Simualtion System 2 | 3 | ![](Screenshot.png) 4 | 5 | * WARNING: Do NOT directly use the system in your project. This repository is still under development. If you detect any error or have any suggestion please raise an issue or contact me at Mistral@weymire.com 6 | 7 | ### Why I created this Repo 8 | 9 | * 1. Fully understand water simulation techniques and corresponding computer graphics conceptions and read more papers. 10 | * 2. Possibly turn all these shit into formal use. (Who knows? ) 11 | 12 | ### Ocean Renderer 13 | 14 | * Based on Tessendorf's Paper and Stockham FFT. 15 | * Supports whitecap based on Jacobian determinant. 16 | * No external textures needed. 17 | * Supports Direct3D, OpenGL Core, Metal, OpenGL ES and Vulkan. 18 | * Mistral Water/Demo/Ocean Demo.unity is the demo of the ocean rendering. Mistral Water/Demo/FFT Mesh.unity just shows the theory of ocean rendering with CPU only. 19 | 20 | ### Pond/Lake Water Renderer 21 | 22 | * Supports sinusoids and Gerstner Waves. 23 | * Depth-based color tint. 24 | * Reflection and refraction. 25 | * Edge-detection foams. 26 | 27 | ### On the Fly 28 | 29 | * Ocean Renderer with be divided into two separate parts: one for theory and one for production. 30 | * Ocean Renderer's PC and console version will support MRT to boost performance and reduce draw call. 31 | * Ocean Renderer will fully support Mobile devices. 32 | * Ocean Renderer will integrate water particles to allow water dynamics. 33 | * Ocean Renderer will support flow map. 34 | * Pond Water Renderer will support more custom effects. 35 | 36 | ### LICENSE 37 | 38 | * MIT -------------------------------------------------------------------------------- /Screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlphaMistral/Mistral-Water/71b21c344687e21dbe36b4b4b5ad43f135f6f0c8/Screenshot.png -------------------------------------------------------------------------------- /UnityPackageManager/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | } 4 | } 5 | --------------------------------------------------------------------------------