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
78 lines
1.7 KiB
Text
78 lines
1.7 KiB
Text
// 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
|
|
|
|
}
|