summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-06-13 15:44:50 -0700
committeryum <yum.food.vr@gmail.com>2025-06-13 15:44:50 -0700
commitf639117b1f743ab2941667b32b190dd1e715d4a5 (patch)
tree4ade9dece93c4a7d94103c395892c44204b87027
parent96af8aa116b3605bccfb0efb643a4a0e20962530 (diff)
More optional passes get discarded when not locked
-rw-r--r--2ner.cginc19
-rw-r--r--2ner.shader8
-rw-r--r--Scripts/BakeVertexData.py10
-rw-r--r--features.cginc16
4 files changed, 47 insertions, 6 deletions
diff --git a/2ner.cginc b/2ner.cginc
index b83e98c..3a650df 100644
--- a/2ner.cginc
+++ b/2ner.cginc
@@ -34,7 +34,13 @@ v2f vert(appdata v) {
// hide outlines when not locked.
return (v2f) (0.0/0.0);
#endif
+#if defined(DEPTH_PREPASS) && !defined(_DEPTH_PREPASS)
+ return (v2f) (0.0/0.0);
+#endif
#if defined(MASKED_STENCIL1_PASS)
+#if !defined(_MASKED_STENCIL1)
+ return (v2f) (0.0/0.0);
+#endif
float masked_stencil1_mask = _Masked_Stencil1_Mask.SampleLevel(linear_repeat_s, v.uv0, 0);
[branch]
if (masked_stencil1_mask < 0.5) {
@@ -42,6 +48,9 @@ v2f vert(appdata v) {
}
#endif
#if defined(MASKED_STENCIL2_PASS)
+#if !defined(_MASKED_STENCIL2)
+ return (v2f) (0.0/0.0);
+#endif
float masked_stencil2_mask = _Masked_Stencil2_Mask.SampleLevel(linear_repeat_s, v.uv0, 0);
[branch]
if (masked_stencil2_mask < 0.5) {
@@ -49,6 +58,9 @@ v2f vert(appdata v) {
}
#endif
#if defined(MASKED_STENCIL3_PASS)
+#if !defined(_MASKED_STENCIL3)
+ return (v2f) (0.0/0.0);
+#endif
float masked_stencil3_mask = _Masked_Stencil3_Mask.SampleLevel(linear_repeat_s, v.uv0, 0);
[branch]
if (masked_stencil3_mask < 0.5) {
@@ -56,6 +68,9 @@ v2f vert(appdata v) {
}
#endif
#if defined(MASKED_STENCIL4_PASS)
+#if !defined(_MASKED_STENCIL4)
+ return (v2f) (0.0/0.0);
+#endif
float masked_stencil4_mask = _Masked_Stencil4_Mask.SampleLevel(linear_repeat_s, v.uv0, 0);
[branch]
if (masked_stencil4_mask < 0.5) {
@@ -139,7 +154,11 @@ v2f vert(appdata v) {
o.tpos = v.vertex;
#endif
o.uv01.xy = v.uv0;
+#if defined(LIGHTMAP_ON)
+ o.uv01.zw = v.uv1 * unity_LightmapST.xy + unity_LightmapST.zw;
+#else
o.uv01.zw = v.uv1;
+#endif
o.uv23.xy = v.uv2;
o.uv23.zw = v.uv3;
#if defined(_MIRROR_UVS_IN_MIRROR)
diff --git a/2ner.shader b/2ner.shader
index d7658af..e812c52 100644
--- a/2ner.shader
+++ b/2ner.shader
@@ -1594,7 +1594,7 @@ Shader "yum_food/2ner"
//ifex _Masked_Stencil1_Enabled==0
[HideInInspector] m_start_Masked_Stencil1("Masked stencil 1", Float) = 0
- [ThryToggle(_)] _Masked_Stencil1_Enabled("Enable", Float) = 0
+ [ThryToggle(_MASKED_STENCIL1)] _Masked_Stencil1_Enabled("Enable", Float) = 0
[ThryWideEnum(Simple, 0, Front Face vs Back Face, 1)] _Stencil1Type ("Stencil Type", Float) = 0
_Masked_Stencil1_Mask("Mask", 2D) = "white" {}
[IntRange] _MaskedStencil1Ref ("Stencil Reference Value", Range(0, 255)) = 0
@@ -1623,7 +1623,7 @@ Shader "yum_food/2ner"
//ifex _Masked_Stencil2_Enabled==0
[HideInInspector] m_start_Masked_Stencil2("Masked stencil 2", Float) = 0
- [ThryToggle(_)] _Masked_Stencil2_Enabled("Enable", Float) = 0
+ [ThryToggle(_MASKED_STENCIL2)] _Masked_Stencil2_Enabled("Enable", Float) = 0
[ThryWideEnum(Simple, 0, Front Face vs Back Face, 1)] _Stencil2Type ("Stencil Type", Float) = 0
_Masked_Stencil2_Mask("Mask", 2D) = "white" {}
[IntRange] _MaskedStencil2Ref ("Stencil Reference Value", Range(0, 255)) = 0
@@ -1652,7 +1652,7 @@ Shader "yum_food/2ner"
//ifex _Masked_Stencil3_Enabled==0
[HideInInspector] m_start_Masked_Stencil3("Masked stencil 3", Float) = 0
- [ThryToggle(_)] _Masked_Stencil3_Enabled("Enable", Float) = 0
+ [ThryToggle(_MASKED_STENCIL3)] _Masked_Stencil3_Enabled("Enable", Float) = 0
[ThryWideEnum(Simple, 0, Front Face vs Back Face, 1)] _Stencil3Type ("Stencil Type", Float) = 0
_Masked_Stencil3_Mask("Mask", 2D) = "white" {}
[IntRange] _MaskedStencil3Ref ("Stencil Reference Value", Range(0, 255)) = 0
@@ -1681,7 +1681,7 @@ Shader "yum_food/2ner"
//ifex _Masked_Stencil4_Enabled==0
[HideInInspector] m_start_Masked_Stencil4("Masked stencil 4", Float) = 0
- [ThryToggle(_)] _Masked_Stencil4_Enabled("Enable", Float) = 0
+ [ThryToggle(_MASKED_STENCIL4)] _Masked_Stencil4_Enabled("Enable", Float) = 0
[ThryWideEnum(Simple, 0, Front Face vs Back Face, 1)] _Stencil4Type ("Stencil Type", Float) = 0
_Masked_Stencil4_Mask("Mask", 2D) = "white" {}
[IntRange] _MaskedStencil4Ref ("Stencil Reference Value", Range(0, 255)) = 0
diff --git a/Scripts/BakeVertexData.py b/Scripts/BakeVertexData.py
index 17d4b60..670e087 100644
--- a/Scripts/BakeVertexData.py
+++ b/Scripts/BakeVertexData.py
@@ -503,7 +503,7 @@ class MESH_OT_deduplicate_submeshes(BaseSubmeshOperator, ToleranceOperatorMixin)
class MESH_OT_select_hidden_faces(BaseSubmeshOperator, ToleranceOperatorMixin):
bl_idname = "mesh.select_hidden_faces"
bl_label = "Select Hidden Faces"
- bl_description = "Select faces that are hidden behind other faces (overlapping with opposing normals)"
+ bl_description = "Select faces that are hidden behind other faces (overlapping with opposing normals and same material)"
position_tolerance: FloatProperty(
name="Position Tolerance",
@@ -600,7 +600,8 @@ class MESH_OT_select_hidden_faces(BaseSubmeshOperator, ToleranceOperatorMixin):
face_data[face.index] = {
'normal': face.normal.normalized(),
'face': face,
- 'center': center
+ 'center': center,
+ 'material_index': face.material_index
}
# Hash by center position (with boundary handling)
@@ -631,6 +632,10 @@ class MESH_OT_select_hidden_faces(BaseSubmeshOperator, ToleranceOperatorMixin):
face1_data = face_data[face1_idx]
face2_data = face_data[face2_idx]
+ # Check if faces use the same material
+ if face1_data['material_index'] != face2_data['material_index']:
+ continue
+
# Quick check: opposing normals
dot_product = face1_data['normal'].dot(face2_data['normal'])
if dot_product >= 0:
@@ -679,6 +684,7 @@ class MESH_OT_select_hidden_faces(BaseSubmeshOperator, ToleranceOperatorMixin):
layout.prop(self, "position_tolerance")
layout.prop(self, "normal_tolerance")
layout.label(text="Selects overlapping faces with opposing normals", icon='INFO')
+ layout.label(text="Only considers faces with the same material", icon='INFO')
class UVOperatorMixin:
diff --git a/features.cginc b/features.cginc
index 71ed9e2..589e4cf 100644
--- a/features.cginc
+++ b/features.cginc
@@ -334,5 +334,21 @@
#pragma shader_feature_local _UNLIT
//endex
+//ifex _Masked_Stencil1_Enabled==0
+#pragma shader_feature_local _MASKED_STENCIL1
+//endex
+
+//ifex _Masked_Stencil2_Enabled==0
+#pragma shader_feature_local _MASKED_STENCIL2
+//endex
+
+//ifex _Masked_Stencil3_Enabled==0
+#pragma shader_feature_local _MASKED_STENCIL3
+//endex
+
+//ifex _Masked_Stencil4_Enabled==0
+#pragma shader_feature_local _MASKED_STENCIL4
+//endex
+
#endif // __FEATURES_INC