summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fog.cginc5
-rw-r--r--mochie_shadow_caster.cginc56
-rw-r--r--tooner_lighting.cginc2
3 files changed, 23 insertions, 40 deletions
diff --git a/fog.cginc b/fog.cginc
index 04f1e1b..a5ac588 100644
--- a/fog.cginc
+++ b/fog.cginc
@@ -229,13 +229,14 @@ Fog00PBR getFog00(v2f i, ToonerData tdata) {
float3 obj_pos_depth_hit;
float2 screen_uv;
+ float eye_depth_world;
{
float3 full_vec_eye_to_geometry = i.worldPos - _WorldSpaceCameraPos;
float3 world_dir = normalize(i.worldPos - _WorldSpaceCameraPos);
float perspective_divide = 1.0 / i.pos.w;
float perspective_factor = length(full_vec_eye_to_geometry * perspective_divide);
screen_uv = i.screenPos.xy * perspective_divide;
- float eye_depth_world =
+ eye_depth_world =
GetLinearZFromZDepth_WorksWithMirrors(
SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, tdata.screen_uv),
screen_uv) * perspective_factor;
@@ -400,7 +401,7 @@ Fog00PBR getFog00(v2f i, ToonerData tdata) {
Fog00PBR pbr;
pbr.albedo = acc;
- pbr.albedo.a *= 10;
+ pbr.albedo.a *= 1;
pbr.albedo.a = smooth_min(pbr.albedo.a, .99, 1);
// Add some dithering to lit color to break up banding
diff --git a/mochie_shadow_caster.cginc b/mochie_shadow_caster.cginc
index 11d0941..64f6350 100644
--- a/mochie_shadow_caster.cginc
+++ b/mochie_shadow_caster.cginc
@@ -1,3 +1,4 @@
+#include "atrix256.cginc"
#include "gerstner.cginc"
#ifndef __MOCHIE_SHADOW_CASTER_INC
@@ -49,6 +50,8 @@ struct v2f {
float2 uv : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
+ float3 worldPos : TEXCOORD1;
+ float2 screenPos : TEXCOORD2;
};
v2f vert (appdata v){
@@ -75,50 +78,27 @@ v2f vert (appdata v){
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
TRANSFER_SHADOW_CASTER_NORMALOFFSET(o)
o.uv = v.uv;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex);
+
+ float2 suv = o.pos * float2(0.5, 0.5 * _ProjectionParams.x);
+ o.screenPos = TransformStereoScreenSpaceTex(suv + 0.5 * o.pos.w, o.pos.w);
+
return o;
}
-float2 get_uv_by_channel(v2f i, uint which_channel) {
- switch (which_channel) {
- case 0:
- return i.uv0;
- break;
-#if !defined(_OPTIMIZE_INTERPOLATORS)
- case 1:
- return i.uv1;
- break;
-#if !defined(LIGHTMAP_ON)
- case 2:
- return i.uv2;
- break;
- case 3:
- return i.uv3;
- break;
- case 4:
- return i.uv4;
- break;
- case 5:
- return i.uv5;
- break;
- case 6:
- return i.uv6;
- break;
- case 7:
- return i.uv7;
- break;
-#endif
-#endif // _OPTIMIZE_INTERPOLATORS
- default:
- return 0;
- break;
+float4 frag (v2f i) : SV_Target {
+ ToonerData tdata;
+ {
+ float3 full_vec_eye_to_geometry = i.worldPos - _WorldSpaceCameraPos;
+ float3 world_dir = normalize(i.worldPos - _WorldSpaceCameraPos);
+ float perspective_divide = 1.0 / i.pos.w;
+ float perspective_factor = length(full_vec_eye_to_geometry * perspective_divide);
+ tdata.screen_uv = i.screenPos.xy * perspective_divide;
+ tdata.screen_uv_round = floor(tdata.screen_uv * _ScreenParams.xy);
}
-}
-#define UV_SCOFF(i, tex_st, which_channel) get_uv_by_channel(i, round(which_channel)) * (tex_st).xy + (tex_st).zw
-
-float4 frag (v2f i) : SV_Target {
#if defined(_BASECOLOR_MAP)
- float4 albedo = _MainTex.SampleBias(GET_SAMPLER_PBR, UV_SCOFF(i, _MainTex_ST, 0), _Global_Sample_Bias);
+ float4 albedo = _MainTex.SampleBias(linear_repeat_s, i.uv, _Global_Sample_Bias);
albedo *= _Color;
#else
float4 albedo = _Color;
diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc
index efb3336..e088c17 100644
--- a/tooner_lighting.cginc
+++ b/tooner_lighting.cginc
@@ -1583,6 +1583,8 @@ float4 effect(inout v2f i, out float depth)
float4 clip_pos = mul(UNITY_MATRIX_VP, float4(i.worldPos, 1.0));
depth = clip_pos.z / clip_pos.w;
}
+#else
+ depth = 0;
#endif
const float3 view_dir = normalize(_WorldSpaceCameraPos.xyz - i.worldPos);
const float3 view_dir_c = normalize(i.centerCamPos - i.worldPos);