VolumetricFog 2.0

This commit is contained in:
Bartek
2025-10-13 14:55:32 +02:00
parent c5f574b05c
commit 59d14633a5
59 changed files with 827 additions and 192 deletions

8
Assets/Editor.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cb91fccbcc88c5e4ba5e73ed6b8057c8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,93 @@
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.IO;
public class CreatePerlinFogAsset : EditorWindow
{
public int size = 64;
public float scale = 0.05f;
public int seed = 1337;
public string assetPath = "Assets/FogNoise.asset";
[MenuItem("Tools/Generate Fog Texture3D")]
static void OpenWindow() => GetWindow<CreatePerlinFogAsset>("Generate Fog 3D");
void OnGUI()
{
GUILayout.Label("Generate 3D Perlin Fog Texture", EditorStyles.boldLabel);
size = EditorGUILayout.IntField("Size", size);
scale = EditorGUILayout.FloatField("Scale", scale);
seed = EditorGUILayout.IntField("Seed", seed);
assetPath = EditorGUILayout.TextField("Asset Path", assetPath);
if (GUILayout.Button("Generate and Save"))
{
var tex = CreatePerlin3D(size, scale, seed);
tex.wrapMode = TextureWrapMode.Repeat;
tex.filterMode = FilterMode.Trilinear;
tex.Apply();
// ensure directory exists
var dir = Path.GetDirectoryName(assetPath);
if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir))
Directory.CreateDirectory(dir);
AssetDatabase.CreateAsset(tex, assetPath);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
EditorUtility.FocusProjectWindow();
Selection.activeObject = AssetDatabase.LoadAssetAtPath<Texture3D>(assetPath);
Debug.Log($"Texture3D saved to {assetPath}");
}
}
static Texture3D CreatePerlin3D(int size, float scale, int seed)
{
var tex = new Texture3D(size, size, size, TextureFormat.RGBA32, false);
var colors = new Color[size * size * size];
System.Random rng = new System.Random(seed);
float offsetX = (float)rng.NextDouble() * 10000f;
float offsetY = (float)rng.NextDouble() * 10000f;
float offsetZ = (float)rng.NextDouble() * 10000f;
int idx = 0;
for (int z = 0; z < size; z++)
{
float wz = (z + offsetZ) * scale;
for (int y = 0; y < size; y++)
{
float wy = (y + offsetY) * scale;
for (int x = 0; x < size; x++)
{
float wx = (x + offsetX) * scale;
float n = FractalPerlin(wx, wy, wz, 3);
colors[idx++] = new Color(n, n, n, n);
}
}
}
tex.SetPixels(colors);
tex.Apply();
return tex;
}
static float FractalPerlin(float x, float y, float z, int octaves)
{
float amp = 1f;
float freq = 1f;
float sum = 0f;
float max = 0f;
for (int i = 0; i < octaves; i++)
{
sum += amp * Mathf.PerlinNoise(x * freq, y * freq);
sum += amp * Mathf.PerlinNoise(y * freq, z * freq);
sum += amp * Mathf.PerlinNoise(z * freq, x * freq);
max += 3f * amp;
amp *= 0.5f;
freq *= 2f;
}
return Mathf.Clamp01(sum / max);
}
}
#endif

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 652f3fea4a0cee84584740a20adda1b5

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 921 KiB

View File

