summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-02-20 18:48:18 -0800
committeryum <yum.food.vr@gmail.com>2025-02-20 18:48:18 -0800
commit14cdf12e17d2b17676135457e42bde391ff3f313 (patch)
treec1a9d73cc0e3daed83b2d2c3e005284e0cbfaeab
parent01eeb68639ee4e3a5aeacf321c35a46c7dfe5c3d (diff)
Add emission, fine-tune quantized specular
-rw-r--r--2ner.cginc4
-rw-r--r--2ner.shader8
-rw-r--r--features.cginc4
-rw-r--r--filamented.cginc7
-rw-r--r--globals.cginc6
-rw-r--r--yum_lighting.cginc7
-rw-r--r--yum_pbr.cginc7
7 files changed, 34 insertions, 9 deletions
diff --git a/2ner.cginc b/2ner.cginc
index 5cb5d71..34fe7bd 100644
--- a/2ner.cginc
+++ b/2ner.cginc
@@ -100,6 +100,10 @@ float4 frag(v2f i) : SV_Target {
float4 lit = YumBRDF(i, l, pbr);
+#if defined(_EMISSION)
+ lit.rgb += pbr.emission;
+#endif
+
UNITY_EXTRACT_FOG_FROM_EYE_VEC(i);
UNITY_APPLY_FOG(_unity_fogCoord, lit.rgb);
return lit;
diff --git a/2ner.shader b/2ner.shader
index 98afd23..3780ae6 100644
--- a/2ner.shader
+++ b/2ner.shader
@@ -34,6 +34,14 @@ Shader "yum_food/2ner"
[PanningTexture][Normal]_BumpMap("Normals", 2D) = "bump" {}
_BumpScale("Normal Intensity", Range(0, 10)) = 1
_Clip("Alpha Cuttoff", Range(0, 1.001)) = 0.5
+ //ifex _Emission_Enabled==0
+ [HideInInspector] m_start_Emission("Emission", Float) = 0
+ [ThryToggle(_EMISSION)]_Emission_Enabled("Enable", Float) = 0
+ _EmissionColor("Color", Color) = (1, 1, 1, 1)
+ _EmissionMap("Emission", 2D) = "white" {}
+ [HideInInspector] m_end_Emission("Emission", Float) = 0
+ //endex
+
//ifex _Ambient_Occlusion_Enabled==0
[HideInInspector] m_start_AO("Ambient occlusion", Float) = 0
[ThryToggle(_AMBIENT_OCCLUSION)]_Ambient_Occlusion_Enabled("Enable", Float) = 0
diff --git a/features.cginc b/features.cginc
index 0bfe479..9d1be92 100644
--- a/features.cginc
+++ b/features.cginc
@@ -5,6 +5,10 @@
#pragma shader_feature_local _AMBIENT_OCCLUSION
//endex
+//ifex _Emission_Enabled==0
+#pragma shader_feature_local _EMISSION
+//endex
+
//ifex _Wrapped_Lighting_Enabled==0
#pragma shader_feature_local _WRAPPED_LIGHTING
//endex
diff --git a/filamented.cginc b/filamented.cginc
index 9895361..9edfca5 100644
--- a/filamented.cginc
+++ b/filamented.cginc
@@ -343,12 +343,7 @@ half3 Unity_GlossyEnvironment_local (UNITY_ARGS_TEXCUBE(tex), half4 hdr, Unity_G
half3 R = glossIn.reflUVW;
half4 rgbm = UNITY_SAMPLE_TEXCUBE_LOD(tex, R, mip);
- half3 color = DecodeHDR(rgbm, hdr);
-#if defined(_QUANTIZE_SPECULAR)
- float luminance = dot(color, float3(0.2126, 0.7152, 0.0722)); // convert to luminance
- color = color * floor(luminance * _Quantize_Specular_Steps) / _Quantize_Specular_Steps;
-#endif
- return color;
+ return DecodeHDR(rgbm, hdr);
}
inline half3 UnityGI_prefilteredRadiance(const UnityGIInput data,
diff --git a/globals.cginc b/globals.cginc
index 1347a52..08f0e34 100644
--- a/globals.cginc
+++ b/globals.cginc
@@ -15,6 +15,12 @@ half _BumpScale;
float _BumpShadowHeightScale;
float _BumpShadowHardness;
+#if defined(_EMISSION)
+sampler2D _EmissionMap;
+float4 _EmissionMap_ST;
+float3 _EmissionColor;
+#endif
+
#if defined(_AMBIENT_OCCLUSION)
sampler2D _OcclusionMap;
float _OcclusionStrength;
diff --git a/yum_lighting.cginc b/yum_lighting.cginc
index a7cb4ab..758fdb2 100644
--- a/yum_lighting.cginc
+++ b/yum_lighting.cginc
@@ -141,14 +141,15 @@ YumLighting GetYumLighting(v2f i, YumPbr pbr) {
light.diffuse = light.diffuse * floor(diffuse_luminance * _Quantize_Diffuse_Steps) / _Quantize_Diffuse_Steps;
#endif
- light.NoL = saturate(dot(pbr.normal, light.dir));
+ light.NoL = dot(pbr.normal, light.dir);
#if defined(_QUANTIZE_NOL)
light.NoL = floor(light.NoL * _Quantize_NoL_Steps) / _Quantize_NoL_Steps;
#endif
#if defined(_WRAPPED_LIGHTING)
- light.NoL_wrapped_s = wrapNoL(light.NoL, _Wrap_NoL_Specular_Strength);
- light.NoL_wrapped_d = wrapNoL(light.NoL, _Wrap_NoL_Diffuse_Strength);
+ light.NoL_wrapped_s = saturate(wrapNoL(light.NoL, _Wrap_NoL_Specular_Strength));
+ light.NoL_wrapped_d = saturate(wrapNoL(light.NoL, _Wrap_NoL_Diffuse_Strength));
#endif
+ light.NoL = saturate(light.NoL);
light.attenuation = getShadowAttenuation(i);
diff --git a/yum_pbr.cginc b/yum_pbr.cginc
index 2f7113b..dbb8d75 100644
--- a/yum_pbr.cginc
+++ b/yum_pbr.cginc
@@ -9,6 +9,9 @@
struct YumPbr {
float4 albedo;
float3 normal;
+#if defined(_EMISSION)
+ float3 emission;
+#endif
float smoothness;
float roughness;
float roughness_perceptual;
@@ -34,6 +37,10 @@ YumPbr GetYumPbr(v2f i) {
float3x3 tangentToWorld = float3x3(i.tangent, i.binormal, i.normal);
result.normal = normalize(mul(normal_raw, tangentToWorld));
+#if defined(_EMISSION)
+ result.emission = tex2D(_EmissionMap, UV_SCOFF(i, _EmissionMap_ST, /*which_channel=*/0)) * _EmissionColor;
+#endif
+
#if defined(_METALLICS)
float4 metallic_gloss = tex2D(_MetallicGlossMap, UV_SCOFF(i, _MetallicGlossMap_ST, /*which_channel=*/0));
float metallic = metallic_gloss.r * _Metallic;