Boundless

Removed hard zone boundaries
Fixed stuff that broke because of hard zone boundary assumption (stardust placement, vertical fog)
Added a skybox!
Removed density-based albedo boost (_TintExponent) to improve perceptual uniformity at different step sizes, reconfigured shader to achieve / surpass previous looks and performance
Cell Brush has a material editor now to enable variant selection
Enabled Caching Shader Preprocessor
Moved raymarching loop into CloudShader
Get environment settings from game manager to enable configuration / variation
Introduced slope-based nebulae damping and volumetric flow
Hid optional volumetric features behind preprocessor branches
Created shader variants selected by global keywords for all shaders depending on volumetrics
Environment settings used to configure shader variant selection
Moved dynamic lighting settings to own subclass
Dynamically adjust gravity map isoline contour depth range according to zone contents
This commit is contained in:
Reinier Vens 2022-07-21 21:40:44 +01:00
commit 69aca09f63
31 changed files with 642 additions and 508 deletions

View file

@ -2,14 +2,15 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Main Menu Ambient Fog Tint
m_Shader: {fileID: 4800000, guid: 268da230635cfb34ab4ed6ad39503fa0, type: 3}
m_ShaderKeywords:
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -55,10 +56,11 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 1
- _Depth: 0.05
- _Depth: 0.01
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _Frequency: 6.2832

View file

@ -2,14 +2,15 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Main Menu Sun Fog Tint
m_Shader: {fileID: 4800000, guid: 268da230635cfb34ab4ed6ad39503fa0, type: 3}
m_ShaderKeywords:
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -55,10 +56,11 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 1
- _Depth: 15
- _Depth: 2
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _Frequency: 6.2832

View file

@ -2,14 +2,15 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Sector Tint
m_Shader: {fileID: 4800000, guid: 268da230635cfb34ab4ed6ad39503fa0, type: 3}
m_ShaderKeywords:
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -55,6 +56,7 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 1
@ -70,7 +72,7 @@ Material:
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Phase: 0
- _Power: 0.5
- _Power: 2
- _SinePower: 1.25
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1

View file

@ -2,14 +2,16 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Sector Waves Large
m_Shader: {fileID: 4800000, guid: ccdbaf77577994d46b0e61c53d5dc4a9, type: 3}
m_ShaderKeywords: B
m_ValidKeywords: []
m_InvalidKeywords:
- B
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -55,6 +57,7 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Constant: -2.46

View file

@ -2,14 +2,16 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Sector Waves Small
m_Shader: {fileID: 4800000, guid: ccdbaf77577994d46b0e61c53d5dc4a9, type: 3}
m_ShaderKeywords: B
m_ValidKeywords: []
m_InvalidKeywords:
- B
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -55,11 +57,12 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Constant: 0
- _Cutoff: 0.5
- _Depth: 8
- _Depth: -8
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _Frequency: 0.005

View file

@ -2,14 +2,15 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Wormhole Gravity
m_Shader: {fileID: 4800000, guid: 268da230635cfb34ab4ed6ad39503fa0, type: 3}
m_ShaderKeywords:
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -55,9 +56,10 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.1
- _Cutoff: 0.15
- _Depth: 2000
- _DetailNormalMapScale: 1
- _DstBlend: 0

View file

@ -2,14 +2,15 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Wormhole Lighting
m_Shader: {fileID: 4800000, guid: 268da230635cfb34ab4ed6ad39503fa0, type: 3}
m_ShaderKeywords:
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -55,10 +56,11 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 1
- _Depth: 3
- _Depth: 1
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _Frequency: 6.2832

View file

@ -2,14 +2,16 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Skybox
m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_Shader: {fileID: 106, guid: 0000000000000000f000000000000000, type: 0}
m_ValidKeywords:
- _SUNDISK_NONE
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -56,15 +58,17 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Tex:
m_Texture: {fileID: 8900000, guid: 589f8d25c07df474ebf6e5cf31ac21c4, type: 3}
m_Texture: {fileID: 8900000, guid: 2cd5af9c042f8c2409442e43b090016d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AtmosphereThickness: 0.15
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _Exposure: 0.5
- _Exposure: 8
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
@ -76,10 +80,16 @@ Material:
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Stretching: -0.1
- _SunDisk: 0
- _SunSize: 0
- _SunSizeConvergence: 4.63
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _Tint: {r: 1, g: 1, b: 1, a: 0.5}
- _GroundColor: {r: 0, g: 0, b: 0, a: 1}
- _SkyTint: {r: 1, g: 1, b: 1, a: 1}
- _Tint: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View file

@ -76,7 +76,7 @@ Material:
- _ColorMask: 15
- _Cutoff: 0.5
- _DangerSteepness: 1.5
- _DepthRange: 500
- _DepthRange: 264.0017
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
@ -89,11 +89,11 @@ Material:
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Scale: 1.7853246
- _Scale: 0.87450314
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _StartDepth: 420
- _StartDepth: 2.310401
- _StartHeight: 0
- _Stencil: 0
- _StencilComp: 8

View file

@ -2,14 +2,15 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Minimap Gravity Lines
m_Shader: {fileID: 4800000, guid: f5505d3747493e24c91b7cb141fd7b8c, type: 3}
m_ShaderKeywords:
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -59,6 +60,7 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Angle2Fade: 1.1
- _Angle2Width: 0.5
@ -69,7 +71,7 @@ Material:
- _ColorMask: 15
- _Cutoff: 0.5
- _DangerSteepness: 1.5
- _DepthRange: 500
- _DepthRange: 264.0017
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
@ -86,7 +88,7 @@ Material:
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _StartDepth: 420
- _StartDepth: 2.310401
- _StartHeight: 0
- _Stencil: 0
- _StencilComp: 8

BIN
Assets/Resources/Settings.asset (Stored with Git LFS)

Binary file not shown.

View file

@ -13809,7 +13809,7 @@ MonoBehaviour:
m_Lens:
FieldOfView: 60
OrthographicSize: 5
NearClipPlane: 0.3
NearClipPlane: 1
FarClipPlane: 4096
Dutch: 0
ModeOverride: 0
@ -16335,6 +16335,9 @@ MonoBehaviour:
type: 3}
WeaponPickup: {fileID: 8842807112802394818, guid: d2cec1d8c3d94074e9d2e6088e1c02d7,
type: 3}
MapGravityMaterials:
- {fileID: 2100000, guid: 841e4091d19548347bd59115047b4e49, type: 2}
- {fileID: 2100000, guid: a92fc6d958edb9f46b6e58134f609cc0, type: 2}
Tour: 0
TourSwitchTime: 10
TourFollowDistance: 100
@ -16367,11 +16370,13 @@ MonoBehaviour:
ParticleMaterial: {fileID: 2100000, guid: fc00c35c3c370774c88d55240b6538ce, type: 2}
Span: 256
Period: 2
MinimumSize: 0
MinimumSize: 0.25
MaximumSize: 0.75
Spacing: 6
Ceiling: -250
Ceiling: 0
Floor: -10
MinHeadroom: 25
MaxHeadroom: 100
HeightExponent: 3
NebulaSurfaceHeight: {fileID: 8400000, guid: 2fc21a9d3e9647948b56e384cd9378b3, type: 2}
NebulaPatchHeight: {fileID: 8400000, guid: c618a6b20b3c7394590c59a9fa467e86, type: 2}
@ -18017,7 +18022,7 @@ Transform:
m_GameObject: {fileID: 1108843908}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalScale: {x: 2, y: 1, z: 2}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 677960092}
@ -31067,7 +31072,7 @@ Camera:
m_GameObject: {fileID: 2115559087}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.16037738, g: 0.16037738, b: 0.16037738, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2

