Release v0.9.6

This commit is contained in:
nimblefox-ci
2026-07-31 19:29:07 +03:00
parent 3602e87e0c
commit 8e6b90a10e
264 changed files with 12411 additions and 2 deletions
Binary file not shown.
+33
View File
@@ -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:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 533248d89f7b59feab40f2fcbe66c0d6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -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:
@@ -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:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8683c421329a85d5a961df19cf5af2ed
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 20fa72b659e90fa43968c87a232b37f8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -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);
}
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 87cf122e8f207694aa255ce415696591
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
@@ -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);
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 32af8ef11d4f6e24289de4765f4d6347
timeCreated: 1556402402
@@ -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);
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2386040a4e4bbb04faa3dcc57c80e435
timeCreated: 1556405164
@@ -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);
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 0ae8d18f40ac1974db9ed6523037bda7
timeCreated: 1556291579
@@ -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);
}
}
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: fa4ceb37d27b27746821c24bfb4c208b
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
@@ -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;
}
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 0260ec8f278be834195f00cac6315f59
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
@@ -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;
}
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 73e7265746e81774ebca11f4b98413e4
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
@@ -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);
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8f9c8c3b289cae746b013fe7e3d21d3c
timeCreated: 1557500706
@@ -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
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 0e57ab23464b9b773bcae5cab8d1f466
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cba69cdcca6e7cd4fac00498c7d4f6aa
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -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;
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f8a6a61a2747363409cee3af98e65684
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
@@ -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
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: be8762190190dc54c8f77d4d86a95899
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
@@ -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<float> 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<float> 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<float> 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);
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 59e6ae1a6b22ad441a32c557dd169a70
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
@@ -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<float4> Texture;
// Height buffer
uint HeightMapResolution;
uint HeightMapLength;
RWStructuredBuffer<float> 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"
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e8b62a14992acf549a4ee7cbec513922
ComputeShaderImporter:
externalObjects: {}
currentAPIMask: 4
userData:
assetBundleName:
assetBundleVariant:
@@ -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:
@@ -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:
@@ -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:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1498d22cec52a2011aa9aec00cfbc7bb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f6e45b5124d10f45faab79c02068b425
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -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
}
}
]
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4da7827884a7ea7d5aafbea4dbbd04a6
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -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
}
]
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7ff1b49bcc82d4a0fa95e8d13fc7e31b
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -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
}
]
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4897b605d00330333a2592c51b462be1
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -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
}
]
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5b461ce4193af2901bf85889192e83a4
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: