summaryrefslogtreecommitdiffstats
path: root/tooner_lighting.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-05-30 01:17:44 -0700
committeryum <yum.food.vr@gmail.com>2024-05-30 01:17:44 -0700
commit41dd4d9cdc5c20ad448df5d575d4b87f3b3e80b8 (patch)
treefee8741b085d063f131c36d1395d0ed8c60ff89b /tooner_lighting.cginc
parentad79981dfddd3f787011334490d137e0a9a0ffb8 (diff)
Add overlay emission
Also start fixing LOD logic for tiling textures
Diffstat (limited to 'tooner_lighting.cginc')
-rw-r--r--tooner_lighting.cginc30
1 files changed, 26 insertions, 4 deletions
diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc
index 7f7ceb8..f4ec9eb 100644
--- a/tooner_lighting.cginc
+++ b/tooner_lighting.cginc
@@ -419,7 +419,7 @@ void getOverlayAlbedo(inout PbrOverlay ov,
{
#if defined(_PBR_OVERLAY0)
#if defined(_PBR_OVERLAY0_BASECOLOR_MAP)
- ov.ov0_albedo = _PBR_Overlay0_BaseColorTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay0_BaseColorTex_ST), iddx, iddy);
+ ov.ov0_albedo = _PBR_Overlay0_BaseColorTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay0_BaseColorTex_ST), iddx * _PBR_Overlay0_BaseColorTex_ST.x, iddy * _PBR_Overlay0_BaseColorTex_ST.y);
ov.ov0_albedo *= _PBR_Overlay0_BaseColor;
#else
ov.ov0_albedo = _PBR_Overlay0_BaseColor;
@@ -436,7 +436,7 @@ void getOverlayAlbedo(inout PbrOverlay ov,
#if defined(_PBR_OVERLAY1)
#if defined(_PBR_OVERLAY1_BASECOLOR_MAP)
- ov.ov1_albedo = _PBR_Overlay1_BaseColorTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay1_BaseColorTex_ST), iddx, iddy);
+ ov.ov1_albedo = _PBR_Overlay1_BaseColorTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay1_BaseColorTex_ST), iddx * _PBR_Overlay1_BaseColorTex_ST.x, iddy * _PBR_Overlay1_BaseColorTex_ST.y);
ov.ov1_albedo *= _PBR_Overlay1_BaseColor;
#else
ov.ov1_albedo = _PBR_Overlay1_BaseColor;
@@ -453,7 +453,7 @@ void getOverlayAlbedo(inout PbrOverlay ov,
#if defined(_PBR_OVERLAY2)
#if defined(_PBR_OVERLAY2_BASECOLOR_MAP)
- ov.ov2_albedo = _PBR_Overlay2_BaseColorTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay2_BaseColorTex_ST), iddx, iddy);
+ ov.ov2_albedo = _PBR_Overlay2_BaseColorTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay2_BaseColorTex_ST), iddx * _PBR_Overlay2_BaseColorTex_ST.x, iddy * _PBR_Overlay2_BaseColorTex_ST.y);
ov.ov2_albedo *= _PBR_Overlay2_BaseColor;
#else
ov.ov2_albedo = _PBR_Overlay2_BaseColor;
@@ -470,7 +470,7 @@ void getOverlayAlbedo(inout PbrOverlay ov,
#if defined(_PBR_OVERLAY3)
#if defined(_PBR_OVERLAY3_BASECOLOR_MAP)
- ov.ov3_albedo = _PBR_Overlay3_BaseColorTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay3_BaseColorTex_ST), iddx, iddy);
+ ov.ov3_albedo = _PBR_Overlay3_BaseColorTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay3_BaseColorTex_ST), iddx * _PBR_Overlay3_BaseColorTex_ST.x, iddy * _PBR_Overlay3_BaseColorTex_ST.y);
ov.ov3_albedo *= _PBR_Overlay3_BaseColor;
#else
ov.ov3_albedo = _PBR_Overlay3_BaseColor;
@@ -572,6 +572,27 @@ void applyOverlayNormal(inout float3 raw_normal, PbrOverlay ov, v2f i, float idd
#endif // _PBR_OVERLAY3 && _PBR_OVERLAY3_NORMAL_MAP
}
+float3 getOverlayEmission(PbrOverlay ov, v2f i, float iddx, float iddy)
+{
+ float3 em = 0;
+#if defined(_PBR_OVERLAY0_EMISSION_MAP)
+ em += _PBR_Overlay0_EmissionTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay0_EmissionTex_ST), iddx * _PBR_Overlay0_EmissionTex_ST.x, iddy * _PBR_Overlay0_EmissionTex_ST.y) * _PBR_Overlay0_Emission * ov.ov0_mask;
+#endif
+
+#if defined(_PBR_OVERLAY1_EMISSION_MAP)
+ em += _PBR_Overlay1_EmissionTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay1_EmissionTex_ST), iddx * _PBR_Overlay1_EmissionTex_ST.x, iddy * _PBR_Overlay1_EmissionTex_ST.y) * _PBR_Overlay1_Emission * ov.ov1_mask;
+#endif
+
+#if defined(_PBR_OVERLAY2_EMISSION_MAP)
+ em += _PBR_Overlay2_EmissionTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay2_EmissionTex_ST), iddx * _PBR_Overlay2_EmissionTex_ST.x, iddy * _PBR_Overlay2_EmissionTex_ST.y) * _PBR_Overlay2_Emission * ov.ov2_mask;
+#endif
+
+#if defined(_PBR_OVERLAY3_EMISSION_MAP)
+ em += _PBR_Overlay3_EmissionTex.SampleGrad(linear_repeat_s, UV_SCOFF(i.uv, _PBR_Overlay3_EmissionTex_ST), iddx * _PBR_Overlay3_EmissionTex_ST.x, iddy * _PBR_Overlay3_EmissionTex_ST.y) * _PBR_Overlay3_Emission * ov.ov3_mask;
+#endif
+ return em;
+}
+
float4 effect(inout v2f i)
{
float iddx = ddx(i.uv.x) * _Mip_Multiplier;
@@ -930,6 +951,7 @@ float4 effect(inout v2f i)
#if defined(_RENDERING_TRANSPARENT) || defined(_RENDERING_TRANSCLIPPING)
result.rgb *= result.a;
#endif
+ result.rgb += getOverlayEmission(ov, i, iddx, iddy);
return result;
}