View file

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.Linq;
public class CellBrushEditor : MaterialEditor
{
private static readonly string[] Keywords = new[] {"A", "B", "C", "D", "E", "F", "G", "H"};
public override void OnInspectorGUI ()
{
// Draw the default inspector.
base.OnInspectorGUI ();
// If we are not visible, return.
if (!isVisible)
return;
// Get the current keywords from the material
Material targetMat = target as Material;
string[] keyWords = targetMat.shaderKeywords;
int selected = keyWords.Any()?Array.IndexOf(Keywords,keyWords.First()):0;
EditorGUI.BeginChangeCheck();
selected = EditorGUILayout.Popup("Variant", selected, Keywords);
// If something has changed, update the material.
if (EditorGUI.EndChangeCheck())
{
targetMat.shaderKeywords = new []{Keywords[selected]};
EditorUtility.SetDirty (targetMat);
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: cedd8e9182f02e84ca000e22e71c8b0e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -30,6 +30,7 @@ using Random = UnityEngine.Random;
public class ActionGameManager : MonoBehaviour
{
// Always check for null if accessing from anywhere that might not be in-game (e.g. menu UI)
public static ActionGameManager Instance { get; private set; }
private static DirectoryInfo _gameDataDirectory;
public static DirectoryInfo GameDataDirectory
@ -49,9 +50,11 @@ public class ActionGameManager : MonoBehaviour
_cultCache.AddBackingStore(new MultiFileJsonBackingStore(GameDataDirectory.FullName));
// _cultCache.AddBackingStore(
// new SingleFileMessagePackBackingStore(Path.Combine(GameDataDirectory.FullName, "AetherDB.msgpack")));
// Particularly heavy objects should be stored in / retrieved from MsgPack files as it's much tighter than JSON
// Such as NameFiles, which are just huge collections of geonames used to condition Markov chains
_cultCache.AddBackingStore(new MultiFileMessagePackBackingStore(GameDataDirectory.FullName), typeof(NameFile));
// _cultCache.AddBackingStore(
// new MultiFileMessagePackBackingStore(GameDataDirectory.FullName), typeof(NameFile));
_cultCache.PullAllBackingStores();
return _cultCache;
@ -119,7 +122,6 @@ public class ActionGameManager : MonoBehaviour
public CinemachineVirtualCamera WormholeCamera;
//public SectorRenderer SectorRenderer;
public SectorMap SectorMap;
public VolumeSampling VolumeRenderer;
[Header("Menu UI")]
public MainMenu MainMenu;
@ -194,6 +196,14 @@ public class ActionGameManager : MonoBehaviour
//if better place, please move
public Entity TowingStation { get; private set; }
public ZoneEnvironment CurrentEnvironment
{
get
{
return Settings.DefaultEnvironment;
}
}
public Entity CurrentEntity
{
get => _currentEntity;

View file

@ -12,6 +12,7 @@ public class ZoneEnvironment
[JsonProperty("nebula"), Key(0)] public NebulaSettings Nebula;
[JsonProperty("flow"), Key(1)] public FlowSettings Flow;
[JsonProperty("noise"), Key(2)] public NoiseSettings Noise;
[JsonProperty("lighting"), Key(2)] public AmbientLightingSettings Lighting;
}
[Serializable, MessagePackObject, JsonObject(MemberSerialization.OptIn)]
@ -19,31 +20,37 @@ public class NebulaSettings
{
[JsonProperty("fillDensity"), Key(0)] public float FillDensity;
[JsonProperty("fillDistance"), Key(1)] public float FillDistance;
[JsonProperty("fillExponent"), Key(11)] public float FillExponent;
[JsonProperty("fillExponent"), Key(2)] public float FillExponent;
[JsonProperty("fillOffset"), Key(12)] public float FillOffset;
[JsonProperty("fogDensity"), Key(2)] public float FloorDensity;
[JsonProperty("cloudDensity"), Key(3)] public float PatchDensity;
[JsonProperty("fogOffset"), Key(4)] public float FloorOffset;
[JsonProperty("fogBlend"), Key(5)] public float FloorBlend;
[JsonProperty("cloudBlend"), Key(6)] public float PatchBlend;
[JsonProperty("luminance"), Key(7)] public float Luminance;
[JsonProperty("extinction"), Key(13)] public float Extinction;
[JsonProperty("tintExponent"), Key(8)] public float TintExponent;
//[JsonProperty("tintExponent"), Key(8)] public float TintExponent;
[JsonProperty("tintLodExponent"), Key(9)] public float TintLodExponent;
[JsonProperty("safetyDistance"), Key(10)] public float SafetyDistance;
[JsonProperty("dynamicSkyBoost"), Key(14)] public float DynamicSkyBoost;
[JsonProperty("dynamicLodRange"), Key(15)] public float DynamicLodRange;
[JsonProperty("dynamicLodBias"), Key(16)] public float DynamicLodBias;
[JsonProperty("dynamicIntensity"), Key(17)] public float DynamicIntensity;
}
[Serializable, MessagePackObject, JsonObject(MemberSerialization.OptIn)]
public class AmbientLightingSettings
{
[JsonProperty("dynamicSkyBoost"), Key(0)] public float DynamicSkyBoost;
[JsonProperty("dynamicLodHigh"), Key(1)] public float DynamicLodHigh;
[JsonProperty("dynamicLodLow"), Key(2)] public float DynamicLodLow;
[JsonProperty("dynamicIntensity"), Key(3)] public float DynamicIntensity;
}
[Serializable, MessagePackObject, JsonObject(MemberSerialization.OptIn)]
public class FlowSettings
{
[JsonProperty("scale"), Key(0)] public float Scale;
[JsonProperty("amplitude"), Key(1)] public float Amplitude;
[JsonProperty("scrollSpeed"), Key(2)] public float ScrollSpeed;
[JsonProperty("scale"), Key(0)] public float GlobalScale;
[JsonProperty("amplitudeGlobal"), Key(1)] public float GlobalAmplitude;
[JsonProperty("scrollSpeed"), Key(2)] public float GlobalScrollSpeed;
[JsonProperty("period"), Key(3)] public float Period;
[JsonProperty("amplitudeSlope"), Key(4)] public float SlopeAmplitude;
[JsonProperty("amplitudeSwirl"), Key(4)] public float SwirlAmplitude;
}
[Serializable, MessagePackObject, JsonObject(MemberSerialization.OptIn)]
@ -53,6 +60,7 @@ public class NoiseSettings
[JsonProperty("amplitude"), Key(1)] public float Amplitude;
[JsonProperty("exponent"), Key(2)] public float Exponent;
[JsonProperty("speed"), Key(3)] public float Speed;
[JsonProperty("slopeExponent"), Key(4)] public float SlopeExponent;
}
[Union(0, typeof(PowerBrush)),

View file

@ -28,6 +28,16 @@ public class VolumeSampling : MonoBehaviour
private float _flowScroll;
private Transform _gridTransform;
private GlobalKeyword _keywordFlowGlobal;
private GlobalKeyword _keywordFlowSlope;
private GlobalKeyword _keywordNoiseSlope;
private void Start()
{
_keywordFlowGlobal = GlobalKeyword.Create("FLOW_GLOBAL");
_keywordFlowSlope = GlobalKeyword.Create("FLOW_SLOPE");
_keywordNoiseSlope = GlobalKeyword.Create("NOISE_SLOPE");
}
void Update()
{
@ -37,40 +47,48 @@ public class VolumeSampling : MonoBehaviour
if(GridCamera != null)
Shader.SetGlobalVector("_GridTransform", new Vector4(_gridTransform.position.x,_gridTransform.position.z,GridCamera.orthographicSize*2));
var environment = ActionGameManager.Instance?.CurrentEnvironment ?? Settings.DefaultEnvironment;
// Volumetric sampling parameters are used by several shaders
Shader.SetGlobalTexture("_NebulaSurfaceHeight", NebulaSurfaceHeight);
Shader.SetGlobalTexture("_NebulaPatchHeight", NebulaPatchHeight);
Shader.SetGlobalTexture("_NebulaPatch", NebulaPatch);
Shader.SetGlobalTexture("_NebulaTint", NebulaTint);
Shader.SetGlobalFloat("_NebulaFillDensity", Settings.DefaultEnvironment.Nebula.FillDensity);
Shader.SetGlobalFloat("_NebulaFillDistance", Settings.DefaultEnvironment.Nebula.FillDistance);
Shader.SetGlobalFloat("_NebulaFillExponent", Settings.DefaultEnvironment.Nebula.FillExponent);
Shader.SetGlobalFloat("_NebulaFillOffset", Settings.DefaultEnvironment.Nebula.FillOffset);
Shader.SetGlobalFloat("_NebulaFloorDensity", Settings.DefaultEnvironment.Nebula.FloorDensity);
Shader.SetGlobalFloat("_NebulaPatchDensity", Settings.DefaultEnvironment.Nebula.PatchDensity);
Shader.SetGlobalFloat("_NebulaFloorOffset", Settings.DefaultEnvironment.Nebula.FloorOffset);
Shader.SetGlobalFloat("_NebulaFloorBlend", Settings.DefaultEnvironment.Nebula.FloorBlend);
Shader.SetGlobalFloat("_NebulaPatchBlend", Settings.DefaultEnvironment.Nebula.PatchBlend);
Shader.SetGlobalFloat("_NebulaLuminance", Settings.DefaultEnvironment.Nebula.Luminance);
Shader.SetGlobalFloat("_ExtinctionCoefficient", Settings.DefaultEnvironment.Nebula.Extinction);
Shader.SetGlobalFloat("_TintExponent", Settings.DefaultEnvironment.Nebula.TintExponent);
Shader.SetGlobalFloat("_TintLodExponent", Settings.DefaultEnvironment.Nebula.TintLodExponent);
Shader.SetGlobalFloat("_SafetyDistance", Settings.DefaultEnvironment.Nebula.SafetyDistance);
Shader.SetGlobalFloat("_DynamicSkyBoost", Settings.DefaultEnvironment.Nebula.DynamicSkyBoost);
Shader.SetGlobalFloat("_DynamicLodRange", Settings.DefaultEnvironment.Nebula.DynamicLodRange);
Shader.SetGlobalFloat("_DynamicLodBias", Settings.DefaultEnvironment.Nebula.DynamicLodBias);
Shader.SetGlobalFloat("_DynamicIntensity", Settings.DefaultEnvironment.Nebula.DynamicIntensity);
Shader.SetGlobalFloat("_NebulaFillDensity", environment.Nebula.FillDensity);
Shader.SetGlobalFloat("_NebulaFillDistance", environment.Nebula.FillDistance);
Shader.SetGlobalFloat("_NebulaFillExponent", environment.Nebula.FillExponent);
Shader.SetGlobalFloat("_NebulaFillOffset", environment.Nebula.FillOffset);
Shader.SetGlobalFloat("_NebulaPatchDensity", environment.Nebula.PatchDensity);
Shader.SetGlobalFloat("_NebulaFloorOffset", environment.Nebula.FloorOffset);
Shader.SetGlobalFloat("_NebulaFloorBlend", environment.Nebula.FloorBlend);
Shader.SetGlobalFloat("_NebulaPatchBlend", environment.Nebula.PatchBlend);
Shader.SetGlobalFloat("_NebulaLuminance", environment.Nebula.Luminance);
Shader.SetGlobalFloat("_ExtinctionCoefficient", environment.Nebula.Extinction);
Shader.SetGlobalFloat("_TintLodExponent", environment.Nebula.TintLodExponent);
Shader.SetGlobalFloat("_SafetyDistance", environment.Nebula.SafetyDistance);
Shader.SetGlobalFloat("_NebulaNoiseScale", Settings.DefaultEnvironment.Noise.Scale);
Shader.SetGlobalFloat("_NebulaNoiseExponent", Settings.DefaultEnvironment.Noise.Exponent);
Shader.SetGlobalFloat("_NebulaNoiseAmplitude", Settings.DefaultEnvironment.Noise.Amplitude);
Shader.SetGlobalFloat("_NebulaNoiseSpeed", Settings.DefaultEnvironment.Noise.Speed);
Shader.SetGlobalFloat("_DynamicSkyBoost", environment.Lighting.DynamicSkyBoost);
Shader.SetGlobalFloat("_DynamicLodHigh", environment.Lighting.DynamicLodHigh);
Shader.SetGlobalFloat("_DynamicLodLow", environment.Lighting.DynamicLodLow);
Shader.SetGlobalFloat("_DynamicIntensity", environment.Lighting.DynamicIntensity);
Shader.SetGlobalFloat("_FlowScale", Settings.DefaultEnvironment.Flow.Scale);
Shader.SetGlobalFloat("_FlowAmplitude", Settings.DefaultEnvironment.Flow.Amplitude);
_flowScroll += Settings.DefaultEnvironment.Flow.ScrollSpeed * Time.deltaTime;
Shader.SetGlobalFloat("_NebulaNoiseScale", environment.Noise.Scale);
Shader.SetGlobalFloat("_NebulaNoiseExponent", environment.Noise.Exponent);
Shader.SetGlobalFloat("_NebulaNoiseAmplitude", environment.Noise.Amplitude);
Shader.SetGlobalFloat("_NebulaNoiseSpeed", environment.Noise.Speed);
Shader.SetGlobalFloat("_NebulaNoiseSlopeExponent", environment.Noise.SlopeExponent);
Shader.SetGlobalFloat("_FlowScale", environment.Flow.GlobalScale);
Shader.SetGlobalFloat("_FlowAmplitude", environment.Flow.GlobalAmplitude);
Shader.SetGlobalFloat("_FlowSlopeAmplitude", environment.Flow.SlopeAmplitude);
Shader.SetGlobalFloat("_FlowSwirlAmplitude", environment.Flow.SwirlAmplitude);
_flowScroll += environment.Flow.GlobalScrollSpeed * Time.deltaTime;
Shader.SetGlobalFloat("_FlowScroll", _flowScroll);
Shader.SetGlobalFloat("_FlowPeriod", Settings.DefaultEnvironment.Flow.Period);
Shader.SetGlobalFloat("_FlowPeriod", environment.Flow.Period);
Shader.SetKeyword(_keywordFlowGlobal, environment.Flow.GlobalAmplitude != 0);
Shader.SetKeyword(_keywordFlowSlope, environment.Flow.SlopeAmplitude != 0 || environment.Flow.SwirlAmplitude != 0);
Shader.SetKeyword(_keywordNoiseSlope, environment.Noise.SlopeExponent != 0);
}
}

View file

@ -42,6 +42,7 @@ public class ZoneRenderer : MonoBehaviour
public GridObject CompoundCommodityPickup;
public GridObject GearPickup;
public GridObject WeaponPickup;
public Material[] MapGravityMaterials;
[Header("Tour")] public bool Tour;
public float TourSwitchTime = 5f;
@ -547,11 +548,14 @@ public class ZoneRenderer : MonoBehaviour
//var fogPos = FogCameraParent.position;
SectorBoundaryBrush.material.SetFloat("_Power", Settings.PlanetSettings.ZoneDepthExponent);
SectorBoundaryBrush.material.SetFloat("_Depth", Settings.PlanetSettings.ZoneDepth + Settings.PlanetSettings.ZoneBoundaryFog);
// var startDepth = Zone.PowerPulse(Settings.MinimapZoneGravityRange, Settings.PlanetSettings.ZoneDepthExponent) *
// Settings.PlanetSettings.ZoneDepth;
//var depthRange = Settings.PlanetSettings.ZoneDepth - startDepth + _maxDepth;
// MinimapGravityQuad.material.SetFloat("_StartDepth", startDepth);
// MinimapGravityQuad.material.SetFloat("_DepthRange", depthRange);
var startDepth = Zone.PowerPulse(Settings.MinimapZoneGravityRange, Settings.PlanetSettings.ZoneDepthExponent) *
Settings.PlanetSettings.ZoneDepth;
var depthRange = Settings.PlanetSettings.ZoneDepth - startDepth + _maxDepth;
foreach (var mat in MapGravityMaterials)
{
mat.SetFloat("_StartDepth", startDepth);
mat.SetFloat("_DepthRange", depthRange);
}
//Shader.SetGlobalFloat("_GridOffset", Settings.PlanetSettings.ZoneBoundaryFog);
// var gravPos = MinimapGravityQuad.transform.position;
// gravPos.y = -Settings.PlanetSettings.ZoneDepth - _maxDepth;

View file

@ -11,7 +11,7 @@ Shader "Aetheria/Asteroid"
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc" // for UnityObjectToWorldNormal
#include "Assets/Shaders/Volumetric.cginc"
#include_with_pragmas "Assets/Shaders/Volumetric.cginc"
uniform float _AsteroidVerticalOffset;
struct v2f

View file

@ -74,5 +74,4 @@ Category {
}
}
}
CustomEditor "CellBrushEditor"
}

