diff options
| -rw-r--r-- | pbr.cginc | 39 | ||||
| -rw-r--r-- | tooner_lighting.cginc | 40 |
2 files changed, 39 insertions, 40 deletions
@@ -8,6 +8,30 @@ #include "interpolators.cginc" #include "poi.cginc" +#if defined(_LTCGI) +#include "Third_Party/at.pimaker.ltcgi/Shaders/LTCGI_structs.cginc" + +struct ltcgi_acc { + float3 diffuse; + float3 specular; +}; + +void ltcgi_cb_diffuse(inout ltcgi_acc acc, in ltcgi_output output); +void ltcgi_cb_specular(inout ltcgi_acc acc, in ltcgi_output output); + +#define LTCGI_V2_CUSTOM_INPUT ltcgi_acc +#define LTCGI_V2_DIFFUSE_CALLBACK ltcgi_cb_diffuse +#define LTCGI_V2_SPECULAR_CALLBACK ltcgi_cb_specular + +#include "Third_Party/at.pimaker.ltcgi/Shaders/LTCGI.cginc" +void ltcgi_cb_diffuse(inout ltcgi_acc acc, in ltcgi_output output) { + acc.diffuse += output.intensity * output.color * _LTCGI_DiffuseColor; +} +void ltcgi_cb_specular(inout ltcgi_acc acc, in ltcgi_output output) { + acc.specular += output.intensity * output.color * _LTCGI_SpecularColor; +} +#endif // __LTCGI + UNITY_DECLARE_TEXCUBE(_Cubemap); UnityLight CreateDirectLight(float3 normal, float ao, v2f i) @@ -179,6 +203,21 @@ float4 getLitColor( direct_light.color *= (1 - e); } +#if defined(_LTCGI) + if ((bool) round(_LTCGI_Enabled)) { + ltcgi_acc acc = (ltcgi_acc) 0; + LTCGI_Contribution( + acc, + i.worldPos, + normal, + view_dir, + 1.0 - smoothness, + 0); + indirect_light.diffuse += acc.diffuse; + indirect_light.specular += acc.specular; + } +#endif + direct_light.color = clamp(direct_light.color, _Min_Brightness, _Max_Brightness*.5); indirect_light.diffuse = clamp(indirect_light.diffuse, _Min_Brightness, _Max_Brightness); indirect_light.specular = clamp(indirect_light.specular, _Min_Brightness, _Max_Brightness); diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc index 5a0e087..2a8a75d 100644 --- a/tooner_lighting.cginc +++ b/tooner_lighting.cginc @@ -15,30 +15,6 @@ #include "tooner_scroll.cginc" #include "oklab.cginc" -#if defined(_LTCGI) -#include "Third_Party/at.pimaker.ltcgi/Shaders/LTCGI_structs.cginc" - -struct ltcgi_acc { - float3 diffuse; - float3 specular; -}; - -void ltcgi_cb_diffuse(inout ltcgi_acc acc, in ltcgi_output output); -void ltcgi_cb_specular(inout ltcgi_acc acc, in ltcgi_output output); - -#define LTCGI_V2_CUSTOM_INPUT ltcgi_acc -#define LTCGI_V2_DIFFUSE_CALLBACK ltcgi_cb_diffuse -#define LTCGI_V2_SPECULAR_CALLBACK ltcgi_cb_specular - -#include "Third_Party/at.pimaker.ltcgi/Shaders/LTCGI.cginc" -void ltcgi_cb_diffuse(inout ltcgi_acc acc, in ltcgi_output output) { - acc.diffuse += output.intensity * output.color * _LTCGI_DiffuseColor; -} -void ltcgi_cb_specular(inout ltcgi_acc acc, in ltcgi_output output) { - acc.specular += output.intensity * output.color * _LTCGI_SpecularColor; -} -#endif - struct tess_data { float4 position : INTERNALTESSPOS; @@ -916,22 +892,6 @@ float4 effect(inout v2f i) #if defined(_MATCAP0) || defined(_MATCAP1) || defined(_RIM_LIGHTING0) || defined(_RIM_LIGHTING1) result.rgb += matcap_emission; #endif -#if defined(_LTCGI) - if ((bool) round(_LTCGI_Enabled)) { - ltcgi_acc acc = (ltcgi_acc) 0; - LTCGI_Contribution( - acc, - i.worldPos, - normal, - view_dir, - roughness, - 0); - float3 ltcgi_emission = 0; - ltcgi_emission += acc.diffuse * albedo.a; - ltcgi_emission += acc.specular * albedo.a; - result.rgb += ltcgi_emission; - } -#endif #if defined(_GLITTER) float glitter = get_glitter(i.uv, iddx, iddy, i.worldPos, normal); result.rgb += glitter; |
