diff --git a/.attestation.p7m b/.attestation.p7m new file mode 100644 index 0000000..1fb6f7b Binary files /dev/null and b/.attestation.p7m differ diff --git a/Editor.meta b/Editor.meta new file mode 100644 index 0000000..863c362 --- /dev/null +++ b/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc7979466f6e1e948949ae3059416aa9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data.meta b/Editor/Internal Data.meta new file mode 100644 index 0000000..7f865bb --- /dev/null +++ b/Editor/Internal Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca96a2862b1510d40a7bd9069f5b4b05 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/NimbleFox.dll b/Editor/Internal Data/NimbleFox.dll new file mode 100644 index 0000000..644fd43 Binary files /dev/null and b/Editor/Internal Data/NimbleFox.dll differ diff --git a/Editor/Internal Data/NimbleFox.dll.meta b/Editor/Internal Data/NimbleFox.dll.meta new file mode 100644 index 0000000..fdf2fe6 --- /dev/null +++ b/Editor/Internal Data/NimbleFox.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 7861f916a74620a329608f7ad05286eb +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party.meta b/Editor/Internal Data/Third Party.meta new file mode 100644 index 0000000..029ff9f --- /dev/null +++ b/Editor/Internal Data/Third Party.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 533248d89f7b59feab40f2fcbe66c0d6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.CSharp.dll b/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.CSharp.dll new file mode 100644 index 0000000..15a106f Binary files /dev/null and b/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.CSharp.dll differ diff --git a/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.CSharp.dll.meta b/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.CSharp.dll.meta new file mode 100644 index 0000000..33e0ca1 --- /dev/null +++ b/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.CSharp.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: bc4a22c7dc2f013ad9c5c16fc1b0aaa7 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.dll b/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.dll new file mode 100644 index 0000000..af924f2 Binary files /dev/null and b/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.dll differ diff --git a/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.dll.meta b/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.dll.meta new file mode 100644 index 0000000..a91837e --- /dev/null +++ b/Editor/Internal Data/Third Party/Microsoft.CodeAnalysis.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 3aa8155466902756dbd0285c6692c899 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders.meta b/Editor/Internal Data/Third Party/Shaders.meta new file mode 100644 index 0000000..50ed0ad --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8683c421329a85d5a961df19cf5af2ed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Layers.meta b/Editor/Internal Data/Third Party/Shaders/Layers.meta new file mode 100644 index 0000000..780b8dc --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 20fa72b659e90fa43968c87a232b37f8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/Clamp.hlsl b/Editor/Internal Data/Third Party/Shaders/Layers/Clamp.hlsl new file mode 100644 index 0000000..335c247 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/Clamp.hlsl @@ -0,0 +1,15 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +// Variables +float2 ClampRange; + +// Kernel +[numthreads(32,1,1)] +void Clamp (uint3 id : SV_DispatchThreadID) +{ + if(id.x < HeightMapLength){ // Keep in bounds + // Update texture + HeightBuffer[id.x] = clamp(HeightBuffer[id.x], ClampRange.x, ClampRange.y); + } +} + diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/Clamp.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Layers/Clamp.hlsl.meta new file mode 100644 index 0000000..b6c9ece --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/Clamp.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 87cf122e8f207694aa255ce415696591 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/Expand.hlsl b/Editor/Internal Data/Third Party/Shaders/Layers/Expand.hlsl new file mode 100644 index 0000000..c96881d --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/Expand.hlsl @@ -0,0 +1,14 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +// Variables +float2 ExpanderMinMax; + +// Kernel +[numthreads(32,1,1)] +void Expand (uint3 id : SV_DispatchThreadID) +{ + if(id.x < HeightMapLength){ // Keep in bounds + // Expand height + HeightBuffer[id.x] = clamp((HeightBuffer[id.x] - ExpanderMinMax.x) / ExpanderMinMax.y, 0, 1); + } +} diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/Expand.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Layers/Expand.hlsl.meta new file mode 100644 index 0000000..b79c027 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/Expand.hlsl.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 32af8ef11d4f6e24289de4765f4d6347 +timeCreated: 1556402402 \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/HeightContrast.hlsl b/Editor/Internal Data/Third Party/Shaders/Layers/HeightContrast.hlsl new file mode 100644 index 0000000..c431ae8 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/HeightContrast.hlsl @@ -0,0 +1,12 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +// Variables +float HeightContrastPow; + +// Kernel +[numthreads(32,1,1)] +void HeightContrast (uint3 id : SV_DispatchThreadID) +{ + // Expand height + HeightBuffer[id.x] = clamp(pow(abs(HeightBuffer[id.x] + 0.5), HeightContrastPow) - 0.5, 0, 1); +} diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/HeightContrast.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Layers/HeightContrast.hlsl.meta new file mode 100644 index 0000000..74e09b2 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/HeightContrast.hlsl.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2386040a4e4bbb04faa3dcc57c80e435 +timeCreated: 1556405164 \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/HeightMapToTexture.hlsl b/Editor/Internal Data/Third Party/Shaders/Layers/HeightMapToTexture.hlsl new file mode 100644 index 0000000..f965833 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/HeightMapToTexture.hlsl @@ -0,0 +1,21 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +// Kernel +[numthreads(32,32,1)] +void HeightMapToTexture (uint3 id : SV_DispatchThreadID) +{ + // Get width and height of texture + int w,h; + Texture.GetDimensions(w,h); + + // Calculate position relative to heightmap + float2 relativeID = RelativizeVector(id.x, id.y, w, h); + float2 heightMapPos = float2(relativeID.x * HeightMapResolution, relativeID.y * HeightMapResolution); + + // Calculate height + float3 gradient = CalculateGradientAndHeight(heightMapPos, HeightMapResolution, HeightBuffer); + + // Set height + + Texture[id.xy] = float4(gradient.z,gradient.z,gradient.z,1); +} diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/HeightMapToTexture.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Layers/HeightMapToTexture.hlsl.meta new file mode 100644 index 0000000..91b0b83 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/HeightMapToTexture.hlsl.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0ae8d18f40ac1974db9ed6523037bda7 +timeCreated: 1556291579 \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/HydraulicErosion.hlsl b/Editor/Internal Data/Third Party/Shaders/Layers/HydraulicErosion.hlsl new file mode 100644 index 0000000..42aa56f --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/HydraulicErosion.hlsl @@ -0,0 +1,103 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +// Variables +uint ErosionParticleCount; +uint ErosionMaxLifeTime; +float ErosionInertia; +float ErosionParticleStartSpeed; +float ErosionParticleStartWater; +float ErosionSedimentCapacityFactor; +float ErosionMinSedimentCapacity; +float ErosionSpeed; +float ErosionEvaporateSpeed; +float ErosionGravity; +float ErosionDepositSpeed; + +// Kernel +[numthreads(32,1,1)] +void HydraulicErosion (uint3 id : SV_DispatchThreadID) +{ + if(id.x < ErosionParticleCount){ // Keep in bounds + float randomNormalizedX = Random(id.x); + float randomNormalizedY = Random(id.x + HeightMapResolution * randomNormalizedX); + + float2 pos = float2( + randomNormalizedX * HeightMapResolution, + randomNormalizedY * HeightMapResolution + ); + + // Particle values + float2 dir = float2(0,0); + float speed = ErosionParticleStartSpeed; + float water = ErosionParticleStartWater; + float sediment = 0; + + for(uint lifeTime = 0; lifeTime < ErosionMaxLifeTime; lifeTime++){ + // Calculate texture coords + uint2 coord = uint2( + (uint) pos.x, + (uint) pos.y + ); + + int index = PosToIndex(coord, HeightMapResolution); + + // Calculate cell offset + float2 cellOffset = float2( + pos.x - float(coord.x), + pos.y - float(coord.y) + ); + + // Calculate interpolated gradient and height + float3 heightAndGradient = CalculateGradientAndHeight(pos, HeightMapResolution, HeightBuffer); + + // Update the droplet's direction and position (move position 1 unit regardless of speed) + dir.x = (dir.x * ErosionInertia - heightAndGradient.x * (1 - ErosionInertia)); + dir.y = (dir.y * ErosionInertia - heightAndGradient.y * (1 - ErosionInertia)); + + // Normalize dir + dir = Normalize2D(dir); + + // Add to position + pos += dir; + + // Header guard to check wheter particle is still inside texture and moving + if((dir.x == 0 && dir.y == 0) || pos.x <= 0 || pos.y <= 0 || pos.x >= float(HeightMapResolution - 2) || pos.y >= float(HeightMapResolution - 2)){ break; } + + // Calculate new height and deltaHeight + float height = CalculateGradientAndHeight(pos, HeightMapResolution, HeightBuffer).z; + float deltaHeight = height - heightAndGradient.z; + + // Calculate the droplet's sediment capacity (higher when moving fast down a slope and contains lots of water) + float sedimentCapacity = max(-deltaHeight, ErosionMinSedimentCapacity) * speed * water * ErosionSedimentCapacityFactor; + + // If carrying more sediment than capacity, or if flowing uphill: + if (sediment > sedimentCapacity || deltaHeight > 0) { + // If moving uphill (deltaHeight > 0) try fill up to the current height, otherwise deposit a fraction of the excess sediment + float amountToDeposit = (deltaHeight > 0) ? + min(deltaHeight, sediment) : + (sediment - sedimentCapacity) * ErosionDepositSpeed; + + // Remove deposited sediment + sediment -= amountToDeposit; + + // Add the sediment to the four nodes of the current cell using bilinear interpolation + AddToBuffer(index, HeightMapResolution, cellOffset, amountToDeposit, HeightBuffer); + } + else { + // Erode a fraction of the droplet's current carry capacity. + // Clamp the erosion to the change in height so that it doesn't dig a hole in the terrain behind the droplet + float amountToErode = min((sedimentCapacity - sediment) * ErosionSpeed, -deltaHeight); + + // Remove erosion amount from heightmap + AddToBuffer(index, HeightMapResolution, cellOffset, -amountToErode, HeightBuffer); + + // Add eroded amount to sediment currently carried + sediment += amountToErode; + } + + // Update droplet's speed and water content + speed = sqrt (max(0,speed * speed + deltaHeight * ErosionGravity)); + water *= (1 - ErosionEvaporateSpeed); + } + } +} \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/HydraulicErosion.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Layers/HydraulicErosion.hlsl.meta new file mode 100644 index 0000000..70ab4d7 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/HydraulicErosion.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fa4ceb37d27b27746821c24bfb4c208b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/PerlinNoise.hlsl b/Editor/Internal Data/Third Party/Shaders/Layers/PerlinNoise.hlsl new file mode 100644 index 0000000..9602d05 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/PerlinNoise.hlsl @@ -0,0 +1,62 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +// Variables +uint PerlinType; +float PerlinAmplitude; +float PerlinFrequency; +float2 PerlinOffset; +uint PerlinOctaves; +float PerlinOctavesStrength; + +// Methods +float StandardPerlinNoise(uint id, float amplitude, float2 offset){ + // Calculate vector + float2 pos = IndexToFloatVector(id, HeightMapResolution); + + // Calculate x and y position + float x = float(pos.x) / HeightMapResolution; + float y = float(pos.y) / HeightMapResolution; + + // Generate noise + return cnoise(float2(x * amplitude + offset.x, y * amplitude + offset.y)); +} + +float BillowyPerlinNoise(uint id, float amplitude, float2 offset){ + float noise = StandardPerlinNoise(id, amplitude, offset); + return abs(noise * 2 - 1); +} + +float RigidPerlinNoise(uint id, float amplitude, float2 offset){ + return 1 - BillowyPerlinNoise(id, amplitude, offset);; +} + +// Kernel +[numthreads(32,1,1)] +void PerlinNoise (uint3 id : SV_DispatchThreadID) +{ + if(id.x < HeightMapLength){ // Keep in bounds + float total = 0; + float frequency = PerlinFrequency; + float amplitude = 1; + float maxvalue = 0; + + for(uint i = 0; i < PerlinOctaves; i++){ + + // Types + if(PerlinType == 0){ // Standard + total += StandardPerlinNoise(id.x, frequency, PerlinOffset) * amplitude; + } else if(PerlinType == 1){ // Billowy + total += BillowyPerlinNoise(id.x, frequency, PerlinOffset) * amplitude; + } else if(PerlinType == 2){ // Rigid + total += RigidPerlinNoise(id.x, frequency, PerlinOffset) * amplitude; + } + + maxvalue += amplitude; + amplitude *= PerlinOctavesStrength; + frequency *= 2; + } + + // Update buffer + HeightBuffer[id.x] = total/maxvalue; + } +} diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/PerlinNoise.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Layers/PerlinNoise.hlsl.meta new file mode 100644 index 0000000..2d8f23f --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/PerlinNoise.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0260ec8f278be834195f00cac6315f59 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/PseudoRandomNoise.hlsl b/Editor/Internal Data/Third Party/Shaders/Layers/PseudoRandomNoise.hlsl new file mode 100644 index 0000000..f9d8d0c --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/PseudoRandomNoise.hlsl @@ -0,0 +1,20 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +// Variables +uint PseudoRandomNoiseSeed; + +// Kernel +[numthreads(32,1,1)] +void PseudoRandomNoise (uint3 id : SV_DispatchThreadID) +{ + if(id.x < HeightMapLength){ // Keep in bounds + // Calculate vector + uint2 pos = IndexToVector(id.x, HeightMapResolution); + + // Generate noise + float noise = Random((pos.x + (pos.y * HeightMapResolution)) * PseudoRandomNoiseSeed); + + // Update buffer + HeightBuffer[id.x] = noise; + } +} diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/PseudoRandomNoise.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Layers/PseudoRandomNoise.hlsl.meta new file mode 100644 index 0000000..e466721 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/PseudoRandomNoise.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 73e7265746e81774ebca11f4b98413e4 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/Terrace.hlsl b/Editor/Internal Data/Third Party/Shaders/Layers/Terrace.hlsl new file mode 100644 index 0000000..4da0f26 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/Terrace.hlsl @@ -0,0 +1,30 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +// Variables +uint TerraceCount; +float TerraceShape; +bool Smooth; + +// Kernel +[numthreads(1024,1,1)] +void Terrace (uint3 id : SV_DispatchThreadID) +{ + if(id.x < HeightMapLength){ // Keep in bounds + float height = HeightBuffer[id.x] * TerraceCount; // Calculate height inside the terrace range + uint heightFloor = uint(height); // Floor the height + float difference = height - heightFloor; // Difference between height and floor. Normalized terrace + + if(Smooth){ // Should the terraces be smooth or sharp. Changes what part of the sigmoid is used + difference = (NormalisedSigmoid(difference * 2 - 1, TerraceShape) + 1) / 2; + } else { + difference = NormalisedSigmoid(difference, TerraceShape); + } + + // Calculate floor and ceil of terrace + float floor = float(heightFloor) / TerraceCount; + float ceil = float(heightFloor + 1) / TerraceCount; + + // Update buffer + HeightBuffer[id.x] = lerp(floor, ceil, difference); + } +} diff --git a/Editor/Internal Data/Third Party/Shaders/Layers/Terrace.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Layers/Terrace.hlsl.meta new file mode 100644 index 0000000..108ebba --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Layers/Terrace.hlsl.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8f9c8c3b289cae746b013fe7e3d21d3c +timeCreated: 1557500706 \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Shaders/NimbleFoxDepthToGrayscale.shader b/Editor/Internal Data/Third Party/Shaders/NimbleFoxDepthToGrayscale.shader new file mode 100644 index 0000000..501cd76 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/NimbleFoxDepthToGrayscale.shader @@ -0,0 +1,34 @@ +Shader "Hidden/NimbleFox/DepthToGrayscale" +{ + SubShader + { + Cull Off + ZWrite Off + ZTest Always + + Pass + { + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag + #include "UnityCG.cginc" + + UNITY_DECLARE_DEPTH_TEXTURE(_MainTex); + + float _DepthRangeNear; + float _DepthRangeFar; + + fixed4 frag(v2f_img i) : SV_Target + { + float rawDepth = SAMPLE_DEPTH_TEXTURE(_MainTex, i.uv); + float linearDepth = LinearEyeDepth(rawDepth); + float normalizedDepth = saturate((linearDepth - _DepthRangeNear) / max(0.0001, _DepthRangeFar - _DepthRangeNear)); + float grayscale = 1.0 - normalizedDepth; + return fixed4(grayscale, grayscale, grayscale, 1.0); + } + ENDCG + } + } + + Fallback Off +} diff --git a/Editor/Internal Data/Third Party/Shaders/NimbleFoxDepthToGrayscale.shader.meta b/Editor/Internal Data/Third Party/Shaders/NimbleFoxDepthToGrayscale.shader.meta new file mode 100644 index 0000000..2c0b3fe --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/NimbleFoxDepthToGrayscale.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0e57ab23464b9b773bcae5cab8d1f466 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Utils.meta b/Editor/Internal Data/Third Party/Shaders/Utils.meta new file mode 100644 index 0000000..de31d95 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cba69cdcca6e7cd4fac00498c7d4f6aa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Utils/ClassicNoise2D.hlsl b/Editor/Internal Data/Third Party/Shaders/Utils/ClassicNoise2D.hlsl new file mode 100644 index 0000000..5330803 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Utils/ClassicNoise2D.hlsl @@ -0,0 +1,106 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +float4 mod(float4 x, float4 y) +{ + return x - y * floor(x / y); +} + +float4 mod289(float4 x) +{ + return x - floor(x / 289.0) * 289.0; +} + +float4 permute(float4 x) +{ + return mod289(((x*34.0)+1.0)*x); +} + +float4 taylorInvSqrt(float4 r) +{ + return (float4)1.79284291400159 - r * 0.85373472095314; +} + +float2 fade(float2 t) { + return t*t*t*(t*(t*6.0-15.0)+10.0); +} + +// Classic Perlin noise +float cnoise(float2 P) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac (P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + + float4 i = permute(permute(ix) + iy); + + float4 gx = frac(i / 41.0) * 2.0 - 1.0 ; + float4 gy = abs(gx) - 0.5 ; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + + float2 g00 = float2(gx.x,gy.x); + float2 g10 = float2(gx.y,gy.y); + float2 g01 = float2(gx.z,gy.z); + float2 g11 = float2(gx.w,gy.w); + + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return (2.3 * n_xy) / 2 + 0.5; +} + +// Classic Perlin noise, periodic variant +float pnoise(float2 P, float2 rep) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac (P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod(Pi, rep.xyxy); // To create noise with explicit period + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + + float4 i = permute(permute(ix) + iy); + + float4 gx = frac(i / 41.0) * 2.0 - 1.0 ; + float4 gy = abs(gx) - 0.5 ; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + + float2 g00 = float2(gx.x,gy.x); + float2 g10 = float2(gx.y,gy.y); + float2 g01 = float2(gx.z,gy.z); + float2 g11 = float2(gx.w,gy.w); + + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} diff --git a/Editor/Internal Data/Third Party/Shaders/Utils/ClassicNoise2D.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Utils/ClassicNoise2D.hlsl.meta new file mode 100644 index 0000000..47082fd --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Utils/ClassicNoise2D.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f8a6a61a2747363409cee3af98e65684 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Utils/PRNG.hlsl b/Editor/Internal Data/Third Party/Shaders/Utils/PRNG.hlsl new file mode 100644 index 0000000..6fa652c --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Utils/PRNG.hlsl @@ -0,0 +1,17 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +uint Hash(uint s) +{ + s ^= 2747636419u; + s *= 2654435769u; + s ^= s >> 16; + s *= 2654435769u; + s ^= s >> 16; + s *= 2654435769u; + return s; +} + +float Random(uint seed) +{ + return float(Hash(seed)) / 4294967295.0; // 2^32-1 +} \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Shaders/Utils/PRNG.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Utils/PRNG.hlsl.meta new file mode 100644 index 0000000..7a86448 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Utils/PRNG.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: be8762190190dc54c8f77d4d86a95899 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/Utils/WorldKitUtils.hlsl b/Editor/Internal Data/Third Party/Shaders/Utils/WorldKitUtils.hlsl new file mode 100644 index 0000000..22e0c30 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Utils/WorldKitUtils.hlsl @@ -0,0 +1,116 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +float Magnitude2D(float2 dir){ + return max(0.01,sqrt(dir.x * dir.x + dir.y * dir.y)); +} + +float Magnitude3D(float3 dir){ + return max(0.01,sqrt(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z)); +} + +float2 Normalize2D(float2 dir){ + float magnitude = Magnitude2D(dir); + dir.x /= magnitude; + dir.y /= magnitude; + return dir; +} + +float3 Normalize3D(float3 dir){ + float magnitude = Magnitude3D(dir); + dir.x /= magnitude; + dir.y /= magnitude; + dir.z /= magnitude; + return dir; +} + +int PosToIndex(uint2 pos, int width){ + return pos.x + (pos.y * width); +} + +uint2 IndexToVector(int index, int width){ + float division = float(index) / float(width); + int rounded = int(division); + return uint2((division - float(rounded)) * width,rounded); +} + +float2 IndexToFloatVector(int index, int width){ + float division = float(index) / float(width); + int rounded = int(division); + return float2((division - float(rounded)) * width,rounded); +} + + +float2 RelativizeVector(float x, float y, float w, float h){ + return float2( + x / w, + y / h + ); +} + +float3 RelativizeVector(float3 vec, float3 size){ + return float3( + vec.x / size.x, + vec.y / size.y, + vec.z / size.z + ); + } + + void AddToBuffer(int index, int resolution, float2 cellOffset, float value, RWStructuredBuffer buffer){ + buffer[index] += value * (1 - cellOffset.x) * (1 - cellOffset.y); + buffer[index + 1] += value * cellOffset.x * (1 - cellOffset.y); + buffer[index + resolution] += value * (1 - cellOffset.x) * cellOffset.y; + buffer[index + resolution + 1] += value * cellOffset.x * cellOffset.y; +} + + float3 CalculateNormal(uint2 pos, int resolution, float3 size, RWStructuredBuffer buffer){ + // Calculate multiplier direction + float multiplier = -1; + if(pos.x <= 0 || pos.y <= 0){ multiplier = 1; } + + // Calculate left, right, up and down vertex positions + float3 c = float3(pos.x, 0, pos.y); + float3 l = float3(pos.x - 1, 0, pos.y); + float3 u = float3(pos.x, 0, pos.y - 1); + + // Gather heights for left, right, up and down vertices + c.y = buffer[PosToIndex(uint2(c.xz), resolution)] * size.y; + l.y = buffer[PosToIndex(uint2(l.xz), resolution)] * size.y; + u.y = buffer[PosToIndex(uint2(u.xz), resolution)] * size.y; + + // calculate normal direction + return Normalize3D(cross(l - c, u - c)) * multiplier; + } + + float NormalisedSigmoid(float x, float k){ + return (x - x * k) / (k - abs(x) * 2 * k + 1); + } + +float3 CalculateGradientAndHeight (float2 pos, int resolution, RWStructuredBuffer buffer) { + // Calculate coords + uint2 coord = uint2( + (int) pos.x, + (int) pos.y + ); + + // Calculate index + int index = PosToIndex(coord, resolution); + + // Calculate droplet's offset inside the cell (0,0) = at NW node, (1,1) = at SE node + float x = pos.x - float(coord.x); + float y = pos.y - float(coord.y); + + // Calculate heights of the four nodes of the droplet's cell + float heightNW = buffer[index]; + float heightNE = buffer[index + 1]; + float heightSW = buffer[index + HeightMapResolution]; + float heightSE = buffer[index + HeightMapResolution + 1]; + + // Calculate droplet's direction of flow with bilinear interpolation of height difference along the edges + float gradientX = (heightNE - heightNW) * (1 - y) + (heightSE - heightSW) * y; + float gradientY = (heightSW - heightNW) * (1 - x) + (heightSE - heightNE) * x; + + // Calculate height with bilinear interpolation of the heights of the nodes of the cell + float height = heightNW * (1 - x) * (1 - y) + heightNE * x * (1 - y) + heightSW * (1 - x) * y + heightSE * x * y; + + return float3(gradientX,gradientY,height); +} \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Shaders/Utils/WorldKitUtils.hlsl.meta b/Editor/Internal Data/Third Party/Shaders/Utils/WorldKitUtils.hlsl.meta new file mode 100644 index 0000000..9c44ec6 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/Utils/WorldKitUtils.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 59e6ae1a6b22ad441a32c557dd169a70 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Shaders/WorldKitShader.compute b/Editor/Internal Data/Third Party/Shaders/WorldKitShader.compute new file mode 100644 index 0000000..68b06b5 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/WorldKitShader.compute @@ -0,0 +1,37 @@ +// Licensed under the Non-Profit Open Software License version 3.0 + +// Each #kernel tells which function to compile; you can have many kernels +#pragma kernel PerlinNoise +#pragma kernel Clamp +#pragma kernel HydraulicErosion +#pragma kernel PseudoRandomNoise +#pragma kernel HeightMapToTexture +#pragma kernel Expand +#pragma kernel HeightContrast +#pragma kernel Terrace + +// Declare global buffers +float BlendStrength; + +// Texture buffer +RWTexture2D Texture; + +// Height buffer +uint HeightMapResolution; +uint HeightMapLength; +RWStructuredBuffer HeightBuffer; + +// Global includes +#include "Utils/PRNG.hlsl" +#include "Utils/ClassicNoise2D.hlsl" +#include "Utils/WorldKitUtils.hlsl" + +// Kernel includes +#include "Layers/PerlinNoise.hlsl" +#include "Layers/Clamp.hlsl" +#include "Layers/HydraulicErosion.hlsl" +#include "Layers/PseudoRandomNoise.hlsl" +#include "Layers/HeightMapToTexture.hlsl" +#include "Layers/Expand.hlsl" +#include "Layers/HeightContrast.hlsl" +#include "Layers/Terrace.hlsl" diff --git a/Editor/Internal Data/Third Party/Shaders/WorldKitShader.compute.meta b/Editor/Internal Data/Third Party/Shaders/WorldKitShader.compute.meta new file mode 100644 index 0000000..88d1665 --- /dev/null +++ b/Editor/Internal Data/Third Party/Shaders/WorldKitShader.compute.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8b62a14992acf549a4ee7cbec513922 +ComputeShaderImporter: + externalObjects: {} + currentAPIMask: 4 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/System.Collections.Immutable.dll b/Editor/Internal Data/Third Party/System.Collections.Immutable.dll new file mode 100644 index 0000000..b182127 Binary files /dev/null and b/Editor/Internal Data/Third Party/System.Collections.Immutable.dll differ diff --git a/Editor/Internal Data/Third Party/System.Collections.Immutable.dll.meta b/Editor/Internal Data/Third Party/System.Collections.Immutable.dll.meta new file mode 100644 index 0000000..ca6f997 --- /dev/null +++ b/Editor/Internal Data/Third Party/System.Collections.Immutable.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: e7cf7c31152e567349aab832257b3590 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/System.Reflection.Metadata.dll b/Editor/Internal Data/Third Party/System.Reflection.Metadata.dll new file mode 100644 index 0000000..adaaee7 Binary files /dev/null and b/Editor/Internal Data/Third Party/System.Reflection.Metadata.dll differ diff --git a/Editor/Internal Data/Third Party/System.Reflection.Metadata.dll.meta b/Editor/Internal Data/Third Party/System.Reflection.Metadata.dll.meta new file mode 100644 index 0000000..5fd991f --- /dev/null +++ b/Editor/Internal Data/Third Party/System.Reflection.Metadata.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: a0e9b552a97843d32a7579345e19ae7d +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/System.Runtime.CompilerServices.Unsafe.dll b/Editor/Internal Data/Third Party/System.Runtime.CompilerServices.Unsafe.dll new file mode 100644 index 0000000..491a80a Binary files /dev/null and b/Editor/Internal Data/Third Party/System.Runtime.CompilerServices.Unsafe.dll differ diff --git a/Editor/Internal Data/Third Party/System.Runtime.CompilerServices.Unsafe.dll.meta b/Editor/Internal Data/Third Party/System.Runtime.CompilerServices.Unsafe.dll.meta new file mode 100644 index 0000000..b5ff138 --- /dev/null +++ b/Editor/Internal Data/Third Party/System.Runtime.CompilerServices.Unsafe.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 8ab7e0c253787c4228ec3f5a1102418b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Terrain.meta b/Editor/Internal Data/Third Party/Terrain.meta new file mode 100644 index 0000000..9854f8a --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1498d22cec52a2011aa9aec00cfbc7bb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Terrain/Presets.meta b/Editor/Internal Data/Third Party/Terrain/Presets.meta new file mode 100644 index 0000000..695fbb9 --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain/Presets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f6e45b5124d10f45faab79c02068b425 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Terrain/Presets/ErosionPresets.json b/Editor/Internal Data/Third Party/Terrain/Presets/ErosionPresets.json new file mode 100644 index 0000000..95f3390 --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain/Presets/ErosionPresets.json @@ -0,0 +1,65 @@ +[ + { + "Name": "Weak", + "Settings": { + "ParticleCount": 103616, + "Passes": 1, + "MaxLifetime": 80, + "Inertia": 0.136, + "StartSpeed": 2.0, + "StartWater": 1.0, + "SedimentCapacityFactor": 6.0, + "MinSedimentCapacity": 0.0, + "ErosionSpeed": 0.3, + "EvaporateSpeed": 0.059, + "DepositSpeed": 0.3, + "MacroDownscaleFactor": 1, + "DetailBlend": 0.5, + "SpikeSmoothIterations": 2, + "SpikeSmoothThreshold": 0.0001, + "SpikeSmoothStrength": 0.5 + } + }, + { + "Name": "Medium", + "Settings": { + "ParticleCount": 153600, + "Passes": 1, + "MaxLifetime": 120, + "Inertia": 0.03, + "StartSpeed": 2.0, + "StartWater": 1.0, + "SedimentCapacityFactor": 6.0, + "MinSedimentCapacity": 0.0, + "ErosionSpeed": 0.3, + "EvaporateSpeed": 0.02, + "DepositSpeed": 0.3, + "MacroDownscaleFactor": 1, + "DetailBlend": 0.5, + "SpikeSmoothIterations": 2, + "SpikeSmoothThreshold": 0.0001, + "SpikeSmoothStrength": 0.5 + } + }, + { + "Name": "Strong", + "Settings": { + "ParticleCount": 136416, + "Passes": 4, + "MaxLifetime": 110, + "Inertia": 0.132, + "StartSpeed": 1.32, + "StartWater": 1.27, + "SedimentCapacityFactor": 5.63, + "MinSedimentCapacity": 0.0, + "ErosionSpeed": 0.4, + "EvaporateSpeed": 0.199, + "DepositSpeed": 0.37, + "MacroDownscaleFactor": 1, + "DetailBlend": 0.592, + "SpikeSmoothIterations": 8, + "SpikeSmoothThreshold": 0.002, + "SpikeSmoothStrength": 0.693 + } + } +] \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Terrain/Presets/ErosionPresets.json.meta b/Editor/Internal Data/Third Party/Terrain/Presets/ErosionPresets.json.meta new file mode 100644 index 0000000..e54a318 --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain/Presets/ErosionPresets.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4da7827884a7ea7d5aafbea4dbbd04a6 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Terrain/Presets/HeightMapPresets.json b/Editor/Internal Data/Third Party/Terrain/Presets/HeightMapPresets.json new file mode 100644 index 0000000..249217c --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain/Presets/HeightMapPresets.json @@ -0,0 +1,277 @@ +[ + { + "Name": "Plains", + "FastNoise": { + "Seed_TA": 1337, + "NoiseType_TA": 4, + "FractalType_TA": 1, + "Frequency_TA": 0.003, + "Octaves_TA": 5, + "Lacunarity_TA": 2.0, + "Gain_TA": 0.5, + "WeightedStrength_TA": 0.0, + "PingPongStrength_TA": 2.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.57, + "LakeStrength": 0.05, + "Seed": 1337 + }, + { + "Name": "Hills", + "FastNoise": { + "Seed_TA": 4242, + "NoiseType_TA": 1, + "FractalType_TA": 3, + "Frequency_TA": 0.001, + "Octaves_TA": 5, + "Lacunarity_TA": 2.0, + "Gain_TA": 0.5, + "WeightedStrength_TA": 0.0, + "PingPongStrength_TA": 2.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.4, + "LakeStrength": 0.0, + "Seed": 4242 + }, + { + "Name": "Valleys", + "FastNoise": { + "Seed_TA": 5252, + "NoiseType_TA": 0, + "FractalType_TA": 1, + "Frequency_TA": 0.0013, + "Octaves_TA": 6, + "Lacunarity_TA": 2.2, + "Gain_TA": 0.263, + "WeightedStrength_TA": -0.897, + "PingPongStrength_TA": 2.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.65, + "LakeStrength": 0.15, + "Seed": 5252 + }, + { + "Name": "Small Spiky Islands", + "FastNoise": { + "Seed_TA": 6516, + "NoiseType_TA": 2, + "FractalType_TA": 1, + "Frequency_TA": 0.005, + "Octaves_TA": 8, + "Lacunarity_TA": 1.56, + "Gain_TA": 0.559, + "WeightedStrength_TA": -0.211, + "PingPongStrength_TA": 1.13, + "RotationType_TA": 2, + "AmplitudeMeters_TA": 1466.34, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.56, + "LakeStrength": 0.441, + "Seed": 6516 + }, + { + "Name": "Valleys with sharp mountains", + "FastNoise": { + "Seed_TA": 0, + "NoiseType_TA": 2, + "FractalType_TA": 2, + "Frequency_TA": 0.004, + "Octaves_TA": 7, + "Lacunarity_TA": 2.0, + "Gain_TA": 0.437, + "WeightedStrength_TA": 0.239, + "PingPongStrength_TA": 2.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.7, + "LakeStrength": 0.0, + "Seed": 0 + }, + { + "Name": "Large Mountains", + "FastNoise": { + "Seed_TA": 38, + "NoiseType_TA": 4, + "FractalType_TA": 3, + "Frequency_TA": 0.00225, + "Octaves_TA": 9, + "Lacunarity_TA": 2.0, + "Gain_TA": 0.41, + "WeightedStrength_TA": -0.23, + "PingPongStrength_TA": 2.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.86, + "LakeStrength": 0.0, + "Seed": 38 + }, + { + "Name": "Highlands", + "FastNoise": { + "Seed_TA": 6516, + "NoiseType_TA": 4, + "FractalType_TA": 3, + "Frequency_TA": 0.003, + "Octaves_TA": 5, + "Lacunarity_TA": 2.09, + "Gain_TA": 0.357, + "WeightedStrength_TA": -0.737, + "PingPongStrength_TA": 1.63, + "RotationType_TA": 2, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.61, + "LakeStrength": 0.0, + "Seed": 6516 + }, + { + "Name": "Overly Spiky Mountains", + "FastNoise": { + "Seed_TA": 6516, + "NoiseType_TA": 2, + "FractalType_TA": 1, + "Frequency_TA": 0.003, + "Octaves_TA": 4, + "Lacunarity_TA": 1.82, + "Gain_TA": 0.634, + "WeightedStrength_TA": -0.099, + "PingPongStrength_TA": 1.09, + "RotationType_TA": 2, + "AmplitudeMeters_TA": 466.34, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 1.45, + "LakeStrength": 0.07, + "Seed": 6516 + }, + { + "Name": "Islands", + "FastNoise": { + "Seed_TA": 27, + "NoiseType_TA": 4, + "FractalType_TA": 3, + "Frequency_TA": 0.00325, + "Octaves_TA": 8, + "Lacunarity_TA": 1.89, + "Gain_TA": 0.344, + "WeightedStrength_TA": -0.783, + "PingPongStrength_TA": 1.85, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.49, + "LakeStrength": 3.22, + "Seed": 27 + }, + { + "Name": "SuperFlat", + "FastNoise": { + "Seed_TA": 0, + "NoiseType_TA": 0, + "FractalType_TA": 0, + "Frequency_TA": 1E-06, + "Octaves_TA": 1, + "Lacunarity_TA": 2.0, + "Gain_TA": 0.5, + "WeightedStrength_TA": 0.0, + "PingPongStrength_TA": 0.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 1.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.0, + "LakeStrength": 0.0, + "Seed": 0 + }, + { + "Name": "Dunes", + "FastNoise": { + "Seed_TA": 6516, + "NoiseType_TA": 4, + "FractalType_TA": 2, + "Frequency_TA": 0.011, + "Octaves_TA": 4, + "Lacunarity_TA": 0.84, + "Gain_TA": 0.571, + "WeightedStrength_TA": -0.269, + "PingPongStrength_TA": 1.13, + "RotationType_TA": 2, + "AmplitudeMeters_TA": 1466.34, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "HeightMultiplier": 0.26, + "LakeStrength": 0.441, + "Seed": 6516 + } +] \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Terrain/Presets/HeightMapPresets.json.meta b/Editor/Internal Data/Third Party/Terrain/Presets/HeightMapPresets.json.meta new file mode 100644 index 0000000..1f8f5c8 --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain/Presets/HeightMapPresets.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7ff1b49bcc82d4a0fa95e8d13fc7e31b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Terrain/Presets/TerrainFeaturePresets.json b/Editor/Internal Data/Third Party/Terrain/Presets/TerrainFeaturePresets.json new file mode 100644 index 0000000..f95ce71 --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain/Presets/TerrainFeaturePresets.json @@ -0,0 +1,610 @@ +[ + { + "Name": "MountainPeak", + "Scale": 0.0095, + "Octaves": 6, + "Persistence": 0.5, + "Lacunarity": 2.4, + "HeightMultiplier": 0.27, + "BaseHeight": 0.26, + "FastNoise": { + "Seed_TA": 13, + "NoiseType_TA": 0, + "FractalType_TA": 1, + "Frequency_TA": 0.006, + "Octaves_TA": 3, + "Lacunarity_TA": 1.56, + "Gain_TA": 0.871, + "WeightedStrength_TA": -0.249, + "PingPongStrength_TA": 1.54, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": 0.61, + "normalized": { + "x": 0.0, + "y": 1.0, + "magnitude": 1.0, + "sqrMagnitude": 1.0 + }, + "magnitude": 0.61, + "sqrMagnitude": 0.372100025 + } + }, + "Seed": 13, + "Offset": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + }, + "InvertRegion": false, + "DefaultRegionPosition": { + "x": 0.5, + "y": 0.5, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.707106769, + "sqrMagnitude": 0.5 + }, + "DefaultRegionSize": { + "x": 0.2, + "y": 0.2, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.282842726, + "sqrMagnitude": 0.0800000057 + }, + "DefaultStrength": 1.0, + "DefaultOpacity": 0.8, + "DefaultRegionShape": "circle", + "UseWavePattern": false, + "WaveStrength": 0.0, + "WaveFrequency": 1.0, + "WavePhase": 0.0, + "WaveDirectionDegrees": 0.0, + "WaveSquiggle": 0.0, + "WaveRandomness": 0.0 + }, + { + "Name": "SpikyCraterFields", + "Scale": 0.006, + "Octaves": 5, + "Persistence": 0.45, + "Lacunarity": 2.2, + "HeightMultiplier": 0.25, + "BaseHeight": 0.0, + "FastNoise": { + "Seed_TA": 0, + "NoiseType_TA": 2, + "FractalType_TA": 3, + "Frequency_TA": 0.006, + "Octaves_TA": 3, + "Lacunarity_TA": 1.56, + "Gain_TA": 0.871, + "WeightedStrength_TA": -0.249, + "PingPongStrength_TA": 1.54, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": -0.05, + "normalized": { + "x": 0.0, + "y": -1.0, + "magnitude": 1.0, + "sqrMagnitude": 1.0 + }, + "magnitude": 0.05, + "sqrMagnitude": 0.00250000018 + } + }, + "Seed": 0, + "Offset": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + }, + "InvertRegion": false, + "DefaultRegionPosition": { + "x": 0.5, + "y": 0.5, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.707106769, + "sqrMagnitude": 0.5 + }, + "DefaultRegionSize": { + "x": 0.4, + "y": 0.4, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.565685451, + "sqrMagnitude": 0.320000023 + }, + "DefaultStrength": 1.2, + "DefaultOpacity": 1.0, + "DefaultRegionShape": "circle", + "UseWavePattern": false, + "WaveStrength": 0.14, + "WaveFrequency": 1.0, + "WavePhase": 0.0, + "WaveDirectionDegrees": 0.0, + "WaveSquiggle": 0.0, + "WaveRandomness": 0.0 + }, + { + "Name": "Crater Copy", + "Scale": 0.006, + "Octaves": 5, + "Persistence": 0.45, + "Lacunarity": 2.2, + "HeightMultiplier": 0.59, + "BaseHeight": 0.41, + "FastNoise": { + "Seed_TA": 0, + "NoiseType_TA": 0, + "FractalType_TA": 1, + "Frequency_TA": 0.003, + "Octaves_TA": 5, + "Lacunarity_TA": 1.76, + "Gain_TA": 0.5, + "WeightedStrength_TA": 0.0, + "PingPongStrength_TA": 2.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": -0.05, + "normalized": { + "x": 0.0, + "y": -1.0, + "magnitude": 1.0, + "sqrMagnitude": 1.0 + }, + "magnitude": 0.05, + "sqrMagnitude": 0.00250000018 + } + }, + "Seed": 0, + "Offset": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + }, + "InvertRegion": false, + "DefaultRegionPosition": { + "x": 0.5, + "y": 0.5, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.707106769, + "sqrMagnitude": 0.5 + }, + "DefaultRegionSize": { + "x": 0.4, + "y": 0.4, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.565685451, + "sqrMagnitude": 0.320000023 + }, + "DefaultStrength": 1.2, + "DefaultOpacity": 1.0, + "DefaultRegionShape": "circle", + "UseWavePattern": false, + "WaveStrength": 0.14, + "WaveFrequency": 1.0, + "WavePhase": 0.0, + "WaveDirectionDegrees": 0.0, + "WaveSquiggle": 0.0, + "WaveRandomness": 0.0 + }, + { + "Name": "Island", + "Scale": 0.0045, + "Octaves": 5, + "Persistence": 0.5, + "Lacunarity": 2.0, + "HeightMultiplier": 0.25, + "BaseHeight": 0.25, + "FastNoise": { + "Seed_TA": 101, + "NoiseType_TA": 0, + "FractalType_TA": 1, + "Frequency_TA": 0.0032, + "Octaves_TA": 5, + "Lacunarity_TA": 1.9, + "Gain_TA": 0.5, + "WeightedStrength_TA": -0.15, + "PingPongStrength_TA": 1.5, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 600.0, + "Offset_TA": { + "x": 0.0, + "y": -0.4, + "normalized": { + "x": 0.0, + "y": -1.0, + "magnitude": 1.0, + "sqrMagnitude": 1.0 + }, + "magnitude": 0.4, + "sqrMagnitude": 0.160000011 + } + }, + "Seed": 101, + "Offset": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + }, + "InvertRegion": true, + "DefaultRegionPosition": { + "x": 0.5, + "y": 0.5, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.707106769, + "sqrMagnitude": 0.5 + }, + "DefaultRegionSize": { + "x": 0.6, + "y": 0.6, + "normalized": { + "x": 0.7071068, + "y": 0.7071068, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 1.00000012, + "sqrMagnitude": 1.00000012 + }, + "magnitude": 0.848528147, + "sqrMagnitude": 0.72 + }, + "DefaultStrength": 1.0, + "DefaultOpacity": 1.0, + "DefaultRegionShape": "circle", + "UseWavePattern": false, + "WaveStrength": 0.0, + "WaveFrequency": 1.0, + "WavePhase": 0.0, + "WaveDirectionDegrees": 0.0, + "WaveSquiggle": 0.0, + "WaveRandomness": 0.0 + }, + { + "Name": "Cracked Ground", + "Scale": 0.012, + "Octaves": 4, + "Persistence": 0.5, + "Lacunarity": 2.1, + "HeightMultiplier": 0.2, + "BaseHeight": 0.0, + "FastNoise": { + "Seed_TA": 202, + "NoiseType_TA": 2, + "FractalType_TA": 3, + "Frequency_TA": 0.012, + "Octaves_TA": 4, + "Lacunarity_TA": 2.1, + "Gain_TA": 0.6, + "WeightedStrength_TA": 0.2, + "PingPongStrength_TA": 1.2, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 350.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "Seed": 202, + "Offset": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + }, + "InvertRegion": false, + "DefaultRegionPosition": { + "x": 0.5, + "y": 0.5, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.707106769, + "sqrMagnitude": 0.5 + }, + "DefaultRegionSize": { + "x": 0.5, + "y": 0.5, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.707106769, + "sqrMagnitude": 0.5 + }, + "DefaultStrength": 1.0, + "DefaultOpacity": 1.0, + "DefaultRegionShape": "circle", + "UseWavePattern": false, + "WaveStrength": 0.0, + "WaveFrequency": 1.0, + "WavePhase": 0.0, + "WaveDirectionDegrees": 0.0, + "WaveSquiggle": 0.0, + "WaveRandomness": 0.0 + }, + { + "Name": "Valley Basin", + "Scale": 0.004, + "Octaves": 4, + "Persistence": 0.45, + "Lacunarity": 2.0, + "HeightMultiplier": 0.3, + "BaseHeight": 0.0, + "FastNoise": { + "Seed_TA": 404, + "NoiseType_TA": 0, + "FractalType_TA": 1, + "Frequency_TA": 0.0025, + "Octaves_TA": 4, + "Lacunarity_TA": 1.8, + "Gain_TA": 0.5, + "WeightedStrength_TA": -0.35, + "PingPongStrength_TA": 1.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 700.0, + "Offset_TA": { + "x": 0.0, + "y": -0.2, + "normalized": { + "x": 0.0, + "y": -1.0, + "magnitude": 1.0, + "sqrMagnitude": 1.0 + }, + "magnitude": 0.2, + "sqrMagnitude": 0.0400000028 + } + }, + "Seed": 404, + "Offset": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + }, + "InvertRegion": false, + "DefaultRegionPosition": { + "x": 0.5, + "y": 0.5, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.707106769, + "sqrMagnitude": 0.5 + }, + "DefaultRegionSize": { + "x": 0.6, + "y": 0.6, + "normalized": { + "x": 0.7071068, + "y": 0.7071068, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 1.00000012, + "sqrMagnitude": 1.00000012 + }, + "magnitude": 0.848528147, + "sqrMagnitude": 0.72 + }, + "DefaultStrength": 1.0, + "DefaultOpacity": 1.0, + "DefaultRegionShape": "circle", + "UseWavePattern": false, + "WaveStrength": 0.0, + "WaveFrequency": 1.0, + "WavePhase": 0.0, + "WaveDirectionDegrees": 0.0, + "WaveSquiggle": 0.0, + "WaveRandomness": 0.0 + }, + { + "Name": "River", + "Scale": 0.0055, + "Octaves": 5, + "Persistence": 0.5, + "Lacunarity": 2.0, + "HeightMultiplier": 0.0, + "BaseHeight": 0.24, + "FastNoise": { + "Seed_TA": 505, + "NoiseType_TA": 1, + "FractalType_TA": 2, + "Frequency_TA": 0.0045, + "Octaves_TA": 5, + "Lacunarity_TA": 1.9, + "Gain_TA": 0.55, + "WeightedStrength_TA": 0.0, + "PingPongStrength_TA": 1.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 500.0, + "Offset_TA": { + "x": 0.0, + "y": -0.05, + "normalized": { + "x": 0.0, + "y": -1.0, + "magnitude": 1.0, + "sqrMagnitude": 1.0 + }, + "magnitude": 0.05, + "sqrMagnitude": 0.00250000018 + } + }, + "Seed": 505, + "Offset": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + }, + "InvertRegion": false, + "DefaultRegionPosition": { + "x": 0.5, + "y": 0.5, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.707106769, + "sqrMagnitude": 0.5 + }, + "DefaultRegionSize": { + "x": 0.25, + "y": 0.6, + "normalized": { + "x": 0.384615362, + "y": 0.9230769, + "magnitude": 1.0, + "sqrMagnitude": 1.0 + }, + "magnitude": 0.650000036, + "sqrMagnitude": 0.4225 + }, + "DefaultStrength": 1.0, + "DefaultOpacity": 1.0, + "DefaultRegionShape": "square", + "UseWavePattern": false, + "WaveStrength": 0.0, + "WaveFrequency": 1.0, + "WavePhase": 0.0, + "WaveDirectionDegrees": 0.0, + "WaveSquiggle": 0.0, + "WaveRandomness": 0.0 + }, + { + "Name": "Flat", + "Scale": 0.0095, + "Octaves": 6, + "Persistence": 0.5, + "Lacunarity": 2.4, + "HeightMultiplier": 0.0, + "BaseHeight": 0.0, + "FastNoise": { + "Seed_TA": 0, + "NoiseType_TA": 0, + "FractalType_TA": 1, + "Frequency_TA": 0.003, + "Octaves_TA": 5, + "Lacunarity_TA": 2.0, + "Gain_TA": 0.5, + "WeightedStrength_TA": 0.0, + "PingPongStrength_TA": 2.0, + "RotationType_TA": 0, + "AmplitudeMeters_TA": 1.0, + "Offset_TA": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + } + }, + "Seed": 0, + "Offset": { + "x": 0.0, + "y": 0.0, + "magnitude": 0.0, + "sqrMagnitude": 0.0 + }, + "InvertRegion": false, + "DefaultRegionPosition": { + "x": 0.5, + "y": 0.5, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.707106769, + "sqrMagnitude": 0.5 + }, + "DefaultRegionSize": { + "x": 0.25, + "y": 0.25, + "normalized": { + "x": 0.707106769, + "y": 0.707106769, + "magnitude": 1.0, + "sqrMagnitude": 0.99999994 + }, + "magnitude": 0.353553385, + "sqrMagnitude": 0.125 + }, + "DefaultStrength": 1.0, + "DefaultOpacity": 1.0, + "DefaultRegionShape": "circle", + "UseWavePattern": false, + "WaveStrength": 0.0, + "WaveFrequency": 1.0, + "WavePhase": 0.0, + "WaveDirectionDegrees": 0.0, + "WaveSquiggle": 0.0, + "WaveRandomness": 0.0 + } +] \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Terrain/Presets/TerrainFeaturePresets.json.meta b/Editor/Internal Data/Third Party/Terrain/Presets/TerrainFeaturePresets.json.meta new file mode 100644 index 0000000..12d26ea --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain/Presets/TerrainFeaturePresets.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4897b605d00330333a2592c51b462be1 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Internal Data/Third Party/Terrain/Presets/TerrainTextureLayers.json b/Editor/Internal Data/Third Party/Terrain/Presets/TerrainTextureLayers.json new file mode 100644 index 0000000..717f282 --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain/Presets/TerrainTextureLayers.json @@ -0,0 +1,47 @@ +[ + { + "Name": "Rare Gravel Patches (Base)", + "TextureAsset": "AlpineSnowTexture", + "TextureAssetPath": "Assets/Local Asset Store/AlpineSnowTexture.png", + "NormalAssetPath": "Assets/MockUserProject/textures/gravel_ground_01_2k.blend/gravel_ground_01_nor_gl_2k.exr", + "MinHeight": 0.0, + "MaxHeight": 0.5, + "MinSlope": 0.0, + "MaxSlope": 0.3, + "ConcavityBias": 0.9 + }, + { + "Name": "Exposed Cliff Rock", + "TextureAsset": "AlpineSnowTexture", + "TextureAssetPath": "Assets/Local Asset Store/AlpineSnowTexture.png", + "NormalAssetPath": "Assets/MockUserProject/textures/rock_boulder_dry_2k.blend/rock_boulder_dry_nor_gl_2k.exr", + "MinHeight": 0.5, + "MaxHeight": 0.6, + "MinSlope": 0.38, + "MaxSlope": 0.8, + "ConcavityBias": 0.025 + }, + { + "Name": "Base Snow (Lower / Mid)", + "TextureAsset": "rock_face_03_diff_2k", + "TextureAssetPath": "Assets/MockUserProject/textures/rock_face_03_2k.blend/rock_face_03_diff_2k.jpg", + "NormalAsset": "rock_face_03_nor_gl_2k", + "NormalAssetPath": "Assets/MockUserProject/textures/rock_face_03_2k.blend/rock_face_03_nor_gl_2k.exr", + "MinHeight": 0.3, + "MaxHeight": 0.8, + "MinSlope": 0.27, + "MaxSlope": 1.0, + "ConcavityBias": 0.084 + }, + { + "Name": "Summit Snow (Upper)", + "TextureAsset": "AlpineSnowTexture", + "TextureAssetPath": "Assets/Local Asset Store/AlpineSnowTexture.png", + "NormalAssetPath": "Assets/MockUserProject/textures/snow_02_2k.blend/snow_02_nor_gl_2k.exr", + "MinHeight": 0.7, + "MaxHeight": 1.0, + "MinSlope": 0.0, + "MaxSlope": 0.6, + "ConcavityBias": 0.91 + } +] \ No newline at end of file diff --git a/Editor/Internal Data/Third Party/Terrain/Presets/TerrainTextureLayers.json.meta b/Editor/Internal Data/Third Party/Terrain/Presets/TerrainTextureLayers.json.meta new file mode 100644 index 0000000..b8a5532 --- /dev/null +++ b/Editor/Internal Data/Third Party/Terrain/Presets/TerrainTextureLayers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5b461ce4193af2901bf85889192e83a4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/UI.meta b/Editor/UI.meta new file mode 100644 index 0000000..1a4b90e --- /dev/null +++ b/Editor/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed68d4037d0467e44af9674320e5fe33 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/UI/Elements.meta b/Editor/UI/Elements.meta new file mode 100644 index 0000000..6b7c019 --- /dev/null +++ b/Editor/UI/Elements.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a797f6c90009de94a852f42abe4a4cc6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/UI/Elements/NimbleAction.uxml b/Editor/UI/Elements/NimbleAction.uxml new file mode 100644 index 0000000..02364fb --- /dev/null +++ b/Editor/UI/Elements/NimbleAction.uxml @@ -0,0 +1,13 @@ + +