View file

@ -1,8 +1,15 @@
#include "Assets/Shaders/Volumetric.cginc"
// Global keywords defining environment settings shared between shaders
// Would rather just #include_with_pragmas
// but it's broken in compute due to a bug that has been fixed but not backported yet
#pragma multi_compile __ FLOW_GLOBAL
#pragma multi_compile __ FLOW_SLOPE
#pragma multi_compile __ NOISE_SLOPE
//Tell unity that we have defined a kernel
#pragma kernel UpdateParticles
#include "Assets/Shaders/Volumetric.cginc"
//Store Particle data in a struct
struct Particle
{
@ -24,6 +31,8 @@ float ceilingHeight;
float floorHeight;
float maximumSize;
float minimumSize;
float minHeadroom;
float maxHeadroom;
float heightExponent;
uint span;
@ -122,15 +131,15 @@ void UpdateParticles(uint3 id : SV_DispatchThreadID, int3 groupID : SV_GroupThre
x * spacing + xt * spacing + perlinNoise1D(RandomValue()*1024)*spacing, 0,
y * spacing + yt * spacing + perlinNoise1D(RandomValue()*1024)*spacing);
const float2 puv = getUV(particles[id.x].position.xz);
const float gravHeight = -tex2Dlod(_NebulaSurfaceHeight, float4(puv, 0, 0)).x + _NebulaFloorOffset;
const float headroom = clamp(ceilingHeight - gravHeight, 25, 150);
particles[id.x].position.y = gravHeight + floorHeight + headroom *
const float gravHeight = -tex2Dlod(_NebulaSurfaceHeight, float4(puv, 0, 0)).x + floorHeight;
const float headroom = clamp(ceilingHeight - gravHeight, minHeadroom, maxHeadroom);
particles[id.x].position.y = gravHeight + headroom *
pow(RandomValue(), heightExponent) +
perlinNoise1D(RandomValue()*1024)*spacing/2;
const float3 flowVec = flow(particles[id.x].position);
particles[id.x].position -= flowVec * lifetime * period;
const float fade = smoothstep(0,ceilingHeight, particles[id.x].position.y);
//const float fade = smoothstep(0,ceilingHeight, particles[id.x].position.y);
const float d = pow(density(particles[id.x].position) + .01, 0.1);
particles[id.x].size = lerp(minimumSize, maximumSize, saturate(RandomValue()*fade)) * parabola(lifetime, 2);
particles[id.x].size = lerp(minimumSize, maximumSize, saturate(RandomValue())) * parabola(lifetime, 2);
particles[id.x].color = HueTexture.SampleLevel(samplerHueTexture, float2(RandomValue(), 0.0f), 0.0f).rgb * d;
}