@@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: d10e6a092c503ab4199ecec3ae5c953e
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d9d82f5af5ffea248a3cac2b7ea4a4af
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 853091bba666d1541bcf46287f5d8b0a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 60d9ec5fcaf76684f856b882ab632a45
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -70,7 +70,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: d10e6a092c503ab4199ecec3ae5c953e, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3595323a20e4e9149af6b2682ddbbd16
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11700000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: de9d333e7ece24e488908a9b606d2575
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11700000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b9aa881a4e8a39846be9a61466800446
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11700000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,65 @@
using UnityEngine;
[ExecuteAlways]
public class FogNoiseGenerator : MonoBehaviour
{
public Material targetMaterial;
public string propertyName = "_FogNoise";
public int size = 64;
public float scale = 0.05f;
public int seed = 1337;
void Start() { if (Application.isPlaying) Generate(); }
[ContextMenu("Generate Noise")]
public void Generate()
{
if (targetMaterial == null) { Debug.LogWarning("No target material set"); return; }
var tex = CreatePerlin3D(size, scale, seed);
tex.wrapMode = TextureWrapMode.Repeat;
tex.filterMode = FilterMode.Trilinear;
tex.Apply();
targetMaterial.SetTexture(propertyName, tex);
Debug.Log("Generated Texture3D and assigned to material");
}
static Texture3D CreatePerlin3D(int size, float scale, int seed)
{
var tex = new Texture3D(size, size, size, TextureFormat.RGBA32, false);
var cols = new Color[size * size * size];
var rng = new System.Random(seed);
float ox = (float)rng.NextDouble() * 10000f, oy = (float)rng.NextDouble() * 10000f, oz = (float)rng.NextDouble() * 10000f;
int idx = 0;
for (int z = 0; z < size; z++)
{
float wz = (z + oz) * scale;
for (int y = 0; y < size; y++)
{
float wy = (y + oy) * scale;
for (int x = 0; x < size; x++)
{
float wx = (x + ox) * scale;
float n = FractalPerlin(wx, wy, wz, 3);
cols[idx++] = new Color(n, n, n, n);
}
}
}
tex.SetPixels(cols);
return tex;
}
static float FractalPerlin(float x, float y, float z, int octaves)
{
float amp = 1f, freq = 1f, sum = 0f, max = 0f;
for (int i = 0; i < octaves; i++)
{
sum += amp * Mathf.PerlinNoise(x * freq, y * freq);
sum += amp * Mathf.PerlinNoise(y * freq, z * freq);
sum += amp * Mathf.PerlinNoise(z * freq, x * freq);
max += 3f * amp;
amp *= 0.5f;
freq *= 2f;
}
return Mathf.Clamp01(sum / max);
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 491a2f6e8cbd1ff49a2eb93772881d0e

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 0d15428c5d6d1a0408461251a83ec103
guid: 122f172c549967c4cbc3ca3e80298b5f
TextureImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@@ -0,0 +1,167 @@
Shader "Custom/VolumetricFog_ExtendedFX"
{
Properties
{
_ColorLow("Fog Color Low", Color) = (0.6, 0.6, 0.7, 1)
_ColorHigh("Fog Color High", Color) = (0.8, 0.8, 0.9, 1)
_AmbientFogColor("Ambient Fog Color", Color) = (0.3, 0.3, 0.35, 1)
_MaxDistance("Max Distance", Float) = 100
_StepSize("Step Size", Range(0.1, 20)) = 1
_MaxSteps("Max Steps", Range(8, 256)) = 64
_DensityMultiplier("Density Multiplier", Range(0, 10)) = 1
_DensityThreshold("Density Threshold", Range(0, 1)) = 0.1
_HeightFalloff("Height Falloff", Range(0, 2)) = 0.2
_NoiseOffset("Noise Offset", Float) = 0
_NoiseTiling("Noise Tiling", Float) = 1
_FogNoise("Fog Noise", 3D) = "white" {}
_NoiseScrollSpeed("Noise Scroll Speed (XYZ)", Vector) = (0.02, 0, 0.015, 0)
_NoisePulseSpeed("Noise Pulse Speed", Float) = 0.2
_NoisePulseAmount("Noise Pulse Amount", Float) = 0.1
[HDR]_LightContribution("Light Contribution", Color) = (1, 1, 1, 1)
_LightScattering("Light Scattering (g)", Range(-1, 1)) = 0.2
_DepthFade("Depth Fade Strength", Range(0,1)) = 0.3
// ✅ Soft clip dla near fade
_NearStart("Near Fade Start", Float) = 1.0
_NearEnd("Near Fade End", Float) = 3.0
_DayColor("Day Fog Tint", Color) = (0.7,0.75,0.8,1)
_NightColor("Night Fog Tint", Color) = (0.3,0.35,0.4,1)
_DayFactor("Day/Night Blend", Range(0,1)) = 0.5
_GodRayStrength("God Ray Strength", Range(0,1)) = 0.2
_DitherStrength("Dither Strength", Range(0,1)) = 0.3
_ColorSteps("Color Steps", Range(2,32)) = 8
}
SubShader
{
Tags { "RenderType"="Opaque" "RenderPipeline"="UniversalPipeline" }
Pass
{
HLSLPROGRAM
#pragma vertex Vert
#pragma fragment frag
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
#pragma multi_compile _ _ADDITIONAL_LIGHTS
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl"
float4 _ColorLow, _ColorHigh, _AmbientFogColor;
float _MaxDistance, _StepSize; int _MaxSteps;
float _DensityMultiplier, _DensityThreshold, _HeightFalloff;
float _NoiseOffset, _NoiseTiling; TEXTURE3D(_FogNoise);
float3 _NoiseScrollSpeed; float _NoisePulseSpeed, _NoisePulseAmount;
float4 _LightContribution; float _LightScattering;
float _DepthFade;
float _NearStart, _NearEnd;
float4 _DayColor, _NightColor; float _DayFactor, _GodRayStrength;
float _DitherStrength; float _ColorSteps;
float henyey_greenstein(float cosTheta, float g)
{
float g2 = g * g;
return (1.0 - g2) / (4.0 * PI * pow(1.0 + g2 - 2.0 * g * cosTheta, 1.5));
}
float get_density(float3 worldPos)
{
float pulse = 1.0 + sin(_Time.y * _NoisePulseSpeed) * _NoisePulseAmount;
float3 noiseCoords = worldPos * 0.01 * _NoiseTiling * pulse;
noiseCoords += _NoiseScrollSpeed * _Time.y;
float4 noise = _FogNoise.SampleLevel(sampler_TrilinearRepeat, noiseCoords, 0);
float density = noise.r;
density = saturate(density - _DensityThreshold) * _DensityMultiplier;
density *= exp(-max(0, worldPos.y) * _HeightFalloff);
return density;
}
half4 frag(Varyings IN) : SV_Target
{
float4 col = SAMPLE_TEXTURE2D(_BlitTexture, sampler_LinearClamp, IN.texcoord);
float depth = SampleSceneDepth(IN.texcoord);
float3 worldPos = ComputeWorldSpacePosition(IN.texcoord, depth, UNITY_MATRIX_I_VP);
float3 entryPoint = _WorldSpaceCameraPos;
float3 viewDir = worldPos - _WorldSpaceCameraPos;
float viewLength = length(viewDir);
float3 rayDir = normalize(viewDir);
float2 pixelCoords = IN.texcoord * _BlitTexture_TexelSize.zw;
float distLimit = min(viewLength, _MaxDistance);
float distTravelled = InterleavedGradientNoise(pixelCoords, (int)(_Time.y / max(HALF_EPS, unity_DeltaTime.x))) * _NoiseOffset;
float transmittance = 1.0;
float3 fogAccum = 0;
[loop]
for (int i = 0; i < _MaxSteps && distTravelled < distLimit; i++)
{
float3 rayPos = entryPoint + rayDir * distTravelled;
float density = get_density(rayPos);
if (density > 0)
{
Light mainLight = GetMainLight(TransformWorldToShadowCoord(rayPos));
float phase = henyey_greenstein(dot(rayDir, mainLight.direction), _LightScattering);
float3 lightCol = mainLight.color.rgb * _LightContribution.rgb * phase * mainLight.shadowAttenuation;
#if defined(_ADDITIONAL_LIGHTS)
uint lightCount = GetAdditionalLightsCount();
[loop]
for (uint li = 0; li < lightCount; li++)
{
Light addLight = GetAdditionalLight(li, rayPos);
float phaseAdd = henyey_greenstein(dot(rayDir, addLight.direction), _LightScattering);
lightCol += addLight.color.rgb * _LightContribution.rgb * phaseAdd * addLight.distanceAttenuation;
}
#endif
float3 fogColor = lerp(_ColorLow.rgb, _ColorHigh.rgb, saturate(rayPos.y * 0.01));
float3 dayNightTint = lerp(_NightColor.rgb, _DayColor.rgb, _DayFactor);
fogColor = lerp(fogColor, dayNightTint, 0.5);
fogColor = lerp(fogColor, _AmbientFogColor.rgb, 0.25);
fogColor += lightCol * _GodRayStrength;
// ✅ Depth fade
float fade = exp(-distTravelled * _DepthFade);
// ✅ Soft clip near fade
float nearFactor = saturate((distTravelled - _NearStart) / (_NearEnd - _NearStart));
density *= fade * nearFactor;
fogAccum += (fogColor + lightCol) * density * _StepSize;
transmittance *= exp(-density * _StepSize);
if (transmittance < 0.01) break;
}
distTravelled += _StepSize;
}
float3 finalFog = fogAccum * transmittance;
float dither = frac(sin(dot(pixelCoords, float2(12.9898,78.233))) * 43758.5453);
finalFog += (dither - 0.5) * _DitherStrength.xxx;
finalFog = floor(finalFog * _ColorSteps) / _ColorSteps;
return float4(lerp(col.rgb, finalFog, 1.0 - saturate(transmittance)), 1.0);
}
ENDHLSL
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 6934182509f924641a5a75ad544128c9
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -8,11 +8,12 @@ Material:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Volumetric Light
m_Shader: {fileID: 4800000, guid: 188ef53a12823a14ca334af8b197bad1, type: 3}
m_Shader: {fileID: 4800000, guid: 6934182509f924641a5a75ad544128c9, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_InvalidKeywords:
- _GLOSSYREFLECTIONS_OFF
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@@ -48,10 +49,14 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _FogNoise:
m_Texture: {fileID: 11700000, guid: d2993425f654940448af634a1d7cf838, type: 2}
- _FogMask:
m_Texture: {fileID: 2800000, guid: 122f172c549967c4cbc3ca3e80298b5f, type: 3}
m_Scale: {x: 0, y: 0}
m_Offset: {x: 0, y: 0}
- _FogNoise:
m_Texture: {fileID: 11700000, guid: 3595323a20e4e9149af6b2682ddbbd16, type: 2}
m_Scale: {x: 100, y: 100}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
@@ -89,49 +94,78 @@ Material:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _AmbientScattering: 0.1
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _ColorSteps: 6
- _Cull: 2
- _Cutoff: 0.5
- _DensityMultiplier: 0.001
- _DensityThreshold: 0
- _DayFactor: 0.091
- _DensityMultiplier: 2.2
- _DensityThreshold: 0.18
- _DepthFade: 0.01
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DitherStrength: 0.04
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _GodRayStrength: 0.25
- _HG_G: 0.2
- _HeightFalloff: 0.4
- _Intensity: 1
- _LightScattering: 1
- _MaxDistance: 100
- _LightScattering: 0.35
- _LightScatteringG: 0.2
- _MaskTiling: 0.03
- _MaxDistance: 60
- _MaxSteps: 64
- _Metallic: 0
- _Mode: 0
- _NearEnd: 3
- _NearFade: 0
- _NearStart: 0.05
- _NoiseJitter: 0.02
- _NoiseOffset: 0.6
- _NoiseTiling: -0.04
- _NoisePulseAmount: 0.07
- _NoisePulseSpeed: 0.15
- _NoiseTiling: 0.8
- _OcclusionStrength: 1
- _Parallax: 0.005
- _QueueOffset: 0
- _ReceiveShadows: 1
- _ShadowStrength: 1
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _StepSize: 20
- _StepScale: 4
- _StepSize: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _AmbientFogColor: {r: 0.25, g: 0.28, b: 0.3, a: 1}
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 0.7264151, g: 0.607963, b: 0.22957456, a: 1}
- _ColorHigh: {r: 0.65, g: 0.68, b: 0.7, a: 1}
- _ColorLow: {r: 0.45, g: 0.48, b: 0.5, a: 1}
- _DayColor: {r: 0.6, g: 0.65, b: 0.7, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _LightContribution: {r: 766.99585, g: 406.24268, b: 235.16383, a: 1}
- _FogBaseColor: {r: 0.78, g: 0.82, b: 0.9, a: 1}
- _LightContribution: {r: 18.618134, g: 14.44776, b: 12.382816, a: 1}
- _MainLightColor: {r: 1, g: 1, b: 1, a: 1}
- _MainLightDir: {r: 0, g: -1, b: 0, a: 0}
- _MaskOffset: {r: -0.23, g: -0.32, b: 0, a: 0}
- _NightColor: {r: 0.25, g: 0.28, b: 0.3, a: 1}
- _NoiseScrollSpeed: {r: 0.01, g: 0, b: 0.02, a: 0}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
- _UserMainLightColor: {r: 1, g: 1, b: 1, a: 1}
- _UserMainLightDir: {r: 0, g: -1, b: 0, a: 0}

View File

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 199 KiB

View File

@@ -1,4 +1,4 @@
Shader "Custom/UniversalLiquidSurface_Simplified"
Shader "Custom/UniversalLiquidSurface"
{
Properties
{
@@ -27,7 +27,7 @@ Shader "Custom/UniversalLiquidSurface_Simplified"
_FoamStrength ("Foam Strength", Range(0,2)) = 0.6
_FoamBias ("Foam Bias", Range(-1,1)) = 0.0
// NEW: UV scroll speeds
// UV scroll speeds
_WaterNormal1Speed ("Normal Map 1 Speed (X,Y)", Vector) = (0.05, 0.0, 0, 0)
_WaterNormal2Speed ("Normal Map 2 Speed (X,Y)", Vector) = (0.0, -0.03, 0, 0)
_FoamScrollSpeed ("Foam Scroll Speed (X,Y)", Vector) = (0.02, 0.01, 0, 0)
@@ -44,7 +44,7 @@ Shader "Custom/UniversalLiquidSurface_Simplified"
_LavaCrackGlow ("Lava Crack Glow Strength", Float) = 0.8
_LavaEdgeGlow ("Lava Edge Glow Strength", Float) = 0.5
// Procedural bubbles
// Procedural bubbles - coś nie bangla
_BubbleDensity ("Bubble Density", Float) = 8.0
_BubbleFlow ("Bubble Flow Speed", Float) = 0.5
_BubbleStrength ("Bubble Strength", Float) = 1.5
@@ -104,7 +104,7 @@ Shader "Custom/UniversalLiquidSurface_Simplified"
float4 _NormalMap_ST;
float4 _FoamTex_ST;
// Params
// Parameters
float4 _BaseColor;
float _SurfaceType;
@@ -163,7 +163,7 @@ Shader "Custom/UniversalLiquidSurface_Simplified"
return d2-d1;
}
// Gerstner
// Gerstner, śmieszna nazwa
void GerstnerSimple(float2 dir, float amp, float len, float spd, float2 xz, float t, out float3 disp, out float3 nContrib)
{
float2 D = normalize(dir);

Binary file not shown.

View File

@@ -37,9 +37,9 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50

View File

@@ -37,9 +37,9 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50

View File

@@ -37,9 +37,9 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50

View File

@@ -37,9 +37,9 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50

View File

@@ -37,9 +37,9 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50

View File

@@ -37,9 +37,9 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50

View File

@@ -129,6 +129,8 @@ MonoBehaviour:
m_PrefilterScreenCoord: 1
m_PrefilterNativeRenderPass: 1
m_PrefilterUseLegacyLightmaps: 0
m_PrefilterReflectionProbeBlending: 0
m_PrefilterReflectionProbeBoxProjection: 0
m_ShaderVariantLogLevel: 0
m_ShadowCascades: 0
m_Textures:

View File

@@ -207,7 +207,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Active: 1
m_Settings:
AOMethod: 0
AOMethod: 1
Downsample: 0
AfterOpaque: 0
Source: 1
@@ -219,12 +219,3 @@ MonoBehaviour:
BlurQuality: 2
Falloff: 100
SampleCount: -1
m_BlueNoise256Textures:
- {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3}
- {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3}
- {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3}
- {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3}
- {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3}
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}

View File

@@ -10,7 +10,7 @@ TerrainLayer:
m_DiffuseTexture: {fileID: 2800000, guid: 87735acf16005914dba9087627517773, type: 3}
m_NormalMapTexture: {fileID: 2800000, guid: c8b8fa1b153cfd3428c4c5c2fded152e, type: 3}
m_MaskMapTexture: {fileID: 2800000, guid: 240efe9002d9e7a44b9f2a592f357102, type: 3}
m_TileSize: {x: 200, y: 200}
m_TileSize: {x: 10, y: 10}
m_TileOffset: {x: 0, y: 0}
m_Specular: {r: 0, g: 0, b: 0, a: 0}
m_Metallic: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a4836e16ea6884c42b8a109a653f80d2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6ae457272f3660f448878b92ddc2ebe9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 36613c5dae5272c49ba2e64bf90cc8d4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4b657c3f9957d3c4894bc1dcf6c21f46
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,88 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &1521292411173935944
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
propertyPath: m_Name
value: Pine_2
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
insertIndex: -1
addedObject: {fileID: 7010744986680816052}
m_SourcePrefab: {fileID: 100100000, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
--- !u!1 &1863890679630407193 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 6dfb66e7627d864499d74c8caa1ce0ce, type: 3}
m_PrefabInstance: {fileID: 1521292411173935944}
m_PrefabAsset: {fileID: 0}
--- !u!65 &7010744986680816052
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1863890679630407193}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 0.13340876, y: 7.176835, z: 0.18022053}
m_Center: {x: 0.038926765, y: 3.5915828, z: 0.08888791}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b6d94b958c50545489bf577bbbe6e4d0
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -78248,6 +78248,63 @@ Mesh:
offset: 0
size: 0
path:
--- !u!1001 &222377020
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalPosition.x
value: 566.9251
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalPosition.y
value: 10.094579
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalPosition.z
value: -883.76294
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalRotation.x
value: 0.000000021855694
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: 823c02060384f094aada4724c170b7df, type: 3}
propertyPath: m_Name
value: Ground_Leaves_Pine
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 823c02060384f094aada4724c170b7df, type: 3}
--- !u!1 &223793109
GameObject:
m_ObjectHideFlags: 0
@@ -387369,31 +387426,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 848a85510b808ee4994e553f35ca73bd, type: 3}
m_Name:
m_EditorClassIdentifier:
Rules:
- Type: 0
Name:
GameObject: {fileID: 272448413}
Ordinal: 0
Priority: 0
IconType: 103000
IconTexture: {fileID: 0}
IsIconRecursive: 0
BackgroundType: 1000
BackgroundTexture: {fileID: 0}
IsBackgroundRecursive: 0
IsHidden: 0
- Type: 0
Name:
GameObject: {fileID: 1409707430}
Ordinal: 1
Priority: 0
IconType: 0
IconTexture: {fileID: 0}
IsIconRecursive: 0
BackgroundType: 10000
BackgroundTexture: {fileID: 0}
IsBackgroundRecursive: 0
IsHidden: 0
--- !u!4 &1096094429
Transform:
m_ObjectHideFlags: 0
@@ -518116,6 +518148,63 @@ Mesh:
offset: 0
size: 0
path:
--- !u!1001 &1515634606
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalPosition.x
value: 607.44763
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalPosition.y
value: 34.262314
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalPosition.z
value: -746.42584
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
propertyPath: m_Name
value: Rock_Big_5
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 0499378323a4a7746af1cb760441d22a, type: 3}
--- !u!1 &1516880224
GameObject:
m_ObjectHideFlags: 0
@@ -731790,3 +731879,5 @@ SceneRoots:
- {fileID: 1792088466}
- {fileID: 1141365445}
- {fileID: 119912318}
- {fileID: 1515634606}
- {fileID: 222377020}

View File

@@ -3,7 +3,7 @@
--- !u!159 &1
EditorSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
serializedVersion: 14
m_SerializationMode: 2
m_LineEndingsForNewScripts: 0
m_DefaultBehaviorMode: 0
@@ -33,6 +33,7 @@ EditorSettings:
m_UseLegacyProbeSampleCount: 0
m_SerializeInlineMappingsOnOneLine: 1
m_DisableCookiesInLightmapper: 0
m_ShadowmaskStitching: 0
m_AssetPipelineMode: 1
m_RefreshImportMode: 0
m_CacheServerMode: 0

View File

@@ -89,7 +89,7 @@
{
"type": "System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "ShapeBuilder.ActiveShapeIndex",
"value": "{\"m_Value\":6}"
"value": "{\"m_Value\":1}"
},
{
"type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
@@ -99,7 +99,7 @@
{
"type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "ShapeBuilder.LastSize.Plane",
"value": "{\"m_Value\":{\"x\":-70.788330078125,\"y\":0.0,\"z\":35.4305419921875}}"
"value": "{\"m_Value\":{\"x\":384.8273010253906,\"y\":0.0,\"z\":-189.3860626220703}}"
},
{
"type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",