diff options
| author | yum <yum.food.vr@gmail.com> | 2025-11-29 16:23:35 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-11-29 16:32:59 -0800 |
| commit | 80ea42aa92d98b5efbb5bf7aebc6a57f1f3f23c1 (patch) | |
| tree | 7645c5be38832afb818d7c0d8ca9a20d14ceb638 | |
| parent | 66fe6def0c13e24f6cc95915371ad132aac35bf9 (diff) | |
add decal mip bias term
| -rw-r--r-- | 2ner.shader | 8 | ||||
| -rw-r--r-- | decals.cginc | 10 | ||||
| -rw-r--r-- | globals.cginc | 1 |
3 files changed, 15 insertions, 4 deletions
diff --git a/2ner.shader b/2ner.shader index 21bc244..df185d4 100644 --- a/2ner.shader +++ b/2ner.shader @@ -370,6 +370,7 @@ Shader "yum_food/2ner" _Decal0_Opacity("Opacity", Range(0, 1)) = 1.0 _Decal0_Angle("Angle", Range(0, 1)) = 0.0 _Decal0_UV_Channel("UV channel", Range(0, 3.1)) = 0 + _Decal0_Bias("Mip bias", Range(-4, 4)) = 0 [ThryToggle(_DECAL0_TILING_MODE)] _Decal0_Tiling_Mode("Tiling mode", Float) = 0 [ThryToggle(_DECAL0_REPLACE_ALPHA)] _Decal0_Replace_Alpha_Mode("Replace alpha", Float) = 0 [ThryToggle(_DECAL0_MULTIPLY)] _Decal0_Replace_Multiply_Mode("Multiply", Float) = 0 @@ -447,6 +448,7 @@ Shader "yum_food/2ner" _Decal1_Opacity("Opacity", Range(0, 1)) = 1.0 _Decal1_Angle("Angle", Range(0, 1)) = 0.0 _Decal1_UV_Channel("UV channel", Range(0, 3.1)) = 0 + _Decal1_Bias("Mip bias", Range(-4, 4)) = 0 [ThryToggle(_DECAL1_TILING_MODE)] _Decal1_Tiling_Mode("Tiling mode", Float) = 0 [ThryToggle(_DECAL1_REPLACE_ALPHA)] _Decal1_Replace_Alpha_Mode("Replace alpha", Float) = 0 [ThryToggle(_DECAL1_MULTIPLY)] _Decal1_Replace_Multiply_Mode("Multiply", Float) = 0 @@ -524,6 +526,7 @@ Shader "yum_food/2ner" _Decal2_Opacity("Opacity", Range(0, 1)) = 1.0 _Decal2_Angle("Angle", Range(0, 1)) = 0.0 _Decal2_UV_Channel("UV channel", Range(0, 3.1)) = 0 + _Decal2_Bias("Mip bias", Range(-4, 4)) = 0 [ThryToggle(_DECAL2_TILING_MODE)] _Decal2_Tiling_Mode("Tiling mode", Float) = 0 [ThryToggle(_DECAL2_REPLACE_ALPHA)] _Decal2_Replace_Alpha_Mode("Replace alpha", Float) = 0 [ThryToggle(_DECAL2_MULTIPLY)] _Decal2_Replace_Multiply_Mode("Multiply", Float) = 0 @@ -601,6 +604,7 @@ Shader "yum_food/2ner" _Decal3_Opacity("Opacity", Range(0, 1)) = 1.0 _Decal3_Angle("Angle", Range(0, 1)) = 0.0 _Decal3_UV_Channel("UV channel", Range(0, 3.1)) = 0 + _Decal3_Bias("Mip bias", Range(-4, 4)) = 0 [ThryToggle(_DECAL3_TILING_MODE)] _Decal3_Tiling_Mode("Tiling mode", Float) = 0 [ThryToggle(_DECAL3_REPLACE_ALPHA)] _Decal3_Replace_Alpha_Mode("Replace alpha", Float) = 0 [ThryToggle(_DECAL3_MULTIPLY)] _Decal3_Replace_Multiply_Mode("Multiply", Float) = 0 @@ -678,6 +682,7 @@ Shader "yum_food/2ner" _Decal4_Opacity("Opacity", Range(0, 1)) = 1.0 _Decal4_Angle("Angle", Range(0, 1)) = 0.0 _Decal4_UV_Channel("UV channel", Range(0, 3.1)) = 0 + _Decal4_Bias("Mip bias", Range(-4, 4)) = 0 [ThryToggle(_DECAL4_TILING_MODE)] _Decal4_Tiling_Mode("Tiling mode", Float) = 0 [ThryToggle(_DECAL4_REPLACE_ALPHA)] _Decal4_Replace_Alpha_Mode("Replace alpha", Float) = 0 [ThryToggle(_DECAL4_MULTIPLY)] _Decal4_Replace_Multiply_Mode("Multiply", Float) = 0 @@ -755,6 +760,7 @@ Shader "yum_food/2ner" _Decal5_Opacity("Opacity", Range(0, 1)) = 1.0 _Decal5_Angle("Angle", Range(0, 1)) = 0.0 _Decal5_UV_Channel("UV channel", Range(0, 3.1)) = 0 + _Decal5_Bias("Mip bias", Range(-4, 4)) = 0 [ThryToggle(_DECAL5_TILING_MODE)] _Decal5_Tiling_Mode("Tiling mode", Float) = 0 [ThryToggle(_DECAL5_REPLACE_ALPHA)] _Decal5_Replace_Alpha_Mode("Replace alpha", Float) = 0 [ThryToggle(_DECAL5_MULTIPLY)] _Decal5_Replace_Multiply_Mode("Multiply", Float) = 0 @@ -832,6 +838,7 @@ Shader "yum_food/2ner" _Decal6_Opacity("Opacity", Range(0, 1)) = 1.0 _Decal6_Angle("Angle", Range(0, 1)) = 0.0 _Decal6_UV_Channel("UV channel", Range(0, 3.1)) = 0 + _Decal6_Bias("Mip bias", Range(-4, 4)) = 0 [ThryToggle(_DECAL6_TILING_MODE)] _Decal6_Tiling_Mode("Tiling mode", Float) = 0 [ThryToggle(_DECAL6_REPLACE_ALPHA)] _Decal6_Replace_Alpha_Mode("Replace alpha", Float) = 0 [ThryToggle(_DECAL6_MULTIPLY)] _Decal6_Replace_Multiply_Mode("Multiply", Float) = 0 @@ -909,6 +916,7 @@ Shader "yum_food/2ner" _Decal7_Opacity("Opacity", Range(0, 1)) = 1.0 _Decal7_Angle("Angle", Range(0, 1)) = 0.0 _Decal7_UV_Channel("UV channel", Range(0, 3.1)) = 0 + _Decal7_Bias("Mip bias", Range(-4, 4)) = 0 [ThryToggle(_DECAL7_TILING_MODE)] _Decal7_Tiling_Mode("Tiling mode", Float) = 0 [ThryToggle(_DECAL7_REPLACE_ALPHA)] _Decal7_Replace_Alpha_Mode("Replace alpha", Float) = 0 [ThryToggle(_DECAL7_MULTIPLY)] _Decal7_Replace_Multiply_Mode("Multiply", Float) = 0 diff --git a/decals.cginc b/decals.cginc index ecfe156..1e9427b 100644 --- a/decals.cginc +++ b/decals.cginc @@ -12,6 +12,7 @@ struct DecalParams { float opacity;
float angle;
float uv_channel;
+ float mip_bias;
float4 mainTex_ST;
int tiling_mode;
int alpha_blend_mode;
@@ -45,6 +46,7 @@ struct DecalParams { params.opacity = prefix##Opacity; \
params.angle = prefix##Angle; \
params.uv_channel = prefix##UV_Channel; \
+ params.mip_bias = prefix##Bias; \
params.mainTex_ST = prefix##MainTex_ST; \
params.tiling_mode = prefix##Tiling_Mode; \
params.alpha_blend_mode = prefix##Alpha_Blend_Mode; \
@@ -94,7 +96,7 @@ float2 applyDomainWarping(DecalParams params, float2 uv) { }
float4 getDecalColor(DecalParams params, float2 uv) {
- float4 sdf_sample = params.mainTex.SampleLevel(linear_repeat_s, uv, 0);
+ float4 sdf_sample = params.mainTex.SampleBias(trilinear_aniso4_repeat_s, uv, params.mip_bias);
float sd = sdf_sample.r;
sd = params.sdf_invert ? 1 - sd : sd;
// The fwidth+smoothstep anti-aliases the glyph outline. See
@@ -178,7 +180,7 @@ float4 getCmykWarpingPlanesColor(DecalParams params, float2 uv) { #define APPLY_DECAL_SDF_OFF(i, albedo, normal_tangent, metallic, smoothness, emission, params) \
float4 decal_albedo; \
{ \
- decal_albedo = params.mainTex.Sample(trilinear_aniso4_repeat_s, decal_uv); \
+ decal_albedo = params.mainTex.SampleBias(trilinear_aniso4_repeat_s, decal_uv, params.mip_bias); \
decal_albedo *= params.color; \
}
@@ -200,7 +202,7 @@ float4 getCmykWarpingPlanesColor(DecalParams params, float2 uv) { #define APPLY_DECAL_BLEND_MODE_ALPHA_BLEND(i, albedo, normal_tangent, metallic, smoothness, emission, params) \
decal_albedo.a = lerp(0, decal_albedo.a, params.opacity); \
- albedo = alphaBlend(albedo, decal_albedo);
+ albedo = alphaBlend(decal_albedo, albedo);
#define APPLY_DECAL_BLEND_MODE_REPLACE(i, albedo, normal_tangent, metallic, smoothness, emission, params) \
albedo = lerp(albedo, decal_albedo, decal_mask * params.opacity);
@@ -218,7 +220,7 @@ float4 getCmykWarpingPlanesColor(DecalParams params, float2 uv) { #define APPLY_DECAL_NORMAL_ON(i, albedo, normal_tangent, metallic, smoothness, emission, params) \
float3 decal_normal = UnpackScaleNormal( \
- params.normalTex.Sample(trilinear_repeat_s, decal_uv), \
+ params.normalTex.SampleBias(trilinear_repeat_s, decal_uv, params.mip_bias), \
params.normal_scale * decal_albedo.a * params.opacity); \
normal_tangent = blendNormalsHill12(normal_tangent, decal_normal);
//normal_tangent = lerp(normal_tangent, decal_normal, decal_albedo.a * params.opacity);
diff --git a/globals.cginc b/globals.cginc index 7713f8c..4f61041 100644 --- a/globals.cginc +++ b/globals.cginc @@ -286,6 +286,7 @@ float4 _Decal##n##_Color; \ float _Decal##n##_Opacity; \
float _Decal##n##_Angle; \
float _Decal##n##_UV_Channel; \
+float _Decal##n##_Bias; \
float _Decal##n##_Tiling_Mode; \
float _Decal##n##_Alpha_Blend_Mode; \
float _Decal##n##_Normal_Enabled; \
|