View file

@ -23,6 +23,8 @@ public class Stardust : MonoBehaviour
public float Spacing = 4.0f;
public float Ceiling = -250.0f;
public float Floor = -25.0f;
public float MinHeadroom = 25;
public float MaxHeadroom = 100;
public float HeightExponent = 4;
public RenderTexture NebulaSurfaceHeight;
@ -110,6 +112,8 @@ public class Stardust : MonoBehaviour
ParticleCalculation.SetFloat("heightExponent", HeightExponent);
ParticleCalculation.SetFloat("maximumSize", MaximumSize);
ParticleCalculation.SetFloat("minimumSize", MinimumSize);
ParticleCalculation.SetFloat("minHeadroom", MinHeadroom);
ParticleCalculation.SetFloat("maxHeadroom", MaxHeadroom);
ParticleCalculation.SetInt("span", Span);
ParticleCalculation.SetTexture(_updateParticlesKernel, "HueTexture", ParticleColors);

View file

@ -33,6 +33,9 @@ Shader "Aetheria/GlowFade"
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard fullforwardshadows noambient vertex:vert
#pragma multi_compile __ FLOW_GLOBAL
#pragma multi_compile __ FLOW_SLOPE
#pragma multi_compile __ NOISE_SLOPE
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0

View file

@ -1,67 +0,0 @@
#pragma once
#include "Assets/Shaders/Volumetric.cginc"
float _ExtinctionCoefficient;
struct RaymarchStatus {
float3 intensity;
float depth;
float depthweightsum;
float intTransmittance;
};
void InitRaymarchStatus(inout RaymarchStatus result){
result.intTransmittance = 1.0f;
result.intensity = 0.0f;
result.depthweightsum = 0.00001f;
result.depth = 0.0f;
}
void IntegrateRaymarch(float3 startPos, float3 rayPos, float fade, float stepsize, inout RaymarchStatus result){
float4 c = VolumeSampleColor(rayPos);
float density = c.a;
if (density <= 0.0f)
return;
float extinction = _ExtinctionCoefficient * density / (1-fade);
float clampedExtinction = max(extinction, 1e-7);
float transmittance = exp(-extinction * stepsize);
float3 luminance = c.rgb;
float3 integScatt = (luminance - luminance * transmittance) / clampedExtinction;
float depthWeight = result.intTransmittance * (1-transmittance); //Is it a better idead to use (1-transmittance) * intTransmittance as depth weight?
result.intensity += result.intTransmittance * integScatt;
result.depth += depthWeight * length(rayPos - startPos);
result.depthweightsum += depthWeight;
result.intTransmittance *= transmittance;
}
float GetDensity(float3 startPos, float3 dir, float maxSampleDistance, float raymarchOffset, out float3 intensity,out float depth) {
float raymarchDistance = 0;
RaymarchStatus result;
InitRaymarchStatus(result);
[loop]
for (int j = 0; j < SAMPLE_COUNT; j++) {
float prevRayDist = raymarchDistance;
raymarchDistance = pow((j+raymarchOffset)/SAMPLE_COUNT,2) * _ProjectionParams.z;
if(raymarchDistance > maxSampleDistance) break;
float step = raymarchDistance - prevRayDist;
float3 rayPos = startPos + dir * raymarchDistance;
float fade = smoothstep(_ProjectionParams.z*.9,_ProjectionParams.z, raymarchDistance);
IntegrateRaymarch(startPos, rayPos, fade, step, result);
if (result.intTransmittance < 0.01f) {
result.intTransmittance = 0;
break;
}
}
depth = result.depth / result.depthweightsum / _ProjectionParams.z;
if (depth == 0.0f) {
depth = maxSampleDistance;
}
intensity = result.intensity;
return (1.0f - result.intTransmittance);
}

View file

