diff options
Diffstat (limited to 'yum_pbr.cginc')
| -rw-r--r-- | yum_pbr.cginc | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/yum_pbr.cginc b/yum_pbr.cginc index a01bc63..ce1c411 100644 --- a/yum_pbr.cginc +++ b/yum_pbr.cginc @@ -3,6 +3,7 @@ #include "features.cginc" #include "filamented.cginc" +#include "glitter.cginc" #include "globals.cginc" #include "math.cginc" #include "texture_utils.cginc" @@ -10,7 +11,7 @@ struct YumPbr { float4 albedo; float3 normal; -#if defined(_EMISSION) +#if defined(_EMISSION) || (defined(_GLITTER) && defined(FORWARD_BASE_PASS)) float3 emission; #endif float smoothness; @@ -38,20 +39,51 @@ YumPbr GetYumPbr(v2f i) { UV_SCOFF(i, _MainTex_ST, /*which_channel=*/0)) * _Color; #endif -#if defined(_ALPHA_MULTIPLIER) - result.albedo.a = saturate(result.albedo.a * _Alpha_Multiplier); -#endif - float3 normal_raw = UnpackScaleNormal( tex2D(_BumpMap, UV_SCOFF(i, _BumpMap_ST, /*which_channel=*/0)), _BumpScale); float3x3 tangentToWorld = float3x3(i.tangent, i.binormal, i.normal); result.normal = normalize(mul(normal_raw, tangentToWorld)); +#if defined(FORWARD_BASE_PASS) && defined(_GLITTER) + GlitterParams glitter_p; + glitter_p.color = _Glitter_Color; + glitter_p.layers = _Glitter_Layers; + glitter_p.cell_size = _Glitter_Grid_Size; + glitter_p.size = _Glitter_Size; + glitter_p.major_minor_ratio = _Glitter_Major_Minor_Ratio; + glitter_p.angle_randomization_range = _Glitter_Angle_Randomization_Range; + glitter_p.center_randomization_range = _Glitter_Center_Randomization_Range; + glitter_p.size_randomization_range = _Glitter_Size_Randomization_Range; + glitter_p.existence_chance = _Glitter_Existence_Chance; +#if defined(_GLITTER_ANGLE_LIMIT) + glitter_p.angle_limit = _Glitter_Angle_Limit; + glitter_p.angle_limit_transition_width = _Glitter_Angle_Limit_Transition_Width; +#endif +#if defined(_GLITTER_MASK) + glitter_p.mask = _Glitter_Mask.SampleLevel(linear_repeat_s, i.uv01.xy, 0); +#endif + float4 glitter_albedo = getGlitter(i, glitter_p, result.normal); + result.albedo = alphaBlend(result.albedo, glitter_albedo); +#endif + +#if defined(_ALPHA_MULTIPLIER) + result.albedo.a = saturate(result.albedo.a * _Alpha_Multiplier); +#endif + #if defined(_EMISSION) result.emission = tex2D(_EmissionMap, UV_SCOFF(i, _EmissionMap_ST, /*which_channel=*/0)) * _EmissionColor; #endif +#if defined(FORWARD_BASE_PASS) && defined(_GLITTER) + float3 gitter_emission = glitter_albedo.rgb * glitter_albedo.a * _Glitter_Emission; +#if defined(_EMISSION) + result.emission += gitter_emission; +#else + result.emission = gitter_emission; +#endif +#endif + #if defined(_METALLICS) float4 metallic_gloss = tex2D(_MetallicGlossMap, UV_SCOFF(i, _MetallicGlossMap_ST, /*which_channel=*/0)); float metallic = metallic_gloss.r * _Metallic; |
