diff options
| -rw-r--r-- | 2ner.cginc | 4 | ||||
| -rw-r--r-- | 2ner.shader | 8 | ||||
| -rw-r--r-- | features.cginc | 4 | ||||
| -rw-r--r-- | filamented.cginc | 7 | ||||
| -rw-r--r-- | globals.cginc | 6 | ||||
| -rw-r--r-- | yum_lighting.cginc | 7 | ||||
| -rw-r--r-- | yum_pbr.cginc | 7 |
7 files changed, 34 insertions, 9 deletions
@@ -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; |