@ -10,13 +10,11 @@ Shader "Aetheria/CloudShader"
SubShader
{
Cull Off ZWrite Off ZTest Always
//Pass1, Render a undersampled buffer. The buffer is dithered using bayer matrix(every 3x3 pixel) and halton sequence.
//Why does it need a bayer matrix as offset? See technical overview on github page.
Pass
{
CGPROGRAM
#pragma target 5.0
#pragma multi_compile LOW_QUALITY MEDIUM_QUALITY HIGH_QUALITY ULTRA_QUALITY //High quality uses more samples.
#pragma multi_compile LOW_QUALITY MEDIUM_QUALITY HIGH_QUALITY ULTRA_QUALITY //Higher quality uses more samples.
#pragma vertex vert
#pragma fragment frag
@ -33,8 +31,8 @@ Shader "Aetheria/CloudShader"
#if defined(LOW_QUALITY)
#define SAMPLE_COUNT 32
#endif
#include "./CloudNormalRaymarch.cginc"
#include_with_pragmas "Assets/Shaders/Volumetric.cginc"
#include "UnityCG.cginc"
#include "Assets/Shaders/PackFloat.cginc"
sampler2D _CameraDepthTexture;
@ -44,6 +42,8 @@ Shader "Aetheria/CloudShader"
float4 _DitheringCoords;
uniform float4x4 _CamInvProj;
float _ExtinctionCoefficient;
struct appdata
{
float4 vertex : POSITION;
@ -65,6 +65,74 @@ Shader "Aetheria/CloudShader"
o.vsray = (2.0 * v.uv - 1.0) * _ProjectionExtents.xy + _ProjectionExtents.zw;
return o;
}
struct RaymarchStatus {
float3 intensity;
float depth;
float depthweightsum;
float intTransmittance;
};
void InitRaymarchStatus(inout RaymarchStatus result){
result.intTransmittance = 1.0f;
result.intensity = 0.0f;
result.depthweightsum = 0.00001f;
result.depth = 0.0f;
}
void IntegrateRaymarch(float3 startPos, float3 rayPos, float fade, float stepsize, inout RaymarchStatus result){
float4 c = VolumeSampleColor(rayPos);
float density = c.a;
if (density <= 0.0f)
{
result.intTransmittance = 0;
return;
}
float extinction = _ExtinctionCoefficient * density / (1-fade);
float clampedExtinction = max(extinction, 1e-7);
float transmittance = exp(-extinction * stepsize);
float3 luminance = c.rgb * _NebulaLuminance;
float3 integScatt = (luminance - luminance * transmittance) / clampedExtinction;
float depthWeight = result.intTransmittance * (1-transmittance); //Is it a better idea to use (1-transmittance) * intTransmittance as depth weight?
result.intensity += result.intTransmittance * integScatt;
result.depth += depthWeight * length(rayPos - startPos);
result.depthweightsum += depthWeight;
result.intTransmittance *= transmittance;
}
float GetDensity(float3 startPos, float3 dir, float maxSampleDistance, float raymarchOffset, out float3 intensity,out float depth) {
float raymarchDistance = 0;
float totalRaymarchDistance = _ProjectionParams.z - _ProjectionParams.y;
RaymarchStatus result;
InitRaymarchStatus(result);
[loop]
for (int j = 1; j < SAMPLE_COUNT; j++) {
float prevRayDist = raymarchDistance;
raymarchDistance = _ProjectionParams.y + pow((j+raymarchOffset)/SAMPLE_COUNT,2) * totalRaymarchDistance;
if(raymarchDistance > maxSampleDistance) break;
float step = raymarchDistance - prevRayDist;
float3 rayPos = startPos + dir * raymarchDistance;
float fade = smoothstep(_ProjectionParams.z*.8,_ProjectionParams.z, raymarchDistance);
IntegrateRaymarch(startPos, rayPos, fade, step, result);
if (result.intTransmittance < 0.01f) {
result.intTransmittance = 0;
break;
}
}
depth = result.depth / result.depthweightsum / _ProjectionParams.z;
if (depth == 0.0f) {
depth = maxSampleDistance;
}
intensity = result.intensity;
return (1.0f - result.intTransmittance);
}
float3 DepthToWorld(float2 uv, float depth) {
float z = (1-depth) * 2.0 - 1.0;
@ -93,6 +161,7 @@ Shader "Aetheria/CloudShader"
float depthSample = tex2Dproj( _CameraDepthTexture, screenPos ).r;
float3 worldDepth = DepthToWorld(screenPos, depthSample);
float raymarchEnd = length(worldDepth-worldPos.xyz);
float raymarchStart = _ProjectionParams.y;
//float sceneDepth = Linear01Depth(depthSample);
//bool occluded = GetRaymarchEndFromSceneDepth(sceneDepth, raymarchEnd);

View file

@ -0,0 +1,78 @@
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
Shader "Skybox/Stretched Cubemap" {
Properties {
_Stretching ("Stretching", Range(-1,1)) = 0.5
_Tint ("Tint Color", Color) = (.5, .5, .5, .5)
[Gamma] _Exposure ("Exposure", Range(0, 8)) = 1.0
_Rotation ("Rotation", Range(0, 360)) = 0
[NoScaleOffset] _Tex ("Cubemap (HDR)", Cube) = "grey" {}
}
SubShader {
Tags { "Queue"="Background" "RenderType"="Background" "PreviewType"="Skybox" }
Cull Off ZWrite Off
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#include "UnityCG.cginc"
samplerCUBE _Tex;
half4 _Tex_HDR;
half4 _Tint;
half _Exposure;
half _Stretching;
float _Rotation;
float3 RotateAroundYInDegrees (float3 vertex, float degrees)
{
float alpha = degrees * UNITY_PI / 180.0;
float sina, cosa;
sincos(alpha, sina, cosa);
float2x2 m = float2x2(cosa, -sina, sina, cosa);
return float3(mul(m, vertex.xz), vertex.y).xzy;
}
struct appdata_t {
float4 vertex : POSITION;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct v2f {
float4 vertex : SV_POSITION;
float3 texcoord : TEXCOORD0;
UNITY_VERTEX_OUTPUT_STEREO
};
v2f vert (appdata_t v)
{
v2f o;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
float3 rotated = RotateAroundYInDegrees(v.vertex, _Rotation);
o.vertex = UnityObjectToClipPos(rotated);
o.texcoord = v.vertex.xyz;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
half4 tex = texCUBE (_Tex, i.texcoord + float3(0,-1,0) * _Stretching);
half3 c = DecodeHDR (tex, _Tex_HDR);
c = c * _Tint.rgb * unity_ColorSpaceDouble.rgb;
c *= _Exposure;
return half4(c, 1);
}
ENDCG
}
}
Fallback Off
}

View file

@ -1,8 +1,10 @@
fileFormatVersion: 2
guid: 31ddb89f7354b2e4384d433c9dc67aac
guid: 7227c68540977d04b81c02ca9ae897f8
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
preprocessorOverride: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,3 +1,7 @@
#pragma multi_compile __ FLOW_GLOBAL
#pragma multi_compile __ FLOW_SLOPE
#pragma multi_compile __ NOISE_SLOPE
#include "UnityCG.cginc"
uniform sampler2D _NebulaSurfaceHeight;
@ -15,7 +19,6 @@ uniform half _NebulaFillDensity,
_NebulaFillDistance,
_NebulaFillExponent,
_NebulaFillOffset,
_NebulaFloorDensity,
_NebulaPatchDensity,
_NebulaFloorOffset,
_NebulaFloorBlend,
@ -27,13 +30,16 @@ uniform half _NebulaFillDensity,
_NebulaNoiseExponent,
_NebulaNoiseAmplitude,
_NebulaNoiseSpeed,
_NebulaNoiseSlopeExponent,
_FlowScale,
_FlowAmplitude,
_FlowScroll,
_FlowPeriod,
_FlowSlopeAmplitude,
_FlowSwirlAmplitude,
_SafetyDistance,
_DynamicLodRange,
_DynamicLodBias,
_DynamicLodLow,
_DynamicLodHigh,
_DynamicIntensity,
_DynamicSkyBoost;
@ -96,7 +102,7 @@ float cloudDensity(float3 pos, float surfaceDisp)
}
// TODO: Get this working?
float2 flowTex(float3 pos)
float2 texFlow(float3 pos)
{
const float2 fluidUv = getUVFluid(pos.xz);
if(any(fluidUv<0)||any(fluidUv>1)) return 0;
@ -108,21 +114,50 @@ float2 flowTex(float3 pos)
float2 gravGradient (float2 uv)
{
return float2(
tex2Dlod(_NebulaSurfaceHeight, float4(uv.x + _NebulaSurfaceHeight_TexelSize.x, uv.y, 0, 0)).r - tex2Dlod(_NebulaSurfaceHeight, float4(uv.x - _NebulaSurfaceHeight_TexelSize.x, uv.y, 0, 0)).r,
tex2Dlod(_NebulaSurfaceHeight, float4(uv.x, uv.y + _NebulaSurfaceHeight_TexelSize.y, 0, 0)).r - tex2Dlod(_NebulaSurfaceHeight, float4(uv.x, uv.y - _NebulaSurfaceHeight_TexelSize.y, 0, 0)).r
tex2Dlod(_NebulaSurfaceHeight, float4(uv.x + _NebulaSurfaceHeight_TexelSize.x, uv.y, 0, 0)).r -
tex2Dlod(_NebulaSurfaceHeight, float4(uv.x - _NebulaSurfaceHeight_TexelSize.x, uv.y, 0, 0)).r,
tex2Dlod(_NebulaSurfaceHeight, float4(uv.x, uv.y + _NebulaSurfaceHeight_TexelSize.y, 0, 0)).r -
tex2Dlod(_NebulaSurfaceHeight, float4(uv.x, uv.y - _NebulaSurfaceHeight_TexelSize.y, 0, 0)).r
);
}
float3 gravNormal (float2 grad)
{
float3 normal = float3(-grad.x, _NebulaSurfaceHeight_TexelSize.x*2*_GridTransform.z, -grad.y);
return normalize(normal);
}
float3 globalFlow(float3 pos)
{
float3 flowSample = Tri3D( pos / _FlowScale - float3(0,_FlowScroll,0) ) * _FlowAmplitude;
flowSample.y *= .5;
return flowSample;
}
float3 slopeFlow(float2 grad)
{
float2 ngrad = normalize(grad);
return float3(ngrad.y, 0, -ngrad.x) * _FlowSwirlAmplitude + float3(ngrad.x, 0, ngrad.y) * _FlowSlopeAmplitude;
}
float3 slopeFlow(float3 pos)
{
return slopeFlow(gravGradient(getUV(pos.xz)));
}
float3 flow(float3 pos)
{
float3 flowSample = Tri3D( pos / _FlowScale - float3(0,_FlowScroll,0) );
//float2 grad = normalize(gravGradient(getUV(pos.xz)));
flowSample.xyz *= .5;
flowSample.y *= .5;
// flowSample.x += grad.y;
// flowSample.z += -grad.x;
flowSample.xyz *= _FlowAmplitude;
return flowSample;
float3 flow = 0;
#if FLOW_GLOBAL
flow += globalFlow(pos);
#endif
#if FLOW_SLOPE
flow += slopeFlow(pos);
#endif
return flow;
}
float tri2(in float x){return 1-2*abs(frac(x)-.5);}
@ -132,22 +167,54 @@ float density(float3 pos)
const float2 uv = getUV(pos.xz);
const float surfaceDisp = tex2Dlod(_NebulaSurfaceHeight, half4(uv, 0, 0)).r;
const float dist = pos.y + surfaceDisp;
float d = pow(abs(dist+_NebulaFillOffset)/_NebulaFillDistance,-_NebulaFillExponent) * _NebulaFillDensity;
//d += pow(abs(dist+_NebulaFillOffset)/(_NebulaFillDistance*10),1/_NebulaFillExponent) * _NebulaFillDensity/4;
float d = pow(smoothstep(0, _NebulaFillDistance, abs(dist+_NebulaFillOffset)),-_NebulaFillExponent) * _NebulaFillDensity;
if(dist < _SafetyDistance)
{
const float heightFade = smoothstep(_SafetyDistance,_SafetyDistance*.75,dist);
const float3 fl = flow(pos);
float heightFade = smoothstep(_SafetyDistance,_SafetyDistance*.75,dist);
float exponent = _NebulaNoiseExponent;
#if NOISE_SLOPE
const float2 grad = gravGradient(uv);
const float3 normal = gravNormal(grad);
float flatness = 1 - dot(normal,float3(0,1,0));
flatness = pow(flatness,_NebulaNoiseSlopeExponent);
heightFade *= flatness;
exponent *= flatness;
#endif
#if FLOW_GLOBAL || FLOW_SLOPE
float3 fl = 0;
#if FLOW_GLOBAL
fl += globalFlow(pos);
#endif
#if FLOW_SLOPE
#if NOISE_SLOPE
fl += slopeFlow(grad);
#else
fl += slopeFlow(pos);
#endif
#endif
const float lerp1 = frac(_Time.y / _FlowPeriod);
const float lerp2 = frac(_Time.y / _FlowPeriod + .5);
const float noise1 = pow(triNoise3d((pos+fl.xyz * (lerp1 - .5) * _FlowPeriod) / _NebulaNoiseScale),_NebulaNoiseExponent) * _NebulaNoiseAmplitude * tri2(lerp1);
const float noise2 = pow(triNoise3d((pos+fl.xyz * (lerp2 - .5) * _FlowPeriod) / _NebulaNoiseScale),_NebulaNoiseExponent) * _NebulaNoiseAmplitude * tri2(lerp2);
pos.y += (noise1 + noise2) * heightFade;
const float noise1 = pow(triNoise3d((pos+fl.xyz * (lerp1 - .5) * _FlowPeriod) / _NebulaNoiseScale),exponent) * tri2(lerp1);
const float noise2 = pow(triNoise3d((pos+fl.xyz * (lerp2 - .5) * _FlowPeriod) / _NebulaNoiseScale),exponent) * tri2(lerp2);
pos.y += (noise1 + noise2) * heightFade * _NebulaNoiseAmplitude;
const float lerp3 = frac(_Time.y / _FlowPeriod * 2 + .25);
const float lerp4 = frac(_Time.y / _FlowPeriod * 2 + .75);
const float noise3 = pow(triNoise3d((pos+fl.xyz * (lerp3 - .5) * _FlowPeriod / 2) / _NebulaNoiseScale * 8), _NebulaNoiseExponent) * _NebulaNoiseAmplitude * tri2(lerp3) / 2;
const float noise4 = pow(triNoise3d((pos+fl.xyz * (lerp4 - .5) * _FlowPeriod / 2) / _NebulaNoiseScale * 8), _NebulaNoiseExponent) * _NebulaNoiseAmplitude * tri2(lerp4) / 2;
pos.y -= (noise3 + noise4) * heightFade;
const float noise3 = pow(triNoise3d((pos+fl.xyz * (lerp3 - .5) * _FlowPeriod / 2) / _NebulaNoiseScale * 8), exponent) * tri2(lerp3);
const float noise4 = pow(triNoise3d((pos+fl.xyz * (lerp4 - .5) * _FlowPeriod / 2) / _NebulaNoiseScale * 8), exponent) * tri2(lerp4);
pos.y -= (noise3 + noise4) * heightFade * _NebulaNoiseAmplitude / 2;
#else
const float noise1 = pow(triNoise3d(pos / _NebulaNoiseScale), exponent);
const float noise2 = pow(triNoise3d(pos / _NebulaNoiseScale * 8), exponent);
pos.y += (noise1 - noise2) * heightFade * _NebulaNoiseAmplitude;
#endif
d += cloudDensity(pos, surfaceDisp);
}
return d;
@ -158,8 +225,7 @@ float4 VolumeSampleColor(float3 pos)
float d = density(pos);
float2 uv = getUV(pos.xz);
float3 tint = tex2Dlod(_NebulaTint, float4(uv.x, uv.y, 0, pow(max(.01,d), _TintLodExponent)));
const float albedo = smoothstep(0,-250,pos.y) * pow(max(.1,d), _TintExponent) * _NebulaLuminance;
return float4(albedo*tint, d);
return float4(tint, d);
}
float2 tintGradient (float2 uv)
@ -173,8 +239,8 @@ float2 tintGradient (float2 uv)
float3 VolumeSampleColorSimple(float3 pos, float3 normal)
{
float2 uv = getUV(pos.xz);
float3 low = tex2Dlod(_NebulaTint, float4(uv.x, uv.y, 0, _DynamicLodBias)).rgb;
float3 high = tex2Dlod(_NebulaTint, float4(uv.x, uv.y, 0, _DynamicLodBias + _DynamicLodRange)).rgb * _DynamicSkyBoost;
float3 low = tex2Dlod(_NebulaTint, float4(uv.x, uv.y, 0, _DynamicLodLow)).rgb;
float3 high = tex2Dlod(_NebulaTint, float4(uv.x, uv.y, 0, _DynamicLodHigh)).rgb * _DynamicSkyBoost;
float upness = dot(normal, float3(0,1,0));
//float lambert = 2 - dot(normalize(normal.xz), normalize(tintGradient(uv)));
return lerp(low,high,sqrt((upness+1)/2)) * _DynamicIntensity / (density(pos)+1);

BIN
ProjectSettings/EditorSettings.asset (Stored with Git LFS)

Binary file not shown.

View file

@ -24,7 +24,7 @@ MonoBehaviour:
m_MinSize: {x: 400, y: 200}
m_MaxSize: {x: 32384, y: 16192}
vertical: 0
controlID: 91929
controlID: 16385
--- !u!114 &2
MonoBehaviour:
m_ObjectHideFlags: 52
@ -142,7 +142,7 @@ MonoBehaviour:
m_MinSize: {x: 300, y: 200}
m_MaxSize: {x: 24288, y: 16192}
vertical: 0
controlID: 91930
controlID: 16386
--- !u!114 &4
MonoBehaviour:
m_ObjectHideFlags: 52
@ -167,7 +167,7 @@ MonoBehaviour:
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 16192, y: 16192}
vertical: 1
controlID: 91931
controlID: 16387
--- !u!114 &5
MonoBehaviour:
m_ObjectHideFlags: 52
@ -192,7 +192,7 @@ MonoBehaviour:
m_MinSize: {x: 200, y: 100}
m_MaxSize: {x: 16192, y: 8096}
vertical: 0
controlID: 91932
controlID: 16388
--- !u!114 &6
MonoBehaviour:
m_ObjectHideFlags: 52
@ -210,7 +210,7 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 0
width: 708
width: 618
height: 328
m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021}
@ -242,7 +242,7 @@ MonoBehaviour:
serializedVersion: 2
x: 71
y: 73
width: 707
width: 617
height: 307
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
@ -467,9 +467,9 @@ MonoBehaviour:
m_PlayAudio: 0
m_AudioPlay: 0
m_Position:
m_Target: {x: -5936.0327, y: -395.84363, z: 5086.9893}
m_Target: {x: 1335.9846, y: 518.3579, z: 361.58807}
speed: 2
m_Value: {x: -5936.0327, y: -395.84363, z: 5086.9893}
m_Value: {x: 1335.9846, y: 518.3579, z: 361.58807}
m_RenderMode: 0
m_CameraMode:
drawMode: 0
@ -481,12 +481,12 @@ MonoBehaviour:
m_SceneViewState:
m_AlwaysRefresh: 0
showFog: 1
showSkybox: 0
showSkybox: 1
showFlares: 1
showImageEffects: 1
showImageEffects: 0
showParticleSystems: 1
showVisualEffectGraphs: 1
m_FxEnabled: 0
m_FxEnabled: 1
m_Grid:
xGrid:
m_Fade:
@ -516,13 +516,13 @@ MonoBehaviour:
m_GridAxis: 1
m_gridOpacity: 0.5
m_Rotation:
m_Target: {x: -0.010432282, y: -0.98870355, z: -0.08294214, w: 0.124663696}
m_Target: {x: 0.032562427, y: 0.20897013, z: -0.006993029, w: 0.9773888}
speed: 2
m_Value: {x: 0.010432282, y: 0.9887036, z: 0.08294214, w: -0.124663696}
m_Value: {x: -0.032562427, y: -0.20897013, z: 0.0069930283, w: -0.9773888}
m_Size:
m_Target: 192.96298
m_Target: 532.6635
speed: 2
m_Value: 192.96298
m_Value: 532.6635
m_Ortho:
m_Target: 0
speed: 2
@ -562,9 +562,9 @@ MonoBehaviour:
m_Children: []
m_Position:
serializedVersion: 2
x: 708
x: 618
y: 0
width: 402
width: 492
height: 328
m_MinSize: {x: 102, y: 121}
m_MaxSize: {x: 4002, y: 4021}
@ -594,9 +594,9 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 779
x: 689
y: 73
width: 400
width: 490
height: 307
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
@ -652,7 +652,7 @@ MonoBehaviour:
m_MinSize: {x: 100, y: 200}
m_MaxSize: {x: 8096, y: 16192}
vertical: 1
controlID: 91874
controlID: 16292
--- !u!114 &12
MonoBehaviour:
m_ObjectHideFlags: 52
@ -711,9 +711,9 @@ MonoBehaviour:
m_SceneHierarchy:
m_TreeViewState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: 066b0000
m_SelectedIDs: 24760000
m_LastClickedID: 0
m_ExpandedIDs: 5e71f1ffe454f2ff2082f6ff1e92f7ffac95f7ff1a99f7ff80f8f7ffae6af8ff6670f8ffda91f9ff1897f9ffd0bff9ff22c0f9ff8ec8f9fff4c9f9ffa26dfaffc87bfaff5eacfaff96cafaff8c29fcffac29fcff5c5dfcff34fcfcffc033fdffa0a4fdffaaccfdff6c5cfefffa14ffff9422ffff7c24ffffa827ffffde28ffff8a2cffffa653ffff0891ffffdcfaffff82ae0000deae000062b40000f2b400001cc80000e6e20000bce5000020eb000008ec000030ef00008cef0000dc630100f8e10100906b02007a940200a4c7020080cc0200b4ce0200c2cf0200b8d3020016d40200382e0300e22e03009a33030088520300d8ef03007c3804009680040056830400f4c90400b4cc0400a001050052f00500
m_ExpandedIDs: 2e1cfaff4c55fcff44e3ffffdcfaffff086b0000d06b00003c6d00004a6e00006a6f0000b46f000034720000407200009e720000b6740000f27400006ab70000cc0901003c0a0100220e0100440e0100f0510100
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -805,22 +805,22 @@ MonoBehaviour:
m_SkipHidden: 0
m_SearchArea: 1
m_Folders:
- Assets/Resources
- Assets/Materials
m_Globs: []
m_OriginalText:
m_ViewMode: 1
m_StartGridSize: 16
m_LastFolders:
- Assets/Resources
- Assets/Materials
m_LastFoldersGridSize: 16
m_LastProjectPath: E:\Projects\Aetheria-Economy
m_LockTracker:
m_IsLocked: 0
m_FolderTreeState:
scrollPos: {x: 0, y: 447}
m_SelectedIDs: bc7e0000
m_LastClickedID: 32444
m_ExpandedIDs: 00000000b27e0000b47e0000b67e0000b87e0000ba7e0000bc7e0000be7e0000f07e0000287f000082810000388a0000c891000000ca9a3b
scrollPos: {x: 0, y: 20}
m_SelectedIDs: 2c910000
m_LastClickedID: 37164
m_ExpandedIDs: 000000002a9100002c9100002e910000309100003291000034910000369100003a9100003c9100003e91000040910000bc91000000ca9a3b
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -848,7 +848,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: 00000000b27e0000b47e0000b67e0000b87e0000ba7e0000bc7e0000be7e0000f07e0000287f000082810000388a0000c891000000ca9a3b
m_ExpandedIDs: 000000002a9100002c9100002e910000309100003291000034910000369100003a9100003c9100003e91000040910000bc91000000ca9a3b
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -873,9 +873,9 @@ MonoBehaviour:
m_Icon: {fileID: 0}
m_ResourceFile:
m_ListAreaState:
m_SelectedInstanceIDs: 066b0000
m_LastClickedInstanceID: 27398
m_HadKeyboardFocusLastEvent: 1
m_SelectedInstanceIDs: 24760000
m_LastClickedInstanceID: 30244
m_HadKeyboardFocusLastEvent: 0
m_ExpandedInstanceIDs: c6230000b2db0000fefa00000cfb0000
m_RenameOverlay:
m_UserAcceptedRename: 0
@ -900,7 +900,7 @@ MonoBehaviour:
m_Icon: {fileID: 0}
m_ResourceFile:
m_NewAssetIndexInList: -1
m_ScrollPosition: {x: 0, y: 79}
m_ScrollPosition: {x: 0, y: 207}
m_GridSize: 16
m_SkipHiddenPackages: 0
m_DirectoriesAreaWidth: 177
@ -967,7 +967,7 @@ MonoBehaviour:
m_ControlHash: -371814159
m_PrefName: Preview_InspectorPreview
m_LastInspectedObjectInstanceID: -1
m_LastVerticalScrollValue: 0
m_LastVerticalScrollValue: 584
m_GlobalObjectId:
m_InspectorMode: 0
m_LockTracker:
@ -994,9 +994,9 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 1566
x: 1573
y: 73
width: 353
width: 346
height: 966
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:

View file

@ -20,35 +20,11 @@ MonoBehaviour:
height: 592
m_ShowMode: 0
m_Title: Recorder
m_RootView: {fileID: 5}
m_RootView: {fileID: 4}
m_MinSize: {x: 560, y: 221}
m_MaxSize: {x: 4000, y: 4021}
m_Maximized: 0
--- !u!114 &2
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_PixelRect:
serializedVersion: 2
x: -741
y: 241
width: 691
height: 601
m_ShowMode: 0
m_Title: Build Settings
m_RootView: {fileID: 7}
m_MinSize: {x: 640, y: 601}
m_MaxSize: {x: 4000, y: 4021}
m_Maximized: 0
--- !u!114 &3
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -68,11 +44,11 @@ MonoBehaviour:
height: 1037
m_ShowMode: 4
m_Title: Game
m_RootView: {fileID: 8}
m_RootView: {fileID: 7}
m_MinSize: {x: 875, y: 371}
m_MaxSize: {x: 10000, y: 10000}
m_Maximized: 1
--- !u!114 &4
--- !u!114 &3
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -93,12 +69,12 @@ MonoBehaviour:
height: 592
m_MinSize: {x: 560, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 22}
m_ActualView: {fileID: 18}
m_Panes:
- {fileID: 22}
- {fileID: 18}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &5
--- !u!114 &4
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -111,7 +87,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 4}
- {fileID: 3}
m_Position:
serializedVersion: 2
x: 0
@ -121,8 +97,8 @@ MonoBehaviour:
m_MinSize: {x: 560, y: 221}
m_MaxSize: {x: 4000, y: 4021}
vertical: 0
controlID: 38741
--- !u!114 &6
controlID: 217
--- !u!114 &5
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -132,23 +108,23 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: BuildPlayerWindow
m_Name: ConsoleWindow
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
x: 553
y: 0
width: 691
height: 601
m_MinSize: {x: 640, y: 580}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 23}
width: 694
height: 258
m_MinSize: {x: 102, y: 121}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 21}
m_Panes:
- {fileID: 23}
- {fileID: 21}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &7
--- !u!114 &6
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -161,18 +137,19 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 6}
- {fileID: 12}
- {fileID: 5}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 691
height: 601
m_MinSize: {x: 640, y: 601}
m_MaxSize: {x: 4000, y: 4021}
width: 1247
height: 258
m_MinSize: {x: 200, y: 100}
m_MaxSize: {x: 16192, y: 8096}
vertical: 0
controlID: 36996
--- !u!114 &8
controlID: 63
--- !u!114 &7
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -185,9 +162,9 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 9}
- {fileID: 11}
- {fileID: 8}
- {fileID: 10}
- {fileID: 9}
m_Position:
serializedVersion: 2
x: 0
@ -200,7 +177,7 @@ MonoBehaviour:
m_TopViewHeight: 30
m_UseBottomView: 1
m_BottomViewHeight: 20
--- !u!114 &9
--- !u!114 &8
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -222,7 +199,7 @@ MonoBehaviour:
m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0}
m_LastLoadedLayoutName:
--- !u!114 &10
--- !u!114 &9
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -243,7 +220,7 @@ MonoBehaviour:
height: 20
m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0}
--- !u!114 &11
--- !u!114 &10
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -256,8 +233,9 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 12}
- {fileID: 21}
- {fileID: 11}
- {fileID: 14}
- {fileID: 17}
m_Position:
serializedVersion: 2
x: 0
@ -267,33 +245,8 @@ MonoBehaviour:
m_MinSize: {x: 400, y: 200}
m_MaxSize: {x: 32384, y: 16192}
vertical: 0
controlID: 92221
--- !u!114 &12
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 13}
- {fileID: 18}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 1502
height: 987
m_MinSize: {x: 300, y: 200}
m_MaxSize: {x: 24288, y: 16192}
vertical: 0
controlID: 92222
--- !u!114 &13
controlID: 61
--- !u!114 &11
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -306,18 +259,70 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 14}
- {fileID: 17}
- {fileID: 6}
- {fileID: 13}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 1110
width: 1247
height: 987
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 16192, y: 16192}
vertical: 1
controlID: 92153
controlID: 62
--- !u!114 &12
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: SceneView
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 553
height: 258
m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 20}
m_Panes:
- {fileID: 20}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &13
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: GameView
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 258
width: 1247
height: 729
m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 19}
m_Panes:
- {fileID: 19}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &14
MonoBehaviour:
m_ObjectHideFlags: 52
@ -335,118 +340,15 @@ MonoBehaviour:
- {fileID: 16}
m_Position:
serializedVersion: 2
x: 0
x: 1247
y: 0
width: 1110
height: 328
m_MinSize: {x: 200, y: 100}
m_MaxSize: {x: 16192, y: 8096}
vertical: 0
controlID: 92154
--- !u!114 &15
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: SceneView
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 708
height: 328
m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 25}
m_Panes:
- {fileID: 25}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &16
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: ConsoleWindow
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 708
y: 0
width: 402
height: 328
m_MinSize: {x: 102, y: 121}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 26}
m_Panes:
- {fileID: 26}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &17
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: GameView
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 328
width: 1110
height: 659
m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 24}
m_Panes:
- {fileID: 24}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &18
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 19}
- {fileID: 20}
m_Position:
serializedVersion: 2
x: 1110
y: 0
width: 392
width: 277
height: 987
m_MinSize: {x: 100, y: 200}
m_MaxSize: {x: 8096, y: 16192}
vertical: 1
controlID: 92223
--- !u!114 &19
controlID: 100
--- !u!114 &15
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -463,16 +365,16 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 0
width: 392
width: 277
height: 534
m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 27}
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 22}
m_Panes:
- {fileID: 27}
- {fileID: 22}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &20
--- !u!114 &16
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -489,16 +391,16 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 534
width: 392
width: 277
height: 453
m_MinSize: {x: 232, y: 271}
m_MaxSize: {x: 10002, y: 10021}
m_ActualView: {fileID: 28}
m_ActualView: {fileID: 23}
m_Panes:
- {fileID: 28}
- {fileID: 23}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &21
--- !u!114 &17
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -513,19 +415,19 @@ MonoBehaviour:
m_Children: []
m_Position:
serializedVersion: 2
x: 1502
x: 1524
y: 0
width: 347
width: 325
height: 987
m_MinSize: {x: 276, y: 71}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 29}
m_ActualView: {fileID: 24}
m_Panes:
- {fileID: 29}
- {fileID: 30}
- {fileID: 24}
- {fileID: 25}
m_Selected: 0
m_LastSelected: 1
--- !u!114 &22
--- !u!114 &18
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -553,57 +455,7 @@ MonoBehaviour:
m_OverlayCanvas:
m_LastAppliedPresetName: Default
m_SaveData: []
--- !u!114 &23
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12043, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_MinSize: {x: 640, y: 580}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Build Settings
m_Image: {fileID: 0}
m_Tooltip:
m_Pos:
serializedVersion: 2
x: -741
y: 241
width: 691
height: 580
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
m_LastAppliedPresetName: Default
m_SaveData: []
m_TreeViewState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs:
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 0}
m_SearchString:
--- !u!114 &24
--- !u!114 &19
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -625,9 +477,9 @@ MonoBehaviour:
m_Pos:
serializedVersion: 2
x: 71
y: 401
width: 1109
height: 638
y: 331
width: 1246
height: 708
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
m_LastAppliedPresetName: Default
@ -642,7 +494,7 @@ MonoBehaviour:
m_TextureFilterMode: 0
m_TextureHideFlags: 61
m_RenderIMGUI: 1
m_EnterPlayModeBehavior: 1
m_EnterPlayModeBehavior: 0
m_UseMipMap: 0
m_VSyncEnabled: 0
m_Gizmos: 0
@ -674,29 +526,29 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 21
width: 1109
height: 617
m_Scale: {x: 0.5712963, y: 0.5712963}
m_Translation: {x: 554.5, y: 308.5}
width: 1246
height: 687
m_Scale: {x: 0.63611114, y: 0.63611114}
m_Translation: {x: 623, y: 343.50003}
m_MarginLeft: 0
m_MarginRight: 0
m_MarginTop: 0
m_MarginBottom: 0
m_LastShownAreaInsideMargins:
serializedVersion: 2
x: -970.59973
x: -979.3886
y: -540
width: 1941.1995
width: 1958.7772
height: 1080
m_MinimalGUI: 1
m_defaultScale: 0.5712963
m_LastWindowPixelSize: {x: 1109, y: 638}
m_defaultScale: 0.63611114
m_LastWindowPixelSize: {x: 1246, y: 708}
m_ClearInEditMode: 1
m_NoCameraWarning: 1
m_LowResolutionForAspectRatios: 01000000000000000000
m_XRRenderMode: 0
m_RenderTexture: {fileID: 0}
--- !u!114 &25
--- !u!114 &20
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -719,8 +571,8 @@ MonoBehaviour:
serializedVersion: 2
x: 71
y: 73
width: 707
height: 307
width: 552
height: 237
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
m_LastAppliedPresetName: Default
@ -807,9 +659,9 @@ MonoBehaviour:
floating: 0
collapsed: 0
displayed: 1
snapOffset: {x: 67.5, y: 86}
snapOffset: {x: 67.5, y: -151}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
snapCorner: 2
id: Orientation
index: 0
layout: 4
@ -944,9 +796,9 @@ MonoBehaviour:
m_PlayAudio: 0
m_AudioPlay: 0
m_Position:
m_Target: {x: -5936.0327, y: -395.84363, z: 5086.9893}
m_Target: {x: 158.30237, y: 71.39331, z: -47.41266}
speed: 2
m_Value: {x: -5936.0327, y: -395.84363, z: 5086.9893}
m_Value: {x: 158.30237, y: 71.39331, z: -47.41266}
m_RenderMode: 0
m_CameraMode:
drawMode: 0
@ -958,9 +810,9 @@ MonoBehaviour:
m_SceneViewState:
m_AlwaysRefresh: 0
showFog: 1
showSkybox: 0
showSkybox: 1
showFlares: 1
showImageEffects: 1
showImageEffects: 0
showParticleSystems: 1
showVisualEffectGraphs: 1
m_FxEnabled: 0
@ -993,13 +845,13 @@ MonoBehaviour:
m_GridAxis: 1
m_gridOpacity: 0.5
m_Rotation:
m_Target: {x: -0.010432282, y: -0.98870355, z: -0.08294214, w: 0.124663696}
m_Target: {x: -0.22480851, y: 0.43145123, z: -0.11186323, w: -0.86652446}
speed: 2
m_Value: {x: 0.010432282, y: 0.9887036, z: 0.08294214, w: -0.124663696}
m_Value: {x: -0.22480099, y: 0.43143678, z: -0.111859486, w: -0.86649543}
m_Size:
m_Target: 192.96298
m_Target: 532.6635
speed: 2
m_Value: 192.96298
m_Value: 532.6635
m_Ortho:
m_Target: 0
speed: 2
@ -1024,7 +876,7 @@ MonoBehaviour:
m_SceneVisActive: 1
m_LastLockedObject: {fileID: 0}
m_ViewIsLockedToObject: 0
--- !u!114 &26
--- !u!114 &21
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -1045,15 +897,15 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 779
x: 624
y: 73
width: 400
height: 307
width: 692
height: 237
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
m_LastAppliedPresetName: Default
m_SaveData: []
--- !u!114 &27
--- !u!114 &22
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -1074,9 +926,9 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 1181
x: 1318
y: 73
width: 390
width: 275
height: 513
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
@ -1085,9 +937,9 @@ MonoBehaviour:
m_SceneHierarchy:
m_TreeViewState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: 066b0000
m_SelectedIDs: 64760000
m_LastClickedID: 0
m_ExpandedIDs: 5e71f1ffe454f2ff2082f6ff1e92f7ffac95f7ff1a99f7ff80f8f7ffae6af8ff6670f8ffda91f9ff1897f9ffd0bff9ff22c0f9ff8ec8f9fff4c9f9ffa26dfaffc87bfaff5eacfaff96cafaff8c29fcffac29fcff5c5dfcff34fcfcffc033fdffa0a4fdffaaccfdff6c5cfefffa14ffff9422ffff7c24ffffa827ffffde28ffff8a2cffffa653ffff0891ffffdcfaffff82ae0000deae000062b40000f2b400001cc80000e6e20000bce5000020eb000008ec000030ef00008cef0000dc630100f8e10100906b02007a940200a4c7020080cc0200b4ce0200c2cf0200b8d3020016d40200382e0300e22e03009a33030088520300d8ef03007c3804009680040056830400f4c90400b4cc0400a001050052f00500
m_ExpandedIDs: dcfaffff
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -1111,7 +963,7 @@ MonoBehaviour:
m_IsLocked: 0
m_CurrentSortingName: TransformSorting
m_WindowGUID: 4c969a2b90040154d917609493e03593
--- !u!114 &28
--- !u!114 &23
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -1132,9 +984,9 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 1181
x: 1318
y: 607
width: 390
width: 275
height: 432
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
@ -1165,10 +1017,10 @@ MonoBehaviour:
m_LockTracker:
m_IsLocked: 0
m_FolderTreeState:
scrollPos: {x: 0, y: 447}
m_SelectedIDs: bc7e0000
m_LastClickedID: 32444
m_ExpandedIDs: 00000000b27e0000b47e0000b67e0000b87e0000ba7e0000bc7e0000be7e0000f07e0000287f000082810000388a0000c891000000ca9a3b
scrollPos: {x: 0, y: 236}
m_SelectedIDs: 2c910000
m_LastClickedID: 37164
m_ExpandedIDs: 00000000229100002491000026910000289100002a9100002c9100002e910000309100003291000034910000369100003891000000ca9a3b
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -1196,7 +1048,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: 00000000b27e0000b47e0000b67e0000b87e0000ba7e0000bc7e0000be7e0000f07e0000287f000082810000388a0000c891000000ca9a3b
m_ExpandedIDs: 00000000229100002491000026910000289100002a9100002c9100002e9100003091000032910000349100003691000038910000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -1223,24 +1075,24 @@ MonoBehaviour:
m_ListAreaState:
m_SelectedInstanceIDs:
m_LastClickedInstanceID: 0
m_HadKeyboardFocusLastEvent: 0
m_HadKeyboardFocusLastEvent: 1
m_ExpandedInstanceIDs: c6230000b2db0000fefa00000cfb0000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_Name: Stardust
m_OriginalName: Stardust
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_UserData: 11004
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_OriginalEventType: 0
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 20}
m_ClientGUIView: {fileID: 16}
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
m_InstanceID: 0
@ -1251,8 +1103,8 @@ MonoBehaviour:
m_ScrollPosition: {x: 0, y: 79}
m_GridSize: 16
m_SkipHiddenPackages: 0
m_DirectoriesAreaWidth: 177
--- !u!114 &29
m_DirectoriesAreaWidth: 123
--- !u!114 &24
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -1273,9 +1125,9 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 1573
x: 1595
y: 73
width: 346
width: 324
height: 966
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
@ -1288,13 +1140,13 @@ MonoBehaviour:
m_ControlHash: -371814159
m_PrefName: Preview_InspectorPreview
m_LastInspectedObjectInstanceID: -1
m_LastVerticalScrollValue: 0
m_LastVerticalScrollValue: 669
m_GlobalObjectId:
m_InspectorMode: 0
m_LockTracker:
m_IsLocked: 0
m_PreviewWindow: {fileID: 0}
--- !u!114 &30
--- !u!114 &25
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -1315,9 +1167,9 @@ MonoBehaviour:
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 1566
x: 1573
y: 73
width: 353
width: 346
height: 966
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: