From 12864cb154c36db6cbdf4310df8970ea555e4d4f Mon Sep 17 00:00:00 2001 From: lilxyzw Date: Sat, 20 Nov 2021 16:29:23 +0900 Subject: [PATCH] 1.2.4 --- Assets/lilToon/CHANGELOG.md | 20 + Assets/lilToon/CHANGELOG_JP.md | 20 + Assets/lilToon/DeveloperDocumentation.md | 90 +- Assets/lilToon/DeveloperDocumentation_JP.md | 92 +- Assets/lilToon/Editor/lang.txt | 3 +- Assets/lilToon/Editor/lilInspector.cs | 809 +++++++++------- Assets/lilToon/Editor/lilStartup.cs | 48 +- Assets/lilToon/Editor/lilToonEditorUtils.cs | 10 + Assets/lilToon/README.md | 21 +- Assets/lilToon/README_JP.md | 10 +- ...tom Pass Shader-custom_ltsmulti.shader.txt | 146 +-- ...ss Shader-custom_ltspass_opaque.shader.txt | 108 ++- .../lilToon/Shader/Includes/lil_common.hlsl | 162 ++++ .../Shader/Includes/lil_common_appdata.hlsl | 17 +- .../Shader/Includes/lil_common_frag.hlsl | 913 ++++++++++-------- .../Includes/lil_common_frag_alpha.hlsl | 13 +- .../Shader/Includes/lil_common_functions.hlsl | 287 ++---- .../Shader/Includes/lil_common_input.hlsl | 17 + .../Shader/Includes/lil_common_macro.hlsl | 415 +++++--- .../Shader/Includes/lil_common_vert.hlsl | 49 +- .../Shader/Includes/lil_common_vert_fur.hlsl | 75 +- .../Includes/lil_pass_depthnormals.hlsl | 8 +- .../Shader/Includes/lil_pass_depthonly.hlsl | 18 +- .../Includes/lil_pass_forward_fakeshadow.hlsl | 33 +- .../Shader/Includes/lil_pass_forward_fur.hlsl | 147 +-- .../Shader/Includes/lil_pass_forward_gem.hlsl | 230 ++--- .../Includes/lil_pass_forward_lite.hlsl | 164 ++-- .../Includes/lil_pass_forward_normal.hlsl | 281 ++---- .../Includes/lil_pass_forward_refblur.hlsl | 28 +- .../Shader/Includes/lil_pass_meta.hlsl | 56 +- .../Includes/lil_pass_motionvectors.hlsl | 30 +- .../Includes/lil_pass_shadowcaster.hlsl | 8 +- .../Shader/Includes/lil_pass_universal2d.hlsl | 17 +- .../Shader/Includes/lil_replace_keywords.hlsl | 43 + .../Shader/Includes/lil_tessellation.hlsl | 5 +- .../Shader/Includes/lil_vert_audiolink.hlsl | 25 +- Assets/lilToon/Shader/lts.shader | 4 + Assets/lilToon/Shader/lts_cutout.shader | 4 + Assets/lilToon/Shader/lts_cutout_o.shader | 4 + Assets/lilToon/Shader/lts_fakeshadow.shader | 10 +- Assets/lilToon/Shader/lts_fur.shader | 102 +- Assets/lilToon/Shader/lts_fur_cutout.shader | 110 ++- Assets/lilToon/Shader/lts_gem.shader | 63 +- Assets/lilToon/Shader/lts_o.shader | 4 + Assets/lilToon/Shader/lts_onetrans.shader | 4 + Assets/lilToon/Shader/lts_onetrans_o.shader | 4 + Assets/lilToon/Shader/lts_overlay.shader | 4 + Assets/lilToon/Shader/lts_overlay_one.shader | 4 + Assets/lilToon/Shader/lts_ref.shader | 70 +- Assets/lilToon/Shader/lts_ref_blur.shader | 70 +- Assets/lilToon/Shader/lts_tess.shader | 4 + Assets/lilToon/Shader/lts_tess_cutout.shader | 4 + .../lilToon/Shader/lts_tess_cutout_o.shader | 4 + Assets/lilToon/Shader/lts_tess_o.shader | 4 + .../lilToon/Shader/lts_tess_onetrans.shader | 4 + .../lilToon/Shader/lts_tess_onetrans_o.shader | 4 + Assets/lilToon/Shader/lts_tess_trans.shader | 4 + Assets/lilToon/Shader/lts_tess_trans_o.shader | 4 + .../lilToon/Shader/lts_tess_twotrans.shader | 4 + .../lilToon/Shader/lts_tess_twotrans_o.shader | 4 + Assets/lilToon/Shader/lts_trans.shader | 4 + Assets/lilToon/Shader/lts_trans_o.shader | 4 + Assets/lilToon/Shader/lts_twotrans.shader | 4 + Assets/lilToon/Shader/lts_twotrans_o.shader | 4 + Assets/lilToon/Shader/ltsl.shader | 1 + Assets/lilToon/Shader/ltsl_cutout.shader | 1 + Assets/lilToon/Shader/ltsl_cutout_o.shader | 1 + Assets/lilToon/Shader/ltsl_o.shader | 1 + Assets/lilToon/Shader/ltsl_onetrans.shader | 1 + Assets/lilToon/Shader/ltsl_onetrans_o.shader | 1 + Assets/lilToon/Shader/ltsl_overlay.shader | 1 + Assets/lilToon/Shader/ltsl_overlay_one.shader | 1 + Assets/lilToon/Shader/ltsl_trans.shader | 1 + Assets/lilToon/Shader/ltsl_trans_o.shader | 1 + Assets/lilToon/Shader/ltsl_twotrans.shader | 1 + Assets/lilToon/Shader/ltsl_twotrans_o.shader | 1 + Assets/lilToon/Shader/ltsmulti.shader | 135 +-- Assets/lilToon/Shader/ltsmulti_fur.shader | 104 +- Assets/lilToon/Shader/ltsmulti_gem.shader | 65 +- Assets/lilToon/Shader/ltsmulti_ref.shader | 75 +- Assets/lilToon/Shader/ltspass_baker.shader | 30 +- Assets/lilToon/Shader/ltspass_cutout.shader | 107 +- .../lilToon/Shader/ltspass_lite_cutout.shader | 108 ++- .../lilToon/Shader/ltspass_lite_opaque.shader | 108 ++- .../Shader/ltspass_lite_transparent.shader | 112 ++- Assets/lilToon/Shader/ltspass_opaque.shader | 107 +- .../lilToon/Shader/ltspass_tess_cutout.shader | 109 ++- .../lilToon/Shader/ltspass_tess_opaque.shader | 109 ++- .../Shader/ltspass_tess_transparent.shader | 113 ++- .../lilToon/Shader/ltspass_transparent.shader | 110 ++- Assets/lilToon/package.json | 2 +- version.json | 2 +- 92 files changed, 3491 insertions(+), 2848 deletions(-) diff --git a/Assets/lilToon/CHANGELOG.md b/Assets/lilToon/CHANGELOG.md index d9df5cc2..7a39e2a1 100644 --- a/Assets/lilToon/CHANGELOG.md +++ b/Assets/lilToon/CHANGELOG.md @@ -4,6 +4,26 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.2.4] - 2021-11-20 +### Added +- `Border` and` Blur` properties for toon specular +- UV Mode in Emission +- `uint vertexID : SV_VertexID` to the input of the appdata structure +- Support for Light Layers (URP) + +### Changed +- Changed the display timing of the dialog for the function to scan shader settings from material animation +- Adjusted GUI a little +- Reduced the number of interpolators +- Changed algorithm for toon specular +- Changed function when skipping outline of lilToonMulti + +### Fixed +- Fixed an issue where the worlds that do not support AudioLink could not be determined properly +- Fixed an issue where the environment light strength property was not applied in the fur shader +- Fixed ZWrite being turned off when switching rendering mode in transparent fur shader of lilToonMulti +- Fixed behavior when UV scrolling and rotation are used together + ## [1.2.3] - 2021-10-30 ### Added - Extended UV settings for MatCap diff --git a/Assets/lilToon/CHANGELOG_JP.md b/Assets/lilToon/CHANGELOG_JP.md index a5e7fcf3..f8f01092 100644 --- a/Assets/lilToon/CHANGELOG_JP.md +++ b/Assets/lilToon/CHANGELOG_JP.md @@ -4,6 +4,26 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.2.4] - 2021-11-20 +### 追加 +- 光沢のタイプのトゥーンに`範囲`と`ぼかし`パラメーターを追加 +- 発光に様々なUVモードを追加 +- カスタムシェーダー作成時のappdata構造体の入力に`uint vertexID : SV_VertexID`を追加 +- Light Layersに対応 (URP) + +### 変更 +- マテリアル・アニメーションからシェーダー設定をスキャンする機能のダイアログの表示タイミングを変更 +- GUIを微調整 +- interpolatorを削減 +- トゥーンの光沢のタイプのアルゴリズムを変更 +- lilToonMultiの輪郭線スキップ時の関数を変更 + +### 修正 +- AudioLink非対応ワールドの判定がうまくできていなかった問題の修正 +- ファーシェーダーで環境光の強度プロパティが適用されていなかったのを修正 +- lilToonMultiの透過ファーシェーダーで描画モード切り替え時にZWriteがオフになっていたのを修正 +- UVのスクロールと回転を併用した際の挙動を修正 + ## [1.2.3] - 2021-10-30 ### 追加 - マットキャップのUV関係の機能を拡張 diff --git a/Assets/lilToon/DeveloperDocumentation.md b/Assets/lilToon/DeveloperDocumentation.md index b2a93781..ab805517 100644 --- a/Assets/lilToon/DeveloperDocumentation.md +++ b/Assets/lilToon/DeveloperDocumentation.md @@ -86,6 +86,9 @@ However, the following shaders have their own pass. - lts_ref.shader - lts_ref_blur.shader - ltsmulti.shader +- ltsmulti_fur.shader +- ltsmulti_gem.shader +- ltsmulti_ref.shader ## About passes There are so many variations, but I declare a macro for each shader variation in `HLSLINCLUDE` at the beginning of the shader, and call `#include "Includes/lil_pass_xx.hlsl"` in each pass to branch according to the macro. The code is made as common as possible. @@ -101,7 +104,7 @@ In each path, `#include "Includes/lil_pass_xx.hlsl"` is called, and the hlsl fil - lil_common_macro.hlsl - lil_common_input.hlsl - lil_common_functions.hlsl - - lil_common_appdata.hlsl + - lil_common_appdata.hlsl - Declare a v2f structure for each path - lil_common_vert.hlsl - lil_common_frag.hlsl @@ -141,7 +144,6 @@ This time, add the following. [lilVec3] _CustomVertexWaveStrength ("Vertex Wave Strength", Vector) = (0.0,0.1,0.0,0.0) _CustomVertexWaveSpeed ("Vertex Wave Speed", float) = 10.0 [NoScaleOffset] _CustomVertexWaveMask ("Vertex Wave Mask", 2D) = "white" {} - [lilEnum] _CustomEmissionUVMode ("Emission UV Mode|UV0|UV1|UV2|UV3", Int) = 0 ``` This is the end of editing `custom_lts.shader`. If you want to customize the editor, change `CustomEditor "lilToon.lilToonInspector"` to something else. @@ -154,8 +156,7 @@ Write the macro as follows. #define LIL_CUSTOM_PROPERTIES \ float4 _CustomVertexWaveScale; \ float4 _CustomVertexWaveStrength; \ - float _CustomVertexWaveSpeed; \ - uint _CustomEmissionUVMode; + float _CustomVertexWaveSpeed; #define LIL_CUSTOM_TEXTURES \ TEXTURE2D(_CustomVertexWaveMask); @@ -181,45 +182,11 @@ The following keywords can be `#define` to add the corresponding input. |LIL_REQUIRE_APP_COLOR|color|COLOR| |LIL_REQUIRE_APP_NORMAL|normalOS|NORMAL| |LIL_REQUIRE_APP_TANGENT|tangentOS|TANGENT| - -In this case, we will add the following macro since we want to be able to select UV0 to UV3 in Emission. -```HLSL -#define LIL_REQUIRE_APP_TEXCOORD0 -#define LIL_REQUIRE_APP_TEXCOORD1 -#define LIL_REQUIRE_APP_TEXCOORD2 -#define LIL_REQUIRE_APP_TEXCOORD3 -``` +|LIL_REQUIRE_APP_VERTEXID|vertexID|SV_VertexID| ## Add vertex shader output (v2f structure) Members of the structure can be added from `#define LIL_CUSTOM_V2F_MEMBER`. -Those originally included in the structure can be forced to become members with `#define LIL_V2F_FORCE_(keyword)`. -In this example, do as follows. -```HLSL -#define LIL_V2F_FORCE_TEXCOORD1 -#define LIL_CUSTOM_V2F_MEMBER(id0,id1,id2,id3,id4,id5,id6,id7) \ - float2 uv2 : TEXCOORD##id0; \ - float2 uv3 : TEXCOORD##id1; - -#define LIL_CUSTOM_VERT_COPY \ - LIL_V2F_OUT_BASE.uv2 = input.uv2; \ - LIL_V2F_OUT_BASE.uv3 = input.uv3; -``` - -META path gives an error, so make the following changes to the META path. -```HLSL -//---------------------------------------------------------------------------------------------------------------------- -// Pass -#undef LIL_CUSTOM_V2F_MEMBER -#define LIL_CUSTOM_V2F_MEMBER(id0,id1,id2,id3,id4,id5,id6,id7) \ - float2 uv1 : TEXCOORD##id1; \ - float2 uv2 : TEXCOORD##id2; \ - float2 uv3 : TEXCOORD##id3; - -#include "Includes/lil_pipeline.hlsl" -// Insert functions and includes that depend on Unity here - -#include "Includes/lil_pass_meta.hlsl" -``` +Those originally included in the structure can be forced to become members with `#define LIL_V2F_FORCE_(keyword)`. ## Inserting a process into the vertex shader You can use the following macro to insert the process. @@ -229,7 +196,7 @@ You can use the following macro to insert the process. |LIL_CUSTOM_VERTEX_OS|Processing in object space| |LIL_CUSTOM_VERTEX_WS|Processing in world space| -In this example, we will add a wave animation and copy UV2 / UV3. +In this example, we will add a wave animation. ```HLSL #define LIL_CUSTOM_VERTEX_OS \ float3 customWaveStrength = LIL_SAMPLE_2D_LOD(_CustomVertexWaveMask, sampler_linear_repeat, input.uv, 0).r * _CustomVertexWaveStrength.xyz; \ @@ -248,6 +215,7 @@ The following keywords are currently supported (more may be added upon request) |Name|Description| |-|-| +|UNPACK_V2F|Unpack of v2f structure| |ANIMATE_MAIN_UV|Animation for main UV| |ANIMATE_OUTLINE_UV|Animation for outline UV| |PARALLAX|Parallax map| @@ -278,14 +246,10 @@ The following keywords are currently supported (more may be added upon request) |FOG|Fog| |OUTPUT|Output| -This time, edit as follows. +Example: ```HLSL -#define OVERRIDE_EMISSION_1ST \ - float2 customEmissionUV = input.uv; \ - if(_CustomEmissionUVMode == 1) customEmissionUV = input.uv1; \ - if(_CustomEmissionUVMode == 2) customEmissionUV = input.uv2; \ - if(_CustomEmissionUVMode == 3) customEmissionUV = input.uv3; \ - lilEmission(emissionColor, customEmissionUV, input.uv, invLighting, parallaxOffset, audioLinkValue LIL_SAMP_IN(sampler_MainTex)); +#define BEFORE_UNPACK_V2F \ + fd.uv0 = input.uv0; ``` ## Custom Inspector @@ -332,7 +296,6 @@ namespace lilToon MaterialProperty customVertexWaveStrength; MaterialProperty customVertexWaveSpeed; MaterialProperty customVertexWaveMask; - MaterialProperty customEmissionUVMode; private static bool isShowCustomProperties; @@ -344,7 +307,6 @@ namespace lilToon customVertexWaveStrength = FindProperty("_CustomVertexWaveStrength", props); customVertexWaveSpeed = FindProperty("_CustomVertexWaveSpeed", props); customVertexWaveMask = FindProperty("_CustomVertexWaveMask", props); - customEmissionUVMode = FindProperty("_CustomEmissionUVMode", props); } protected override void DrawCustomProperties( @@ -372,16 +334,6 @@ namespace lilToon EditorGUILayout.EndVertical(); EditorGUILayout.EndVertical(); - - // Emission UV - EditorGUILayout.BeginVertical(boxOuter); - EditorGUILayout.LabelField(GetLoc("Emission UV"), customToggleFont); - EditorGUILayout.BeginVertical(boxInnerHalf); - - materialEditor.ShaderProperty(customEmissionUVMode, "UV Mode|UV0|UV1|UV2|UV3"); - - EditorGUILayout.EndVertical(); - EditorGUILayout.EndVertical(); } } } @@ -416,7 +368,7 @@ Please refer to the HLSL file for more information. |vertexInput.positionWS|World space position| |vertexInput.positionVS|View space position| |vertexInput.positionCS|Clip space position (SV_POSITION)| -|vertexInput.positionSS|Screen space position (for fragment shader)| +|vertexInput.positionSS|Screen space position| ## Vector Transform (LIL_VERTEX_NORMAL_TANGENT_INPUTS) |Name|Description| @@ -435,17 +387,5 @@ Please refer to the HLSL file for more information. |float lilTooning()|Convert input values to toon| # Fragment shader -Commonly used variables are as follows. -|Name|Description| -|-|-| -|v2f input|Input from vertex shader| -|float4 col|Output color| -|float3 albedo|Unlit color| -|float2 uvMain|UV transformed by _MainTex| -|float facing|Surface orientation| -|float3 lightColor|Color of light (main light & sh light)| -|float3 lightDirection|Direction of light (main light & sh light)| -|float attenuation|Attenuation of light| -|float3 normalDirection|World space normal| -|float3 viewDirection|View direction| -|float3x3 tbnWS|float3x3(input.tangentWS, input.bitangentWS, input.normalWS)| \ No newline at end of file +Variables are managed using a common structure called lilFragData. +Check lil_common.hlsl for more information. \ No newline at end of file diff --git a/Assets/lilToon/DeveloperDocumentation_JP.md b/Assets/lilToon/DeveloperDocumentation_JP.md index bc692f80..c00b216f 100644 --- a/Assets/lilToon/DeveloperDocumentation_JP.md +++ b/Assets/lilToon/DeveloperDocumentation_JP.md @@ -86,6 +86,9 @@ - lts_ref.shader - lts_ref_blur.shader - ltsmulti.shader +- ltsmulti_fur.shader +- ltsmulti_gem.shader +- ltsmulti_ref.shader ## パスについて 非常に多くのバリエーションがありますが、シェーダー冒頭の`HLSLINCLUDE`でシェーダーバリエーションごとのマクロを宣言し、各パスで`#include "Includes/lil_pass_xx.hlsl"`を呼び出してマクロに応じた分岐をさせることでなるべくコードを共通化しています。 @@ -101,7 +104,7 @@ - lil_common_macro.hlsl - lil_common_input.hlsl - lil_common_functions.hlsl - - lil_common_appdata.hlsl + - lil_common_appdata.hlsl - 各パスごとのv2f構造体の宣言 - lil_common_vert.hlsl - lil_common_frag.hlsl @@ -141,7 +144,6 @@ ETC1_EXTERNAL_ALPHA UNITY_UI_ALPHACLIP UNITY_UI_CLIP_RECT EFFECT_HUE_VARIATION _ [lilVec3] _CustomVertexWaveStrength ("Vertex Wave Strength", Vector) = (0.0,0.1,0.0,0.0) _CustomVertexWaveSpeed ("Vertex Wave Speed", float) = 10.0 [NoScaleOffset] _CustomVertexWaveMask ("Vertex Wave Mask", 2D) = "white" {} - [lilEnum] _CustomEmissionUVMode ("Emission UV Mode|UV0|UV1|UV2|UV3", Int) = 0 ``` これで`custom_lts.shader`の編集は終わりです。 エディタをカスタマイズする場合は`CustomEditor "lilToon.lilToonInspector"`を任意のものに変更します。 @@ -154,8 +156,7 @@ ETC1_EXTERNAL_ALPHA UNITY_UI_ALPHACLIP UNITY_UI_CLIP_RECT EFFECT_HUE_VARIATION _ #define LIL_CUSTOM_PROPERTIES \ float4 _CustomVertexWaveScale; \ float4 _CustomVertexWaveStrength; \ - float _CustomVertexWaveSpeed; \ - uint _CustomEmissionUVMode; + float _CustomVertexWaveSpeed; #define LIL_CUSTOM_TEXTURES \ TEXTURE2D(_CustomVertexWaveMask); @@ -181,45 +182,11 @@ ETC1_EXTERNAL_ALPHA UNITY_UI_ALPHACLIP UNITY_UI_CLIP_RECT EFFECT_HUE_VARIATION _ |LIL_REQUIRE_APP_COLOR|color|COLOR| |LIL_REQUIRE_APP_NORMAL|normalOS|NORMAL| |LIL_REQUIRE_APP_TANGENT|tangentOS|TANGENT| - -今回は「EmissionでUV0~UV3を指定できるようにする」ので以下のマクロを追加します。 -```HLSL -#define LIL_REQUIRE_APP_TEXCOORD0 -#define LIL_REQUIRE_APP_TEXCOORD1 -#define LIL_REQUIRE_APP_TEXCOORD2 -#define LIL_REQUIRE_APP_TEXCOORD3 -``` +|LIL_REQUIRE_APP_VERTEXID|vertexID|SV_VertexID| ## 頂点シェーダーの出力の追加(v2f構造体) 構造体のメンバーは`#define LIL_CUSTOM_V2F_MEMBER`から追加できます。 -もともと構造体に含まれるものは`#define LIL_V2F_FORCE_(キーワード)`で強制的にメンバーにさせることができます。 -今回の例では以下のようにします。 -```HLSL -#define LIL_V2F_FORCE_TEXCOORD1 -#define LIL_CUSTOM_V2F_MEMBER(id0,id1,id2,id3,id4,id5,id6,id7) \ - float2 uv2 : TEXCOORD##id0; \ - float2 uv3 : TEXCOORD##id1; - -#define LIL_CUSTOM_VERT_COPY \ - LIL_V2F_OUT_BASE.uv2 = input.uv2; \ - LIL_V2F_OUT_BASE.uv3 = input.uv3; -``` - -METAパスではエラーになるのでMETAパスに以下の変更を加えます。 -```HLSL -//---------------------------------------------------------------------------------------------------------------------- -// Pass -#undef LIL_CUSTOM_V2F_MEMBER -#define LIL_CUSTOM_V2F_MEMBER(id0,id1,id2,id3,id4,id5,id6,id7) \ - float2 uv1 : TEXCOORD##id1; \ - float2 uv2 : TEXCOORD##id2; \ - float2 uv3 : TEXCOORD##id3; - -#include "Includes/lil_pipeline.hlsl" -// Insert functions and includes that depend on Unity here - -#include "Includes/lil_pass_meta.hlsl" -``` +もともと構造体に含まれるものは`#define LIL_V2F_FORCE_(キーワード)`で強制的にメンバーにさせることができます。 ## 頂点シェーダーに処理を挿入する 以下のマクロで処理を挿入できます。 @@ -229,10 +196,10 @@ METAパスではエラーになるのでMETAパスに以下の変更を加えま |LIL_CUSTOM_VERTEX_OS|オブジェクト空間での処理| |LIL_CUSTOM_VERTEX_WS|ワールド空間での処理| -今回の例では以下のように波のアニメーションを追加しつつUV2、UV3の書き出しも行います。 +今回の例では以下のように波のアニメーションを追加します。 ```HLSL #define LIL_CUSTOM_VERTEX_OS \ - float3 customWaveStrength = LIL_SAMPLE_2D_LOD(_CustomVertexWaveMask, sampler_linear_repeat, input.uv, 0).r * _CustomVertexWaveStrength.xyz; \ + float3 customWaveStrength = LIL_SAMPLE_2D_LOD(_CustomVertexWaveMask, sampler_linear_repeat, input.uv0, 0).r * _CustomVertexWaveStrength.xyz; \ positionOS.xyz += sin(LIL_TIME * _CustomVertexWaveSpeed + dot(positionOS.xyz, _CustomVertexWaveScale.xyz)) * customWaveStrength; ``` @@ -248,6 +215,7 @@ METAパスではエラーになるのでMETAパスに以下の変更を加えま |名前|説明| |-|-| +|UNPACK_V2F|v2f構造体の展開| |ANIMATE_MAIN_UV|メインUVのアニメーション処理| |ANIMATE_OUTLINE_UV|輪郭線UVのアニメーション処理| |PARALLAX|視差マップの処理| @@ -278,14 +246,10 @@ METAパスではエラーになるのでMETAパスに以下の変更を加えま |FOG|フォグの処理| |OUTPUT|最終書き出し| -今回は以下のようにします。 +例: ```HLSL -#define OVERRIDE_EMISSION_1ST \ - float2 customEmissionUV = input.uv; \ - if(_CustomEmissionUVMode == 1) customEmissionUV = input.uv1; \ - if(_CustomEmissionUVMode == 2) customEmissionUV = input.uv2; \ - if(_CustomEmissionUVMode == 3) customEmissionUV = input.uv3; \ - lilEmission(emissionColor, customEmissionUV, input.uv, invLighting, parallaxOffset, audioLinkValue LIL_SAMP_IN(sampler_MainTex)); +#define BEFORE_UNPACK_V2F \ + fd.uv0 = input.uv0; ``` ## 拡張Inspector @@ -331,7 +295,6 @@ namespace lilToon MaterialProperty customVertexWaveStrength; MaterialProperty customVertexWaveSpeed; MaterialProperty customVertexWaveMask; - MaterialProperty customEmissionUVMode; private static bool isShowCustomProperties; @@ -343,7 +306,6 @@ namespace lilToon customVertexWaveStrength = FindProperty("_CustomVertexWaveStrength", props); customVertexWaveSpeed = FindProperty("_CustomVertexWaveSpeed", props); customVertexWaveMask = FindProperty("_CustomVertexWaveMask", props); - customEmissionUVMode = FindProperty("_CustomEmissionUVMode", props); } protected override void DrawCustomProperties( @@ -371,16 +333,6 @@ namespace lilToon EditorGUILayout.EndVertical(); EditorGUILayout.EndVertical(); - - // Emission UV - EditorGUILayout.BeginVertical(boxOuter); - EditorGUILayout.LabelField(GetLoc("Emission UV"), customToggleFont); - EditorGUILayout.BeginVertical(boxInnerHalf); - - materialEditor.ShaderProperty(customEmissionUVMode, "UV Mode|UV0|UV1|UV2|UV3"); - - EditorGUILayout.EndVertical(); - EditorGUILayout.EndVertical(); } } } @@ -416,7 +368,7 @@ namespace lilToon |vertexInput.positionWS|ワールド座標| |vertexInput.positionVS|ビュー座標| |vertexInput.positionCS|クリップ座標 (SV_POSITION)| -|vertexInput.positionSS|画面座標 (ピクセルシェーダー用)| +|vertexInput.positionSS|画面座標| ## ベクターのトランスフォーム (LIL_VERTEX_NORMAL_TANGENT_INPUTS) |名前|説明| @@ -435,17 +387,5 @@ namespace lilToon |float lilTooning()|入力値をトゥーン化| # ピクセルシェーダー -一般的に使われる変数は以下の通りです。 -|名前|説明| -|-|-| -|v2f input|頂点シェーダーからの入力| -|float4 col|出力色| -|float3 albedo|Unlitの色| -|float2 uvMain|計算済みのUV| -|float facing|面の向き| -|float3 lightColor|ライトの色 (メインライトとSHライト)| -|float3 lightDirection|ライトの向き (メインライトとSHライト)| -|float attenuation|ライトの減衰や影| -|float3 normalDirection|ワールド空間の法線| -|float3 viewDirection|ビュー方向| -|float3x3 tbnWS|float3x3(input.tangentWS, input.bitangentWS, input.normalWS)| \ No newline at end of file +lilFragDataという共通の構造体を用いて変数を管理しています。 +詳しくはlil_common.hlslを確認してください。 \ No newline at end of file diff --git a/Assets/lilToon/Editor/lang.txt b/Assets/lilToon/Editor/lang.txt index 98a63267..efc1944f 100644 --- a/Assets/lilToon/Editor/lang.txt +++ b/Assets/lilToon/Editor/lang.txt @@ -513,4 +513,5 @@ sUtilShaderSettingNotFound ShaderSetting is not found. シェーダー設定が sUtilSelectGameObject Select gameobject before run. 実行前にオブジェクトを選択してください。 실행 전에 개체를 선택하십시오. 请在执行前选择对象。 請在執行前選擇對象。 sUtilSelectPresets Select presets プリセットを選択してください。 사전 설정을 선택하십시오. 请选择一个预设。 請選擇一個預設。 sUtilMaterialAlreadyExist Materials may already exist. Are you sure you want to overwrite it? マテリアルが既に存在している可能性があります。上書きしてもよろしいですか? 재료가 이미있을 수 있습니다. 덮어 하시겠습니까? 该材料可能已经存在。 您确定要覆盖它吗? 該材料可能已經存在。 您確定要覆蓋它嗎? -sUtilImportTargetFound Material or animation found. Do you want to scan it? マテリアルまたはアニメーションが見つかりました。スキャンしますか? Material 나 Animation이 발견되었습니다. 스캔 하시겠습니까? 找到了Material或Animation。 您要扫描吗? 找到了Material或Animation。 您要掃描嗎? \ No newline at end of file +sUtilImportTargetFound Material or animation found. Do you want to scan it? マテリアルまたはアニメーションが見つかりました。スキャンしますか? Material 나 Animation이 발견되었습니다. 스캔 하시겠습니까? 找到了Material或Animation。 您要扫描吗? 找到了Material或Animation。 您要掃描嗎? +sUtilNewFeatureFound A shader setting feature that is currently turned off has been founded in an imported material or animation. Do you want to enable the missing features? インポートしたマテリアルやアニメーションから現在オフになっているシェーダー設定の項目が見つかりました。不足している項目を有効化しますか? 임포트된 머티리얼이나 애니메이션에서 현재 꺼져 있는 셰이더 설정 항목을 발견했습니다.부족한 기능을 활성화 하시겠습니까? 从导入的Material和Animation中发现了当前关闭的Shader设定项目。启用不足的功能吗? 從導入的Material和Animation中發現了當前關閉的Shader設定項目。啟用不足的功能嗎? \ No newline at end of file diff --git a/Assets/lilToon/Editor/lilInspector.cs b/Assets/lilToon/Editor/lilInspector.cs index 4185e348..d20b9710 100644 --- a/Assets/lilToon/Editor/lilInspector.cs +++ b/Assets/lilToon/Editor/lilInspector.cs @@ -6,10 +6,7 @@ using System.IO; using System.Linq; using System.Text; - -#if !UNITY_2018_3_OR_NEWER - using System.Reflection; -#endif +using System.Reflection; namespace lilToon { @@ -140,8 +137,8 @@ public enum lilLightingPreset //------------------------------------------------------------------------------------------------------------------------------ // Constant - private const string currentVersionName = "1.2.3"; - private const int currentVersionValue = 16; + private const string currentVersionName = "1.2.4"; + private const int currentVersionValue = 17; private const string boothURL = "https://lilxyzw.booth.pm/"; private const string githubURL = "https://github.com/lilxyzw/lilToon"; @@ -227,63 +224,63 @@ internal static string GetAvatarEncryptionPath() //------------------------------------------------------------------------------------------------------------------------------ // Shader - private static Shader lts = Shader.Find("lilToon"); - private static Shader ltsc = Shader.Find("Hidden/lilToonCutout"); - private static Shader ltst = Shader.Find("Hidden/lilToonTransparent"); - private static Shader ltsot = Shader.Find("Hidden/lilToonOnePassTransparent"); - private static Shader ltstt = Shader.Find("Hidden/lilToonTwoPassTransparent"); - - private static Shader ltso = Shader.Find("Hidden/lilToonOutline"); - private static Shader ltsco = Shader.Find("Hidden/lilToonCutoutOutline"); - private static Shader ltsto = Shader.Find("Hidden/lilToonTransparentOutline"); - private static Shader ltsoto = Shader.Find("Hidden/lilToonOnePassTransparentOutline"); - private static Shader ltstto = Shader.Find("Hidden/lilToonTwoPassTransparentOutline"); - - private static Shader ltstess = Shader.Find("Hidden/lilToonTessellation"); - private static Shader ltstessc = Shader.Find("Hidden/lilToonTessellationCutout"); - private static Shader ltstesst = Shader.Find("Hidden/lilToonTessellationTransparent"); - private static Shader ltstessot = Shader.Find("Hidden/lilToonTessellationOnePassTransparent"); - private static Shader ltstesstt = Shader.Find("Hidden/lilToonTessellationTwoPassTransparent"); - - private static Shader ltstesso = Shader.Find("Hidden/lilToonTessellationOutline"); - private static Shader ltstessco = Shader.Find("Hidden/lilToonTessellationCutoutOutline"); - private static Shader ltstessto = Shader.Find("Hidden/lilToonTessellationTransparentOutline"); - private static Shader ltstessoto = Shader.Find("Hidden/lilToonTessellationOnePassTransparentOutline"); - private static Shader ltstesstto = Shader.Find("Hidden/lilToonTessellationTwoPassTransparentOutline"); - - private static Shader ltsl = Shader.Find("Hidden/lilToonLite"); - private static Shader ltslc = Shader.Find("Hidden/lilToonLiteCutout"); - private static Shader ltslt = Shader.Find("Hidden/lilToonLiteTransparent"); - private static Shader ltslot = Shader.Find("Hidden/lilToonLiteOnePassTransparent"); - private static Shader ltsltt = Shader.Find("Hidden/lilToonLiteTwoPassTransparent"); - - private static Shader ltslo = Shader.Find("Hidden/lilToonLiteOutline"); - private static Shader ltslco = Shader.Find("Hidden/lilToonLiteCutoutOutline"); - private static Shader ltslto = Shader.Find("Hidden/lilToonLiteTransparentOutline"); - private static Shader ltsloto = Shader.Find("Hidden/lilToonLiteOnePassTransparentOutline"); - private static Shader ltsltto = Shader.Find("Hidden/lilToonLiteTwoPassTransparentOutline"); - - private static Shader ltsref = Shader.Find("Hidden/lilToonRefraction"); - private static Shader ltsrefb = Shader.Find("Hidden/lilToonRefractionBlur"); - private static Shader ltsfur = Shader.Find("Hidden/lilToonFur"); - private static Shader ltsfurc = Shader.Find("Hidden/lilToonFurCutout"); - - private static Shader ltsgem = Shader.Find("Hidden/lilToonGem"); - - private static Shader ltsfs = Shader.Find("_lil/lilToonFakeShadow"); - - private static Shader ltsbaker = Shader.Find("Hidden/ltsother_baker"); - private static Shader ltspo = Shader.Find("Hidden/ltspass_opaque"); - private static Shader ltspc = Shader.Find("Hidden/ltspass_cutout"); - private static Shader ltspt = Shader.Find("Hidden/ltspass_transparent"); - private static Shader ltsptesso = Shader.Find("Hidden/ltspass_tess_opaque"); - private static Shader ltsptessc = Shader.Find("Hidden/ltspass_tess_cutout"); - private static Shader ltsptesst = Shader.Find("Hidden/ltspass_tess_transparent"); - - private static Shader ltsm = Shader.Find("_lil/lilToonMulti"); - private static Shader ltsmref = Shader.Find("Hidden/lilToonMultiRefraction"); - private static Shader ltsmfur = Shader.Find("Hidden/lilToonMultiFur"); - private static Shader ltsmgem = Shader.Find("Hidden/lilToonMultiGem"); + protected static Shader lts = Shader.Find("lilToon"); + protected static Shader ltsc = Shader.Find("Hidden/lilToonCutout"); + protected static Shader ltst = Shader.Find("Hidden/lilToonTransparent"); + protected static Shader ltsot = Shader.Find("Hidden/lilToonOnePassTransparent"); + protected static Shader ltstt = Shader.Find("Hidden/lilToonTwoPassTransparent"); + + protected static Shader ltso = Shader.Find("Hidden/lilToonOutline"); + protected static Shader ltsco = Shader.Find("Hidden/lilToonCutoutOutline"); + protected static Shader ltsto = Shader.Find("Hidden/lilToonTransparentOutline"); + protected static Shader ltsoto = Shader.Find("Hidden/lilToonOnePassTransparentOutline"); + protected static Shader ltstto = Shader.Find("Hidden/lilToonTwoPassTransparentOutline"); + + protected static Shader ltstess = Shader.Find("Hidden/lilToonTessellation"); + protected static Shader ltstessc = Shader.Find("Hidden/lilToonTessellationCutout"); + protected static Shader ltstesst = Shader.Find("Hidden/lilToonTessellationTransparent"); + protected static Shader ltstessot = Shader.Find("Hidden/lilToonTessellationOnePassTransparent"); + protected static Shader ltstesstt = Shader.Find("Hidden/lilToonTessellationTwoPassTransparent"); + + protected static Shader ltstesso = Shader.Find("Hidden/lilToonTessellationOutline"); + protected static Shader ltstessco = Shader.Find("Hidden/lilToonTessellationCutoutOutline"); + protected static Shader ltstessto = Shader.Find("Hidden/lilToonTessellationTransparentOutline"); + protected static Shader ltstessoto = Shader.Find("Hidden/lilToonTessellationOnePassTransparentOutline"); + protected static Shader ltstesstto = Shader.Find("Hidden/lilToonTessellationTwoPassTransparentOutline"); + + protected static Shader ltsl = Shader.Find("Hidden/lilToonLite"); + protected static Shader ltslc = Shader.Find("Hidden/lilToonLiteCutout"); + protected static Shader ltslt = Shader.Find("Hidden/lilToonLiteTransparent"); + protected static Shader ltslot = Shader.Find("Hidden/lilToonLiteOnePassTransparent"); + protected static Shader ltsltt = Shader.Find("Hidden/lilToonLiteTwoPassTransparent"); + + protected static Shader ltslo = Shader.Find("Hidden/lilToonLiteOutline"); + protected static Shader ltslco = Shader.Find("Hidden/lilToonLiteCutoutOutline"); + protected static Shader ltslto = Shader.Find("Hidden/lilToonLiteTransparentOutline"); + protected static Shader ltsloto = Shader.Find("Hidden/lilToonLiteOnePassTransparentOutline"); + protected static Shader ltsltto = Shader.Find("Hidden/lilToonLiteTwoPassTransparentOutline"); + + protected static Shader ltsref = Shader.Find("Hidden/lilToonRefraction"); + protected static Shader ltsrefb = Shader.Find("Hidden/lilToonRefractionBlur"); + protected static Shader ltsfur = Shader.Find("Hidden/lilToonFur"); + protected static Shader ltsfurc = Shader.Find("Hidden/lilToonFurCutout"); + + protected static Shader ltsgem = Shader.Find("Hidden/lilToonGem"); + + protected static Shader ltsfs = Shader.Find("_lil/lilToonFakeShadow"); + + protected static Shader ltsbaker = Shader.Find("Hidden/ltsother_baker"); + protected static Shader ltspo = Shader.Find("Hidden/ltspass_opaque"); + protected static Shader ltspc = Shader.Find("Hidden/ltspass_cutout"); + protected static Shader ltspt = Shader.Find("Hidden/ltspass_transparent"); + protected static Shader ltsptesso = Shader.Find("Hidden/ltspass_tess_opaque"); + protected static Shader ltsptessc = Shader.Find("Hidden/ltspass_tess_cutout"); + protected static Shader ltsptesst = Shader.Find("Hidden/ltspass_tess_transparent"); + + protected static Shader ltsm = Shader.Find("_lil/lilToonMulti"); + protected static Shader ltsmref = Shader.Find("Hidden/lilToonMultiRefraction"); + protected static Shader ltsmfur = Shader.Find("Hidden/lilToonMultiFur"); + protected static Shader ltsmgem = Shader.Find("Hidden/lilToonMultiGem"); private static Shader mtoon = Shader.Find("VRM/MToon"); @@ -556,6 +553,8 @@ public struct lilPropertyBlockData MaterialProperty applySpecular; MaterialProperty applySpecularFA; MaterialProperty specularToon; + MaterialProperty specularBorder; + MaterialProperty specularBlur; MaterialProperty applyReflection; MaterialProperty reflectionApplyTransparency; MaterialProperty useMatCap; @@ -626,6 +625,7 @@ public struct lilPropertyBlockData MaterialProperty emissionColor; MaterialProperty emissionMap; MaterialProperty emissionMap_ScrollRotate; + MaterialProperty emissionMap_UVMode; MaterialProperty emissionBlend; MaterialProperty emissionBlendMask; MaterialProperty emissionBlendMask_ScrollRotate; @@ -639,6 +639,7 @@ public struct lilPropertyBlockData MaterialProperty emission2ndColor; MaterialProperty emission2ndMap; MaterialProperty emission2ndMap_ScrollRotate; + MaterialProperty emission2ndMap_UVMode; MaterialProperty emission2ndBlend; MaterialProperty emission2ndBlendMask; MaterialProperty emission2ndBlendMask_ScrollRotate; @@ -966,6 +967,7 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro { //------------------------------------------------------------------------------------------------------------------------------ // Base Setting + GUILayout.Label(" " + GetLoc("sBaseSetting"), EditorStyles.boldLabel); EditorGUILayout.BeginVertical(boxOuter); EditorGUILayout.LabelField(GetLoc("sBaseSetting"), customToggleFont); EditorGUILayout.BeginVertical(boxInnerHalf); @@ -1032,316 +1034,335 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUILayout.EndVertical(); //------------------------------------------------------------------------------------------------------------------------------ - // Lite - if(isLite) + // Custom Properties + if(isCustomShader) { - // Main - //if(useMainTex.floatValue == 1) - //{ - EditorGUILayout.BeginVertical(boxOuter); - EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); - EditorGUILayout.EndVertical(); - EditorGUILayout.EndVertical(); - //} - - // Shadow - EditorGUILayout.BeginVertical(boxOuter); - materialEditor.ShaderProperty(useShadow, GetLoc("sShadow")); - if(useShadow.floatValue == 1) - { - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow1stColor"), GetLoc("sTextureRGBA")), shadowColorTex); - materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex); - materialEditor.ShaderProperty(shadowBorderColor, GetLoc("sShadowBorderColor")); - EditorGUILayout.EndVertical(); - } - EditorGUILayout.EndVertical(); - - // Outline - EditorGUILayout.BeginVertical(boxOuter); - if(isOutl != EditorGUILayout.ToggleLeft(GetLoc("sOutline"), isOutl, customToggleFont)) - { - SetupMaterialWithRenderingMode(material, renderingModeBuf, transparentModeBuf, !isOutl, isLite, isStWr, isTess); - } - if(isOutl) - { - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, outlineTex, outlineColor); - materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sWidth"), GetLoc("sWidthR")), outlineWidthMask, outlineWidth); - EditorGUILayout.EndVertical(); - } - EditorGUILayout.EndVertical(); - - // Emission - EditorGUILayout.BeginVertical(boxOuter); - materialEditor.ShaderProperty(useEmission, GetLoc("sEmission")); - if(useEmission.floatValue == 1) - { - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, emissionMap); - EditorGUILayout.EndVertical(); - } - EditorGUILayout.EndVertical(); + EditorGUILayout.Space(); + GUILayout.Label(" " + GetLoc("sCustomProperties"), EditorStyles.boldLabel); + DrawCustomProperties(materialEditor, material, boxOuter, boxInnerHalf, boxInner, customBox, customToggleFont, offsetButton); } + EditorGUILayout.Space(); + //------------------------------------------------------------------------------------------------------------------------------ - // Fur - else if(isFur) - { - // Main - //if(useMainTex.floatValue == 1) - //{ - EditorGUILayout.BeginVertical(boxOuter); - EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); - EditorGUILayout.EndVertical(); - EditorGUILayout.EndVertical(); - //} + // Colors + GUILayout.Label(" " + GetLoc("sColors"), EditorStyles.boldLabel); - // Shadow - if(CheckFeature(shaderSetting.LIL_FEATURE_SHADOW)) + edSet.isShowMain = Foldout(GetLoc("sColors"), GetLoc("sMainColorTips"), edSet.isShowMain); + if(edSet.isShowMain) + { + //------------------------------------------------------------------------------------------------------------------------------ + // Lite + if(isLite) { + // Main + //if(useMainTex.floatValue == 1) + //{ + EditorGUILayout.BeginVertical(boxOuter); + EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); + EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); + EditorGUILayout.EndVertical(); + EditorGUILayout.EndVertical(); + //} + + // Shadow EditorGUILayout.BeginVertical(boxOuter); materialEditor.ShaderProperty(useShadow, GetLoc("sShadow")); if(useShadow.floatValue == 1) { EditorGUILayout.BeginVertical(boxInnerHalf); - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_STRENGTH)) materialEditor.TexturePropertySingleLine(maskStrengthContent, shadowStrengthMask, shadowStrength); - else materialEditor.ShaderProperty(shadowStrength, GetLoc("sStrength")); - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_1ST)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow1stColor"), GetLoc("sTextureRGBA")), shadowColorTex, shadowColor); - else materialEditor.ShaderProperty(shadowColor, GetLoc("sShadow1stColor")); - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_2ND)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex, shadow2ndColor); - else materialEditor.ShaderProperty(shadow2ndColor, GetLoc("sShadow2ndColor")); - materialEditor.ShaderProperty(shadowMainStrength, GetLoc("sContrast")); + materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow1stColor"), GetLoc("sTextureRGBA")), shadowColorTex); + materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex); materialEditor.ShaderProperty(shadowBorderColor, GetLoc("sShadowBorderColor")); EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); - } - } - //------------------------------------------------------------------------------------------------------------------------------ - // Gem - else if(isGem) - { - // Main - //if(useMainTex.floatValue == 1) - //{ + // Outline EditorGUILayout.BeginVertical(boxOuter); - EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); - EditorGUILayout.EndVertical(); + if(isOutl != EditorGUILayout.ToggleLeft(GetLoc("sOutline"), isOutl, customToggleFont)) + { + SetupMaterialWithRenderingMode(material, renderingModeBuf, transparentModeBuf, !isOutl, isLite, isStWr, isTess); + } + if(isOutl) + { + EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(textureRGBAContent, outlineTex, outlineColor); + materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sWidth"), GetLoc("sWidthR")), outlineWidthMask, outlineWidth); + EditorGUILayout.EndVertical(); + } EditorGUILayout.EndVertical(); - //} - // Emission - if(CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_1ST)) - { + // Emission EditorGUILayout.BeginVertical(boxOuter); materialEditor.ShaderProperty(useEmission, GetLoc("sEmission")); if(useEmission.floatValue == 1) { EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, emissionMap, emissionColor); - if(emissionColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) - { - emissionColor.colorValue = new Color(emissionColor.colorValue.r, emissionColor.colorValue.g, emissionColor.colorValue.b, 1.0f); - } + materialEditor.TexturePropertySingleLine(textureRGBAContent, emissionMap); EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); } - // Emission 2nd - if(CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_2ND)) + //------------------------------------------------------------------------------------------------------------------------------ + // Fur + else if(isFur) { - EditorGUILayout.BeginVertical(boxOuter); - materialEditor.ShaderProperty(useEmission2nd, GetLoc("sEmission2nd")); - if(useEmission2nd.floatValue == 1) - { + // Main + //if(useMainTex.floatValue == 1) + //{ + EditorGUILayout.BeginVertical(boxOuter); + EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, emission2ndMap, emission2ndColor); - if(emission2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); + EditorGUILayout.EndVertical(); + EditorGUILayout.EndVertical(); + //} + + // Shadow + if(CheckFeature(shaderSetting.LIL_FEATURE_SHADOW)) + { + EditorGUILayout.BeginVertical(boxOuter); + materialEditor.ShaderProperty(useShadow, GetLoc("sShadow")); + if(useShadow.floatValue == 1) { - emission2ndColor.colorValue = new Color(emission2ndColor.colorValue.r, emission2ndColor.colorValue.g, emission2ndColor.colorValue.b, 1.0f); + EditorGUILayout.BeginVertical(boxInnerHalf); + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_STRENGTH)) materialEditor.TexturePropertySingleLine(maskStrengthContent, shadowStrengthMask, shadowStrength); + else materialEditor.ShaderProperty(shadowStrength, GetLoc("sStrength")); + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_1ST)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow1stColor"), GetLoc("sTextureRGBA")), shadowColorTex, shadowColor); + else materialEditor.ShaderProperty(shadowColor, GetLoc("sShadow1stColor")); + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_2ND)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex, shadow2ndColor); + else materialEditor.ShaderProperty(shadow2ndColor, GetLoc("sShadow2ndColor")); + materialEditor.ShaderProperty(shadowMainStrength, GetLoc("sContrast")); + materialEditor.ShaderProperty(shadowBorderColor, GetLoc("sShadowBorderColor")); + EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); } - EditorGUILayout.EndVertical(); } - } - //------------------------------------------------------------------------------------------------------------------------------ - // FakeShadow - else if(isFakeShadow) - { - // Main - //if(useMainTex.floatValue == 1) - //{ - EditorGUILayout.BeginVertical(boxOuter); - EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); - GUILayout.Label("FakeShadow", EditorStyles.boldLabel); - materialEditor.ShaderProperty(fakeShadowVector, GetLoc("sVector") + "|" + GetLoc("sOffset")); - EditorGUILayout.EndVertical(); - EditorGUILayout.EndVertical(); - //} - } + //------------------------------------------------------------------------------------------------------------------------------ + // Gem + else if(isGem) + { + // Main + //if(useMainTex.floatValue == 1) + //{ + EditorGUILayout.BeginVertical(boxOuter); + EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); + EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); + EditorGUILayout.EndVertical(); + EditorGUILayout.EndVertical(); + //} - //------------------------------------------------------------------------------------------------------------------------------ - // Normal - else - { - // Main - //if(useMainTex.floatValue == 1) - //{ - EditorGUILayout.BeginVertical(boxOuter); - EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); - if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN_TONE_CORRECTION)) - { - ToneCorrectionGUI(materialEditor, material, mainTex, mainColor, mainTexHSVG); - } - if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN_GRADATION_MAP)) + // Emission + if(CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_1ST)) { - DrawLine(); - EditorGUILayout.LabelField(GetLoc("sGradationMap"), EditorStyles.boldLabel); - materialEditor.ShaderProperty(mainGradationStrength, GetLoc("sStrength")); - if(mainGradationStrength.floatValue != 0) + EditorGUILayout.BeginVertical(boxOuter); + materialEditor.ShaderProperty(useEmission, GetLoc("sEmission")); + if(useEmission.floatValue == 1) { - materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sGradation"), GetLoc("sTextureRGBA")), mainGradationTex); - GradientEditor(material, mainGrad, mainGradationTex, true); + EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(textureRGBAContent, emissionMap, emissionColor); + if(emissionColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + emissionColor.colorValue = new Color(emissionColor.colorValue.r, emissionColor.colorValue.g, emissionColor.colorValue.b, 1.0f); + } + EditorGUILayout.EndVertical(); } - DrawLine(); + EditorGUILayout.EndVertical(); } - if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN_TONE_CORRECTION) || CheckFeature(shaderSetting.LIL_FEATURE_MAIN_GRADATION_MAP)) + + // Emission 2nd + if(CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_2ND)) { - materialEditor.TexturePropertySingleLine(adjustMaskContent, mainColorAdjustMask); - TextureBakeGUI(material, 4); + EditorGUILayout.BeginVertical(boxOuter); + materialEditor.ShaderProperty(useEmission2nd, GetLoc("sEmission2nd")); + if(useEmission2nd.floatValue == 1) + { + EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(textureRGBAContent, emission2ndMap, emission2ndColor); + if(emission2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + emission2ndColor.colorValue = new Color(emission2ndColor.colorValue.r, emission2ndColor.colorValue.g, emission2ndColor.colorValue.b, 1.0f); + } + EditorGUILayout.EndVertical(); + } + EditorGUILayout.EndVertical(); } - EditorGUILayout.EndVertical(); - EditorGUILayout.EndVertical(); - //} - - // Main 2nd - if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN2ND) && useMain2ndTex.floatValue == 1) - { - EditorGUILayout.BeginVertical(boxOuter); - EditorGUILayout.LabelField(GetLoc("sMainColor2nd"), customToggleFont); - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, main2ndTex, mainColor2nd); - EditorGUILayout.EndVertical(); - EditorGUILayout.EndVertical(); } - // Main 3rd - if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN3RD) && useMain3rdTex.floatValue == 1) + //------------------------------------------------------------------------------------------------------------------------------ + // FakeShadow + else if(isFakeShadow) { - EditorGUILayout.BeginVertical(boxOuter); - EditorGUILayout.LabelField(GetLoc("sMainColor3rd"), customToggleFont); - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, main3rdTex, mainColor3rd); - EditorGUILayout.EndVertical(); - EditorGUILayout.EndVertical(); + // Main + //if(useMainTex.floatValue == 1) + //{ + EditorGUILayout.BeginVertical(boxOuter); + EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); + EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); + GUILayout.Label("FakeShadow", EditorStyles.boldLabel); + materialEditor.ShaderProperty(fakeShadowVector, GetLoc("sVector") + "|" + GetLoc("sOffset")); + EditorGUILayout.EndVertical(); + EditorGUILayout.EndVertical(); + //} } - // Shadow - if(CheckFeature(shaderSetting.LIL_FEATURE_SHADOW)) + //------------------------------------------------------------------------------------------------------------------------------ + // Normal + else { - EditorGUILayout.BeginVertical(boxOuter); - materialEditor.ShaderProperty(useShadow, GetLoc("sShadow")); - if(useShadow.floatValue == 1) - { + // Main + //if(useMainTex.floatValue == 1) + //{ + EditorGUILayout.BeginVertical(boxOuter); + EditorGUILayout.LabelField(GetLoc("sMainColor"), customToggleFont); EditorGUILayout.BeginVertical(boxInnerHalf); - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_STRENGTH)) materialEditor.TexturePropertySingleLine(maskStrengthContent, shadowStrengthMask, shadowStrength); - else materialEditor.ShaderProperty(shadowStrength, GetLoc("sStrength")); - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_1ST)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow1stColor"), GetLoc("sTextureRGBA")), shadowColorTex, shadowColor); - else materialEditor.ShaderProperty(shadowColor, GetLoc("sShadow1stColor")); - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_2ND)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex, shadow2ndColor); - else materialEditor.ShaderProperty(shadow2ndColor, GetLoc("sShadow2ndColor")); - if(shadow2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + materialEditor.TexturePropertySingleLine(textureRGBAContent, mainTex, mainColor); + if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN_TONE_CORRECTION)) { - shadow2ndColor.colorValue = new Color(shadow2ndColor.colorValue.r, shadow2ndColor.colorValue.g, shadow2ndColor.colorValue.b, 1.0f); + ToneCorrectionGUI(materialEditor, material, mainTex, mainColor, mainTexHSVG); + } + if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN_GRADATION_MAP)) + { + DrawLine(); + EditorGUILayout.LabelField(GetLoc("sGradationMap"), EditorStyles.boldLabel); + materialEditor.ShaderProperty(mainGradationStrength, GetLoc("sStrength")); + if(mainGradationStrength.floatValue != 0) + { + materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sGradation"), GetLoc("sTextureRGBA")), mainGradationTex); + GradientEditor(material, mainGrad, mainGradationTex, true); + } + DrawLine(); + } + if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN_TONE_CORRECTION) || CheckFeature(shaderSetting.LIL_FEATURE_MAIN_GRADATION_MAP)) + { + materialEditor.TexturePropertySingleLine(adjustMaskContent, mainColorAdjustMask); + TextureBakeGUI(material, 4); } - materialEditor.ShaderProperty(shadowMainStrength, GetLoc("sContrast")); - materialEditor.ShaderProperty(shadowBorderColor, GetLoc("sShadowBorderColor")); EditorGUILayout.EndVertical(); - } - EditorGUILayout.EndVertical(); - } + EditorGUILayout.EndVertical(); + //} - // Outline - if(!isRefr & !isFur) - { - EditorGUILayout.BeginVertical(boxOuter); - if(isOutl != EditorGUILayout.ToggleLeft(GetLoc("sOutline"), isOutl, customToggleFont)) + // Main 2nd + if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN2ND) && useMain2ndTex.floatValue == 1) { - SetupMaterialWithRenderingMode(material, renderingModeBuf, transparentModeBuf, !isOutl, isLite, isStWr, isTess); + EditorGUILayout.BeginVertical(boxOuter); + EditorGUILayout.LabelField(GetLoc("sMainColor2nd"), customToggleFont); + EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(textureRGBAContent, main2ndTex, mainColor2nd); + EditorGUILayout.EndVertical(); + EditorGUILayout.EndVertical(); } - if(isOutl) + + // Main 3rd + if(CheckFeature(shaderSetting.LIL_FEATURE_MAIN3RD) && useMain3rdTex.floatValue == 1) { + EditorGUILayout.BeginVertical(boxOuter); + EditorGUILayout.LabelField(GetLoc("sMainColor3rd"), customToggleFont); EditorGUILayout.BeginVertical(boxInnerHalf); - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_OUTLINE_COLOR)) materialEditor.TexturePropertySingleLine(textureRGBAContent, outlineTex, outlineColor); - else materialEditor.ShaderProperty(outlineColor, GetLoc("sColor")); - if(CheckFeature(shaderSetting.LIL_FEATURE_OUTLINE_TONE_CORRECTION)) + materialEditor.TexturePropertySingleLine(textureRGBAContent, main3rdTex, mainColor3rd); + EditorGUILayout.EndVertical(); + EditorGUILayout.EndVertical(); + } + + // Shadow + if(CheckFeature(shaderSetting.LIL_FEATURE_SHADOW)) + { + EditorGUILayout.BeginVertical(boxOuter); + materialEditor.ShaderProperty(useShadow, GetLoc("sShadow")); + if(useShadow.floatValue == 1) { - ToneCorrectionGUI(materialEditor, material, outlineTex, outlineColor, outlineTexHSVG); - if(GUILayout.Button(GetLoc("sBake"))) + EditorGUILayout.BeginVertical(boxInnerHalf); + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_STRENGTH)) materialEditor.TexturePropertySingleLine(maskStrengthContent, shadowStrengthMask, shadowStrength); + else materialEditor.ShaderProperty(shadowStrength, GetLoc("sStrength")); + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_1ST)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow1stColor"), GetLoc("sTextureRGBA")), shadowColorTex, shadowColor); + else materialEditor.ShaderProperty(shadowColor, GetLoc("sShadow1stColor")); + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_2ND)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex, shadow2ndColor); + else materialEditor.ShaderProperty(shadow2ndColor, GetLoc("sShadow2ndColor")); + if(shadow2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) { - outlineTex.textureValue = AutoBakeOutlineTexture(material); - outlineTexHSVG.vectorValue = defaultHSVG; + shadow2ndColor.colorValue = new Color(shadow2ndColor.colorValue.r, shadow2ndColor.colorValue.g, shadow2ndColor.colorValue.b, 1.0f); } + materialEditor.ShaderProperty(shadowMainStrength, GetLoc("sContrast")); + materialEditor.ShaderProperty(shadowBorderColor, GetLoc("sShadowBorderColor")); + EditorGUILayout.EndVertical(); } - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_OUTLINE_WIDTH)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sWidth"), GetLoc("sWidthR")), outlineWidthMask, outlineWidth); - else materialEditor.ShaderProperty(outlineWidth, GetLoc("sWidth")); EditorGUILayout.EndVertical(); } - EditorGUILayout.EndVertical(); - } - // Emission - if(CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_1ST)) - { - EditorGUILayout.BeginVertical(boxOuter); - materialEditor.ShaderProperty(useEmission, GetLoc("sEmission")); - if(useEmission.floatValue == 1) + // Outline + if(!isRefr & !isFur) { - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, emissionMap, emissionColor); - if(emissionColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + EditorGUILayout.BeginVertical(boxOuter); + if(isOutl != EditorGUILayout.ToggleLeft(GetLoc("sOutline"), isOutl, customToggleFont)) + { + SetupMaterialWithRenderingMode(material, renderingModeBuf, transparentModeBuf, !isOutl, isLite, isStWr, isTess); + } + if(isOutl) { - emissionColor.colorValue = new Color(emissionColor.colorValue.r, emissionColor.colorValue.g, emissionColor.colorValue.b, 1.0f); + EditorGUILayout.BeginVertical(boxInnerHalf); + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_OUTLINE_COLOR)) materialEditor.TexturePropertySingleLine(textureRGBAContent, outlineTex, outlineColor); + else materialEditor.ShaderProperty(outlineColor, GetLoc("sColor")); + if(CheckFeature(shaderSetting.LIL_FEATURE_OUTLINE_TONE_CORRECTION)) + { + ToneCorrectionGUI(materialEditor, material, outlineTex, outlineColor, outlineTexHSVG); + if(GUILayout.Button(GetLoc("sBake"))) + { + outlineTex.textureValue = AutoBakeOutlineTexture(material); + outlineTexHSVG.vectorValue = defaultHSVG; + } + } + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_OUTLINE_WIDTH)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sWidth"), GetLoc("sWidthR")), outlineWidthMask, outlineWidth); + else materialEditor.ShaderProperty(outlineWidth, GetLoc("sWidth")); + EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); } - EditorGUILayout.EndVertical(); - } - // Emission 2nd - if(CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_2ND)) - { - EditorGUILayout.BeginVertical(boxOuter); - materialEditor.ShaderProperty(useEmission2nd, GetLoc("sEmission2nd")); - if(useEmission2nd.floatValue == 1) + // Emission + if(CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_1ST)) { - EditorGUILayout.BeginVertical(boxInnerHalf); - materialEditor.TexturePropertySingleLine(textureRGBAContent, emission2ndMap, emission2ndColor); - if(emission2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + EditorGUILayout.BeginVertical(boxOuter); + materialEditor.ShaderProperty(useEmission, GetLoc("sEmission")); + if(useEmission.floatValue == 1) { - emission2ndColor.colorValue = new Color(emission2ndColor.colorValue.r, emission2ndColor.colorValue.g, emission2ndColor.colorValue.b, 1.0f); + EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(textureRGBAContent, emissionMap, emissionColor); + if(emissionColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + emissionColor.colorValue = new Color(emissionColor.colorValue.r, emissionColor.colorValue.g, emissionColor.colorValue.b, 1.0f); + } + EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); } - EditorGUILayout.EndVertical(); - } - if(mtoon != null && GUILayout.Button(GetLoc("sConvertMToon"), offsetButton)) CreateMToonMaterial(material); + // Emission 2nd + if(CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_2ND)) + { + EditorGUILayout.BeginVertical(boxOuter); + materialEditor.ShaderProperty(useEmission2nd, GetLoc("sEmission2nd")); + if(useEmission2nd.floatValue == 1) + { + EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(textureRGBAContent, emission2ndMap, emission2ndColor); + if(emission2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + emission2ndColor.colorValue = new Color(emission2ndColor.colorValue.r, emission2ndColor.colorValue.g, emission2ndColor.colorValue.b, 1.0f); + } + EditorGUILayout.EndVertical(); + } + EditorGUILayout.EndVertical(); + } + + if(mtoon != null && GUILayout.Button(GetLoc("sConvertMToon"), offsetButton)) CreateMToonMaterial(material); + } } } @@ -1440,6 +1461,15 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUILayout.EndVertical(); } + //------------------------------------------------------------------------------------------------------------------------------ + // Custom Properties + if(isCustomShader) + { + EditorGUILayout.Space(); + GUILayout.Label(" " + GetLoc("sCustomProperties"), EditorStyles.boldLabel); + DrawCustomProperties(materialEditor, material, boxOuter, boxInnerHalf, boxInner, customBox, customToggleFont, offsetButton); + } + EditorGUILayout.Space(); //------------------------------------------------------------------------------------------------------------------------------ @@ -1479,11 +1509,10 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro if(useShadow.floatValue == 1) { EditorGUILayout.BeginVertical(boxInnerHalf); + materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow1stColor"), GetLoc("sTextureRGBA")), shadowColorTex); materialEditor.ShaderProperty(shadowBorder, GetLoc("sBorder")); materialEditor.ShaderProperty(shadowBlur, GetLoc("sBlur")); DrawLine(); - materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow1stColor"), GetLoc("sTextureRGBA")), shadowColorTex); - DrawLine(); materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex); materialEditor.ShaderProperty(shadow2ndBorder, GetLoc("sBorder")); materialEditor.ShaderProperty(shadow2ndBlur, GetLoc("sBlur")); @@ -1509,7 +1538,7 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro if(useEmission.floatValue == 1) { EditorGUILayout.BeginVertical(boxInnerHalf); - TextureGUI(materialEditor, ref edSet.isShowEmissionMap, colorRGBAContent, emissionMap, emissionColor, emissionMap_ScrollRotate, true, true); + TextureGUI(materialEditor, ref edSet.isShowEmissionMap, colorRGBAContent, emissionMap, emissionColor, emissionMap_ScrollRotate, emissionMap_UVMode, true, true); DrawLine(); materialEditor.ShaderProperty(emissionBlink, blinkSetting); EditorGUILayout.EndVertical(); @@ -1844,6 +1873,15 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUILayout.EndVertical(); } + //------------------------------------------------------------------------------------------------------------------------------ + // Custom Properties + if(isCustomShader) + { + EditorGUILayout.Space(); + GUILayout.Label(" " + GetLoc("sCustomProperties"), EditorStyles.boldLabel); + DrawCustomProperties(materialEditor, material, boxOuter, boxInnerHalf, boxInner, customBox, customToggleFont, offsetButton); + } + EditorGUILayout.Space(); //------------------------------------------------------------------------------------------------------------------------------ @@ -2053,8 +2091,8 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro if(transparentModeMatBuf != transparentModeMat.floatValue) { SetupMaterialWithRenderingMode(material, renderingModeBuf, transparentModeBuf, isOutl, isLite, isStWr, isTess); - if(transparentModeMat.floatValue == 1.0f) cutoff.floatValue = 0.5f; - if(transparentModeMat.floatValue == 2.0f) cutoff.floatValue = 0.001f; + if(transparentModeMat.floatValue == 1.0f || transparentModeMat.floatValue == 5.0f) cutoff.floatValue = 0.5f; + if(transparentModeMat.floatValue == 2.0f || transparentModeMat.floatValue == 4.0f) cutoff.floatValue = 0.001f; } } EditorGUI.indentLevel++; @@ -2128,6 +2166,15 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUILayout.EndVertical(); } + //------------------------------------------------------------------------------------------------------------------------------ + // Custom Properties + if(isCustomShader) + { + EditorGUILayout.Space(); + GUILayout.Label(" " + GetLoc("sCustomProperties"), EditorStyles.boldLabel); + DrawCustomProperties(materialEditor, material, boxOuter, boxInnerHalf, boxInner, customBox, customToggleFont, offsetButton); + } + EditorGUILayout.Space(); //------------------------------------------------------------------------------------------------------------------------------ @@ -2322,15 +2369,15 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro if(useShadow.floatValue == 1) { EditorGUILayout.BeginVertical(boxInnerHalf); - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_BORDER)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sBorderAO"), GetLoc("sBorderR")), shadowBorderMask, shadowBorder); - else materialEditor.ShaderProperty(shadowBorder, GetLoc("sBorder")); - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_BLUR)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sBlur"), GetLoc("sBlurR")), shadowBlurMask, shadowBlur); - else materialEditor.ShaderProperty(shadowBlur, GetLoc("sBlur")); if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_STRENGTH)) materialEditor.TexturePropertySingleLine(maskStrengthContent, shadowStrengthMask, shadowStrength); else materialEditor.ShaderProperty(shadowStrength, GetLoc("sStrength")); DrawLine(); if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_1ST)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow1stColor"), GetLoc("sTextureRGBA")), shadowColorTex, shadowColor); else materialEditor.ShaderProperty(shadowColor, GetLoc("sShadow1stColor")); + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_BORDER)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sBorderAO"), GetLoc("sBorderR")), shadowBorderMask, shadowBorder); + else materialEditor.ShaderProperty(shadowBorder, GetLoc("sBorder")); + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_BLUR)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sBlur"), GetLoc("sBlurR")), shadowBlurMask, shadowBlur); + else materialEditor.ShaderProperty(shadowBlur, GetLoc("sBlur")); DrawLine(); if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_SHADOW_2ND)) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex, shadow2ndColor); else materialEditor.ShaderProperty(shadow2ndColor, GetLoc("sShadow2ndColor")); @@ -2369,7 +2416,7 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro if(useEmission.floatValue == 1) { EditorGUILayout.BeginVertical(boxInnerHalf); - TextureGUI(materialEditor, ref edSet.isShowEmissionMap, colorRGBAContent, emissionMap, emissionColor, emissionMap_ScrollRotate, CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_UV), CheckFeature(shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV)); + TextureGUI(materialEditor, ref edSet.isShowEmissionMap, colorRGBAContent, emissionMap, emissionColor, emissionMap_ScrollRotate, emissionMap_UVMode, CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_UV), CheckFeature(shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV)); if(emissionColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) { emissionColor.colorValue = new Color(emissionColor.colorValue.r, emissionColor.colorValue.g, emissionColor.colorValue.b, 1.0f); @@ -2408,7 +2455,7 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro if(useEmission2nd.floatValue == 1) { EditorGUILayout.BeginVertical(boxInnerHalf); - TextureGUI(materialEditor, ref edSet.isShowEmission2ndMap, colorRGBAContent, emission2ndMap, emission2ndColor, emission2ndMap_ScrollRotate, CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_UV), CheckFeature(shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV)); + TextureGUI(materialEditor, ref edSet.isShowEmission2ndMap, colorRGBAContent, emission2ndMap, emission2ndColor, emission2ndMap_ScrollRotate, emission2ndMap_UVMode, CheckFeature(shaderSetting.LIL_FEATURE_EMISSION_UV), CheckFeature(shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV)); if(emission2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) { emission2ndColor.colorValue = new Color(emission2ndColor.colorValue.r, emission2ndColor.colorValue.g, emission2ndColor.colorValue.b, 1.0f); @@ -2453,7 +2500,7 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro //------------------------------------------------------------------------------------------------------------------------------ // Normal - if(CheckFeature(shaderSetting.LIL_FEATURE_NORMAL_1ST) || CheckFeature(shaderSetting.LIL_FEATURE_NORMAL_2ND)) + if(CheckFeature(shaderSetting.LIL_FEATURE_NORMAL_1ST) || CheckFeature(shaderSetting.LIL_FEATURE_NORMAL_2ND) || CheckFeature(shaderSetting.LIL_FEATURE_ANISOTROPY)) { edSet.isShowBump = Foldout(GetLoc("sNormalMapSetting"), GetLoc("sNormalMapTips"), edSet.isShowBump); DrawMenuButton(GetLoc("sAnchorNormalMap"), lilPropertyBlock.NormalMap); @@ -2574,10 +2621,28 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro if(specularToon.floatValue == 1.0f) specularMode = 2; if(applySpecular.floatValue == 0.0f) specularMode = 0; specularMode = EditorGUILayout.Popup(GetLoc("sSpecularMode"),specularMode,new String[]{GetLoc("sSpecularNone"),GetLoc("sSpecularReal"),GetLoc("sSpecularToon")}); - if(specularMode == 0) {applySpecular.floatValue = 0.0f;} - if(specularMode == 1) {applySpecular.floatValue = 1.0f; specularToon.floatValue = 0.0f;} - if(specularMode == 2) {applySpecular.floatValue = 1.0f; specularToon.floatValue = 1.0f;} - if(applySpecular.floatValue != 0.0f) materialEditor.ShaderProperty(applySpecularFA, GetLoc("sMultiLightSpecular")); + if(specularMode == 0) + { + applySpecular.floatValue = 0.0f; + } + if(specularMode == 1) + { + applySpecular.floatValue = 1.0f; + specularToon.floatValue = 0.0f; + EditorGUI.indentLevel++; + materialEditor.ShaderProperty(applySpecularFA, GetLoc("sMultiLightSpecular")); + EditorGUI.indentLevel--; + } + if(specularMode == 2) + { + applySpecular.floatValue = 1.0f; + specularToon.floatValue = 1.0f; + EditorGUI.indentLevel++; + materialEditor.ShaderProperty(specularBorder, GetLoc("sBorder")); + materialEditor.ShaderProperty(specularBlur, GetLoc("sBlur")); + materialEditor.ShaderProperty(applySpecularFA, GetLoc("sMultiLightSpecular")); + EditorGUI.indentLevel--; + } materialEditor.ShaderProperty(applyReflection, GetLoc("sApplyReflection")); if(isTransparent) materialEditor.ShaderProperty(reflectionApplyTransparency, GetLoc("sApplyTransparency")); EditorGUILayout.EndVertical(); @@ -3224,7 +3289,7 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro //------------------------------------------------------------------------------------------------------------------------------ // Outline - if(isOutl) + if(isOutl || isMulti && useOutline.floatValue != 0.0f) { DrawLine(); EditorGUILayout.LabelField(GetLoc("sOutline"), EditorStyles.boldLabel); @@ -3319,7 +3384,7 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro //------------------------------------------------------------------------------------------------------------------------------ // Outline - if(isOutl) + if(isOutl || isMulti && useOutline.floatValue != 0.0f && !isFur && !isRefr && !isGem) { EditorGUILayout.BeginVertical(boxOuter); EditorGUILayout.LabelField(GetLoc("sOutline"), customToggleFont); @@ -3364,7 +3429,7 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro //------------------------------------------------------------------------------------------------------------------------------ // Tessellation - if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_TESSELLATION) && !isRefr && !isFur && !isGem) + if(CheckFeature(shaderSetting.LIL_FEATURE_TEX_TESSELLATION) && !isRefr && !isFur && !isGem && !isMulti) { edSet.isShowTess = Foldout(GetLoc("sTessellation"), GetLoc("sTessellationTips"), edSet.isShowTess); DrawMenuButton(GetLoc("sAnchorTessellation"), lilPropertyBlock.Tessellation); @@ -3448,15 +3513,6 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUILayout.EndVertical(); } } - - //------------------------------------------------------------------------------------------------------------------------------ - // Custom Properties - if(isCustomShader) - { - EditorGUILayout.Space(); - GUILayout.Label(" " + GetLoc("sCustomProperties"), EditorStyles.boldLabel); - DrawCustomProperties(materialEditor, material, boxOuter, boxInnerHalf, boxInner, customBox, customToggleFont, offsetButton); - } } } @@ -3647,6 +3703,8 @@ private void ResetProperties() applySpecular = null; applySpecularFA = null; specularToon = null; + specularBorder = null; + specularBlur = null; applyReflection = null; reflectionApplyTransparency = null; useMatCap = null; @@ -3715,6 +3773,7 @@ private void ResetProperties() emissionColor = null; emissionMap = null; emissionMap_ScrollRotate = null; + emissionMap_UVMode = null; emissionBlend = null; emissionBlendMask = null; emissionBlendMask_ScrollRotate = null; @@ -3728,6 +3787,7 @@ private void ResetProperties() emission2ndColor = null; emission2ndMap = null; emission2ndMap_ScrollRotate = null; + emission2ndMap_UVMode = null; emission2ndBlend = null; emission2ndBlendMask = null; emission2ndBlendMask_ScrollRotate = null; @@ -4069,6 +4129,8 @@ private void LoadProperties(MaterialProperty[] props) applySpecular = FindProperty("_ApplySpecular", props); applySpecularFA = FindProperty("_ApplySpecularFA", props); specularToon = FindProperty("_SpecularToon", props); + specularBorder = FindProperty("_SpecularBorder", props); + specularBlur = FindProperty("_SpecularBlur", props); applyReflection = FindProperty("_ApplyReflection", props); reflectionApplyTransparency = FindProperty("_ReflectionApplyTransparency", props); useMatCap = FindProperty("_UseMatCap", props); @@ -4137,6 +4199,7 @@ private void LoadProperties(MaterialProperty[] props) emissionColor = FindProperty("_EmissionColor", props); emissionMap = FindProperty("_EmissionMap", props); emissionMap_ScrollRotate = FindProperty("_EmissionMap_ScrollRotate", props); + emissionMap_UVMode = FindProperty("_EmissionMap_UVMode", props); emissionBlend = FindProperty("_EmissionBlend", props); emissionBlendMask = FindProperty("_EmissionBlendMask", props); emissionBlendMask_ScrollRotate = FindProperty("_EmissionBlendMask_ScrollRotate", props); @@ -4150,6 +4213,7 @@ private void LoadProperties(MaterialProperty[] props) emission2ndColor = FindProperty("_Emission2ndColor", props); emission2ndMap = FindProperty("_Emission2ndMap", props); emission2ndMap_ScrollRotate = FindProperty("_Emission2ndMap_ScrollRotate", props); + emission2ndMap_UVMode = FindProperty("_Emission2ndMap_UVMode", props); emission2ndBlend = FindProperty("_Emission2ndBlend", props); emission2ndBlendMask = FindProperty("_Emission2ndBlendMask", props); emission2ndBlendMask_ScrollRotate = FindProperty("_Emission2ndBlendMask_ScrollRotate", props); @@ -4462,6 +4526,7 @@ private void LoadGemProperties(MaterialProperty[] props) emissionColor = FindProperty("_EmissionColor", props); emissionMap = FindProperty("_EmissionMap", props); emissionMap_ScrollRotate = FindProperty("_EmissionMap_ScrollRotate", props); + emissionMap_UVMode = FindProperty("_EmissionMap_UVMode", props); emissionBlend = FindProperty("_EmissionBlend", props); emissionBlendMask = FindProperty("_EmissionBlendMask", props); emissionBlendMask_ScrollRotate = FindProperty("_EmissionBlendMask_ScrollRotate", props); @@ -4475,6 +4540,7 @@ private void LoadGemProperties(MaterialProperty[] props) emission2ndColor = FindProperty("_Emission2ndColor", props); emission2ndMap = FindProperty("_Emission2ndMap", props); emission2ndMap_ScrollRotate = FindProperty("_Emission2ndMap_ScrollRotate", props); + emission2ndMap_UVMode = FindProperty("_Emission2ndMap_UVMode", props); emission2ndBlend = FindProperty("_Emission2ndBlend", props); emission2ndBlendMask = FindProperty("_Emission2ndBlendMask", props); emission2ndBlendMask_ScrollRotate = FindProperty("_Emission2ndBlendMask_ScrollRotate", props); @@ -4670,6 +4736,7 @@ private void LoadLiteProperties(MaterialProperty[] props) emissionColor = FindProperty("_EmissionColor", props); emissionMap = FindProperty("_EmissionMap", props); emissionMap_ScrollRotate = FindProperty("_EmissionMap_ScrollRotate", props); + emissionMap_UVMode = FindProperty("_Emission2ndMap_UVMode", props); emissionBlink = FindProperty("_EmissionBlink", props); } @@ -5275,6 +5342,34 @@ internal static void ApplyShaderSetting(lilToonSetting shaderSetting) } } + internal static bool EqualsShaderSetting(lilToonSetting ssA, lilToonSetting ssB) + { + if((ssA == null && ssB != null) || (ssA != null && ssB == null)) return false; + if(ssA == null && ssB == null) return true; + + FieldInfo[] fields = typeof(lilToonSetting).GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); + foreach(FieldInfo field in fields) + { + if((bool)field.GetValue(ssA) != (bool)field.GetValue(ssB)) + { + return false; + } + } + + return true; + } + + internal static void CopyShaderSetting(ref lilToonSetting ssA, lilToonSetting ssB) + { + if(ssA == null || ssB == null) return; + + FieldInfo[] fields = typeof(lilToonSetting).GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); + foreach(FieldInfo field in fields) + { + field.SetValue(ssA, field.GetValue(ssB)); + } + } + private static void ShaderSettingGUI() { GUIStyle applyButton = new GUIStyle(GUI.skin.button); @@ -5551,7 +5646,7 @@ internal static void ReimportPassShaders() } } - private static void RewriteReceiveShadow(string path, bool enable) + internal static void RewriteReceiveShadow(string path, bool enable) { if(String.IsNullOrEmpty(path) || !File.Exists(path)) return; StreamReader sr = new StreamReader(path); @@ -5592,7 +5687,7 @@ private static void RewriteReceiveShadow(string path, bool enable) sw.Close(); } - private static void RewriteReceiveShadow(Shader shader, bool enable) + internal static void RewriteReceiveShadow(Shader shader, bool enable) { string path = AssetDatabase.GetAssetPath(shader); RewriteReceiveShadow(path, enable); @@ -6066,6 +6161,7 @@ private void CopyProperties(lilPropertyBlock propertyBlock) CopyProperty(useEmission); CopyProperty(emissionColor); CopyProperty(emissionMap_ScrollRotate); + CopyProperty(emissionMap_UVMode); CopyProperty(emissionBlend); CopyProperty(emissionBlendMask_ScrollRotate); CopyProperty(emissionBlink); @@ -6077,6 +6173,7 @@ private void CopyProperties(lilPropertyBlock propertyBlock) CopyProperty(useEmission2nd); CopyProperty(emission2ndColor); CopyProperty(emission2ndMap_ScrollRotate); + CopyProperty(emission2ndMap_UVMode); CopyProperty(emission2ndBlend); CopyProperty(emission2ndBlendMask_ScrollRotate); CopyProperty(emission2ndBlink); @@ -6094,6 +6191,7 @@ private void CopyProperties(lilPropertyBlock propertyBlock) CopyProperty(useEmission); CopyProperty(emissionColor); CopyProperty(emissionMap_ScrollRotate); + CopyProperty(emissionMap_UVMode); CopyProperty(emissionBlend); CopyProperty(emissionBlendMask_ScrollRotate); CopyProperty(emissionBlink); @@ -6109,6 +6207,7 @@ private void CopyProperties(lilPropertyBlock propertyBlock) CopyProperty(useEmission2nd); CopyProperty(emission2ndColor); CopyProperty(emission2ndMap_ScrollRotate); + CopyProperty(emission2ndMap_UVMode); CopyProperty(emission2ndBlend); CopyProperty(emission2ndBlendMask_ScrollRotate); CopyProperty(emission2ndBlink); @@ -6187,6 +6286,8 @@ private void CopyProperties(lilPropertyBlock propertyBlock) CopyProperty(applySpecular); CopyProperty(applySpecularFA); CopyProperty(specularToon); + CopyProperty(specularBorder); + CopyProperty(specularBlur); CopyProperty(applyReflection); CopyProperty(reflectionApplyTransparency); CopyProperty(useMatCap); @@ -6283,6 +6384,8 @@ private void CopyProperties(lilPropertyBlock propertyBlock) CopyProperty(applySpecular); CopyProperty(applySpecularFA); CopyProperty(specularToon); + CopyProperty(specularBorder); + CopyProperty(specularBlur); CopyProperty(applyReflection); CopyProperty(reflectionApplyTransparency); CopyProperty(metallicGlossMap); @@ -6754,6 +6857,7 @@ private void PasteProperties(lilPropertyBlock propertyBlock, bool shouldCopyTex) PasteProperty(ref useEmission); PasteProperty(ref emissionColor); PasteProperty(ref emissionMap_ScrollRotate); + PasteProperty(ref emissionMap_UVMode); PasteProperty(ref emissionBlend); PasteProperty(ref emissionBlendMask_ScrollRotate); PasteProperty(ref emissionBlink); @@ -6765,6 +6869,7 @@ private void PasteProperties(lilPropertyBlock propertyBlock, bool shouldCopyTex) PasteProperty(ref useEmission2nd); PasteProperty(ref emission2ndColor); PasteProperty(ref emission2ndMap_ScrollRotate); + PasteProperty(ref emission2ndMap_UVMode); PasteProperty(ref emission2ndBlend); PasteProperty(ref emission2ndBlendMask_ScrollRotate); PasteProperty(ref emission2ndBlink); @@ -6785,6 +6890,7 @@ private void PasteProperties(lilPropertyBlock propertyBlock, bool shouldCopyTex) PasteProperty(ref useEmission); PasteProperty(ref emissionColor); PasteProperty(ref emissionMap_ScrollRotate); + PasteProperty(ref emissionMap_UVMode); PasteProperty(ref emissionBlend); PasteProperty(ref emissionBlendMask_ScrollRotate); PasteProperty(ref emissionBlink); @@ -6803,6 +6909,7 @@ private void PasteProperties(lilPropertyBlock propertyBlock, bool shouldCopyTex) PasteProperty(ref useEmission2nd); PasteProperty(ref emission2ndColor); PasteProperty(ref emission2ndMap_ScrollRotate); + PasteProperty(ref emission2ndMap_UVMode); PasteProperty(ref emission2ndBlend); PasteProperty(ref emission2ndBlendMask_ScrollRotate); PasteProperty(ref emission2ndBlink); @@ -6896,6 +7003,8 @@ private void PasteProperties(lilPropertyBlock propertyBlock, bool shouldCopyTex) PasteProperty(ref applySpecular); PasteProperty(ref applySpecularFA); PasteProperty(ref specularToon); + PasteProperty(ref specularBorder); + PasteProperty(ref specularBlur); PasteProperty(ref applyReflection); PasteProperty(ref reflectionApplyTransparency); PasteProperty(ref useMatCap); @@ -6995,6 +7104,8 @@ private void PasteProperties(lilPropertyBlock propertyBlock, bool shouldCopyTex) PasteProperty(ref applySpecular); PasteProperty(ref applySpecularFA); PasteProperty(ref specularToon); + PasteProperty(ref specularBorder); + PasteProperty(ref specularBlur); PasteProperty(ref applyReflection); PasteProperty(ref reflectionApplyTransparency); if(shouldCopyTex) @@ -7481,6 +7592,7 @@ private void ResetProperties(lilPropertyBlock propertyBlock) ResetProperty(ref useEmission); ResetProperty(ref emissionColor); ResetProperty(ref emissionMap_ScrollRotate); + ResetProperty(ref emissionMap_UVMode); ResetProperty(ref emissionBlend); ResetProperty(ref emissionBlendMask_ScrollRotate); ResetProperty(ref emissionBlink); @@ -7492,6 +7604,7 @@ private void ResetProperties(lilPropertyBlock propertyBlock) ResetProperty(ref useEmission2nd); ResetProperty(ref emission2ndColor); ResetProperty(ref emission2ndMap_ScrollRotate); + ResetProperty(ref emission2ndMap_UVMode); ResetProperty(ref emission2ndBlend); ResetProperty(ref emission2ndBlendMask_ScrollRotate); ResetProperty(ref emission2ndBlink); @@ -7509,6 +7622,7 @@ private void ResetProperties(lilPropertyBlock propertyBlock) ResetProperty(ref useEmission); ResetProperty(ref emissionColor); ResetProperty(ref emissionMap_ScrollRotate); + ResetProperty(ref emissionMap_UVMode); ResetProperty(ref emissionBlend); ResetProperty(ref emissionBlendMask_ScrollRotate); ResetProperty(ref emissionBlink); @@ -7524,6 +7638,7 @@ private void ResetProperties(lilPropertyBlock propertyBlock) ResetProperty(ref useEmission2nd); ResetProperty(ref emission2ndColor); ResetProperty(ref emission2ndMap_ScrollRotate); + ResetProperty(ref emission2ndMap_UVMode); ResetProperty(ref emission2ndBlend); ResetProperty(ref emission2ndBlendMask_ScrollRotate); ResetProperty(ref emission2ndBlink); @@ -7602,6 +7717,8 @@ private void ResetProperties(lilPropertyBlock propertyBlock) ResetProperty(ref applySpecular); ResetProperty(ref applySpecularFA); ResetProperty(ref specularToon); + ResetProperty(ref specularBorder); + ResetProperty(ref specularBlur); ResetProperty(ref applyReflection); ResetProperty(ref reflectionApplyTransparency); ResetProperty(ref useMatCap); @@ -7698,6 +7815,8 @@ private void ResetProperties(lilPropertyBlock propertyBlock) ResetProperty(ref applySpecular); ResetProperty(ref applySpecularFA); ResetProperty(ref specularToon); + ResetProperty(ref specularBorder); + ResetProperty(ref specularBlur); ResetProperty(ref applyReflection); ResetProperty(ref reflectionApplyTransparency); ResetProperty(ref metallicGlossMap); @@ -8075,8 +8194,8 @@ internal static void SetupMaterialWithRenderingMode(Material material, Rendering material.renderQueue = -1; } if(isstencil) material.renderQueue = material.shader.renderQueue - 1; - if(tpmode == 4.0f || tpmode == 6.0f) material.SetInt("_ZWrite", 0); - else material.SetInt("_ZWrite", 1); + if(tpmode == 6.0f) material.SetInt("_ZWrite", 0); + else material.SetInt("_ZWrite", 1); material.SetInt("_ZTest", 4); material.SetFloat("_OffsetFactor", 0.0f); material.SetFloat("_OffsetUnits", 0.0f); @@ -8349,7 +8468,7 @@ internal static void SetupMaterialWithRenderingMode(Material material, Rendering internal static void SetupShaderSettingFromMaterial(Material material, ref lilToonSetting shaderSetting) { if(shaderSetting.isLocked) return; - if(!material.shader.name.Contains("lilToon") || material.shader.name.Contains("Lite")) return; + if(!material.shader.name.Contains("lilToon") || material.shader.name.Contains("Lite") || material.shader.name.Contains("Multi")) return; if(material.HasProperty("_MainTex_ScrollRotate")) shaderSetting.LIL_FEATURE_ANIMATE_MAIN_UV = shaderSetting.LIL_FEATURE_ANIMATE_MAIN_UV || material.GetVector("_MainTex_ScrollRotate") != defaultScrollRotate; if(material.HasProperty("_UseShadow")) shaderSetting.LIL_FEATURE_SHADOW = shaderSetting.LIL_FEATURE_SHADOW || material.GetFloat("_UseShadow") != 0.0f; @@ -8386,6 +8505,8 @@ internal static void SetupShaderSettingFromMaterial(Material material, ref lilTo if(material.HasProperty("_UseEmission2nd")) shaderSetting.LIL_FEATURE_EMISSION_2ND = shaderSetting.LIL_FEATURE_EMISSION_2ND || material.GetFloat("_UseEmission2nd") != 0.0f; if(material.HasProperty("_EmissionMap")) shaderSetting.LIL_FEATURE_EMISSION_UV = shaderSetting.LIL_FEATURE_EMISSION_UV || CheckScaleOffsetChanged(material, "_EmissionMap"); if(material.HasProperty("_Emission2ndMap")) shaderSetting.LIL_FEATURE_EMISSION_UV = shaderSetting.LIL_FEATURE_EMISSION_UV || CheckScaleOffsetChanged(material, "_Emission2ndMap"); + if(material.HasProperty("_EmissionMap_UVMode")) shaderSetting.LIL_FEATURE_EMISSION_UV = shaderSetting.LIL_FEATURE_EMISSION_UV || material.GetFloat("_EmissionMap_UVMode") != 0.0f; + if(material.HasProperty("_Emission2ndMap_UVMode")) shaderSetting.LIL_FEATURE_EMISSION_UV = shaderSetting.LIL_FEATURE_EMISSION_UV || material.GetFloat("_Emission2ndMap_UVMode") != 0.0f; if(material.HasProperty("_EmissionMap_ScrollRotate")) shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV = shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV || material.GetVector("_EmissionMap_ScrollRotate") != defaultScrollRotate; if(material.HasProperty("_Emission2ndMap_ScrollRotate")) shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV = shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV || material.GetVector("_Emission2ndMap_ScrollRotate") != defaultScrollRotate; if(material.HasProperty("_EmissionBlendMask")) shaderSetting.LIL_FEATURE_EMISSION_MASK_UV = shaderSetting.LIL_FEATURE_EMISSION_MASK_UV || CheckScaleOffsetChanged(material, "_EmissionBlendMask"); @@ -8446,7 +8567,7 @@ internal static void SetupShaderSettingFromMaterial(Material material, ref lilTo internal static void SetupMaterialFromShaderSetting(Material material, lilToonSetting shaderSetting) { - if(!material.shader.name.Contains("lilToon") || material.shader.name.Contains("Lite")) return; + if(!material.shader.name.Contains("lilToon") || material.shader.name.Contains("Lite") || material.shader.name.Contains("Multi")) return; if(!shaderSetting.LIL_FEATURE_ANIMATE_MAIN_UV) material.SetVector("_MainTex_ScrollRotate", defaultScrollRotate); if(!shaderSetting.LIL_FEATURE_SHADOW) material.SetFloat("_UseShadow", 0.0f); @@ -8497,6 +8618,8 @@ internal static void SetupMaterialFromShaderSetting(Material material, lilToonSe } if(!shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV) { + material.SetFloat("_EmissionMap_UVMode", 0.0f); + material.SetFloat("_Emission2ndMap_UVMode", 0.0f); material.SetVector("_EmissionMap_ScrollRotate", defaultScrollRotate); material.SetVector("_Emission2ndMap_ScrollRotate", defaultScrollRotate); } @@ -8612,7 +8735,7 @@ internal static void SetupShaderSettingFromAnimationClip(AnimationClip clip, ref shaderSetting.LIL_FEATURE_ALPHAMASK = shaderSetting.LIL_FEATURE_ALPHAMASK || propname.Contains("_AlphaMaskMode"); shaderSetting.LIL_FEATURE_EMISSION_1ST = shaderSetting.LIL_FEATURE_EMISSION_1ST || propname.Contains("_UseEmission"); shaderSetting.LIL_FEATURE_EMISSION_2ND = shaderSetting.LIL_FEATURE_EMISSION_2ND || propname.Contains("_UseEmission2nd"); - shaderSetting.LIL_FEATURE_EMISSION_UV = shaderSetting.LIL_FEATURE_EMISSION_UV || propname.Contains("_EmissionMap_ST") || propname.Contains("_Emission2ndMap_ST"); + shaderSetting.LIL_FEATURE_EMISSION_UV = shaderSetting.LIL_FEATURE_EMISSION_UV || propname.Contains("_EmissionMap_ST") || propname.Contains("_Emission2ndMap_ST") || propname.Contains("_EmissionMap_UVMode") || propname.Contains("_Emission2ndMap_UVMode"); shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV = shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV || propname.Contains("_EmissionMap_ScrollRotate") || propname.Contains("_Emission2ndMap_ScrollRotate"); shaderSetting.LIL_FEATURE_EMISSION_MASK_UV = shaderSetting.LIL_FEATURE_EMISSION_MASK_UV || propname.Contains("_EmissionBlendMask_ST") || propname.Contains("_Emission2ndBlendMask_ST"); shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_MASK_UV = shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_MASK_UV || propname.Contains("_EmissionBlendMask_ScrollRotate") || propname.Contains("_Emission2ndBlendMask_ScrollRotate"); @@ -9328,6 +9451,7 @@ private void CreateLiteMaterial(Material material) liteMaterial.SetFloat("_UseEmission", useEmission.floatValue); liteMaterial.SetColor("_EmissionColor", emissionColor.colorValue); liteMaterial.SetTexture("_EmissionMap", emissionMap.textureValue); + liteMaterial.SetFloat("_EmissionMap_UVMode", emissionMap_UVMode.floatValue); liteMaterial.SetVector("_EmissionMap_ScrollRotate", emissionMap_ScrollRotate.vectorValue); liteMaterial.SetVector("_EmissionBlink", emissionBlink.vectorValue); } @@ -9772,6 +9896,31 @@ private void TextureGUI(MaterialEditor materialEditor, ref bool isShow, GUIConte } } + private void TextureGUI(MaterialEditor materialEditor, ref bool isShow, GUIContent guiContent, MaterialProperty textureName, MaterialProperty rgba, MaterialProperty scrollRotate, MaterialProperty uvMode, bool useCustomUV, bool useUVAnimation) + { + if(useCustomUV) + { + // Make space for foldout + EditorGUI.indentLevel++; + Rect rect = materialEditor.TexturePropertySingleLine(guiContent, textureName, rgba); + EditorGUI.indentLevel--; + rect.x += 10; + isShow = EditorGUI.Foldout(rect, isShow, ""); + if(isShow) + { + EditorGUI.indentLevel++; + if(useUVAnimation) UVSettingGUI(materialEditor, textureName, scrollRotate); + else materialEditor.TextureScaleOffsetProperty(textureName); + materialEditor.ShaderProperty(uvMode, "UV Mode|UV0|UV1|UV2|UV3|Rim"); + EditorGUI.indentLevel--; + } + } + else + { + materialEditor.TexturePropertySingleLine(guiContent, textureName, rgba); + } + } + private void MatCapTextureGUI(MaterialEditor materialEditor, ref bool isShow, GUIContent guiContent, MaterialProperty textureName, MaterialProperty rgba, MaterialProperty blendUV1, MaterialProperty zRotCancel, MaterialProperty perspective, MaterialProperty vrParallaxStrength) { // Make space for foldout diff --git a/Assets/lilToon/Editor/lilStartup.cs b/Assets/lilToon/Editor/lilStartup.cs index c0ef4267..ee29ce47 100644 --- a/Assets/lilToon/Editor/lilStartup.cs +++ b/Assets/lilToon/Editor/lilStartup.cs @@ -105,30 +105,32 @@ static void lilStartupMethod() // Scan imported assets if(File.Exists(lilToonInspector.packageListTempPath)) { - if(EditorUtility.DisplayDialog("lilToon",lilToonInspector.GetLoc("sUtilImportTargetFound"),lilToonInspector.GetLoc("sYes"),lilToonInspector.GetLoc("sCancel"))) - { - StreamReader srPackage = new StreamReader(lilToonInspector.packageListTempPath); - string tempPackage = srPackage.ReadToEnd(); - srPackage.Close(); + lilToonSetting shaderSettingNew = UnityEngine.Object.Instantiate(shaderSetting); + StreamReader srPackage = new StreamReader(lilToonInspector.packageListTempPath); + string tempPackage = srPackage.ReadToEnd(); + srPackage.Close(); - string[] importedAssets = tempPackage.Split('\n'); + string[] importedAssets = tempPackage.Split('\n'); - foreach(string str in importedAssets) + foreach(string str in importedAssets) + { + if(str.EndsWith(".mat") && AssetDatabase.GetMainAssetTypeAtPath(str) == typeof(Material)) + { + Material material = (Material)AssetDatabase.LoadAssetAtPath(str, typeof(Material)); + if(!material.shader.name.Contains("lilToon") || material.shader.name.Contains("Lite")) continue; + lilToonInspector.SetupShaderSettingFromMaterial(material, ref shaderSettingNew); + } + if(str.EndsWith(".anim") && AssetDatabase.GetMainAssetTypeAtPath(str) == typeof(AnimationClip)) { - if(str.EndsWith(".mat") && AssetDatabase.GetMainAssetTypeAtPath(str) == typeof(Material)) - { - Material material = (Material)AssetDatabase.LoadAssetAtPath(str, typeof(Material)); - if(!material.shader.name.Contains("lilToon") || material.shader.name.Contains("Lite")) continue; - lilToonInspector.SetupShaderSettingFromMaterial(material, ref shaderSetting); - } - if(str.EndsWith(".anim") && AssetDatabase.GetMainAssetTypeAtPath(str) == typeof(AnimationClip)) - { - AnimationClip clip = (AnimationClip)AssetDatabase.LoadAssetAtPath(str, typeof(AnimationClip)); - lilToonInspector.SetupShaderSettingFromAnimationClip(clip, ref shaderSetting); - } + AnimationClip clip = (AnimationClip)AssetDatabase.LoadAssetAtPath(str, typeof(AnimationClip)); + lilToonInspector.SetupShaderSettingFromAnimationClip(clip, ref shaderSettingNew); } + } + if(!lilToonInspector.EqualsShaderSetting(shaderSettingNew, shaderSetting) && EditorUtility.DisplayDialog("lilToon",lilToonInspector.GetLoc("sUtilNewFeatureFound"),lilToonInspector.GetLoc("sYes"),lilToonInspector.GetLoc("sNo"))) + { // Apply + lilToonInspector.CopyShaderSetting(ref shaderSetting, shaderSettingNew); EditorUtility.SetDirty(shaderSetting); AssetDatabase.SaveAssets(); lilToonInspector.ApplyShaderSetting(shaderSetting); @@ -138,7 +140,17 @@ static void lilStartupMethod() File.Delete(lilToonInspector.packageListTempPath); } + // Refresh + string[] shaderFolderPaths = lilToonInspector.GetShaderFolderPaths(); + bool isShadowReceive = shaderSetting.LIL_FEATURE_SHADOW && shaderSetting.LIL_FEATURE_RECEIVE_SHADOW || shaderSetting.LIL_FEATURE_BACKLIGHT; + string[] shaderGuids = AssetDatabase.FindAssets("t:shader", shaderFolderPaths); + foreach(string shaderGuid in shaderGuids) + { + string shaderPath = AssetDatabase.GUIDToAssetPath(shaderGuid); + lilToonInspector.RewriteReceiveShadow(shaderPath, isShadowReceive); + } AssetDatabase.SaveAssets(); + AssetDatabase.ImportAsset(shaderSettingHLSLPath); AssetDatabase.Refresh(); }; } diff --git a/Assets/lilToon/Editor/lilToonEditorUtils.cs b/Assets/lilToon/Editor/lilToonEditorUtils.cs index b5701ae0..bf6c49e3 100644 --- a/Assets/lilToon/Editor/lilToonEditorUtils.cs +++ b/Assets/lilToon/Editor/lilToonEditorUtils.cs @@ -22,6 +22,16 @@ static void RefreshShaders() string shaderSettingPath = lilToonInspector.GetShaderSettingPath(); lilToonSetting shaderSetting = (lilToonSetting)AssetDatabase.LoadAssetAtPath(shaderSettingPath, typeof(lilToonSetting)); if(shaderSetting != null) lilToonInspector.ApplyShaderSetting(shaderSetting); + + string[] shaderFolderPaths = lilToonInspector.GetShaderFolderPaths(); + bool isShadowReceive = shaderSetting.LIL_FEATURE_SHADOW && shaderSetting.LIL_FEATURE_RECEIVE_SHADOW || shaderSetting.LIL_FEATURE_BACKLIGHT; + string[] shaderGuids = AssetDatabase.FindAssets("t:shader", shaderFolderPaths); + foreach(string shaderGuid in shaderGuids) + { + string shaderPath = AssetDatabase.GUIDToAssetPath(shaderGuid); + lilToonInspector.RewriteReceiveShadow(shaderPath, isShadowReceive); + } + lilToonInspector.ReimportPassShaders(); AssetDatabase.Refresh(); } diff --git a/Assets/lilToon/README.md b/Assets/lilToon/README.md index 95c8701c..04eec861 100644 --- a/Assets/lilToon/README.md +++ b/Assets/lilToon/README.md @@ -1,5 +1,5 @@ # lilToon -Version 1.2.3 +Version 1.2.4 # Overview This shader is developed for services using avatars (VRChat, etc.) and has the following features. @@ -13,6 +13,14 @@ This shader is developed for services using avatars (VRChat, etc.) and has the f Supported Unity versions - Unity 2017 - Unity 2021.2 +Tested version +- Unity 2017.1.0f3 +- Unity 2018.4.20f1 (Built-in RP / LWRP 4.0.0 / HDRP 4.0.0) +- Unity 2019.3.0f6 (Built-in RP / URP 7.1.8 / HDRP 7.1.8) +- Unity 2019.4.31f1 (Built-in RP / URP 7.7.1 / HDRP 7.7.1) +- Unity 2020.3.20f1 (Built-in RP / URP 10.6.0 / HDRP 10.6.0) +- Unity 2021.1.24f1 (Built-in RP / URP 12.0.0 / HDRP 12.0.0) + Supported Shader Models - Normal: SM4.0 / ES3.0 or later - Lite: SM3.0 / ES2.0 or later @@ -22,9 +30,8 @@ Supported Shader Models Supported Rendering Pipelines - Built-in Render Pipeline - Lightweight Render Pipeline 4.0.0 - 6.9.1 -- Universal Render Pipeline 7.0.0 - 11.0.0 -- High Definition Render Pipeline 4.0.0 - 11.0.0 -- Refraction and Gem shaders are supported only for BRP +- Universal Render Pipeline 7.0.0 - 12.0.0 +- High Definition Render Pipeline 4.0.0 - 12.0.0 # Features - Main color x3 layers (Decal, Layer mask, Gif animation, Normal / Additive / Multiplicative / Screen blending) @@ -32,11 +39,13 @@ Supported Rendering Pipelines - Flexible shadows (2 shadows, SSS, Environment light compositing, AO mask to adjust the ease of shadowing) - Emission x2 layers (Animation, Mask, Blinking, Color change over time, Parallax) - Normal map x2 layers +- Anisotropic reflection - Specular reflection -- MatCap (Z-axis rotation cancellation, Normal / Additive / Multiplicative / Screen blending) +- MatCap x2 (Z-axis rotation cancellation, Normal / Additive / Multiplicative / Screen blending) - Rim light +- Backlight - Outline (Color specification by texture, Mask, Thickness based on vertex color and distance) -- Fur, Refraction +- Fur, Refraction, Gem - Distance Clipping Canceler - Distance Fade (Changes color according to distance) - AudioLink (Animate materials in sync with sound in supported VRChat worlds) diff --git a/Assets/lilToon/README_JP.md b/Assets/lilToon/README_JP.md index 04771379..89ecdaa2 100644 --- a/Assets/lilToon/README_JP.md +++ b/Assets/lilToon/README_JP.md @@ -1,5 +1,5 @@ # lilToon -Version 1.2.3 +Version 1.2.4 # 概要 アバターを用いたサービス(VRChat等)向けに開発したシェーダーで以下のような特徴があります。 @@ -19,7 +19,7 @@ Unityバージョン - Unity 2019.3.0f6 (Built-in RP / URP 7.1.8 / HDRP 7.1.8) - Unity 2019.4.31f1 (Built-in RP / URP 7.7.1 / HDRP 7.7.1) - Unity 2020.3.20f1 (Built-in RP / URP 10.6.0 / HDRP 10.6.0) -- Unity 2021.1.24f1 (Built-in RP / URP 11.0.0 / HDRP 11.0.0) +- Unity 2021.1.24f1 (Built-in RP / URP 12.0.0 / HDRP 12.0.0) シェーダーモデル - 通常版: SM4.0・ES3.0以降 @@ -39,11 +39,13 @@ Unityバージョン - 自由度の高い影(2影、SSS、環境光の合成、AOマスクで影の付きやすさの調整可能) - 発光x2レイヤー(アニメーション、マスク、点滅、色の時間変化、視差対応) - ノーマルマップx2レイヤー +- 異方性反射 - 鏡面反射 -- マットキャップ(Z軸回転キャンセル、通常・加算・乗算・スクリーン合成対応) +- マットキャップx2(Z軸回転キャンセル、通常・加算・乗算・スクリーン合成対応) - リムライト +- 逆光ライト - アウトライン(テクスチャによる色指定、マスク、頂点カラー・距離に応じた太さ補正) -- ファー、屈折 +- ファー、屈折、宝石 - 距離クリッピングキャンセラー(近づきすぎても消えない) - 距離フェード(距離に応じて色を変える) - AudioLink(対応VRChatワールドで音に同期してマテリアルをアニメーション) diff --git a/Assets/lilToon/ScriptTemplates/99-lilToon__Custom Pass Shader-custom_ltsmulti.shader.txt b/Assets/lilToon/ScriptTemplates/99-lilToon__Custom Pass Shader-custom_ltsmulti.shader.txt index 43cfc8cd..c7e48660 100644 --- a/Assets/lilToon/ScriptTemplates/99-lilToon__Custom Pass Shader-custom_ltsmulti.shader.txt +++ b/Assets/lilToon/ScriptTemplates/99-lilToon__Custom Pass Shader-custom_ltsmulti.shader.txt @@ -461,12 +461,6 @@ Shader "#NAME#" //---------------------------------------------------------------------------------------------------------------------- // Macro - // Rendering mode - // 0 : Opaque - // 1 : Cutout - // 2 : Transparent - #define LIL_RENDER 0 - // Custom variables #define LIL_CUSTOM_PROPERTIES @@ -486,6 +480,7 @@ Shader "#NAME#" //#define LIL_REQUIRE_APP_COLOR //#define LIL_REQUIRE_APP_NORMAL //#define LIL_REQUIRE_APP_TANGENT + //#define LIL_REQUIRE_APP_VERTEXID // Add vertex shader output //#define LIL_V2F_FORCE_TEXCOORD0 @@ -611,6 +606,7 @@ Shader "#NAME#" #define LIL_MULTI_INPUTS_EMISSION_2ND #define LIL_MULTI_INPUTS_NORMAL #define LIL_MULTI_INPUTS_NORMAL_2ND + #define LIL_MULTI_INPUTS_ANISOTROPY #define LIL_MULTI_INPUTS_REFLECTION #define LIL_MULTI_INPUTS_MATCAP #define LIL_MULTI_INPUTS_MATCAP_2ND @@ -665,9 +661,10 @@ Shader "#NAME#" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // Transparent mode #pragma shader_feature_local UNITY_UI_ALPHACLIP @@ -690,6 +687,7 @@ Shader "#NAME#" #pragma shader_feature_local _SUNDISK_SIMPLE #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local EFFECT_BUMP + #pragma shader_feature_local SOURCE_GBUFFER #pragma shader_feature_local _GLOSSYREFLECTIONS_OFF #pragma shader_feature_local _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local _SPECULARHIGHLIGHTS_OFF @@ -749,10 +747,10 @@ Shader "#NAME#" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED // Transparent mode #pragma shader_feature_local UNITY_UI_ALPHACLIP @@ -779,8 +777,8 @@ Shader "#NAME#" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -818,8 +816,8 @@ Shader "#NAME#" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -839,6 +837,7 @@ Shader "#NAME#" #pragma shader_feature_local GEOM_TYPE_FROND #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local EFFECT_BUMP + #pragma shader_feature_local SOURCE_GBUFFER #pragma shader_feature_local _GLOSSYREFLECTIONS_OFF #pragma shader_feature_local _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local _SPECULARHIGHLIGHTS_OFF @@ -987,11 +986,9 @@ Shader "#NAME#" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -1019,6 +1016,7 @@ Shader "#NAME#" #pragma shader_feature_local _SUNDISK_SIMPLE #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local EFFECT_BUMP + #pragma shader_feature_local SOURCE_GBUFFER #pragma shader_feature_local _GLOSSYREFLECTIONS_OFF #pragma shader_feature_local _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local _SPECULARHIGHLIGHTS_OFF @@ -1079,9 +1077,9 @@ Shader "#NAME#" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -1110,8 +1108,8 @@ Shader "#NAME#" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -1270,11 +1268,9 @@ Shader "#NAME#" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1301,6 +1297,7 @@ Shader "#NAME#" #pragma shader_feature_local _SUNDISK_SIMPLE #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local EFFECT_BUMP + #pragma shader_feature_local SOURCE_GBUFFER #pragma shader_feature_local _GLOSSYREFLECTIONS_OFF #pragma shader_feature_local _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local _SPECULARHIGHLIGHTS_OFF @@ -1361,9 +1358,9 @@ Shader "#NAME#" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Transparent mode @@ -1391,8 +1388,8 @@ Shader "#NAME#" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -1554,12 +1551,18 @@ Shader "#NAME#" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1586,6 +1589,7 @@ Shader "#NAME#" #pragma shader_feature_local _SUNDISK_SIMPLE #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local EFFECT_BUMP + #pragma shader_feature_local SOURCE_GBUFFER #pragma shader_feature_local _GLOSSYREFLECTIONS_OFF #pragma shader_feature_local _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local _SPECULARHIGHLIGHTS_OFF @@ -1646,10 +1650,13 @@ Shader "#NAME#" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Transparent mode @@ -1677,8 +1684,8 @@ Shader "#NAME#" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -1916,12 +1923,18 @@ Shader "#NAME#" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN #pragma multi_compile_fragment _ _SHADOWS_SOFT @@ -1947,6 +1960,7 @@ Shader "#NAME#" #pragma shader_feature_local _SUNDISK_SIMPLE #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local EFFECT_BUMP + #pragma shader_feature_local SOURCE_GBUFFER #pragma shader_feature_local _GLOSSYREFLECTIONS_OFF #pragma shader_feature_local _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local _SPECULARHIGHLIGHTS_OFF @@ -2007,10 +2021,13 @@ Shader "#NAME#" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Transparent mode #pragma shader_feature_local UNITY_UI_ALPHACLIP @@ -2037,8 +2054,8 @@ Shader "#NAME#" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -2279,13 +2296,12 @@ Shader "#NAME#" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK - #pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - #pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + #pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD @@ -2310,6 +2326,7 @@ Shader "#NAME#" #pragma shader_feature_local _SUNDISK_SIMPLE #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local EFFECT_BUMP + #pragma shader_feature_local SOURCE_GBUFFER #pragma shader_feature_local _GLOSSYREFLECTIONS_OFF #pragma shader_feature_local _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local _SPECULARHIGHLIGHTS_OFF @@ -2371,10 +2388,9 @@ Shader "#NAME#" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD @@ -2403,8 +2419,8 @@ Shader "#NAME#" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL diff --git a/Assets/lilToon/ScriptTemplates/99-lilToon__Custom Pass Shader-custom_ltspass_opaque.shader.txt b/Assets/lilToon/ScriptTemplates/99-lilToon__Custom Pass Shader-custom_ltspass_opaque.shader.txt index 85ff2c41..7d38e888 100644 --- a/Assets/lilToon/ScriptTemplates/99-lilToon__Custom Pass Shader-custom_ltspass_opaque.shader.txt +++ b/Assets/lilToon/ScriptTemplates/99-lilToon__Custom Pass Shader-custom_ltspass_opaque.shader.txt @@ -31,6 +31,7 @@ Shader "Hidden/#NAME#" //#define LIL_REQUIRE_APP_COLOR //#define LIL_REQUIRE_APP_NORMAL //#define LIL_REQUIRE_APP_TANGENT + //#define LIL_REQUIRE_APP_VERTEXID // Add vertex shader output //#define LIL_V2F_FORCE_TEXCOORD0 @@ -185,9 +186,10 @@ Shader "Hidden/#NAME#" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -234,10 +236,10 @@ Shader "Hidden/#NAME#" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -282,8 +284,8 @@ Shader "Hidden/#NAME#" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -398,11 +400,9 @@ Shader "Hidden/#NAME#" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -453,9 +453,9 @@ Shader "Hidden/#NAME#" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -591,11 +591,9 @@ Shader "Hidden/#NAME#" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Skip receiving shadow @@ -645,9 +643,9 @@ Shader "Hidden/#NAME#" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -786,12 +784,18 @@ Shader "Hidden/#NAME#" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Skip receiving shadow @@ -841,10 +845,13 @@ Shader "Hidden/#NAME#" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -1047,12 +1054,18 @@ Shader "Hidden/#NAME#" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Skip receiving shadow //#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1101,10 +1114,13 @@ Shader "Hidden/#NAME#" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1309,14 +1325,13 @@ Shader "Hidden/#NAME#" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + //#pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + //#pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD @@ -1364,10 +1379,9 @@ Shader "Hidden/#NAME#" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/Includes/lil_common.hlsl b/Assets/lilToon/Shader/Includes/lil_common.hlsl index fc7cb169..9420bb09 100644 --- a/Assets/lilToon/Shader/Includes/lil_common.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_common.hlsl @@ -1,12 +1,31 @@ + + #ifndef LIL_COMMON_INCLUDED #define LIL_COMMON_INCLUDED +//------------------------------------------------------------------------------------------------------------------------------ +// Debug + +// Show all warning +//#pragma warning(default: 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209) +//#pragma warning(default: 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588) +//#pragma warning(default: 4700 4701 4702 4703 4704 4705 4706 4707 4708 4710 4711 4712 4713 4714 4715 4716 4717) +//#pragma warning(disable: 3571) + +// Ignore unknown pragma (for old Unity version) +#pragma warning(disable: 3568) + +//------------------------------------------------------------------------------------------------------------------------------ +// Common + #if !defined(LIL_CUSTOM_SHADER) && !defined(LIL_LITE) && !defined(LIL_MULTI) && !defined(LIL_IGNORE_SHADERSETTING) #include "../../../lilToonSetting/lil_setting.hlsl" #endif #include "Includes/lil_common_macro.hlsl" #include "Includes/lil_common_input.hlsl" +// Omission of if statement +// lilToonMulti branches using shader keywords #if defined(LIL_MULTI) #define _UseMain2ndTex true #define _UseMain3rdTex true @@ -31,4 +50,147 @@ #include "Includes/lil_common_functions.hlsl" +//------------------------------------------------------------------------------------------------------------------------------ +// Structure for fragment shader +struct lilFragData +{ + // Color + float4 col; + float3 albedo; + float3 emissionColor; + + // Light Color + float3 lightColor; + float3 indLightColor; + float3 addLightColor; + float attenuation; + float3 invLighting; + + // UV + float2 uv0; + float2 uv1; + float2 uv2; + float2 uv3; + float2 uvMain; + float2 uvMat; + float2 uvRim; + float2 uvPanorama; + float2 uvScn; + bool isRightHand; + + // Position + float3 positionOS; + float3 positionWS; + float4 positionCS; + float4 positionSS; + float depth; + + // Vector + float3x3 TBN; + float3 T; + float3 B; + float3 N; + float3 V; + float3 L; + float3 origL; + float3 headV; + float3 reflectionN; + float3 matcapN; + float3 matcap2ndN; + float facing; + + // Dot + float vl; + float hl; + float ln; + float nv; + float nvabs; + + // Shading Data + float4 triMask; + float3 parallaxViewDirection; + float2 parallaxOffset; + float anisotropy; + float smoothness; + float roughness; + float perceptualRoughness; + float shadowmix; + float audioLinkValue; + + // HDRP Data + uint renderingLayers; + uint featureFlags; + uint2 tileIndex; +}; + +lilFragData lilInitFragData() +{ + lilFragData fd; + + fd.col = 1.0; + fd.albedo = 1.0; + fd.emissionColor = 0.0; + + fd.lightColor = 1.0; + fd.indLightColor = 0.0; + fd.addLightColor = 0.0; + fd.attenuation = 1.0; + fd.invLighting = 0.0; + + fd.uv0 = 0.0; + fd.uv1 = 0.0; + fd.uv2 = 0.0; + fd.uv3 = 0.0; + fd.uvMain = 0.0; + fd.uvMat = 0.0; + fd.uvRim = 0.0; + fd.uvPanorama = 0.0; + fd.uvScn = 0.0; + fd.isRightHand = true; + + fd.positionOS = 0.0; + fd.positionWS = 0.0; + fd.positionCS = 0.0; + fd.positionSS = 0.0; + fd.depth = 0.0; + + fd.TBN = float3x3( + 1.0,0.0,0.0, + 0.0,1.0,0.0, + 0.0,0.0,1.0); + fd.T = 0.0; + fd.B = 0.0; + fd.N = 0.0; + fd.V = 0.0; + fd.L = float3(0.0, 1.0, 0.0); + fd.origL = float3(0.0, 1.0, 0.0); + fd.headV = 0.0; + fd.reflectionN = 0.0; + fd.matcapN = 0.0; + fd.matcap2ndN = 0.0; + fd.facing = 1.0; + + fd.vl = 0.0; + fd.hl = 0.0; + fd.ln = 0.0; + fd.nv = 0.0; + fd.nvabs = 0.0; + + fd.triMask = 1.0; + fd.parallaxViewDirection = 0.0; + fd.parallaxOffset = 0.0; + fd.anisotropy = 0.0; + fd.smoothness = 1.0; + fd.roughness = 1.0; + fd.perceptualRoughness = 1.0; + fd.shadowmix = 1.0; + fd.audioLinkValue = 1.0; + + fd.renderingLayers = 0; + fd.featureFlags = 0; + fd.tileIndex = 0; + + return fd; +} + #endif \ No newline at end of file diff --git a/Assets/lilToon/Shader/Includes/lil_common_appdata.hlsl b/Assets/lilToon/Shader/Includes/lil_common_appdata.hlsl index 1489dc77..32de4841 100644 --- a/Assets/lilToon/Shader/Includes/lil_common_appdata.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_common_appdata.hlsl @@ -6,6 +6,8 @@ #define LIL_APP_POSITION #define LIL_APP_TEXCOORD0 #define LIL_APP_TEXCOORD1 +#define LIL_APP_TEXCOORD2 +#define LIL_APP_TEXCOORD3 #if defined(LIL_REQUIRE_APP_POSITION) #endif @@ -16,12 +18,10 @@ #if defined(LIL_REQUIRE_APP_TEXCOORD1) #endif -#if defined(LIL_REQUIRE_APP_TEXCOORD2) || defined(LIL_PASS_META_INCLUDED) - #define LIL_APP_TEXCOORD2 +#if defined(LIL_REQUIRE_APP_TEXCOORD2) #endif #if defined(LIL_REQUIRE_APP_TEXCOORD3) - #define LIL_APP_TEXCOORD3 #endif #if defined(LIL_REQUIRE_APP_TEXCOORD4) @@ -52,6 +52,10 @@ #define LIL_APP_TANGENT #endif +#if defined(LIL_REQUIRE_APP_VERTEXID) + #define LIL_APP_VERTEXID +#endif + #if defined(LIL_REQUIRE_APP_PREVPOS) || defined(LIL_PASS_MOTIONVECTOR_INCLUDED) #define LIL_APP_PREVPOS #endif @@ -66,7 +70,7 @@ struct appdata float4 positionOS : POSITION; #endif #if defined(LIL_APP_TEXCOORD0) - float2 uv : TEXCOORD0; + float2 uv0 : TEXCOORD0; #endif #if defined(LIL_APP_TEXCOORD1) float2 uv1 : TEXCOORD1; @@ -98,11 +102,14 @@ struct appdata #if defined(LIL_APP_TANGENT) float4 tangentOS : TANGENT; #endif + #if defined(LIL_APP_VERTEXID) + uint vertexID : SV_VertexID; + #endif #if defined(LIL_APP_PREVPOS) float3 previousPositionOS : TEXCOORD4; #endif #if defined(LIL_APP_PREVEL) - float3 precomputedVelocity : TEXCOORD5; + float3 precomputedVelocity : TEXCOORD5; #endif LIL_VERTEX_INPUT_INSTANCE_ID }; diff --git a/Assets/lilToon/Shader/Includes/lil_common_frag.hlsl b/Assets/lilToon/Shader/Includes/lil_common_frag.hlsl index a7fe9bca..e03c4648 100644 --- a/Assets/lilToon/Shader/Includes/lil_common_frag.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_common_frag.hlsl @@ -1,7 +1,11 @@ //------------------------------------------------------------------------------------------------------------------------------ // PS Macro -// Insert +// Insert for custom shader +#if !defined(BEFORE_UNPACK_V2F) + #define BEFORE_UNPACK_V2F +#endif + #if !defined(BEFORE_ANIMATE_MAIN_UV) #define BEFORE_ANIMATE_MAIN_UV #endif @@ -121,24 +125,108 @@ //------------------------------------------------------------------------------------------------------------------------------ // Override +//------------------------------------------------------------------------------------------------------------------------------ +// Unpack v2f +#if defined(LIL_V2F_PACKED_TEXCOORD01) + #define LIL_UNPACK_TEXCOORD0(i,o) o.uv0 = i.uv01.xy; +#elif defined(LIL_V2F_TEXCOORD0) + #define LIL_UNPACK_TEXCOORD0(i,o) o.uv0 = i.uv0; +#else + #define LIL_UNPACK_TEXCOORD0(i,o) +#endif + +#if defined(LIL_V2F_PACKED_TEXCOORD01) + #define LIL_UNPACK_TEXCOORD1(i,o) o.uv1 = i.uv01.zw; +#elif defined(LIL_V2F_TEXCOORD1) + #define LIL_UNPACK_TEXCOORD1(i,o) o.uv1 = i.uv1; +#else + #define LIL_UNPACK_TEXCOORD1(i,o) +#endif + +#if defined(LIL_V2F_PACKED_TEXCOORD23) + #define LIL_UNPACK_TEXCOORD2(i,o) o.uv2 = i.uv23.xy; +#elif defined(LIL_V2F_TEXCOORD2) + #define LIL_UNPACK_TEXCOORD2(i,o) o.uv2 = i.uv2; +#else + #define LIL_UNPACK_TEXCOORD2(i,o) +#endif + +#if defined(LIL_V2F_PACKED_TEXCOORD23) + #define LIL_UNPACK_TEXCOORD3(i,o) o.uv3 = i.uv23.zw; +#elif defined(LIL_V2F_TEXCOORD3) + #define LIL_UNPACK_TEXCOORD3(i,o) o.uv3 = i.uv3; +#else + #define LIL_UNPACK_TEXCOORD3(i,o) +#endif + +#if defined(LIL_V2F_POSITION_OS) + #define LIL_UNPACK_POSITION_OS(i,o) o.positionOS = i.positionOS; +#else + #define LIL_UNPACK_POSITION_OS(i,o) +#endif + +#if defined(LIL_V2F_POSITION_WS) + #define LIL_UNPACK_POSITION_WS(i,o) o.positionWS = lilToAbsolutePositionWS(i.positionWS); +#else + #define LIL_UNPACK_POSITION_WS(i,o) +#endif + +#if defined(LIL_V2F_POSITION_CS) + #define LIL_UNPACK_POSITION_CS(i,o) \ + o.positionCS = i.positionCS; \ + o.positionSS = lilTransformCStoSSFrag(i.positionCS); \ + o.uvScn = i.positionCS.xy / _ScreenParams.xy; +#else + #define LIL_UNPACK_POSITION_CS(i,o) +#endif + +#if defined(LIL_V2F_POSITION_SS) + #define LIL_UNPACK_POSITION_SS(i,o) o.positionSS = i.positionSS; +#else + #define LIL_UNPACK_POSITION_SS(i,o) +#endif + +#if defined(LIL_V2F_LIGHTDIRECTION) && !defined(LIL_HDRP) + #define LIL_UNPACK_LIGHT_DIRECTION(i,o) \ + fd.L = input.lightDirection; \ + fd.origL = LIL_MAINLIGHT_DIRECTION; +#elif defined(LIL_V2F_LIGHTDIRECTION) + #define LIL_UNPACK_LIGHT_DIRECTION(i,o) \ + fd.L = input.lightDirection; \ + fd.origL = input.lightDirection; +#else + #define LIL_UNPACK_LIGHT_DIRECTION(i,o) +#endif + +#define OVERRIDE_UNPACK_V2F \ + LIL_UNPACK_TEXCOORD0(input,fd); \ + LIL_UNPACK_TEXCOORD1(input,fd); \ + LIL_UNPACK_TEXCOORD2(input,fd); \ + LIL_UNPACK_TEXCOORD3(input,fd); \ + LIL_UNPACK_POSITION_OS(input,fd); \ + LIL_UNPACK_POSITION_WS(input,fd); \ + LIL_UNPACK_POSITION_CS(input,fd); \ + LIL_UNPACK_POSITION_SS(input,fd); \ + LIL_UNPACK_LIGHT_DIRECTION(input,fd); + //------------------------------------------------------------------------------------------------------------------------------ // UV Animation #if !defined(OVERRIDE_ANIMATE_MAIN_UV) #if defined(LIL_PASS_META_INCLUDED) && (defined(LIL_FEATURE_ANIMATE_MAIN_UV) || defined(LIL_LITE)) #define OVERRIDE_ANIMATE_MAIN_UV \ - float2 uvMain = lilCalcDoubleSideUV(input.uv, facing, _ShiftBackfaceUV); \ - uvMain = lilCalcUVWithoutAnimation(uvMain, _MainTex_ST, _MainTex_ScrollRotate); + fd.uvMain = lilCalcDoubleSideUV(fd.uv0, fd.facing, _ShiftBackfaceUV); \ + fd.uvMain = lilCalcUVWithoutAnimation(fd.uvMain, _MainTex_ST, _MainTex_ScrollRotate); #elif defined(LIL_FEATURE_ANIMATE_MAIN_UV) || defined(LIL_LITE) #define OVERRIDE_ANIMATE_MAIN_UV \ - float2 uvMain = lilCalcDoubleSideUV(input.uv, facing, _ShiftBackfaceUV); \ - uvMain = lilCalcUV(uvMain, _MainTex_ST, _MainTex_ScrollRotate); + fd.uvMain = lilCalcDoubleSideUV(fd.uv0, fd.facing, _ShiftBackfaceUV); \ + fd.uvMain = lilCalcUV(fd.uvMain, _MainTex_ST, _MainTex_ScrollRotate); #elif !defined(LIL_PASS_FORWARD_FUR_INCLUDED) #define OVERRIDE_ANIMATE_MAIN_UV \ - float2 uvMain = lilCalcDoubleSideUV(input.uv, facing, _ShiftBackfaceUV); \ - uvMain = lilCalcUV(uvMain, _MainTex_ST); + fd.uvMain = lilCalcDoubleSideUV(fd.uv0, fd.facing, _ShiftBackfaceUV); \ + fd.uvMain = lilCalcUV(fd.uvMain, _MainTex_ST); #else #define OVERRIDE_ANIMATE_MAIN_UV \ - float2 uvMain = lilCalcUV(input.uv, _MainTex_ST); + fd.uvMain = lilCalcUV(fd.uv0, _MainTex_ST); #endif #endif @@ -147,10 +235,10 @@ #if !defined(OVERRIDE_ANIMATE_OUTLINE_UV) #if defined(LIL_FEATURE_ANIMATE_OUTLINE_UV) || defined(LIL_LITE) #define OVERRIDE_ANIMATE_OUTLINE_UV \ - float2 uvMain = lilCalcUV(input.uv, _OutlineTex_ST, _OutlineTex_ScrollRotate); + fd.uvMain = lilCalcUV(fd.uv0, _OutlineTex_ST, _OutlineTex_ScrollRotate); #else #define OVERRIDE_ANIMATE_OUTLINE_UV \ - float2 uvMain = lilCalcUV(input.uv, _OutlineTex_ST); + fd.uvMain = lilCalcUV(fd.uv0, _OutlineTex_ST); #endif #endif @@ -159,10 +247,10 @@ #if !defined(OVERRIDE_PARALLAX) #if defined(LIL_FEATURE_POM) #define OVERRIDE_PARALLAX \ - lilPOM(uvMain, input.uv, _UseParallax, _MainTex_ST, parallaxViewDirection, _ParallaxMap, _Parallax, _ParallaxOffset); + lilPOM(fd.uvMain, fd.uv0, _UseParallax, _MainTex_ST, fd.parallaxViewDirection, _ParallaxMap, _Parallax, _ParallaxOffset); #else #define OVERRIDE_PARALLAX \ - lilParallax(uvMain, input.uv, _UseParallax, parallaxOffset, _ParallaxMap, _Parallax, _ParallaxOffset); + lilParallax(fd.uvMain, fd.uv0, _UseParallax, fd.parallaxOffset, _ParallaxMap, _Parallax, _ParallaxOffset); #endif #endif @@ -170,12 +258,12 @@ // Main Texture #if defined(LIL_PASS_FORWARD_NORMAL_INCLUDED) && !defined(LIL_FUR) #define LIL_GET_MAIN_TEX \ - col = LIL_SAMPLE_2D_POM(_MainTex, sampler_MainTex, uvMain, ddxMain, ddyMain); + fd.col = LIL_SAMPLE_2D_POM(_MainTex, sampler_MainTex, fd.uvMain, ddxMain, ddyMain); // Tone correction #if defined(LIL_FEATURE_MAIN_TONE_CORRECTION) #define LIL_MAIN_TONECORRECTION \ - col.rgb = lilToneCorrection(col.rgb, _MainTexHSVG); + fd.col.rgb = lilToneCorrection(fd.col.rgb, _MainTexHSVG); #else #define LIL_MAIN_TONECORRECTION #endif @@ -183,24 +271,24 @@ // Gradation map #if defined(LIL_FEATURE_MAIN_GRADATION_MAP) #define LIL_MAIN_GRADATION_MAP \ - col.rgb = lilGradationMap(col.rgb, _MainGradationTex, _MainGradationStrength); + fd.col.rgb = lilGradationMap(fd.col.rgb, _MainGradationTex, _MainGradationStrength); #else #define LIL_MAIN_GRADATION_MAP #endif #if defined(LIL_FEATURE_MAIN_TONE_CORRECTION) || defined(LIL_FEATURE_MAIN_GRADATION_MAP) #define LIL_APPLY_MAIN_TONECORRECTION \ - float3 beforeToneCorrectionColor = col.rgb; \ - float colorAdjustMask = LIL_SAMPLE_2D(_MainColorAdjustMask, sampler_MainTex, uvMain).r; \ + float3 beforeToneCorrectionColor = fd.col.rgb; \ + float colorAdjustMask = LIL_SAMPLE_2D(_MainColorAdjustMask, sampler_MainTex, fd.uvMain).r; \ LIL_MAIN_TONECORRECTION \ LIL_MAIN_GRADATION_MAP \ - col.rgb = lerp(beforeToneCorrectionColor, col.rgb, colorAdjustMask); + fd.col.rgb = lerp(beforeToneCorrectionColor, fd.col.rgb, colorAdjustMask); #else #define LIL_APPLY_MAIN_TONECORRECTION #endif #else #define LIL_GET_MAIN_TEX \ - col = LIL_SAMPLE_2D(_MainTex, sampler_MainTex, uvMain); + fd.col = LIL_SAMPLE_2D(_MainTex, sampler_MainTex, fd.uvMain); #define LIL_APPLY_MAIN_TONECORRECTION #endif @@ -208,21 +296,21 @@ #define OVERRIDE_MAIN \ LIL_GET_MAIN_TEX \ LIL_APPLY_MAIN_TONECORRECTION \ - col *= _Color; + fd.col *= _Color; #endif //------------------------------------------------------------------------------------------------------------------------------ // Outline Color #if defined(LIL_PASS_FORWARD_NORMAL_INCLUDED) && defined(LIL_FEATURE_TEX_OUTLINE_COLOR) || !defined(LIL_PASS_FORWARD_NORMAL_INCLUDED) #define LIL_GET_OUTLINE_TEX \ - col = LIL_SAMPLE_2D(_OutlineTex, sampler_OutlineTex, uvMain); + fd.col = LIL_SAMPLE_2D(_OutlineTex, sampler_OutlineTex, fd.uvMain); #else #define LIL_GET_OUTLINE_TEX #endif #if defined(LIL_PASS_FORWARD_NORMAL_INCLUDED) && defined(LIL_FEATURE_OUTLINE_TONE_CORRECTION) #define LIL_APPLY_OUTLINE_TONECORRECTION \ - col.rgb = lilToneCorrection(col.rgb, _OutlineTexHSVG); + fd.col.rgb = lilToneCorrection(fd.col.rgb, _OutlineTexHSVG); #else #define LIL_APPLY_OUTLINE_TONECORRECTION #endif @@ -231,7 +319,7 @@ #define OVERRIDE_OUTLINE_COLOR \ LIL_GET_OUTLINE_TEX \ LIL_APPLY_OUTLINE_TONECORRECTION \ - col *= _OutlineColor; + fd.col *= _OutlineColor; #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -245,7 +333,7 @@ furAlpha = saturate(furAlpha - input.furLayer * furLayer * furLayer * furLayer + 0.25); #endif #define LIL_FUR_LAYER_AO \ - col.rgb *= furLayer * _FurAO * 2.0 + 1.0 - _FurAO; + fd.col.rgb *= furLayer * _FurAO * 2.0 + 1.0 - _FurAO; #else #if defined(LIL_ONEPASS_FUR) #define LIL_FUR_LAYER_ALPHA \ @@ -255,7 +343,7 @@ furAlpha = saturate(furAlpha - input.furLayer * furLayer * furLayer); #endif #define LIL_FUR_LAYER_AO \ - col.rgb *= (1.0-furAlpha) * _FurAO * 1.25 + 1.0 - _FurAO; + fd.col.rgb *= (1.0-furAlpha) * _FurAO * 1.25 + 1.0 - _FurAO; #endif #if defined(LIL_ALPHA_PS) @@ -267,10 +355,10 @@ #define OVERRIDE_FUR \ float furAlpha = 1.0; \ float furLayer = abs(input.furLayer); \ - if(Exists_FurNoiseMask) furAlpha = LIL_SAMPLE_2D_ST(_FurNoiseMask, sampler_MainTex, input.uv).r; \ + if(Exists_FurNoiseMask) furAlpha = LIL_SAMPLE_2D_ST(_FurNoiseMask, sampler_MainTex, fd.uv0).r; \ LIL_FUR_LAYER_ALPHA \ - if(Exists_FurMask) furAlpha *= LIL_SAMPLE_2D(_FurMask, sampler_MainTex, uvMain).r; \ - col.a *= furAlpha; \ + if(Exists_FurMask) furAlpha *= LIL_SAMPLE_2D(_FurMask, sampler_MainTex, fd.uvMain).r; \ + fd.col.a *= furAlpha; \ LIL_FUR_LAYER_AO #endif @@ -280,9 +368,9 @@ #define OVERRIDE_ALPHAMASK \ if(_AlphaMaskMode) \ { \ - float alphaMask = LIL_SAMPLE_2D(_AlphaMask, sampler_MainTex, uvMain).r; \ + float alphaMask = LIL_SAMPLE_2D(_AlphaMask, sampler_MainTex, fd.uvMain).r; \ alphaMask = saturate(alphaMask + _AlphaMaskValue); \ - col.a = _AlphaMaskMode == 1 ? alphaMask : col.a * alphaMask; \ + fd.col.a = _AlphaMaskMode == 1 ? alphaMask : fd.col.a * alphaMask; \ } #endif @@ -292,10 +380,10 @@ #if defined(LIL_FEATURE_TEX_DISSOLVE_NOISE) #define OVERRIDE_DISSOLVE \ lilCalcDissolveWithNoise( \ - col.a, \ + fd.col.a, \ dissolveAlpha, \ - input.uv, \ - input.positionOS, \ + fd.uv0, \ + fd.positionOS, \ _DissolveParams, \ _DissolvePos, \ _DissolveMask, \ @@ -309,10 +397,10 @@ #else #define OVERRIDE_DISSOLVE \ lilCalcDissolve( \ - col.a, \ + fd.col.a, \ dissolveAlpha, \ - input.uv, \ - input.positionOS, \ + fd.uv0, \ + fd.positionOS, \ _DissolveParams, \ _DissolvePos, \ _DissolveMask, \ @@ -329,7 +417,7 @@ LIL_BRANCH \ if(Exists_BumpMap && _UseBumpMap) \ { \ - float4 normalTex = LIL_SAMPLE_2D_ST(_BumpMap, sampler_MainTex, uvMain); \ + float4 normalTex = LIL_SAMPLE_2D_ST(_BumpMap, sampler_MainTex, fd.uvMain); \ normalmap = UnpackNormalScale(normalTex, _BumpScale); \ } #endif @@ -339,9 +427,9 @@ LIL_BRANCH \ if(Exists_Bump2ndMap && _UseBump2ndMap) \ { \ - float4 normal2ndTex = LIL_SAMPLE_2D_ST(_Bump2ndMap, sampler_MainTex, uvMain); \ + float4 normal2ndTex = LIL_SAMPLE_2D_ST(_Bump2ndMap, sampler_MainTex, fd.uvMain); \ float bump2ndScale = _Bump2ndScale; \ - if(Exists_Bump2ndScaleMask) bump2ndScale *= LIL_SAMPLE_2D(_Bump2ndScaleMask, sampler_MainTex, uvMain).r; \ + if(Exists_Bump2ndScaleMask) bump2ndScale *= LIL_SAMPLE_2D(_Bump2ndScaleMask, sampler_MainTex, fd.uvMain).r; \ normalmap = lilBlendNormal(normalmap, UnpackNormalScale(normal2ndTex, bump2ndScale)); \ } #endif @@ -353,40 +441,73 @@ LIL_BRANCH \ if(_UseAnisotropy) \ { \ - float4 anisoTangentMap = LIL_SAMPLE_2D_ST(_AnisotropyTangentMap, sampler_MainTex, uvMain); \ + float4 anisoTangentMap = LIL_SAMPLE_2D_ST(_AnisotropyTangentMap, sampler_MainTex, fd.uvMain); \ float3 anisoTangent = UnpackNormalScale(anisoTangentMap, 1.0); \ - anisoTangentWS = lilOrthoNormalize(normalize(mul(anisoTangent, tbnWS)), normalDirection); \ - anisoBitangentWS = cross(normalDirection, anisoTangentWS); \ - anisotropy = _AnisotropyScale; \ - anisotropy *= LIL_SAMPLE_2D(_AnisotropyScaleMask, sampler_MainTex, uvMain).r; \ - float3 anisoNormalWS = lilGetAnisotropyNormalWS(normalDirection, anisoTangentWS, anisoBitangentWS, viewDirection, anisotropy); \ - if(_Anisotropy2Reflection) reflectionNormalDirection = anisoNormalWS; \ - if(_Anisotropy2MatCap) matcapNormalDirection = anisoNormalWS; \ - if(_Anisotropy2MatCap2nd) matcap2ndNormalDirection = anisoNormalWS; \ - if(_Anisotropy2Reflection) perceptualRoughness = saturate(1.2 - abs(anisotropy)); \ + fd.T = lilOrthoNormalize(normalize(mul(anisoTangent, fd.TBN)), fd.N); \ + fd.B = cross(fd.N, fd.T); \ + fd.anisotropy = _AnisotropyScale; \ + fd.anisotropy *= LIL_SAMPLE_2D(_AnisotropyScaleMask, sampler_MainTex, fd.uvMain).r; \ + float3 anisoNormalWS = lilGetAnisotropyNormalWS(fd.N, fd.T, fd.B, fd.V, fd.anisotropy); \ + if(_Anisotropy2Reflection) fd.reflectionN = anisoNormalWS; \ + if(_Anisotropy2MatCap) fd.matcapN = anisoNormalWS; \ + if(_Anisotropy2MatCap2nd) fd.matcap2ndN = anisoNormalWS; \ + if(_Anisotropy2Reflection) fd.perceptualRoughness = saturate(1.2 - abs(fd.anisotropy)); \ } #endif //------------------------------------------------------------------------------------------------------------------------------ // AudioLink +#if defined(LIL_FEATURE_AUDIOLINK) + void lilAudioLinkFrag(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) + { + if(_UseAudioLink) + { + fd.audioLinkValue = 0.0; + float4 audioLinkMask = 1.0; + float2 audioLinkUV; + if(_AudioLinkUVMode == 0) audioLinkUV.x = _AudioLinkUVParams.g; + if(_AudioLinkUVMode == 1) audioLinkUV.x = _AudioLinkUVParams.r - fd.nv * _AudioLinkUVParams.r + _AudioLinkUVParams.g; + if(_AudioLinkUVMode == 2) audioLinkUV.x = lilRotateUV(fd.uv0, _AudioLinkUVParams.b).x * _AudioLinkUVParams.r + _AudioLinkUVParams.g; + audioLinkUV.y = _AudioLinkUVParams.a; + + // Mask (R:Delay G:Band B:Strength) + if(_AudioLinkUVMode == 3 && Exists_AudioLinkMask) + { + audioLinkMask = LIL_SAMPLE_2D(_AudioLinkMask, samp, fd.uvMain); + audioLinkUV = audioLinkMask.rg; + } + + // Local + #if defined(LIL_FEATURE_AUDIOLINK_LOCAL) + if(_AudioLinkAsLocal) + { + audioLinkUV.x += frac(-LIL_TIME * _AudioLinkLocalMapParams.r / 60 * _AudioLinkLocalMapParams.g) + _AudioLinkLocalMapParams.b; + fd.audioLinkValue = LIL_SAMPLE_2D(_AudioLinkLocalMap, sampler_linear_repeat, audioLinkUV).r; + } + else + #endif + // Global + if(lilCheckAudioLink()) + { + // Scaling for _AudioTexture (4/64) + audioLinkUV.y *= 0.0625; + fd.audioLinkValue = LIL_SAMPLE_2D(_AudioTexture, sampler_linear_clamp, audioLinkUV).r; + fd.audioLinkValue = saturate(fd.audioLinkValue); + } + fd.audioLinkValue *= audioLinkMask.b; + } + } +#endif + #if !defined(OVERRIDE_AUDIOLINK) - #if defined(LIL_FEATURE_AUDIOLINK_LOCAL) - #define OVERRIDE_AUDIOLINK \ - lilAudioLinkFrag(audioLinkValue, uvMain, input.uv, nv, _UseAudioLink, _AudioLinkUVMode, _AudioLinkUVParams, _AudioLinkMask, _AudioTexture_TexelSize, _AudioTexture, _AudioLinkAsLocal, _AudioLinkLocalMapParams, _AudioLinkLocalMap LIL_SAMP_IN(sampler_MainTex)); - #else - #define OVERRIDE_AUDIOLINK \ - lilAudioLinkFrag(audioLinkValue, uvMain, input.uv, nv, _UseAudioLink, _AudioLinkUVMode, _AudioLinkUVParams, _AudioLinkMask, _AudioTexture_TexelSize, _AudioTexture LIL_SAMP_IN(sampler_MainTex)); - #endif + #define OVERRIDE_AUDIOLINK \ + lilAudioLinkFrag(fd LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // Main 2nd #if defined(LIL_FEATURE_MAIN2ND) && defined(LIL_PASS_FORWARD_NORMAL_INCLUDED) && !defined(LIL_LITE) && !defined(LIL_FUR) - #if defined(LIL_V2F_POSITION_OS) - void lilGetMain2nd(inout float4 col, inout float4 color2nd, inout float main2ndDissolveAlpha, float2 uvMain, float2 uv, float nv, float3 positionOS, float audioLinkValue, float depth, bool isRightHand LIL_SAMP_IN_FUNC(samp)) - #else - void lilGetMain2nd(inout float4 col, inout float4 color2nd, inout float main2ndDissolveAlpha, float2 uvMain, float2 uv, float nv, float audioLinkValue, float depth, bool isRightHand LIL_SAMP_IN_FUNC(samp)) - #endif + void lilGetMain2nd(inout lilFragData fd, inout float4 color2nd, inout float main2ndDissolveAlpha LIL_SAMP_IN_FUNC(samp)) { #if !(defined(LIL_FEATURE_DECAL) && defined(LIL_FEATURE_ANIMATE_DECAL)) float4 _Main2ndTexDecalAnimation = 0.0; @@ -404,15 +525,15 @@ LIL_BRANCH if(_UseMain2ndTex) { - if(Exists_Main2ndTex) color2nd *= LIL_GET_SUBTEX(_Main2ndTex, uv); - if(Exists_Main2ndBlendMask) color2nd.a *= LIL_SAMPLE_2D(_Main2ndBlendMask, samp, uvMain).r; + if(Exists_Main2ndTex) color2nd *= LIL_GET_SUBTEX(_Main2ndTex, fd.uv0); + if(Exists_Main2ndBlendMask) color2nd.a *= LIL_SAMPLE_2D(_Main2ndBlendMask, samp, fd.uvMain).r; #if defined(LIL_FEATURE_LAYER_DISSOLVE) #if defined(LIL_FEATURE_TEX_LAYER_DISSOLVE_NOISE) lilCalcDissolveWithNoise( color2nd.a, main2ndDissolveAlpha, - uv, - positionOS, + fd.uv0, + fd.positionOS, _Main2ndDissolveParams, _Main2ndDissolvePos, _Main2ndDissolveMask, @@ -427,8 +548,8 @@ lilCalcDissolve( color2nd.a, main2ndDissolveAlpha, - uv, - positionOS, + fd.uv0, + fd.positionOS, _Main2ndDissolveParams, _Main2ndDissolvePos, _Main2ndDissolveMask, @@ -438,32 +559,23 @@ #endif #endif #if defined(LIL_FEATURE_AUDIOLINK) - if(_AudioLink2Main2nd) color2nd.a *= audioLinkValue; + if(_AudioLink2Main2nd) color2nd.a *= fd.audioLinkValue; #endif - color2nd.a = lerp(color2nd.a, color2nd.a * saturate((depth - _Main2ndDistanceFade.x) / (_Main2ndDistanceFade.y - _Main2ndDistanceFade.x)), _Main2ndDistanceFade.z); - col.rgb = lilBlendColor(col.rgb, color2nd.rgb, color2nd.a * _Main2ndEnableLighting, _Main2ndTexBlendMode); + color2nd.a = lerp(color2nd.a, color2nd.a * saturate((fd.depth - _Main2ndDistanceFade.x) / (_Main2ndDistanceFade.y - _Main2ndDistanceFade.x)), _Main2ndDistanceFade.z); + fd.col.rgb = lilBlendColor(fd.col.rgb, color2nd.rgb, color2nd.a * _Main2ndEnableLighting, _Main2ndTexBlendMode); } } #endif #if !defined(OVERRIDE_MAIN2ND) - #if defined(LIL_V2F_POSITION_OS) - #define OVERRIDE_MAIN2ND \ - lilGetMain2nd(col, color2nd, main2ndDissolveAlpha, uvMain, input.uv, nv, input.positionOS, audioLinkValue, depth, isRightHand LIL_SAMP_IN(sampler_MainTex)); - #else - #define OVERRIDE_MAIN2ND \ - lilGetMain2nd(col, color2nd, main2ndDissolveAlpha, uvMain, input.uv, nv, audioLinkValue, depth, isRightHand LIL_SAMP_IN(sampler_MainTex)); - #endif + #define OVERRIDE_MAIN2ND \ + lilGetMain2nd(fd, color2nd, main2ndDissolveAlpha LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // Main 3rd #if defined(LIL_FEATURE_MAIN3RD) && defined(LIL_PASS_FORWARD_NORMAL_INCLUDED) && !defined(LIL_LITE) && !defined(LIL_FUR) - #if defined(LIL_V2F_POSITION_OS) - void lilGetMain3rd(inout float4 col, inout float4 color3rd, inout float main3rdDissolveAlpha, float2 uvMain, float2 uv, float nv, float3 positionOS, float audioLinkValue, float depth, bool isRightHand LIL_SAMP_IN_FUNC(samp)) - #else - void lilGetMain3rd(inout float4 col, inout float4 color3rd, inout float main3rdDissolveAlpha, float2 uvMain, float2 uv, float nv, float audioLinkValue, float depth, bool isRightHand LIL_SAMP_IN_FUNC(samp)) - #endif + void lilGetMain3rd(inout lilFragData fd, inout float4 color3rd, inout float main3rdDissolveAlpha LIL_SAMP_IN_FUNC(samp)) { #if !(defined(LIL_FEATURE_DECAL) && defined(LIL_FEATURE_ANIMATE_DECAL)) float4 _Main3rdTexDecalAnimation = 0.0; @@ -481,15 +593,15 @@ LIL_BRANCH if(_UseMain3rdTex) { - if(Exists_Main3rdTex) color3rd *= LIL_GET_SUBTEX(_Main3rdTex, uv); - if(Exists_Main3rdBlendMask) color3rd.a *= LIL_SAMPLE_2D(_Main3rdBlendMask, samp, uvMain).r; + if(Exists_Main3rdTex) color3rd *= LIL_GET_SUBTEX(_Main3rdTex, fd.uv0); + if(Exists_Main3rdBlendMask) color3rd.a *= LIL_SAMPLE_2D(_Main3rdBlendMask, samp, fd.uvMain).r; #if defined(LIL_FEATURE_LAYER_DISSOLVE) #if defined(LIL_FEATURE_TEX_LAYER_DISSOLVE_NOISE) lilCalcDissolveWithNoise( color3rd.a, main3rdDissolveAlpha, - uv, - positionOS, + fd.uv0, + fd.positionOS, _Main3rdDissolveParams, _Main3rdDissolvePos, _Main3rdDissolveMask, @@ -504,8 +616,8 @@ lilCalcDissolve( color3rd.a, main3rdDissolveAlpha, - uv, - positionOS, + fd.uv0, + fd.positionOS, _Main3rdDissolveParams, _Main3rdDissolvePos, _Main3rdDissolveMask, @@ -515,137 +627,104 @@ #endif #endif #if defined(LIL_FEATURE_AUDIOLINK) - if(_AudioLink2Main3rd) color3rd.a *= audioLinkValue; + if(_AudioLink2Main3rd) color3rd.a *= fd.audioLinkValue; #endif - color3rd.a = lerp(color3rd.a, color3rd.a * saturate((depth - _Main3rdDistanceFade.x) / (_Main3rdDistanceFade.y - _Main3rdDistanceFade.x)), _Main3rdDistanceFade.z); - col.rgb = lilBlendColor(col.rgb, color3rd.rgb, color3rd.a * _Main3rdEnableLighting, _Main3rdTexBlendMode); + color3rd.a = lerp(color3rd.a, color3rd.a * saturate((fd.depth - _Main3rdDistanceFade.x) / (_Main3rdDistanceFade.y - _Main3rdDistanceFade.x)), _Main3rdDistanceFade.z); + fd.col.rgb = lilBlendColor(fd.col.rgb, color3rd.rgb, color3rd.a * _Main3rdEnableLighting, _Main3rdTexBlendMode); } } #endif #if !defined(OVERRIDE_MAIN3RD) - #if defined(LIL_V2F_POSITION_OS) - #define OVERRIDE_MAIN3RD \ - lilGetMain3rd(col, color3rd, main3rdDissolveAlpha, uvMain, input.uv, nv, input.positionOS, audioLinkValue, depth, isRightHand LIL_SAMP_IN(sampler_MainTex)); - #else - #define OVERRIDE_MAIN3RD \ - lilGetMain3rd(col, color3rd, main3rdDissolveAlpha, uvMain, input.uv, nv, audioLinkValue, depth, isRightHand LIL_SAMP_IN(sampler_MainTex)); - #endif + #define OVERRIDE_MAIN3RD \ + lilGetMain3rd(fd, color3rd, main3rdDissolveAlpha LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // Shadow #if defined(LIL_FEATURE_SHADOW) && !defined(LIL_LITE) && !defined(LIL_GEM) -void lilGetShading( - inout float4 col, - inout float shadowmix, - float3 albedo, - float3 lightColor, - float3 indLightColor, - float2 uv, - float facing, - float ln, - float3 lightDirection, - float3 lightDirectionCopy, - bool cullOff, - float attenuation - LIL_SAMP_IN_FUNC(samp)) +void lilGetShading(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { LIL_BRANCH if(_UseShadow) { // Shade - float ln1 = saturate(ln*0.5+0.5); - if(Exists_ShadowBorderMask) ln1 *= LIL_SAMPLE_2D(_ShadowBorderMask, samp, uv).r; + float ln1 = saturate(fd.ln*0.5+0.5); + if(Exists_ShadowBorderMask) ln1 *= LIL_SAMPLE_2D(_ShadowBorderMask, samp, fd.uvMain).r; float ln2 = ln1; float lnB = ln1; // Shadow #if (defined(LIL_USE_SHADOW) || defined(LIL_LIGHTMODE_SHADOWMASK)) && defined(LIL_FEATURE_RECEIVE_SHADOW) - float shadowAttenuation = saturate(attenuation + distance(lightDirection, lightDirectionCopy)); + float shadowAttenuation = saturate(fd.attenuation + distance(fd.L, fd.origL)); if(_ShadowReceive) ln1 *= shadowAttenuation; if(_ShadowReceive) lnB *= shadowAttenuation; #endif // Toon float shadowBlur = _ShadowBlur; - if(Exists_ShadowBlurMask) shadowBlur *= LIL_SAMPLE_2D(_ShadowBlurMask, samp, uv).r; + if(Exists_ShadowBlurMask) shadowBlur *= LIL_SAMPLE_2D(_ShadowBlurMask, samp, fd.uvMain).r; ln1 = lilTooning(ln1, _ShadowBorder, shadowBlur); ln2 = lilTooning(ln2, _Shadow2ndBorder, _Shadow2ndBlur); lnB = lilTooning(lnB, _ShadowBorder, shadowBlur, _ShadowBorderRange); - if(cullOff) - { - // Force shadow on back face - float bfshadow = (facing < 0.0) ? 1.0 - _BackfaceForceShadow : 1.0; - ln1 *= bfshadow; - ln2 *= bfshadow; - lnB *= bfshadow; - } + // Force shadow on back face + float bfshadow = (fd.facing < 0.0) ? 1.0 - _BackfaceForceShadow : 1.0; + ln1 *= bfshadow; + ln2 *= bfshadow; + lnB *= bfshadow; // Copy - shadowmix = ln1; + fd.shadowmix = ln1; // Strength float shadowStrength = _ShadowStrength; #ifdef LIL_COLORSPACE_GAMMA shadowStrength = lilSRGBToLinear(shadowStrength); #endif - if(Exists_ShadowStrengthMask) shadowStrength *= LIL_SAMPLE_2D(_ShadowStrengthMask, samp, uv).r; + if(Exists_ShadowStrengthMask) shadowStrength *= LIL_SAMPLE_2D(_ShadowStrengthMask, samp, fd.uvMain).r; ln1 = lerp(1.0, ln1, shadowStrength); // Shadow Color 1 float4 shadowColorTex = 0.0; - if(Exists_ShadowColorTex) shadowColorTex = LIL_SAMPLE_2D(_ShadowColorTex, samp, uv); - float3 indirectCol = lerp(albedo, shadowColorTex.rgb, shadowColorTex.a) * _ShadowColor.rgb; + if(Exists_ShadowColorTex) shadowColorTex = LIL_SAMPLE_2D(_ShadowColorTex, samp, fd.uvMain); + float3 indirectCol = lerp(fd.albedo, shadowColorTex.rgb, shadowColorTex.a) * _ShadowColor.rgb; // Shadow Color 2 float4 shadow2ndColorTex = 0.0; - if(Exists_Shadow2ndColorTex) shadow2ndColorTex = LIL_SAMPLE_2D(_Shadow2ndColorTex, samp, uv); - shadow2ndColorTex.rgb = lerp(albedo, shadow2ndColorTex.rgb, shadow2ndColorTex.a) * _Shadow2ndColor.rgb; + if(Exists_Shadow2ndColorTex) shadow2ndColorTex = LIL_SAMPLE_2D(_Shadow2ndColorTex, samp, fd.uvMain); + shadow2ndColorTex.rgb = lerp(fd.albedo, shadow2ndColorTex.rgb, shadow2ndColorTex.a) * _Shadow2ndColor.rgb; ln2 = _Shadow2ndColor.a - ln2 * _Shadow2ndColor.a; indirectCol = lerp(indirectCol, shadow2ndColorTex.rgb, ln2); // Multiply Main Color - indirectCol = lerp(indirectCol, indirectCol*albedo, _ShadowMainStrength); + indirectCol = lerp(indirectCol, indirectCol*fd.albedo, _ShadowMainStrength); // Apply Light - float3 directCol = albedo * lightColor; - indirectCol = indirectCol * lightColor; + float3 directCol = fd.albedo * fd.lightColor; + indirectCol = indirectCol * fd.lightColor; // Environment Light - indirectCol = lerp(indirectCol, albedo, indLightColor); + indirectCol = lerp(indirectCol, fd.albedo, fd.indLightColor); // Fix indirectCol = min(indirectCol, directCol); // Gradation indirectCol = lerp(indirectCol, directCol, lnB * _ShadowBorderColor.rgb); // Mix - col.rgb = lerp(indirectCol, directCol, ln1); + fd.col.rgb = lerp(indirectCol, directCol, ln1); } else { - col.rgb *= lightColor; + fd.col.rgb *= fd.lightColor; } } #elif defined(LIL_LITE) -void lilGetShading( - inout float4 col, - inout float shadowmix, - float3 albedo, - float3 lightColor, - float3 indLightColor, - float2 uv, - float facing, - float ln, - float3 lightDirection, - float3 lightDirectionCopy, - bool cullOff - LIL_SAMP_IN_FUNC(samp)) +void lilGetShading(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { LIL_BRANCH if(_UseShadow) { // Shade - float ln1 = saturate(ln*0.5+0.5); + float ln1 = saturate(fd.ln*0.5+0.5); float ln2 = ln1; float lnB = ln1; @@ -654,97 +733,84 @@ void lilGetShading( ln2 = lilTooning(ln2, _Shadow2ndBorder, _Shadow2ndBlur); lnB = lilTooning(lnB, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); - if(cullOff) - { - // Force shadow on back face - float bfshadow = (facing < 0.0) ? 1.0 - _BackfaceForceShadow : 1.0; - ln1 *= bfshadow; - ln2 *= bfshadow; - lnB *= bfshadow; - } + // Force shadow on back face + float bfshadow = (fd.facing < 0.0) ? 1.0 - _BackfaceForceShadow : 1.0; + ln1 *= bfshadow; + ln2 *= bfshadow; + lnB *= bfshadow; // Copy - shadowmix = ln1; + fd.shadowmix = ln1; // Shadow Color 1 - float4 shadowColorTex = LIL_SAMPLE_2D(_ShadowColorTex, samp, uv); - float3 indirectCol = lerp(albedo, shadowColorTex.rgb, shadowColorTex.a); + float4 shadowColorTex = LIL_SAMPLE_2D(_ShadowColorTex, samp, fd.uvMain); + float3 indirectCol = lerp(fd.albedo, shadowColorTex.rgb, shadowColorTex.a); // Shadow Color 2 - float4 shadow2ndColorTex = LIL_SAMPLE_2D(_Shadow2ndColorTex, samp, uv); + float4 shadow2ndColorTex = LIL_SAMPLE_2D(_Shadow2ndColorTex, samp, fd.uvMain); indirectCol = lerp(indirectCol, shadow2ndColorTex.rgb, shadow2ndColorTex.a - ln2 * shadow2ndColorTex.a); // Apply Light - float3 directCol = albedo * lightColor; - indirectCol = indirectCol * lightColor; + float3 directCol = fd.albedo * fd.lightColor; + indirectCol = indirectCol * fd.lightColor; // Environment Light - indirectCol = lerp(indirectCol, albedo, indLightColor); + indirectCol = lerp(indirectCol, fd.albedo, fd.indLightColor); // Fix indirectCol = min(indirectCol, directCol); // Gradation indirectCol = lerp(indirectCol, directCol, lnB * _ShadowBorderColor.rgb); // Mix - col.rgb = lerp(indirectCol, directCol, ln1); + fd.col.rgb = lerp(indirectCol, directCol, ln1); } else { - col.rgb *= lightColor; + fd.col.rgb *= fd.lightColor; } } #endif #if !defined(OVERRIDE_SHADOW) - #if defined(LIL_LITE) - #define OVERRIDE_SHADOW \ - lilGetShading(col,shadowmix,albedo,lightColor,input.indLightColor,uvMain,facing,ln,lightDirection,LIL_LIGHTDIRECTION_ORIG,true LIL_SAMP_IN(sampler_MainTex)); - #else - #define OVERRIDE_SHADOW \ - lilGetShading(col,shadowmix,albedo,lightColor,input.indLightColor,uvMain,facing,ln,lightDirection,LIL_LIGHTDIRECTION_ORIG,true,attenuation LIL_SAMP_IN(sampler_MainTex)); - #endif + #define OVERRIDE_SHADOW \ + lilGetShading(fd LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // Backlight #if defined(LIL_FEATURE_BACKLIGHT) && !defined(LIL_LITE) && !defined(LIL_FUR) && !defined(LIL_GEM) - void lilBacklight(inout float4 col, float2 uvMain, float facing, float hl, float3 lightColor, float3 lightDirection, float3 lightDirectionCopy, float attenuation, float3 headDirection, float3 normalDirection LIL_SAMP_IN_FUNC(samp)) + void lilBacklight(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { if(_UseBacklight) { - float3 backlightColor = LIL_SAMPLE_2D(_BacklightColorTex, samp, uvMain).rgb * _BacklightColor.rgb; - float backlightFactor = pow(saturate(-hl * 0.5 + 0.5), _BacklightDirectivity); - float backlightLN = dot(normalize(-headDirection * _BacklightViewStrength + lightDirection), normalDirection) * 0.5 + 0.5; + float3 backlightColor = LIL_SAMPLE_2D(_BacklightColorTex, samp, fd.uvMain).rgb * _BacklightColor.rgb; + float backlightFactor = pow(saturate(-fd.hl * 0.5 + 0.5), _BacklightDirectivity); + float backlightLN = dot(normalize(-fd.headV * _BacklightViewStrength + fd.L), fd.N) * 0.5 + 0.5; #if defined(LIL_USE_SHADOW) || defined(LIL_LIGHTMODE_SHADOWMASK) - if(_BacklightReceiveShadow) backlightLN *= saturate(attenuation + distance(lightDirection, lightDirectionCopy)); + if(_BacklightReceiveShadow) backlightLN *= saturate(fd.attenuation + distance(fd.L, fd.origL)); #endif backlightLN = lilTooning(backlightLN, _BacklightBorder, _BacklightBlur); - float backlight = backlightFactor * backlightLN; - backlight = facing < (_BacklightBackfaceMask-1.0) ? 0.0 : backlight; - col.rgb += backlight * backlightColor * lightColor; + float backlight = saturate(backlightFactor * backlightLN); + backlight = fd.facing < (_BacklightBackfaceMask-1.0) ? 0.0 : backlight; + fd.col.rgb += backlight * backlightColor * fd.lightColor; } } #endif #if !defined(OVERRIDE_BACKLIGHT) - #define OVERRIDE_BACKLIGHT lilBacklight(col, uvMain, facing, hl, lightColor, lightDirection, LIL_LIGHTDIRECTION_ORIG, attenuation, headDirection, normalDirection LIL_SAMP_IN(sampler_MainTex)); + #define OVERRIDE_BACKLIGHT lilBacklight(fd LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // Refraction #if defined(LIL_REFRACTION) && !defined(LIL_LITE) && !defined(LIL_FUR) - #if (defined(LIL_REFRACTION_BLUR) || defined(LIL_REFRACTION_BLUR2)) && defined(LIL_FEATURE_REFLECTION) - void lilRefraction(inout float4 col, float3 albedo, float4 positionSS, float nv, float3 normalDirection, float perceptualRoughness LIL_SAMP_IN_FUNC(samp)) - #else - void lilRefraction(inout float4 col, float3 albedo, float4 positionSS, float nv, float3 normalDirection LIL_SAMP_IN_FUNC(samp)) - #endif + void lilRefraction(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { - float2 scnUV = positionSS.xy/positionSS.w; - float2 refractUV = scnUV + (pow(1.0 - nv, _RefractionFresnelPower) * _RefractionStrength) * mul((float3x3)LIL_MATRIX_V, normalDirection).xy; + float2 refractUV = fd.uvScn + (pow(1.0 - fd.nv, _RefractionFresnelPower) * _RefractionStrength) * mul((float3x3)LIL_MATRIX_V, fd.N).xy; #if defined(LIL_REFRACTION_BLUR2) && defined(LIL_FEATURE_REFLECTION) #if defined(LIL_BRP) float3 refractCol = 0; float sum = 0; - float blurOffset = perceptualRoughness / positionSS.z * (0.0005 / LIL_REFRACTION_SAMPNUM); + float blurOffset = fd.perceptualRoughness / fd.positionSS.z * (0.0005 / LIL_REFRACTION_SAMPNUM); for(int j = -16; j <= 16; j++) { refractCol += LIL_GET_GRAB_TEX(refractUV + float2(0,j*blurOffset), 0).rgb * LIL_REFRACTION_GAUSDIST(j); @@ -753,7 +819,7 @@ void lilGetShading( refractCol /= sum; refractCol *= _RefractionColor.rgb; #else - float refractLod = min(sqrt(perceptualRoughness / positionSS.z * 0.05), 10); + float refractLod = min(sqrt(fd.perceptualRoughness / fd.positionSS.z * 0.05), 10); float3 refractCol = LIL_GET_GRAB_TEX(refractUV, refractLod).rgb * _RefractionColor.rgb; #endif #elif defined(LIL_REFRACTION_BLUR2) @@ -761,32 +827,117 @@ void lilGetShading( #else float3 refractCol = LIL_GET_BG_TEX(refractUV,0).rgb * _RefractionColor.rgb; #endif - if(_RefractionColorFromMain) refractCol *= albedo; - col.rgb = lerp(refractCol, col.rgb, col.a); + if(_RefractionColorFromMain) refractCol *= fd.albedo; + fd.col.rgb = lerp(refractCol, fd.col.rgb, fd.col.a); } #endif #if !defined(OVERRIDE_REFRACTION) - #if (defined(LIL_REFRACTION_BLUR) || defined(LIL_REFRACTION_BLUR2)) && defined(LIL_FEATURE_REFLECTION) - #define OVERRIDE_REFRACTION \ - lilRefraction(col, albedo, input.positionSS, nv, normalDirection, perceptualRoughness LIL_SAMP_IN(sampler_MainTex)); - #else - #define OVERRIDE_REFRACTION \ - lilRefraction(col, albedo, input.positionSS, nv, normalDirection LIL_SAMP_IN(sampler_MainTex)); - #endif + #define OVERRIDE_REFRACTION \ + lilRefraction(fd LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // Reflection #if defined(LIL_HDRP) - #define LIL_HDRP_VAL_INPUT , posInput, renderingLayers, featureFlags - #define LIL_HDRP_VAL_INPUT_FUNC , PositionInputs posInput, uint renderingLayers, uint featureFlags + #define LIL_HDRP_POSITION_INPUT_VAR , posInput + #define LIL_HDRP_POSITION_INPUT_ARGS , PositionInputs posInput #else - #define LIL_HDRP_VAL_INPUT - #define LIL_HDRP_VAL_INPUT_FUNC + #define LIL_HDRP_POSITION_INPUT_VAR + #define LIL_HDRP_POSITION_INPUT_ARGS #endif #if defined(LIL_FEATURE_REFLECTION) && defined(LIL_PASS_FORWARD_NORMAL_INCLUDED) && !defined(LIL_LITE) && !defined(LIL_FUR) - void lilReflection(inout float4 col, float2 uvMain, float3 albedo, float3 positionWS, float3 normalDirection, float3 reflectionNormalDirection, float3 anisoTangentWS, float3 anisoBitangentWS, float3 viewDirection, float nv, float3 lightColor, float3 lightDirection, float shadowmix, float attenuation, float nvabs, float smoothness, float perceptualRoughness, float roughness, float anisotropy LIL_SAMP_IN_FUNC(samp) LIL_HDRP_VAL_INPUT_FUNC) + float3 lilCalcSpecular(inout lilFragData fd, float3 L, float3 specular, float attenuation LIL_SAMP_IN_FUNC(samp)) + { + float3 H = normalize(fd.V + L); + float nh = saturate(dot(fd.N, H)); + #if defined(LIL_FEATURE_ANISOTROPY) + bool isAnisotropy = _UseAnisotropy && _Anisotropy2Reflection; + if(_SpecularToon & !isAnisotropy) + #else + if(_SpecularToon) + #endif + return lilTooning(pow(nh,1.0/fd.roughness), _SpecularBorder, _SpecularBlur); + + float nv = saturate(dot(fd.N, fd.V)); + float nl = saturate(dot(fd.N, L)); + float lh = saturate(dot(L, H)); + + float ggx, sjggx = 0.0; + float lambdaV = 0.0; + float lambdaL = 0.0; + float d = 1.0; + #if defined(LIL_FEATURE_ANISOTROPY) + if(isAnisotropy) + { + + float roughnessT = max(fd.roughness * (1.0 + fd.anisotropy), 0.002); + float roughnessB = max(fd.roughness * (1.0 - fd.anisotropy), 0.002); + + float tv = dot(fd.T, fd.V); + float bv = dot(fd.B, fd.V); + float tl = dot(fd.T, L); + float bl = dot(fd.B, L); + + lambdaV = nl * length(float3(roughnessT * tv, roughnessB * bv, nv)); + lambdaL = nv * length(float3(roughnessT * tl, roughnessB * bl, nl)); + + float roughnessT1 = roughnessT * _AnisotropyTangentWidth; + float roughnessB1 = roughnessB * _AnisotropyBitangentWidth; + float roughnessT2 = roughnessT * _Anisotropy2ndTangentWidth; + float roughnessB2 = roughnessB * _Anisotropy2ndBitangentWidth; + + float anisotropyShiftNoise = LIL_SAMPLE_2D_ST(_AnisotropyShiftNoiseMask, samp, fd.uvMain).r - 0.5; + float anisotropyShift = anisotropyShiftNoise * _AnisotropyShiftNoiseScale + _AnisotropyShift; + float anisotropy2ndShift = anisotropyShiftNoise * _Anisotropy2ndShiftNoiseScale + _Anisotropy2ndShift; + float3 T1 = normalize(fd.T - fd.N * anisotropyShift); + float3 B1 = normalize(fd.B - fd.N * anisotropyShift); + float3 T2 = normalize(fd.T - fd.N * anisotropy2ndShift); + float3 B2 = normalize(fd.B - fd.N * anisotropy2ndShift); + + float th1 = dot(T1, H); + float bh1 = dot(B1, H); + float th2 = dot(T2, H); + float bh2 = dot(B2, H); + + float r1 = roughnessT1 * roughnessB1; + float r2 = roughnessT2 * roughnessB2; + float3 v1 = float3(th1 * roughnessB1, bh1 * roughnessT1, nh * r1); + float3 v2 = float3(th2 * roughnessB2, bh2 * roughnessT2, nh * r2); + float w1 = r1 / dot(v1, v1); + float w2 = r2 / dot(v2, v2); + ggx = r1 * w1 * w1 * _AnisotropySpecularStrength + r2 * w2 * w2 * _Anisotropy2ndSpecularStrength; + } + else + #endif + { + float roughness2 = max(fd.roughness, 0.002); + lambdaV = nl * (nv * (1.0 - roughness2) + roughness2); + lambdaL = nv * (nl * (1.0 - roughness2) + roughness2); + + float r2 = roughness2 * roughness2; + d = (nh * r2 - nh) * nh + 1.0; + ggx = r2 / (d * d + 1e-7f); + } + + #if defined(SHADER_API_MOBILE) || defined(SHADER_API_SWITCH) + sjggx = 0.5 / (lambdaV + lambdaL + 1e-4f); + #else + sjggx = 0.5 / (lambdaV + lambdaL + 1e-5f); + #endif + + float specularTerm = sjggx * ggx; + #ifdef LIL_COLORSPACE_GAMMA + specularTerm = sqrt(max(1e-4h, specularTerm)); + #endif + specularTerm *= nl * attenuation; + #if defined(LIL_FEATURE_ANISOTROPY) + if(_SpecularToon) return lilTooning(specularTerm, 0.5); + #endif + return specularTerm * lilFresnelTerm(specular, lh); + } + + void lilReflection(inout lilFragData fd LIL_SAMP_IN_FUNC(samp) LIL_HDRP_POSITION_INPUT_ARGS) { #if defined(LIL_PASS_FORWARDADD) LIL_BRANCH @@ -799,16 +950,16 @@ void lilGetShading( float3 reflectCol = 0; // Smoothness #if !defined(LIL_REFRACTION_BLUR2) || defined(LIL_PASS_FORWARDADD) - smoothness = _Smoothness; - if(Exists_SmoothnessTex) smoothness *= LIL_SAMPLE_2D(_SmoothnessTex, samp, uvMain).r; - perceptualRoughness = perceptualRoughness - smoothness * perceptualRoughness; - roughness = perceptualRoughness * perceptualRoughness; + fd.smoothness = _Smoothness; + if(Exists_SmoothnessTex) fd.smoothness *= LIL_SAMPLE_2D(_SmoothnessTex, samp, fd.uvMain).r; + fd.perceptualRoughness = fd.perceptualRoughness - fd.smoothness * fd.perceptualRoughness; + fd.roughness = fd.perceptualRoughness * fd.perceptualRoughness; #endif // Metallic float metallic = _Metallic; - if(Exists_MetallicGlossMap) metallic *= LIL_SAMPLE_2D(_MetallicGlossMap, samp, uvMain).r; - col.rgb = col.rgb - metallic * col.rgb; - float3 specular = lerp(_Reflectance, albedo, metallic); + if(Exists_MetallicGlossMap) metallic *= LIL_SAMPLE_2D(_MetallicGlossMap, samp, fd.uvMain).r; + fd.col.rgb = fd.col.rgb - metallic * fd.col.rgb; + float3 specular = lerp(_Reflectance, fd.albedo, metallic); // Specular #if !defined(LIL_PASS_FORWARDADD) LIL_BRANCH @@ -816,34 +967,18 @@ void lilGetShading( #endif { #if 1 - float3 lightDirectionSpc = lightDirection; - float3 lightColorSpc = lightColor; + float3 lightDirectionSpc = fd.L; + float3 lightColorSpc = fd.lightColor; #else - float3 lightDirectionSpc = lilGetLightDirection(positionWS); + float3 lightDirectionSpc = lilGetLightDirection(fd.positionWS); float3 lightColorSpc = LIL_MAINLIGHT_COLOR; #endif - #if defined(LIL_FEATURE_ANISOTROPY) - bool isAnisotropy = _UseAnisotropy && _Anisotropy2Reflection; - float anisotropyShiftNoise = LIL_SAMPLE_2D_ST(_AnisotropyShiftNoiseMask, samp, uvMain).r - 0.5; - float anisotropyShift = anisotropyShiftNoise * _AnisotropyShiftNoiseScale + _AnisotropyShift; - float anisotropy2ndShift = anisotropyShiftNoise * _Anisotropy2ndShiftNoiseScale + _Anisotropy2ndShift; - #else - bool isAnisotropy = false; - float _AnisotropyTangentWidth = 1.0; - float _AnisotropyBitangentWidth = 1.0; - float _AnisotropySpecularStrength = 1.0; - float _Anisotropy2ndTangentWidth = 1.0; - float _Anisotropy2ndBitangentWidth = 1.0; - float _Anisotropy2ndSpecularStrength = 0.0; - float anisotropyShift = 0.0; - float anisotropy2ndShift = 0.0; - #endif #if defined(LIL_PASS_FORWARDADD) - reflectCol = lilCalcSpecular(normalDirection, anisoTangentWS, anisoBitangentWS, lightDirectionSpc, viewDirection, roughness, specular, anisotropy, _AnisotropyTangentWidth, _AnisotropyBitangentWidth, _Anisotropy2ndTangentWidth, _Anisotropy2ndBitangentWidth, _AnisotropySpecularStrength, _Anisotropy2ndSpecularStrength, anisotropyShift, anisotropy2ndShift, _SpecularToon, attenuation, isAnisotropy) * lightColorSpc; + reflectCol = lilCalcSpecular(fd, lightDirectionSpc, specular, fd.attenuation LIL_SAMP_IN(samp)) * lightColorSpc; #elif defined(SHADOWS_SCREEN) - reflectCol = lilCalcSpecular(normalDirection, anisoTangentWS, anisoBitangentWS, lightDirectionSpc, viewDirection, roughness, specular, anisotropy, _AnisotropyTangentWidth, _AnisotropyBitangentWidth, _Anisotropy2ndTangentWidth, _Anisotropy2ndBitangentWidth, _AnisotropySpecularStrength, _Anisotropy2ndSpecularStrength, anisotropyShift, anisotropy2ndShift, _SpecularToon, shadowmix, isAnisotropy) * lightColorSpc; + reflectCol = lilCalcSpecular(fd, lightDirectionSpc, specular, fd.shadowmix LIL_SAMP_IN(samp)) * lightColorSpc; #else - reflectCol = lilCalcSpecular(normalDirection, anisoTangentWS, anisoBitangentWS, lightDirectionSpc, viewDirection, roughness, specular, anisotropy, _AnisotropyTangentWidth, _AnisotropyBitangentWidth, _Anisotropy2ndTangentWidth, _Anisotropy2ndBitangentWidth, _AnisotropySpecularStrength, _Anisotropy2ndSpecularStrength, anisotropyShift, anisotropy2ndShift, _SpecularToon, 1.0, isAnisotropy) * lightColorSpc; + reflectCol = lilCalcSpecular(fd, lightDirectionSpc, specular, 1.0 LIL_SAMP_IN(samp)) * lightColorSpc; #endif } // Reflection @@ -851,164 +986,143 @@ void lilGetShading( LIL_BRANCH if(_ApplyReflection) { - float3 envReflectionColor = LIL_GET_ENVIRONMENT_REFLECTION(viewDirection, reflectionNormalDirection, perceptualRoughness, positionWS); + float3 envReflectionColor = LIL_GET_ENVIRONMENT_REFLECTION(fd.V, fd.reflectionN, fd.perceptualRoughness, fd.positionWS); float oneMinusReflectivity = LIL_DIELECTRIC_SPECULAR.a - metallic * LIL_DIELECTRIC_SPECULAR.a; - float grazingTerm = saturate(smoothness + (1.0-oneMinusReflectivity)); + float grazingTerm = saturate(fd.smoothness + (1.0-oneMinusReflectivity)); #ifdef LIL_COLORSPACE_GAMMA - float surfaceReduction = 1.0 - 0.28 * roughness * perceptualRoughness; + float surfaceReduction = 1.0 - 0.28 * fd.roughness * fd.perceptualRoughness; #else - float surfaceReduction = 1.0 / (roughness * roughness + 1.0); + float surfaceReduction = 1.0 / (fd.roughness * fd.roughness + 1.0); #endif #ifdef LIL_REFRACTION - col.rgb = lerp(envReflectionColor, col.rgb, col.a+(1.0-col.a)*pow(nvabs,abs(_RefractionStrength)*0.5+0.25)); - reflectCol += col.a * surfaceReduction * envReflectionColor * lilFresnelLerp(specular, grazingTerm, nv); - col.a = 1.0; + fd.col.rgb = lerp(envReflectionColor, fd.col.rgb, fd.col.a+(1.0-fd.col.a)*pow(fd.nvabs,abs(_RefractionStrength)*0.5+0.25)); + reflectCol += fd.col.a * surfaceReduction * envReflectionColor * lilFresnelLerp(specular, grazingTerm, fd.nv); + fd.col.a = 1.0; #else - reflectCol += surfaceReduction * envReflectionColor * lilFresnelLerp(specular, grazingTerm, nv); + reflectCol += surfaceReduction * envReflectionColor * lilFresnelLerp(specular, grazingTerm, fd.nv); #endif } #endif // Mix float4 reflectionColor = _ReflectionColor; - if(Exists_ReflectionColorTex) reflectionColor *= LIL_SAMPLE_2D(_ReflectionColorTex, samp, uvMain); + if(Exists_ReflectionColorTex) reflectionColor *= LIL_SAMPLE_2D(_ReflectionColorTex, samp, fd.uvMain); #if LIL_RENDER == 2 && !defined(LIL_REFRACTION) - if(_ReflectionApplyTransparency) reflectionColor.a *= col.a; + if(_ReflectionApplyTransparency) reflectionColor.a *= fd.col.a; #endif - col.rgb += reflectionColor.rgb * reflectionColor.a * reflectCol; + fd.col.rgb += reflectionColor.rgb * reflectionColor.a * reflectCol; } } #endif #if !defined(OVERRIDE_REFLECTION) #define OVERRIDE_REFLECTION \ - lilReflection(col, uvMain, albedo, input.positionWS, normalDirection, reflectionNormalDirection, anisoTangentWS, anisoBitangentWS, viewDirection, nv, lightColor, lightDirection, shadowmix, attenuation, nvabs, smoothness, perceptualRoughness, roughness, anisotropy LIL_SAMP_IN(sampler_MainTex) LIL_HDRP_VAL_INPUT); + lilReflection(fd LIL_SAMP_IN(sampler_MainTex) LIL_HDRP_POSITION_INPUT_VAR); #endif //------------------------------------------------------------------------------------------------------------------------------ // MatCap #if defined(LIL_FEATURE_MATCAP) && !defined(LIL_LITE) && !defined(LIL_FUR) - #if defined(LIL_FEATURE_TEX_MATCAP_NORMALMAP) - void lilGetMatCap(inout float4 col, float2 uvMain, float2 uv1, float facing, float shadowmix, float3 lightColor, float3 normalDirection, float3 viewDirection, float3 headDirection, float3x3 tbnWS LIL_SAMP_IN_FUNC(samp)) - #else - void lilGetMatCap(inout float4 col, float2 uvMain, float2 uv1, float facing, float shadowmix, float3 lightColor, float3 normalDirection, float3 viewDirection, float3 headDirection LIL_SAMP_IN_FUNC(samp)) - #endif + void lilGetMatCap(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { LIL_BRANCH if(_UseMatCap) { float2 matUV = float2(0,0); - float3 matcapNormalDirection = normalDirection; + float3 matcapNormalDirection = fd.matcapN; #if defined(LIL_FEATURE_TEX_MATCAP_NORMALMAP) LIL_BRANCH if(_MatCapCustomNormal) { - float4 normalTex = LIL_SAMPLE_2D_ST(_MatCapBumpMap, samp, uvMain); + float4 normalTex = LIL_SAMPLE_2D_ST(_MatCapBumpMap, samp, fd.uvMain); float3 normalmap = UnpackNormalScale(normalTex, _MatCapBumpScale); - matcapNormalDirection = normalize(mul(normalmap, tbnWS)); - matcapNormalDirection = facing < (_FlipNormal-1.0) ? -matcapNormalDirection : matcapNormalDirection; + matcapNormalDirection = normalize(mul(normalmap, fd.TBN)); + matcapNormalDirection = fd.facing < (_FlipNormal-1.0) ? -matcapNormalDirection : matcapNormalDirection; } #endif - matUV = lilCalcMatCapUV(uv1, matcapNormalDirection, viewDirection, headDirection, _MatCapTex_ST, _MatCapBlendUV1.xy, _MatCapZRotCancel, _MatCapPerspective, _MatCapVRParallaxStrength); + matUV = lilCalcMatCapUV(fd.uv1, matcapNormalDirection, fd.V, fd.headV, _MatCapTex_ST, _MatCapBlendUV1.xy, _MatCapZRotCancel, _MatCapPerspective, _MatCapVRParallaxStrength); float4 matCapColor = _MatCapColor; if(Exists_MatCapTex) matCapColor *= LIL_SAMPLE_2D(_MatCapTex, samp, matUV); #if !defined(LIL_PASS_FORWARDADD) - matCapColor.rgb = lerp(matCapColor.rgb, matCapColor.rgb * lightColor, _MatCapEnableLighting); - matCapColor.a = lerp(matCapColor.a, matCapColor.a * shadowmix, _MatCapShadowMask); + matCapColor.rgb = lerp(matCapColor.rgb, matCapColor.rgb * fd.lightColor, _MatCapEnableLighting); + matCapColor.a = lerp(matCapColor.a, matCapColor.a * fd.shadowmix, _MatCapShadowMask); #else - if(_MatCapBlendMode < 3) matCapColor.rgb *= lightColor * _MatCapEnableLighting; + if(_MatCapBlendMode < 3) matCapColor.rgb *= fd.lightColor * _MatCapEnableLighting; #endif #if LIL_RENDER == 2 && !defined(LIL_REFRACTION) - if(_MatCapApplyTransparency) matCapColor.a *= col.a; + if(_MatCapApplyTransparency) matCapColor.a *= fd.col.a; #endif - matCapColor.a = facing < (_MatCapBackfaceMask-1.0) ? 0.0 : matCapColor.a; - if(Exists_MatCapBlendMask) matCapColor.a *= LIL_SAMPLE_2D(_MatCapBlendMask, samp, uvMain).r; - col.rgb = lilBlendColor(col.rgb, matCapColor.rgb, _MatCapBlend * matCapColor.a, _MatCapBlendMode); + matCapColor.a = fd.facing < (_MatCapBackfaceMask-1.0) ? 0.0 : matCapColor.a; + if(Exists_MatCapBlendMask) matCapColor.a *= LIL_SAMPLE_2D(_MatCapBlendMask, samp, fd.uvMain).r; + fd.col.rgb = lilBlendColor(fd.col.rgb, matCapColor.rgb, _MatCapBlend * matCapColor.a, _MatCapBlendMode); } } #elif defined(LIL_LITE) - void lilGetMatCap(inout float4 col, float2 uvMain, float3 lightColor, float2 uvMat, float4 triMask LIL_SAMP_IN_FUNC(samp)) + void lilGetMatCap(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { if(_UseMatCap) { float3 matcap = 1.0; - matcap = LIL_SAMPLE_2D(_MatCapTex, samp, uvMat).rgb; - col.rgb = lerp(col.rgb, _MatCapMul ? col.rgb * matcap : col.rgb + matcap, triMask.r); + matcap = LIL_SAMPLE_2D(_MatCapTex, samp, fd.uvMat).rgb; + fd.col.rgb = lerp(fd.col.rgb, _MatCapMul ? fd.col.rgb * matcap : fd.col.rgb + matcap, fd.triMask.r); } } #endif #if !defined(OVERRIDE_MATCAP) - #if defined(LIL_LITE) - #define OVERRIDE_MATCAP \ - lilGetMatCap(col, uvMain, lightColor, input.uvMat, triMask LIL_SAMP_IN(sampler_MainTex)); - #elif defined(LIL_FEATURE_TEX_MATCAP_NORMALMAP) - #define OVERRIDE_MATCAP \ - lilGetMatCap(col, uvMain, input.uv1, facing, shadowmix, lightColor, matcapNormalDirection, viewDirection, headDirection, tbnWS LIL_SAMP_IN(sampler_MainTex)); - #else - #define OVERRIDE_MATCAP \ - lilGetMatCap(col, uvMain, input.uv1, facing, shadowmix, lightColor, matcapNormalDirection, viewDirection, headDirection LIL_SAMP_IN(sampler_MainTex)); - #endif + #define OVERRIDE_MATCAP \ + lilGetMatCap(fd LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // MatCap 2nd #if defined(LIL_FEATURE_MATCAP_2ND) && !defined(LIL_LITE) && !defined(LIL_FUR) - #if defined(LIL_FEATURE_TEX_MATCAP_NORMALMAP) - void lilGetMatCap2nd(inout float4 col, float2 uvMain, float2 uv1, float facing, float shadowmix, float3 lightColor, float3 normalDirection, float3 viewDirection, float3 headDirection, float3x3 tbnWS LIL_SAMP_IN_FUNC(samp)) - #else - void lilGetMatCap2nd(inout float4 col, float2 uvMain, float2 uv1, float facing, float shadowmix, float3 lightColor, float3 normalDirection, float3 viewDirection, float3 headDirection LIL_SAMP_IN_FUNC(samp)) - #endif + void lilGetMatCap2nd(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { LIL_BRANCH if(_UseMatCap2nd) { float2 mat2ndUV = float2(0,0); - float3 matcap2ndNormalDirection = normalDirection; + float3 matcap2ndNormalDirection = fd.matcap2ndN; #if defined(LIL_FEATURE_TEX_MATCAP_NORMALMAP) LIL_BRANCH if(_MatCap2ndCustomNormal) { - float4 normalTex = LIL_SAMPLE_2D_ST(_MatCap2ndBumpMap, samp, uvMain); + float4 normalTex = LIL_SAMPLE_2D_ST(_MatCap2ndBumpMap, samp, fd.uvMain); float3 normalmap = UnpackNormalScale(normalTex, _MatCap2ndBumpScale); - matcap2ndNormalDirection = normalize(mul(normalmap, tbnWS)); - matcap2ndNormalDirection = facing < (_FlipNormal-1.0) ? -matcap2ndNormalDirection : matcap2ndNormalDirection; + matcap2ndNormalDirection = normalize(mul(normalmap, fd.TBN)); + matcap2ndNormalDirection = fd.facing < (_FlipNormal-1.0) ? -matcap2ndNormalDirection : matcap2ndNormalDirection; } #endif - mat2ndUV = lilCalcMatCapUV(uv1, matcap2ndNormalDirection, viewDirection, headDirection, _MatCap2ndTex_ST, _MatCap2ndBlendUV1.xy, _MatCap2ndZRotCancel, _MatCap2ndPerspective, _MatCap2ndVRParallaxStrength); + mat2ndUV = lilCalcMatCapUV(fd.uv1, matcap2ndNormalDirection, fd.V, fd.headV, _MatCap2ndTex_ST, _MatCap2ndBlendUV1.xy, _MatCap2ndZRotCancel, _MatCap2ndPerspective, _MatCap2ndVRParallaxStrength); float4 matCap2ndColor = _MatCap2ndColor; if(Exists_MatCapTex) matCap2ndColor *= LIL_SAMPLE_2D(_MatCap2ndTex, samp, mat2ndUV); #if !defined(LIL_PASS_FORWARDADD) - matCap2ndColor.rgb = lerp(matCap2ndColor.rgb, matCap2ndColor.rgb * lightColor, _MatCap2ndEnableLighting); - matCap2ndColor.a = lerp(matCap2ndColor.a, matCap2ndColor.a * shadowmix, _MatCap2ndShadowMask); + matCap2ndColor.rgb = lerp(matCap2ndColor.rgb, matCap2ndColor.rgb * fd.lightColor, _MatCap2ndEnableLighting); + matCap2ndColor.a = lerp(matCap2ndColor.a, matCap2ndColor.a * fd.shadowmix, _MatCap2ndShadowMask); #else - if(_MatCap2ndBlendMode < 3) matCap2ndColor.rgb *= lightColor * _MatCap2ndEnableLighting; + if(_MatCap2ndBlendMode < 3) matCap2ndColor.rgb *= fd.lightColor * _MatCap2ndEnableLighting; #endif #if LIL_RENDER == 2 && !defined(LIL_REFRACTION) - if(_MatCap2ndApplyTransparency) matCap2ndColor.a *= col.a; + if(_MatCap2ndApplyTransparency) matCap2ndColor.a *= fd.col.a; #endif - matCap2ndColor.a = facing < (_MatCap2ndBackfaceMask-1.0) ? 0.0 : matCap2ndColor.a; - if(Exists_MatCap2ndBlendMask) matCap2ndColor.a *= LIL_SAMPLE_2D(_MatCap2ndBlendMask, samp, uvMain).r; - col.rgb = lilBlendColor(col.rgb, matCap2ndColor.rgb, _MatCap2ndBlend * matCap2ndColor.a, _MatCap2ndBlendMode); + matCap2ndColor.a = fd.facing < (_MatCap2ndBackfaceMask-1.0) ? 0.0 : matCap2ndColor.a; + if(Exists_MatCap2ndBlendMask) matCap2ndColor.a *= LIL_SAMPLE_2D(_MatCap2ndBlendMask, samp, fd.uvMain).r; + fd.col.rgb = lilBlendColor(fd.col.rgb, matCap2ndColor.rgb, _MatCap2ndBlend * matCap2ndColor.a, _MatCap2ndBlendMode); } } #endif #if !defined(OVERRIDE_MATCAP_2ND) - #if defined(LIL_FEATURE_TEX_MATCAP_NORMALMAP) - #define OVERRIDE_MATCAP_2ND \ - lilGetMatCap2nd(col, uvMain, input.uv1, facing, shadowmix, lightColor, matcap2ndNormalDirection, viewDirection, headDirection, tbnWS LIL_SAMP_IN(sampler_MainTex)); - #else - #define OVERRIDE_MATCAP_2ND \ - lilGetMatCap2nd(col, uvMain, input.uv1, facing, shadowmix, lightColor, matcap2ndNormalDirection, viewDirection, headDirection LIL_SAMP_IN(sampler_MainTex)); - #endif + #define OVERRIDE_MATCAP_2ND \ + lilGetMatCap2nd(fd LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // Rim Light #if defined(LIL_FEATURE_RIMLIGHT) && !defined(LIL_LITE) && !defined(LIL_FUR) - void lilGetRim(inout float4 col, float2 uvMain, float facing, float shadowmix, float nvabs, float3 lightColor, float3 normalDirection, float3 lightDirection LIL_SAMP_IN_FUNC(samp)) + void lilGetRim(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { #if !defined(LIL_PASS_FORWARDADD) LIL_BRANCH @@ -1023,70 +1137,70 @@ void lilGetShading( float4 rimIndirColor = _RimIndirColor; if(Exists_RimColorTex) { - float4 rimColorTex = LIL_SAMPLE_2D(_RimColorTex, samp, uvMain); + float4 rimColorTex = LIL_SAMPLE_2D(_RimColorTex, samp, fd.uvMain); rimColor *= rimColorTex; rimIndirColor *= rimColorTex; } - float lnRaw = dot(lightDirection,normalDirection) * 0.5 + 0.5; + float lnRaw = fd.ln * 0.5 + 0.5; float lnDir = saturate((lnRaw + _RimDirRange) / (1.0 + _RimDirRange)); float lnIndir = saturate((1.0-lnRaw + _RimIndirRange) / (1.0 + _RimIndirRange)); - float rim = pow(saturate(1.0 - nvabs), _RimFresnelPower); - rim = facing < (_RimBackfaceMask-1.0) ? 0.0 : rim; + float rim = pow(saturate(1.0 - fd.nvabs), _RimFresnelPower); + rim = fd.facing < (_RimBackfaceMask-1.0) ? 0.0 : rim; float rimDir = lerp(rim, rim*lnDir, _RimDirStrength); float rimIndir = rim * lnIndir * _RimDirStrength; rimDir = lilTooning(rimDir, _RimBorder, _RimBlur); rimIndir = lilTooning(rimIndir, _RimIndirBorder, _RimIndirBlur); #if !defined(LIL_PASS_FORWARDADD) - rimDir = lerp(rimDir, rimDir * shadowmix, _RimShadowMask); - rimIndir = lerp(rimIndir, rimIndir * shadowmix, _RimShadowMask); + rimDir = lerp(rimDir, rimDir * fd.shadowmix, _RimShadowMask); + rimIndir = lerp(rimIndir, rimIndir * fd.shadowmix, _RimShadowMask); #endif #if LIL_RENDER == 2 && !defined(LIL_REFRACTION) if(_RimApplyTransparency) { - rimDir *= col.a; - rimIndir *= col.a; + rimDir *= fd.col.a; + rimIndir *= fd.col.a; } #endif float3 rimSum = rimDir * rimColor.a * rimColor.rgb + rimIndir * rimIndirColor.a * rimIndirColor.rgb; #if !defined(LIL_PASS_FORWARDADD) - rimSum = lerp(rimSum, rimSum * lightColor, _RimEnableLighting); - col.rgb += rimSum; + rimSum = lerp(rimSum, rimSum * fd.lightColor, _RimEnableLighting); + fd.col.rgb += rimSum; #else - col.rgb += rimSum * _RimEnableLighting * lightColor; + fd.col.rgb += rimSum * _RimEnableLighting * fd.lightColor; #endif #else float4 rimColor = _RimColor; - if(Exists_RimColorTex) rimColor *= LIL_SAMPLE_2D(_RimColorTex, samp, uvMain); - float rim = pow(saturate(1.0 - nvabs), _RimFresnelPower); - rim = facing < (_RimBackfaceMask-1.0) ? 0.0 : rim; + if(Exists_RimColorTex) rimColor *= LIL_SAMPLE_2D(_RimColorTex, samp, fd.uvMain); + float rim = pow(saturate(1.0 - fd.nvabs), _RimFresnelPower); + rim = fd.facing < (_RimBackfaceMask-1.0) ? 0.0 : rim; rim = lilTooning(rim, _RimBorder, _RimBlur); #if LIL_RENDER == 2 && !defined(LIL_REFRACTION) - if(_RimApplyTransparency) rim *= col.a; + if(_RimApplyTransparency) rim *= fd.col.a; #endif #if !defined(LIL_PASS_FORWARDADD) - rim = lerp(rim, rim * shadowmix, _RimShadowMask); - rimColor.rgb = lerp(rimColor.rgb, rimColor.rgb * lightColor, _RimEnableLighting); - col.rgb += rim * rimColor.a * rimColor.rgb; + rim = lerp(rim, rim * fd.shadowmix, _RimShadowMask); + rimColor.rgb = lerp(rimColor.rgb, rimColor.rgb * fd.lightColor, _RimEnableLighting); + fd.col.rgb += rim * rimColor.a * rimColor.rgb; #else - col.rgb += rim * _RimEnableLighting * rimColor.a * rimColor.rgb * lightColor; + fd.col.rgb += rim * _RimEnableLighting * rimColor.a * rimColor.rgb * fd.lightColor; #endif #endif } } #elif defined(LIL_LITE) - void lilGetRim(inout float4 col, float shadowmix, float nvabs, float3 lightColor, float4 triMask) + void lilGetRim(inout lilFragData fd) { LIL_BRANCH if(_UseRim) { - float rim = pow(saturate(1.0 - nvabs), _RimFresnelPower); + float rim = pow(saturate(1.0 - fd.nvabs), _RimFresnelPower); rim = lilTooning(rim, _RimBorder, _RimBlur); #if !defined(LIL_PASS_FORWARDADD) - rim = lerp(rim, rim * shadowmix, _RimShadowMask); + rim = lerp(rim, rim * fd.shadowmix, _RimShadowMask); #endif - col.rgb += rim * triMask.g * _RimColor.rgb * lightColor; + fd.col.rgb += rim * fd.triMask.g * _RimColor.rgb * fd.lightColor; } } #endif @@ -1094,41 +1208,41 @@ void lilGetShading( #if !defined(OVERRIDE_RIMLIGHT) #if defined(LIL_LITE) #define OVERRIDE_RIMLIGHT \ - lilGetRim(col, shadowmix, nvabs, lightColor, triMask); + lilGetRim(fd); #else #define OVERRIDE_RIMLIGHT \ - lilGetRim(col, uvMain, facing, shadowmix, nvabs, lightColor, normalDirection, lightDirection LIL_SAMP_IN(sampler_MainTex)); + lilGetRim(fd LIL_SAMP_IN(sampler_MainTex)); #endif #endif //------------------------------------------------------------------------------------------------------------------------------ // Glitter #if defined(LIL_FEATURE_GLITTER) && !defined(LIL_LITE) && !defined(LIL_FUR) - void lilGlitter(inout float4 col, float3 albedo, float facing, float2 uvMain, float2 uv, float2 uv1, float3 viewDirection, float3 headDirection, float3 lightColor, float3 normalDirection, float3 lightDirection, float shadowmix LIL_SAMP_IN_FUNC(samp)) + void lilGlitter(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { LIL_BRANCH if(_UseGlitter) { #if defined(USING_STEREO_MATRICES) - float3 glitterViewDirection = lerp(headDirection, viewDirection, _GlitterVRParallaxStrength); + float3 glitterViewDirection = lerp(fd.headV, fd.V, _GlitterVRParallaxStrength); #else - float3 glitterViewDirection = viewDirection; + float3 glitterViewDirection = fd.V; #endif float4 glitterColor = _GlitterColor; - if(Exists_GlitterColorTex) glitterColor *= LIL_SAMPLE_2D(_GlitterColorTex, samp, uvMain); - float2 glitterPos = _GlitterUVMode ? uv1 : uv; - glitterColor.rgb *= lilCalcGlitter(glitterPos, normalDirection, glitterViewDirection, lightDirection, _GlitterParams1, _GlitterParams2); - glitterColor.rgb = lerp(glitterColor.rgb, glitterColor.rgb * albedo, _GlitterMainStrength); + if(Exists_GlitterColorTex) glitterColor *= LIL_SAMPLE_2D(_GlitterColorTex, samp, fd.uvMain); + float2 glitterPos = _GlitterUVMode ? fd.uv1 : fd.uv0; + glitterColor.rgb *= lilCalcGlitter(glitterPos, fd.N, glitterViewDirection, fd.L, _GlitterParams1, _GlitterParams2); + glitterColor.rgb = lerp(glitterColor.rgb, glitterColor.rgb * fd.albedo, _GlitterMainStrength); #if LIL_RENDER == 2 && !defined(LIL_REFRACTION) - if(_GlitterApplyTransparency) glitterColor.a *= col.a; + if(_GlitterApplyTransparency) glitterColor.a *= fd.col.a; #endif - glitterColor.a = facing < (_GlitterBackfaceMask-1.0) ? 0.0 : glitterColor.a; + glitterColor.a = fd.facing < (_GlitterBackfaceMask-1.0) ? 0.0 : glitterColor.a; #if !defined(LIL_PASS_FORWARDADD) - glitterColor.a = lerp(glitterColor.a, glitterColor.a * shadowmix, _GlitterShadowMask); - glitterColor.rgb = lerp(glitterColor.rgb, glitterColor.rgb * lightColor, _GlitterEnableLighting); - col.rgb += glitterColor.rgb * glitterColor.a; + glitterColor.a = lerp(glitterColor.a, glitterColor.a * fd.shadowmix, _GlitterShadowMask); + glitterColor.rgb = lerp(glitterColor.rgb, glitterColor.rgb * fd.lightColor, _GlitterEnableLighting); + fd.col.rgb += glitterColor.rgb * glitterColor.a; #else - col.rgb += glitterColor.a * _GlitterEnableLighting * glitterColor.rgb * lightColor; + fd.col.rgb += glitterColor.a * _GlitterEnableLighting * glitterColor.rgb * fd.lightColor; #endif } } @@ -1136,56 +1250,69 @@ void lilGetShading( #if !defined(OVERRIDE_GLITTER) #define OVERRIDE_GLITTER \ - lilGlitter(col, albedo, facing, uvMain, input.uv, input.uv1, viewDirection, headDirection, lightColor, normalDirection, lightDirection, shadowmix LIL_SAMP_IN(sampler_MainTex)); + lilGlitter(fd LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // Emission #if defined(LIL_FEATURE_EMISSION_1ST) && !defined(LIL_LITE) && !defined(LIL_FUR) - void lilEmission(inout float3 col, float2 uvMain, float2 uv, float3 invLighting, float2 parallaxOffset, float audioLinkValue LIL_SAMP_IN_FUNC(samp)) + void lilEmission(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { LIL_BRANCH if(_UseEmission) { - float2 _EmissionMapParaTex = uv + _EmissionParallaxDepth * parallaxOffset; float4 emissionColor = _EmissionColor; - // Texture - #if defined(LIL_FEATURE_EMISSION_UV) && defined(LIL_FEATURE_ANIMATE_EMISSION_UV) - if(Exists_EmissionMap) emissionColor *= LIL_GET_EMITEX(_EmissionMap, _EmissionMapParaTex); - #elif defined(LIL_FEATURE_EMISSION_UV) - if(Exists_EmissionMap) emissionColor *= LIL_SAMPLE_2D(_EmissionMap, sampler_EmissionMap, lilCalcUV(_EmissionMapParaTex, _EmissionMap_ST)); + #if defined(LIL_FEATURE_EMISSION_UV) + float2 emissionUV = fd.uv0; + if(_EmissionMap_UVMode == 1) emissionUV = fd.uv1; + if(_EmissionMap_UVMode == 2) emissionUV = fd.uv2; + if(_EmissionMap_UVMode == 3) emissionUV = fd.uv3; + if(_EmissionMap_UVMode == 4) emissionUV = fd.uvRim; + //if(_EmissionMap_UVMode == 4) emissionUV = fd.uvPanorama; + float2 _EmissionMapParaTex = emissionUV + _EmissionParallaxDepth * fd.parallaxOffset; + // Texture + #if defined(LIL_FEATURE_ANIMATE_EMISSION_UV) + if(Exists_EmissionMap) emissionColor *= LIL_GET_EMITEX(_EmissionMap, _EmissionMapParaTex); + #else + if(Exists_EmissionMap) emissionColor *= LIL_SAMPLE_2D(_EmissionMap, sampler_EmissionMap, lilCalcUV(_EmissionMapParaTex, _EmissionMap_ST)); + #endif #else - if(Exists_EmissionMap) emissionColor *= LIL_SAMPLE_2D(_EmissionMap, sampler_EmissionMap, uvMain + _EmissionParallaxDepth * parallaxOffset); + if(Exists_EmissionMap) emissionColor *= LIL_SAMPLE_2D(_EmissionMap, sampler_EmissionMap, fd.uvMain + _EmissionParallaxDepth * fd.parallaxOffset); #endif // Mask #if defined(LIL_FEATURE_EMISSION_MASK_UV) && defined(LIL_FEATURE_ANIMATE_EMISSION_MASK_UV) - if(Exists_EmissionBlendMask) emissionColor *= LIL_GET_EMIMASK(_EmissionBlendMask, uv); + if(Exists_EmissionBlendMask) emissionColor *= LIL_GET_EMIMASK(_EmissionBlendMask, fd.uv0); #elif defined(LIL_FEATURE_EMISSION_MASK_UV) - if(Exists_EmissionBlendMask) emissionColor *= LIL_SAMPLE_2D(_EmissionBlendMask, samp, lilCalcUV(uv, _EmissionBlendMask_ST)); + if(Exists_EmissionBlendMask) emissionColor *= LIL_SAMPLE_2D(_EmissionBlendMask, samp, lilCalcUV(fd.uv0, _EmissionBlendMask_ST)); #else - if(Exists_EmissionBlendMask) emissionColor *= LIL_SAMPLE_2D(_EmissionBlendMask, samp, uvMain); + if(Exists_EmissionBlendMask) emissionColor *= LIL_SAMPLE_2D(_EmissionBlendMask, samp, fd.uvMain); #endif // Gradation #if defined(LIL_FEATURE_EMISSION_GRADATION) if(Exists_EmissionGradTex && _EmissionUseGrad) emissionColor *= LIL_SAMPLE_1D(_EmissionGradTex, sampler_linear_repeat, _EmissionGradSpeed*LIL_TIME); #endif #if defined(LIL_FEATURE_AUDIOLINK) - if(_AudioLink2Emission) emissionColor.a *= audioLinkValue; + if(_AudioLink2Emission) emissionColor.a *= fd.audioLinkValue; #endif - emissionColor.rgb = lerp(emissionColor.rgb, emissionColor.rgb * invLighting, _EmissionFluorescence); - col += _EmissionBlend * lilCalcBlink(_EmissionBlink) * emissionColor.a * emissionColor.rgb; + emissionColor.rgb = lerp(emissionColor.rgb, emissionColor.rgb * fd.invLighting, _EmissionFluorescence); + fd.emissionColor += _EmissionBlend * lilCalcBlink(_EmissionBlink) * emissionColor.a * emissionColor.rgb; } } #elif defined(LIL_LITE) - void lilEmission(inout float3 col, float2 uv, float4 triMask) + void lilEmission(inout lilFragData fd) { if(_UseEmission) { float emissionBlinkSeq = lilCalcBlink(_EmissionBlink); float4 emissionColor = _EmissionColor; - emissionColor *= LIL_GET_EMITEX(_EmissionMap,uv); - col += emissionBlinkSeq * triMask.b * emissionColor.rgb; + float2 emissionUV = fd.uv0; + if(_EmissionMap_UVMode == 1) emissionUV = fd.uv1; + if(_EmissionMap_UVMode == 2) emissionUV = fd.uv2; + if(_EmissionMap_UVMode == 3) emissionUV = fd.uv3; + if(_EmissionMap_UVMode == 4) emissionUV = fd.uvRim; + emissionColor *= LIL_GET_EMITEX(_EmissionMap,emissionUV); + fd.emissionColor += emissionBlinkSeq * fd.triMask.b * emissionColor.rgb; } } #endif @@ -1193,62 +1320,70 @@ void lilGetShading( #if !defined(OVERRIDE_EMISSION_1ST) #if defined(LIL_LITE) #define OVERRIDE_EMISSION_1ST \ - lilEmission(emissionColor, input.uv, triMask); + lilEmission(fd); #else #define OVERRIDE_EMISSION_1ST \ - lilEmission(emissionColor, uvMain, input.uv, invLighting, parallaxOffset, audioLinkValue LIL_SAMP_IN(sampler_MainTex)); + lilEmission(fd LIL_SAMP_IN(sampler_MainTex)); #endif #endif //------------------------------------------------------------------------------------------------------------------------------ // Emission 2nd #if defined(LIL_FEATURE_EMISSION_2ND) && !defined(LIL_LITE) && !defined(LIL_FUR) - void lilEmission2nd(inout float3 col, float2 uvMain, float2 uv, float3 invLighting, float2 parallaxOffset, float audioLinkValue LIL_SAMP_IN_FUNC(samp)) + void lilEmission2nd(inout lilFragData fd LIL_SAMP_IN_FUNC(samp)) { LIL_BRANCH if(_UseEmission2nd) { - float2 _Emission2ndMapParaTex = uv + _Emission2ndParallaxDepth * parallaxOffset; float4 emission2ndColor = _Emission2ndColor; - // Texture - #if defined(LIL_FEATURE_EMISSION_UV) && defined(LIL_FEATURE_ANIMATE_EMISSION_UV) - if(Exists_Emission2ndMap) emission2ndColor *= LIL_GET_EMITEX(_Emission2ndMap, _Emission2ndMapParaTex); - #elif defined(LIL_FEATURE_EMISSION_UV) - if(Exists_Emission2ndMap) emission2ndColor *= LIL_SAMPLE_2D(_Emission2ndMap, sampler_Emission2ndMap, lilCalcUV(_Emission2ndMapParaTex, _Emission2ndMap_ST)); + #if defined(LIL_FEATURE_EMISSION_UV) + float2 emission2ndUV = fd.uv0; + if(_Emission2ndMap_UVMode == 1) emission2ndUV = fd.uv1; + if(_Emission2ndMap_UVMode == 2) emission2ndUV = fd.uv2; + if(_Emission2ndMap_UVMode == 3) emission2ndUV = fd.uv3; + if(_Emission2ndMap_UVMode == 4) emission2ndUV = fd.uvRim; + //if(_Emission2ndMap_UVMode == 4) emission2ndUV = fd.uvPanorama; + float2 _Emission2ndMapParaTex = emission2ndUV + _Emission2ndParallaxDepth * fd.parallaxOffset; + // Texture + #if defined(LIL_FEATURE_ANIMATE_EMISSION_UV) + if(Exists_Emission2ndMap) emission2ndColor *= LIL_GET_EMITEX(_Emission2ndMap, _Emission2ndMapParaTex); + #else + if(Exists_Emission2ndMap) emission2ndColor *= LIL_SAMPLE_2D(_Emission2ndMap, sampler_Emission2ndMap, lilCalcUV(_Emission2ndMapParaTex, _Emission2ndMap_ST)); + #endif #else - if(Exists_Emission2ndMap) emission2ndColor *= LIL_SAMPLE_2D(_Emission2ndMap, sampler_Emission2ndMap, uvMain + _Emission2ndParallaxDepth * parallaxOffset); + if(Exists_Emission2ndMap) emission2ndColor *= LIL_SAMPLE_2D(_Emission2ndMap, sampler_Emission2ndMap, fd.uvMain + _Emission2ndParallaxDepth * fd.parallaxOffset); #endif // Mask #if defined(LIL_FEATURE_EMISSION_MASK_UV) && defined(LIL_FEATURE_ANIMATE_EMISSION_MASK_UV) - if(Exists_Emission2ndBlendMask) emission2ndColor *= LIL_GET_EMIMASK(_Emission2ndBlendMask, uv); + if(Exists_Emission2ndBlendMask) emission2ndColor *= LIL_GET_EMIMASK(_Emission2ndBlendMask, fd.uv0); #elif defined(LIL_FEATURE_EMISSION_MASK_UV) - if(Exists_Emission2ndBlendMask) emission2ndColor *= LIL_SAMPLE_2D(_Emission2ndBlendMask, samp, lilCalcUV(uv, _Emission2ndBlendMask_ST)); + if(Exists_Emission2ndBlendMask) emission2ndColor *= LIL_SAMPLE_2D(_Emission2ndBlendMask, samp, lilCalcUV(fd.uv0, _Emission2ndBlendMask_ST)); #else - if(Exists_Emission2ndBlendMask) emission2ndColor *= LIL_SAMPLE_2D(_Emission2ndBlendMask, samp, uvMain); + if(Exists_Emission2ndBlendMask) emission2ndColor *= LIL_SAMPLE_2D(_Emission2ndBlendMask, samp, fd.uvMain); #endif // Gradation #if defined(LIL_FEATURE_EMISSION_GRADATION) if(Exists_Emission2ndGradTex && _Emission2ndUseGrad) emission2ndColor *= LIL_SAMPLE_1D(_Emission2ndGradTex, sampler_linear_repeat, _Emission2ndGradSpeed*LIL_TIME); #endif #if defined(LIL_FEATURE_AUDIOLINK) - if(_AudioLink2Emission2nd) emission2ndColor.a *= audioLinkValue; + if(_AudioLink2Emission2nd) emission2ndColor.a *= fd.audioLinkValue; #endif - emission2ndColor.rgb = lerp(emission2ndColor.rgb, emission2ndColor.rgb * invLighting, _Emission2ndFluorescence); - col += _Emission2ndBlend * lilCalcBlink(_Emission2ndBlink) * emission2ndColor.a * emission2ndColor.rgb; + emission2ndColor.rgb = lerp(emission2ndColor.rgb, emission2ndColor.rgb * fd.invLighting, _Emission2ndFluorescence); + fd.emissionColor += _Emission2ndBlend * lilCalcBlink(_Emission2ndBlink) * emission2ndColor.a * emission2ndColor.rgb; } } #endif #if !defined(OVERRIDE_EMISSION_2ND) #define OVERRIDE_EMISSION_2ND \ - lilEmission2nd(emissionColor, uvMain, input.uv, invLighting, parallaxOffset, audioLinkValue LIL_SAMP_IN(sampler_MainTex)); + lilEmission2nd(fd LIL_SAMP_IN(sampler_MainTex)); #endif //------------------------------------------------------------------------------------------------------------------------------ // Dissolve Add #if !defined(OVERRIDE_DISSOLVE_ADD) #define OVERRIDE_DISSOLVE_ADD \ - emissionColor += _DissolveColor.rgb * dissolveAlpha; + fd.emissionColor += _DissolveColor.rgb * dissolveAlpha; #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -1256,34 +1391,34 @@ void lilGetShading( #if !defined(OVERRIDE_BLEND_EMISSION) #if LIL_RENDER == 2 && !defined(LIL_REFRACTION) #define OVERRIDE_BLEND_EMISSION \ - col.rgb += emissionColor * col.a; + fd.col.rgb += fd.emissionColor * fd.col.a; #else #define OVERRIDE_BLEND_EMISSION \ - col.rgb += emissionColor; + fd.col.rgb += fd.emissionColor; #endif #endif //------------------------------------------------------------------------------------------------------------------------------ // Distance Fade #if defined(LIL_FEATURE_DISTANCE_FADE) && !defined(LIL_LITE) - void lilDistanceFade(inout float4 col, float3 positionWS, float depth, float facing) + void lilDistanceFade(inout lilFragData fd) { - float distFade = saturate((depth - _DistanceFade.x) / (_DistanceFade.y - _DistanceFade.x)); - distFade = facing < (_DistanceFade.w-1.0) ? _DistanceFade.z : distFade * _DistanceFade.z; + float distFade = saturate((fd.depth - _DistanceFade.x) / (_DistanceFade.y - _DistanceFade.x)); + distFade = fd.facing < (_DistanceFade.w-1.0) ? _DistanceFade.z : distFade * _DistanceFade.z; #if defined(LIL_PASS_FORWARDADD) - col.rgb = lerp(col.rgb, 0.0, distFade); + fd.col.rgb = lerp(fd.col.rgb, 0.0, distFade); #elif LIL_RENDER == 2 - col.rgb = lerp(col.rgb, _DistanceFadeColor.rgb * _DistanceFadeColor.a, distFade); - col.a = lerp(col.a, col.a * _DistanceFadeColor.a, distFade); + fd.col.rgb = lerp(fd.col.rgb, _DistanceFadeColor.rgb * _DistanceFadeColor.a, distFade); + fd.col.a = lerp(fd.col.a, fd.col.a * _DistanceFadeColor.a, distFade); #else - col.rgb = lerp(col.rgb, _DistanceFadeColor.rgb, distFade); + fd.col.rgb = lerp(fd.col.rgb, _DistanceFadeColor.rgb, distFade); #endif } #endif #if !defined(OVERRIDE_DISTANCE_FADE) #define OVERRIDE_DISTANCE_FADE \ - lilDistanceFade(col, input.positionWS, depth, facing); + lilDistanceFade(fd); #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -1291,10 +1426,10 @@ void lilGetShading( #if !defined(OVERRIDE_FOG) #if defined(LIL_GEM) && !defined(LIL_GEM_PRE) #define OVERRIDE_FOG \ - LIL_APPLY_FOG_COLOR(col, input.fogCoord, fogColor); + LIL_APPLY_FOG_COLOR(fd.col, input, fogColor); #else #define OVERRIDE_FOG \ - LIL_APPLY_FOG(col, input.fogCoord); + LIL_APPLY_FOG(fd.col, input); #endif #endif @@ -1302,5 +1437,5 @@ void lilGetShading( // Output #if !defined(OVERRIDE_OUTPUT) #define OVERRIDE_OUTPUT \ - return col; + return fd.col; #endif \ No newline at end of file diff --git a/Assets/lilToon/Shader/Includes/lil_common_frag_alpha.hlsl b/Assets/lilToon/Shader/Includes/lil_common_frag_alpha.hlsl index 626885d9..39bd5047 100644 --- a/Assets/lilToon/Shader/Includes/lil_common_frag_alpha.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_common_frag_alpha.hlsl @@ -1,5 +1,6 @@ //------------------------------------------------------------------------------------------------------------------------------ // Alpha in PS +// This is included in the subpass fragment shader #define LIL_ALPHA_PS #if LIL_RENDER > 0 BEFORE_ANIMATE_MAIN_UV @@ -7,7 +8,6 @@ //------------------------------------------------------------------------------------------------------------------------------ // Main Color - float4 col = 1.0; BEFORE_MAIN OVERRIDE_MAIN @@ -33,13 +33,16 @@ OVERRIDE_FUR #endif - clip(col.a - _Cutoff); + //------------------------------------------------------------------------------------------------------------------------------ + // Cutout + clip(fd.col.a - _Cutoff); #if LIL_RENDER == 2 && !defined(SHADER_API_GLES) - float alphaRef = col.a; + // Dither + float alphaRef = fd.col.a; #if LIL_SUBPASS_TRANSPARENT_MODE == 1 || defined(SHADERPASS) && (SHADERPASS == SHADERPASS_SHADOWS) - alphaRef = LIL_SAMPLE_3D(_DitherMaskLOD, sampler_DitherMaskLOD, float3(input.positionCS.xy*0.25,col.a*0.9375)).a; + alphaRef = LIL_SAMPLE_3D(_DitherMaskLOD, sampler_DitherMaskLOD, float3(input.positionCS.xy*0.25,fd.col.a*0.9375)).a; #elif LIL_SUBPASS_TRANSPARENT_MODE == 0 && defined(LIL_PASS_SHADOWCASTER_INCLUDED) - if(LIL_MATRIX_P._m33 != 0.0) alphaRef = LIL_SAMPLE_3D(_DitherMaskLOD, sampler_DitherMaskLOD, float3(input.positionCS.xy*0.25,col.a*0.9375)).a; + if(LIL_MATRIX_P._m33 != 0.0) alphaRef = LIL_SAMPLE_3D(_DitherMaskLOD, sampler_DitherMaskLOD, float3(input.positionCS.xy*0.25,fd.col.a*0.9375)).a; #endif clip(alphaRef - _SubpassCutoff); #endif diff --git a/Assets/lilToon/Shader/Includes/lil_common_functions.hlsl b/Assets/lilToon/Shader/Includes/lil_common_functions.hlsl index 79d05739..7d8bb1d3 100644 --- a/Assets/lilToon/Shader/Includes/lil_common_functions.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_common_functions.hlsl @@ -4,12 +4,17 @@ //------------------------------------------------------------------------------------------------------------------------------ // Optimized inverse trigonometric function // https://seblagarde.wordpress.com/2014/12/01/inverse-trigonometric-functions-gpu-optimization-for-amd-gcn-architecture/ -float lilAcos(float x) -{ - float ox = abs(x); - float res = -0.156583 * ox + LIL_HALF_PI; - res *= sqrt(1.0 - ox); - return (x >= 0.0) ? res : LIL_PI - res; +float lilAcos(float x) +{ + #if 0 + float res = sqrt(1.0 - abs(x)) * LIL_HALF_PI; + return (x >= 0.0) ? res : LIL_PI - res; + #else + float ox = abs(x); + float res = -0.156583 * ox + LIL_HALF_PI; + res *= sqrt(1.0 - ox); + return (x >= 0.0) ? res : LIL_PI - res; + #endif } float lilAsin(float x) @@ -17,30 +22,38 @@ float lilAsin(float x) return LIL_HALF_PI - lilAcos(x); } -float lilAtanPos(float x) -{ - float t0 = (x < 1.0) ? x : 1.0 / x; - float t1 = t0 * t0; - float poly = 0.0872929f; - poly = -0.301895f + poly * t1; - poly = 1.0f + poly * t1; - poly = poly * t0; - return (x < 1.0) ? poly : LIL_HALF_PI - poly; +float lilAtanPos(float x) +{ + #if 1 + float t0 = (x < 1.0f) ? x : 1.0f / x; + float t1 = (-0.269408 * t0 + 1.05863) * t0; + return (x < 1.0f) ? t1 : LIL_HALF_PI - t1; + #else + float t0 = (x < 1.0) ? x : 1.0 / x; + float t1 = t0 * t0; + float poly = 0.0872929; + poly = -0.301895 + poly * t1; + poly = 1.0f + poly * t1; + poly = poly * t0; + return (x < 1.0) ? poly : LIL_HALF_PI - poly; + #endif } -float lilAtan(float x) -{ - float t0 = lilAtanPos(abs(x)); - return (x < 0.0) ? -t0 : t0; +float lilAtan(float x) +{ + float t0 = lilAtanPos(abs(x)); + return (x < 0.0) ? -t0 : t0; } -float lilAtan2(float x, float y) +float lilAtan(float x, float y) { return lilAtan(x/y) + LIL_PI * (y<0) * (x<0?-1:1); } //------------------------------------------------------------------------------------------------------------------------------ // Math + +// Tooning #if LIL_ANTIALIAS_MODE == 0 float lilIsIn0to1(float f) { @@ -103,11 +116,13 @@ float lilAtan2(float x, float y) } #endif +// Optimized matrix calculation float4 lilOptMul(float4x4 mat, float3 pos) { return mat._m00_m10_m20_m30 * pos.x + (mat._m01_m11_m21_m31 * pos.y + (mat._m02_m12_m22_m32 * pos.z + mat._m03_m13_m23_m33)); } +// Check if the value is within range float lilIsIn0to1(float2 f) { return lilIsIn0to1(f.x) * lilIsIn0to1(f.y); @@ -118,6 +133,7 @@ float lilIsIn0to1(float2 f, float nv) return lilIsIn0to1(f.x, nv) * lilIsIn0to1(f.y, nv); } +// Normal blend in tangent space float3 lilBlendNormal(float3 dstNormal, float3 srcNormal) { return float3(dstNormal.xy + srcNormal.xy, dstNormal.z * srcNormal.z); @@ -328,6 +344,8 @@ float3 lilGradationMap(float3 col, TEXTURE2D(gradationMap), float strength) //------------------------------------------------------------------------------------------------------------------------------ // UV + +// Rotation float2 lilRotateUV(float2 uv, float2x2 rotMatrix) { return mul(rotMatrix, uv - 0.5) + 0.5; @@ -346,6 +364,7 @@ float2 lilRotateUV(float2 uv, float angle) return outuv; } +// Tiling, offset, animation calculations float2 lilCalcUV(float2 uv, float4 uv_st) { return uv * uv_st.xy + uv_st.zw; @@ -365,8 +384,8 @@ float2 lilCalcUV(float2 uv, float4 uv_st, float2 uv_sr) float2 lilCalcUV(float2 uv, float4 uv_st, float4 uv_sr) { - float2 outuv = uv * uv_st.xy + uv_st.zw + frac(uv_sr.xy * LIL_TIME); - outuv = lilRotateUV(outuv, uv_sr.z + uv_sr.w * LIL_TIME); + float2 outuv = uv * uv_st.xy + uv_st.zw; + outuv = lilRotateUV(outuv, uv_sr.z + uv_sr.w * LIL_TIME) + frac(uv_sr.xy * LIL_TIME); return outuv; } @@ -375,6 +394,12 @@ float2 lilCalcUVWithoutAnimation(float2 uv, float4 uv_st, float4 uv_sr) return lilRotateUV(uv * uv_st.xy + uv_st.zw, uv_sr.z); } +float2 lilCalcDoubleSideUV(float2 uv, float facing, float shiftBackfaceUV) +{ + return facing < (shiftBackfaceUV-1.0) ? uv + float2(1.0,0.0) : uv; +} + +// Decal float2 lilCalcDecalUV( float2 uv, float4 uv_ST, @@ -421,6 +446,7 @@ float2 lilCalcAtlasAnimation(float2 uv, float4 decalAnimation, float4 decalSubPa return outuv; } +// MatCap float2 lilCalcMatCapUV(float2 uv1, float3 normalWS, float3 viewDirection, float3 headDirection, float4 matcap_ST, float2 matcapBlendUV1, bool zRotCancel, bool matcapPerspective, float matcapVRParallaxStrength) { #if LIL_MATCAP_MODE == 0 @@ -445,16 +471,13 @@ float2 lilCalcMatCapUV(float2 uv1, float3 normalWS, float3 viewDirection, float3 #endif } +// Panorama float2 lilGetPanoramaUV(float3 viewDirection) { - return float2(lilAtan2(viewDirection.x, viewDirection.z), lilAcos(viewDirection.y)) * LIL_INV_PI; -} - -float2 lilCalcDoubleSideUV(float2 uv, float facing, float shiftBackfaceUV) -{ - return facing < (shiftBackfaceUV-1.0) ? uv + float2(1.0,0.0) : uv; + return float2(lilAtan(viewDirection.x, viewDirection.z), lilAcos(viewDirection.y)) * LIL_INV_PI; } +// Parallax void lilParallax(inout float2 uvMain, inout float2 uv, lilBool useParallax, float2 parallaxOffset, TEXTURE2D(parallaxMap), float parallaxScale, float parallaxOffsetParam) { LIL_BRANCH @@ -594,68 +617,19 @@ void lilCalcDissolveWithNoise( } } -void lilAudioLinkFrag(inout float audioLinkValue, float2 uvMain, float2 uv, float nv, lilBool useAudioLink, uint audioLinkUVMode, float4 audioLinkUVParams, TEXTURE2D(audioLinkMaskTex), float4 audioTexture_TexelSize, TEXTURE2D(audioTexture) LIL_SAMP_IN_FUNC(samp)) +bool lilCheckAudioLink() { - if(useAudioLink) - { - audioLinkValue = 0.0; - float4 audioLinkMask = 1.0; - float2 audioLinkUV; - if(audioLinkUVMode == 0) audioLinkUV.x = audioLinkUVParams.g; - if(audioLinkUVMode == 1) audioLinkUV.x = audioLinkUVParams.r - nv * audioLinkUVParams.r + audioLinkUVParams.g; - if(audioLinkUVMode == 2) audioLinkUV.x = lilRotateUV(uv, audioLinkUVParams.b).x * audioLinkUVParams.r + audioLinkUVParams.g; - audioLinkUV.y = audioLinkUVParams.a; - // Mask (R:Delay G:Band B:Strength) - if(audioLinkUVMode == 3 && Exists_AudioLinkMask) - { - audioLinkMask = LIL_SAMPLE_2D(audioLinkMaskTex, samp, uvMain); - audioLinkUV = audioLinkMask.rg; - } - // Scaling for _AudioTexture (4/64) - audioLinkUV.y *= 0.0625; - // Global - if(audioTexture_TexelSize.z > 16) - { - audioLinkValue = LIL_SAMPLE_2D(audioTexture, sampler_linear_clamp, audioLinkUV).r; - audioLinkValue = saturate(audioLinkValue); - } - audioLinkValue *= audioLinkMask.b; - } -} - -void lilAudioLinkFrag(inout float audioLinkValue, float2 uvMain, float2 uv, float nv, lilBool useAudioLink, uint audioLinkUVMode, float4 audioLinkUVParams, TEXTURE2D(audioLinkMaskTex), float4 audioTexture_TexelSize, TEXTURE2D(audioTexture), lilBool audioLinkAsLocal, float4 audioLinkLocalMapParams, TEXTURE2D(audioLinkLocalMap) LIL_SAMP_IN_FUNC(samp)) -{ - if(useAudioLink) - { - audioLinkValue = 0.0; - float4 audioLinkMask = 1.0; - float2 audioLinkUV; - if(audioLinkUVMode == 0) audioLinkUV.x = audioLinkUVParams.g; - if(audioLinkUVMode == 1) audioLinkUV.x = audioLinkUVParams.r - nv * audioLinkUVParams.r + audioLinkUVParams.g; - if(audioLinkUVMode == 2) audioLinkUV.x = lilRotateUV(uv, audioLinkUVParams.b).x * audioLinkUVParams.r + audioLinkUVParams.g; - audioLinkUV.y = audioLinkUVParams.a; - // Mask (R:Delay G:Band B:Strength) - if(audioLinkUVMode == 3 && Exists_AudioLinkMask) - { - audioLinkMask = LIL_SAMPLE_2D(audioLinkMaskTex, samp, uvMain); - audioLinkUV = audioLinkMask.rg; - } - // Scaling for _AudioTexture (4/64) - if(!audioLinkAsLocal) audioLinkUV.y *= 0.0625; - // Global - if(audioTexture_TexelSize.z > 16) - { - audioLinkValue = LIL_SAMPLE_2D(audioTexture, sampler_linear_clamp, audioLinkUV).r; - audioLinkValue = saturate(audioLinkValue); - } - // Local - if(audioLinkAsLocal) - { - audioLinkUV.x += frac(-LIL_TIME * audioLinkLocalMapParams.r / 60 * audioLinkLocalMapParams.g) + audioLinkLocalMapParams.b; - audioLinkValue = LIL_SAMPLE_2D(audioLinkLocalMap, sampler_linear_repeat, audioLinkUV).r; - } - audioLinkValue *= audioLinkMask.b; - } + #if defined(LIL_FEATURE_AUDIOLINK) + #if defined(LIL_LWTEX) + return _AudioTexture_TexelSize.z > 16; + #else + int width, height; + _AudioTexture.GetDimensions(width, height); + return width > 16; + #endif + #else + return false; + #endif } //------------------------------------------------------------------------------------------------------------------------------ @@ -741,7 +715,7 @@ float4 lilGetSubTexWithoutAnimation( //------------------------------------------------------------------------------------------------------------------------------ // Light Direction -float3 lilGetLightDirection(float4 lightDirectionOverride = float4(0.0,0.001,0.0,0.0)) +float3 lilGetLightDirection(float4 lightDirectionOverride) { #if LIL_LIGHT_DIRECTION_MODE == 0 return normalize(LIL_MAINLIGHT_DIRECTION + lightDirectionOverride.xyz); @@ -751,6 +725,10 @@ float3 lilGetLightDirection(float4 lightDirectionOverride = float4(0.0,0.001,0.0 lightDirectionOverride.xyz); #endif } +float3 lilGetLightDirection() +{ + return lilGetLightDirection(float4(0.0,0.001,0.0,0.0)); +} float3 lilGetLightDirection(float3 positionWS) { @@ -761,16 +739,6 @@ float3 lilGetLightDirection(float3 positionWS) #endif } -float3 lilGetLightMapDirection(float2 uv) -{ - #if defined(LIL_USE_LIGHTMAP) && defined(LIL_USE_DIRLIGHTMAP) - float4 lightmapDirection = LIL_SAMPLE_LIGHTMAP(LIL_DIRLIGHTMAP_TEX, LIL_LIGHTMAP_SAMP, uv); - return lightmapDirection.xyz * 2.0 - 1.0; - #else - return 0; - #endif -} - //------------------------------------------------------------------------------------------------------------------------------ // SH Lighting float3 lilShadeSH9(float4 normalWS) @@ -835,26 +803,46 @@ float3 lilShadeSH9LPPV(float3 normalWS, float3 positionWS) return lilShadeSH9LPPV(float4(normalWS,1.0), positionWS); } -float3 lilGetSHToon(float4 lightDirectionOverride = float4(0.0,0.001,0.0,0.0)) +float3 lilGetSHToon(float4 lightDirectionOverride) { return lilShadeSH9(lilGetLightDirection(lightDirectionOverride) * 0.666666); } -float3 lilGetSHToon(float3 positionWS, float4 lightDirectionOverride = float4(0.0,0.001,0.0,0.0)) +float3 lilGetSHToon() +{ + return lilGetSHToon(float4(0.0,0.001,0.0,0.0)); +} + +float3 lilGetSHToon(float3 positionWS, float4 lightDirectionOverride) { return lilShadeSH9LPPV(lilGetLightDirection(lightDirectionOverride) * 0.666666, positionWS); } -float3 lilGetSHToonMin(float4 lightDirectionOverride = float4(0.0,0.001,0.0,0.0)) +float3 lilGetSHToon(float3 positionWS) +{ + return lilGetSHToon(positionWS, float4(0.0,0.001,0.0,0.0)); +} + +float3 lilGetSHToonMin(float4 lightDirectionOverride) { return lilShadeSH9(-lilGetLightDirection(lightDirectionOverride) * 0.666666); } -float3 lilGetSHToonMin(float3 positionWS, float4 lightDirectionOverride = float4(0.0,0.001,0.0,0.0)) +float3 lilGetSHToonMin() +{ + return lilGetSHToonMin(float4(0.0,0.001,0.0,0.0)); +} + +float3 lilGetSHToonMin(float3 positionWS, float4 lightDirectionOverride) { return lilShadeSH9LPPV(-lilGetLightDirection(lightDirectionOverride) * 0.666666, positionWS); } +float3 lilGetSHToonMin(float3 positionWS) +{ + return lilGetSHToonMin(positionWS, float4(0.0,0.001,0.0,0.0)); +} + void lilGetToonSHDouble(float3 lightDirection, out float3 shMax, out float3 shMin) { float3 N = lightDirection * 0.666666; @@ -949,23 +937,6 @@ void lilGetLightColorDouble(float3 lightDirection, out float3 lightColor, out fl indLightColor = saturate(shMin); } -float3 lilGetLightMapColor(float2 uv) -{ - float3 outCol = 0; - #if defined(LIL_USE_LIGHTMAP) || defined(LIL_USE_DYNAMICLIGHTMAP) - float2 lightmapUV = uv * unity_LightmapST.xy + unity_LightmapST.zw; - #endif - #ifdef LIL_USE_LIGHTMAP - float4 lightmap = LIL_SAMPLE_LIGHTMAP(LIL_LIGHTMAP_TEX, LIL_LIGHTMAP_SAMP, lightmapUV); - outCol += LIL_DECODE_LIGHTMAP(lightmap); - #endif - #ifdef LIL_USE_DYNAMICLIGHTMAP - float4 dynlightmap = LIL_SAMPLE_2D(LIL_DYNAMICLIGHTMAP_TEX, LIL_DYNAMICLIGHTMAP_SAMP, lightmapUV); - outCol += LIL_DECODE_DYNAMICLIGHTMAP(dynlightmap); - #endif - return outCol; -} - //------------------------------------------------------------------------------------------------------------------------------ // Specular float3 lilFresnelTerm(float3 F0, float cosA) @@ -980,80 +951,6 @@ float3 lilFresnelLerp(float3 F0, float3 F90, float cosA) return lerp(F0, F90, a * a * a * a * a); } -float3 lilCalcSpecular(float3 N, float3 T, float3 B, float3 L, float3 V, float roughness, float3 specular, float anisotropy, float anisoTangentWidth, float anisoBitangentWidth, float aniso2ndTangentWidth, float aniso2ndBitangentWidth, float anisoSpecularStrength, float aniso2ndSpecularStrength, float anisoShift, float aniso2ndShift, bool isSpecularToon, float attenuation, bool isAnisotropy) -{ - float3 H = normalize(V + L); - float nv = saturate(dot(N, V)); - float nl = saturate(dot(N, L)); - float lh = saturate(dot(L, H)); - float nh = saturate(dot(N, H)); - - // BRP Specular - float ggx, sjggx = 0.0; - float lambdaV = 0.0; - float lambdaL = 0.0; - float vh = dot(V,H); - float d = 1.0; - if(isAnisotropy) - { - float roughnessT = max(roughness * (1.0 + anisotropy), 0.002); - float roughnessB = max(roughness * (1.0 - anisotropy), 0.002); - - float tv = dot(T, V); - float bv = dot(B, V); - float tl = dot(T, L); - float bl = dot(B, L); - - lambdaV = nl * length(float3(roughnessT * tv, roughnessB * bv, nv)); - lambdaL = nv * length(float3(roughnessT * tl, roughnessB * bl, nl)); - - float roughnessT1 = roughnessT * anisoTangentWidth; - float roughnessB1 = roughnessB * anisoBitangentWidth; - float roughnessT2 = roughnessT * aniso2ndTangentWidth; - float roughnessB2 = roughnessB * aniso2ndBitangentWidth; - float3 T1 = normalize(T - N * anisoShift); - float3 B1 = normalize(B - N * anisoShift); - float3 T2 = normalize(T - N * aniso2ndShift); - float3 B2 = normalize(B - N * aniso2ndShift); - float th1 = dot(T1, H); - float bh1 = dot(B1, H); - float th2 = dot(T2, H); - float bh2 = dot(B2, H); - - float r1 = roughnessT1 * roughnessB1; - float r2 = roughnessT2 * roughnessB2; - float3 v1 = float3(th1 * roughnessB1, bh1 * roughnessT1, nh * r1); - float3 v2 = float3(th2 * roughnessB2, bh2 * roughnessT2, nh * r2); - float w1 = r1 / dot(v1, v1); - float w2 = r2 / dot(v2, v2); - ggx = r1 * w1 * w1 * anisoSpecularStrength + r2 * w2 * w2 * aniso2ndSpecularStrength; - } - else - { - float roughness2 = max(roughness, 0.002); - lambdaV = nl * (nv * (1.0 - roughness2) + roughness2); - lambdaL = nv * (nl * (1.0 - roughness2) + roughness2); - - float r2 = roughness2 * roughness2; - d = (nh * r2 - nh) * nh + 1.0; - ggx = r2 / (d * d + 1e-7f); - } - - #if defined(SHADER_API_MOBILE) || defined(SHADER_API_SWITCH) - sjggx = 0.5 / (lambdaV + lambdaL + 1e-4f); - #else - sjggx = 0.5 / (lambdaV + lambdaL + 1e-5f); - #endif - - float specularTerm = sjggx * ggx; - #ifdef LIL_COLORSPACE_GAMMA - specularTerm = sqrt(max(1e-4h, specularTerm)); - #endif - specularTerm *= nl * attenuation; - if(isSpecularToon) return lilTooning(specularTerm, 0.5); - else return specularTerm * lilFresnelTerm(specular, lh); -} - float3 lilGetAnisotropyNormalWS(float3 normalWS, float3 anisoTangentWS, float3 anisoBitangentWS, float3 viewDirection, float anisotropy) { float3 anisoDirectionWS = anisotropy > 0.0 ? anisoBitangentWS : anisoTangentWS; diff --git a/Assets/lilToon/Shader/Includes/lil_common_input.hlsl b/Assets/lilToon/Shader/Includes/lil_common_input.hlsl index 85557fd6..44afe286 100644 --- a/Assets/lilToon/Shader/Includes/lil_common_input.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_common_input.hlsl @@ -257,6 +257,7 @@ SAMPLER(sampler_linear_clamp); float _OutlineEnableLighting; uint _Cull; uint _OutlineCull; + uint _EmissionMap_UVMode; lilBool _Invisible; lilBool _UseShadow; lilBool _UseMatCap; @@ -503,6 +504,8 @@ SAMPLER(sampler_linear_clamp); #if defined(LIL_MULTI_INPUTS_REFLECTION) || defined(LIL_GEM) float _Smoothness; float _Reflectance; + float _SpecularBorder; + float _SpecularBlur; #endif #if defined(LIL_MULTI_INPUTS_REFLECTION) float _Metallic; @@ -610,6 +613,12 @@ SAMPLER(sampler_linear_clamp); #if defined(LIL_MULTI_INPUTS_GLITTER) uint _GlitterUVMode; #endif + #if defined(LIL_MULTI_INPUTS_EMISSION) + uint _EmissionMap_UVMode; + #endif + #if defined(LIL_MULTI_INPUTS_EMISSION_2ND) + uint _Emission2ndMap_UVMode; + #endif #if defined(LIL_MULTI_INPUTS_AUDIOLINK) uint _AudioLinkUVMode; uint _AudioLinkVertexUVMode; @@ -1005,6 +1014,8 @@ SAMPLER(sampler_linear_clamp); #if defined(LIL_FEATURE_REFLECTION) || defined(LIL_GEM) float _Smoothness; float _Reflectance; + float _SpecularBorder; + float _SpecularBlur; #endif #if defined(LIL_FEATURE_REFLECTION) float _Metallic; @@ -1127,6 +1138,12 @@ SAMPLER(sampler_linear_clamp); #if defined(LIL_FEATURE_GLITTER) uint _GlitterUVMode; #endif + #if defined(LIL_FEATURE_EMISSION_1ST) && defined(LIL_FEATURE_EMISSION_UV) + uint _EmissionMap_UVMode; + #endif + #if defined(LIL_FEATURE_EMISSION_2ND) && defined(LIL_FEATURE_EMISSION_UV) + uint _Emission2ndMap_UVMode; + #endif #if defined(LIL_FEATURE_AUDIOLINK) uint _AudioLinkUVMode; #if defined(LIL_FEATURE_AUDIOLINK_VERTEX) diff --git a/Assets/lilToon/Shader/Includes/lil_common_macro.hlsl b/Assets/lilToon/Shader/Includes/lil_common_macro.hlsl index 0cedeb0b..a8879060 100644 --- a/Assets/lilToon/Shader/Includes/lil_common_macro.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_common_macro.hlsl @@ -50,6 +50,46 @@ // 1 : In Vertex Shader // 2 : In Fragment Shader +//------------------------------------------------------------------------------------------------------------------------------ +// Version +#if !defined(SHADER_LIBRARY_VERSION_MAJOR) + #if UNITY_VERSION < 201820 + #define SHADER_LIBRARY_VERSION_MAJOR 1 + #elif UNITY_VERSION < 201830 + #define SHADER_LIBRARY_VERSION_MAJOR 2 + #elif UNITY_VERSION < 201840 + #define SHADER_LIBRARY_VERSION_MAJOR 3 + #elif UNITY_VERSION < 201910 + #define SHADER_LIBRARY_VERSION_MAJOR 4 + #elif UNITY_VERSION < 201920 + #define SHADER_LIBRARY_VERSION_MAJOR 5 + #elif UNITY_VERSION < 201930 + #define SHADER_LIBRARY_VERSION_MAJOR 6 + #elif UNITY_VERSION < 201940 + #define SHADER_LIBRARY_VERSION_MAJOR 7 + #elif UNITY_VERSION < 202010 + #define SHADER_LIBRARY_VERSION_MAJOR 8 + #elif UNITY_VERSION < 202020 + #define SHADER_LIBRARY_VERSION_MAJOR 9 + #elif UNITY_VERSION < 202030 + #define SHADER_LIBRARY_VERSION_MAJOR 10 + #elif UNITY_VERSION < 202110 + #define SHADER_LIBRARY_VERSION_MAJOR 11 + #elif UNITY_VERSION < 202120 + #define SHADER_LIBRARY_VERSION_MAJOR 12 + #else + #define SHADER_LIBRARY_VERSION_MAJOR 0 + #endif +#endif +#if !defined(SHADER_LIBRARY_VERSION_MINOR) + #define SHADER_LIBRARY_VERSION_MINOR 99 +#endif +#if !defined(VERSION_GREATER_EQUAL) + #define VERSION_GREATER_EQUAL(major, minor) ((SHADER_LIBRARY_VERSION_MAJOR > major) || ((SHADER_LIBRARY_VERSION_MAJOR == major) && (SHADER_LIBRARY_VERSION_MINOR >= minor))) + #define VERSION_LOWER(major, minor) ((SHADER_LIBRARY_VERSION_MAJOR < major) || ((SHADER_LIBRARY_VERSION_MAJOR == major) && (SHADER_LIBRARY_VERSION_MINOR < minor))) + #define VERSION_EQUAL(major, minor) ((SHADER_LIBRARY_VERSION_MAJOR == major) && (SHADER_LIBRARY_VERSION_MINOR == minor)) +#endif + //------------------------------------------------------------------------------------------------------------------------------ // Replace Macro #define LIL_BRANCH UNITY_BRANCH @@ -87,7 +127,7 @@ #if defined(LIGHTMAP_ON) #define LIL_USE_LIGHTMAP #endif -#if defined(DYNAMICLIGHTMAP_ON) +#if defined(DYNAMICLIGHTMAP_ON) && !(defined(LIL_URP) && VERSION_LOWER(12, 0)) #define LIL_USE_DYNAMICLIGHTMAP #endif #if defined(DIRLIGHTMAP_COMBINED) @@ -191,13 +231,13 @@ #if defined(SHADER_API_D3D11_9X) #define LIL_VFACE(facing) - #define LIL_VFACE_FALLBACK(facing) float facing = 1.0 + #define LIL_COPY_VFACE(o) #undef LIL_USE_LIGHTMAP #undef LIL_BRANCH #define LIL_BRANCH #else #define LIL_VFACE(facing) , float facing : VFACE - #define LIL_VFACE_FALLBACK(facing) + #define LIL_COPY_VFACE(o) o = facing #endif #if defined(SHADER_API_D3D9) || (UNITY_VERSION < 201800 && defined(SHADER_API_GLES)) || (defined(SHADER_TARGET_SURFACE_ANALYSIS) && defined(SHADER_TARGET_SURFACE_ANALYSIS_MOJOSHADER)) || defined(SHADER_TARGET_SURFACE_ANALYSIS) @@ -216,6 +256,7 @@ #define SAMPLER(samp) #define LIL_SAMP_IN_FUNC(samp) #define LIL_SAMP_IN(samp) + #define LIL_LWTEX #else #define LIL_SAMPLE_1D(tex,samp,uv) tex.Sample(samp,uv) #define LIL_SAMPLE_1D_LOD(tex,samp,uv,lod) tex.SampleLevel(samp,uv,lod) @@ -242,32 +283,6 @@ //------------------------------------------------------------------------------------------------------------------------------ // Macro to absorb pipeline differences -// Version -#if !defined(SHADER_LIBRARY_VERSION_MAJOR) - #if UNITY_VERSION < 201820 - #define SHADER_LIBRARY_VERSION_MAJOR 1 - #elif UNITY_VERSION < 201830 - #define SHADER_LIBRARY_VERSION_MAJOR 2 - #elif UNITY_VERSION < 201840 - #define SHADER_LIBRARY_VERSION_MAJOR 3 - #elif UNITY_VERSION < 201910 - #define SHADER_LIBRARY_VERSION_MAJOR 4 - #elif UNITY_VERSION < 201920 - #define SHADER_LIBRARY_VERSION_MAJOR 5 - #elif UNITY_VERSION < 201930 - #define SHADER_LIBRARY_VERSION_MAJOR 6 - #else - #define SHADER_LIBRARY_VERSION_MAJOR 0 - #endif -#endif -#if !defined(SHADER_LIBRARY_VERSION_MINOR) - #define SHADER_LIBRARY_VERSION_MINOR 99 -#endif -#if !defined(VERSION_GREATER_EQUAL) - #define VERSION_GREATER_EQUAL(major, minor) ((SHADER_LIBRARY_VERSION_MAJOR > major) || ((SHADER_LIBRARY_VERSION_MAJOR == major) && (SHADER_LIBRARY_VERSION_MINOR >= minor))) - #define VERSION_LOWER(major, minor) ((SHADER_LIBRARY_VERSION_MAJOR < major) || ((SHADER_LIBRARY_VERSION_MAJOR == major) && (SHADER_LIBRARY_VERSION_MINOR < minor))) - #define VERSION_EQUAL(major, minor) ((SHADER_LIBRARY_VERSION_MAJOR == major) && (SHADER_LIBRARY_VERSION_MINOR == minor)) -#endif // Transform #if defined(LIL_BRP) @@ -312,6 +327,13 @@ { return ComputeGrabScreenPos(positionCS); } + + float4 lilTransformCStoSSFrag(float4 positionCS) + { + float4 positionSS = float4(positionCS.xyz * positionCS.w, positionCS.w); + positionSS.xy = positionSS.xy / _ScreenParams.xy; + return positionSS; + } #else #if defined(SHADER_STAGE_RAY_TRACING) #define LIL_MATRIX_M ObjectToWorld3x4() @@ -362,6 +384,13 @@ positionSS.zw = positionCS.zw; return positionSS; } + + float4 lilTransformCStoSSFrag(float4 positionCS) + { + float4 positionSS = float4(positionCS.xyz * positionCS.w, positionCS.w); + positionSS.xy = positionSS.xy / _ScreenParams.xy; + return positionSS; + } #endif float3 lilToAbsolutePositionWS(float3 positionRWS) @@ -448,7 +477,7 @@ float3 lilHeadDirection(float3 positionWS) { return 0; } - #define LIL_GET_HDRPDATA(input) + #define LIL_GET_HDRPDATA(input,fd) #define LIL_HDRP_DEEXPOSURE(col) #define LIL_HDRP_INVDEEXPOSURE(col) @@ -566,10 +595,17 @@ float3 lilHeadDirection(float3 positionWS) lilGetEnvReflection(viewDirection,normalDirection,perceptualRoughness,positionWS) // Fog - #define LIL_FOG_COORDS(idx) UNITY_FOG_COORDS(idx) - #define LIL_TRANSFER_FOG(i,o) UNITY_TRANSFER_FOG(o,i.positionCS) - #define LIL_APPLY_FOG(col,fogCoord) UNITY_APPLY_FOG(fogCoord,col) - #define LIL_APPLY_FOG_COLOR(col,fogCoord,fogColor) UNITY_APPLY_FOG_COLOR(fogCoord,col,fogColor) + #define LIL_APPLY_FOG_BASE(col,fogCoord) UNITY_FOG_LERP_COLOR(col,unity_FogColor,fogCoord) + #define LIL_APPLY_FOG_COLOR_BASE(col,fogCoord,fogColor) UNITY_FOG_LERP_COLOR(col,fogColor,fogCoord) + float lilCalcFogFactor(float depth) + { + #if defined(FOG_LINEAR) || defined(FOG_EXP) || defined(FOG_EXP2) + UNITY_CALC_FOG_FACTOR(depth); + return unityFogFactor; + #else + return 1.0; + #endif + } // Meta #define UnpackNormalScale(normal,scale) UnpackScaleNormal(normal,scale) @@ -704,13 +740,11 @@ float3 lilHeadDirection(float3 positionWS) return lightLoopContext; } - #define LIL_GET_HDRPDATA(input) \ - uint renderingLayers = lilGetRenderingLayer(); \ - uint featureFlags = LIGHT_FEATURE_MASK_FLAGS_OPAQUE; \ - uint2 tileIndex = uint2(0,0); \ - float4 positionSS = input.positionCS; \ - PositionInputs posInput = GetPositionInput(positionSS.xy, _ScreenSize.zw, positionSS.z, positionSS.w, input.positionWS, tileIndex); \ - input.positionWS = lilToAbsolutePositionWS(input.positionWS) + #define LIL_GET_HDRPDATA(input,fd) \ + fd.renderingLayers = lilGetRenderingLayer(); \ + fd.featureFlags = LIGHT_FEATURE_MASK_FLAGS_OPAQUE; \ + fd.tileIndex = uint2(0,0); \ + PositionInputs posInput = GetPositionInput(input.positionCS.xy, _ScreenSize.zw, input.positionCS.z, input.positionCS.w, input.positionWS, fd.tileIndex) //------------------------------------------------------------------------------------------------------------------------------ // Direction Light @@ -1098,7 +1132,7 @@ float3 lilHeadDirection(float3 positionWS) #define LIL_SHADOW_COORDS(idx) #define LIL_TRANSFER_SHADOW(vi,uv,o) #if defined(LIL_USE_SHADOW) - #define LIL_LIGHT_ATTENUATION(atten,i) atten = lilGetDirectionalShadow(posInput, i.normalWS, featureFlags) + #define LIL_LIGHT_ATTENUATION(atten,i) atten = lilGetDirectionalShadow(posInput, i.normalWS, fd.featureFlags) #else #define LIL_LIGHT_ATTENUATION(atten,i) #endif @@ -1124,29 +1158,47 @@ float3 lilHeadDirection(float3 positionWS) // Lightmap #define LIL_DECODE_LIGHTMAP(lm) DecodeLightmap(lm, float4(LIGHTMAP_HDR_MULTIPLIER,LIGHTMAP_HDR_EXPONENT,0.0,0.0)) - #define LIL_DECODE_DYNAMICLIGHTMAP(lm) DecodeLightmap(lm, float4(LIGHTMAP_HDR_MULTIPLIER,LIGHTMAP_HDR_EXPONENT,0.0,0.0)) + #define LIL_DECODE_DYNAMICLIGHTMAP(lm) lm.rgb // Environment reflection #define LIL_GET_ENVIRONMENT_REFLECTION(viewDirection,normalDirection,perceptualRoughness,positionWS) \ - lilGetReflectionSum(viewDirection,normalDirection,perceptualRoughness,posInput,renderingLayers,featureFlags) + lilGetReflectionSum(viewDirection,normalDirection,perceptualRoughness,posInput,fd.renderingLayers,fd.featureFlags) // Fog - #define LIL_FOG_COORDS(idx) - #define LIL_TRANSFER_FOG(i,o) - #define LIL_APPLY_FOG(col,fogCoord) col = EvaluateAtmosphericScattering(posInput, viewDirection, col) - #define LIL_APPLY_FOG_COLOR(col,fogCoord,fogColor) col = EvaluateAtmosphericScattering(posInput, viewDirection, col) -#else - // HDRP Data - uint lilGetRenderingLayer() + #define LIL_APPLY_FOG_BASE(col,fogCoord) col = EvaluateAtmosphericScattering(posInput, fd.V, col) + #define LIL_APPLY_FOG_COLOR_BASE(col,fogCoord,fogColor) col = EvaluateAtmosphericScattering(posInput, fd.V, col) + float lilCalcFogFactor(float depth) { - return 0; + return 0.0; } - #define LIL_GET_HDRPDATA(input) +#else + // Support for old version + // HDRP Data + #if VERSION_GREATER_EQUAL(12, 0) + uint lilGetRenderingLayer() + { + #if defined(_LIGHT_LAYERS) + return (asuint(unity_RenderingLayer.x) & RENDERING_LIGHT_LAYERS_MASK) >> RENDERING_LIGHT_LAYERS_MASK_SHIFT; + #else + return DEFAULT_LIGHT_LAYERS; + #endif + } + #else + uint lilGetRenderingLayer() + { + return 0; + } + #endif + #define LIL_GET_HDRPDATA(input,fd) #define LIL_HDRP_DEEXPOSURE(col) #define LIL_HDRP_INVDEEXPOSURE(col) // Main light - #define LIL_MAINLIGHT_COLOR _MainLightColor.rgb + #if VERSION_GREATER_EQUAL(12, 0) && defined(_LIGHT_LAYERS) + #define LIL_MAINLIGHT_COLOR ((_MainLightLayerMask & lilGetRenderingLayer()) != 0 ? _MainLightColor.rgb : 0.0) + #else + #define LIL_MAINLIGHT_COLOR _MainLightColor.rgb + #endif #define LIL_MAINLIGHT_DIRECTION _MainLightPosition.xyz // Shadow @@ -1210,15 +1262,47 @@ float3 lilHeadDirection(float3 positionWS) float3 lilGetAdditionalLights(float3 positionWS) { float3 additionalLightColor = 0.0; + uint renderingLayers = lilGetRenderingLayer(); #if defined(_ADDITIONAL_LIGHTS) || defined(_ADDITIONAL_LIGHTS_VERTEX) uint lightsCount = GetAdditionalLightsCount(); - for (uint lightIndex = 0; lightIndex < lightsCount; lightIndex++) - { + #if defined(USE_CLUSTERED_LIGHTING) && USE_CLUSTERED_LIGHTING + ClusteredLightLoop cll = ClusteredLightLoopInit(positionSS, positionWS); + while(ClusteredLightLoopNextWord(cll)) + { + while(ClusteredLightLoopNextLight(cll)) + { + uint lightIndex = ClusteredLightLoopGetLightIndex(cll); + #elif defined(_USE_WEBGL1_LIGHTS) && _USE_WEBGL1_LIGHTS + for(uint lightIndex = 0; lightIndex < _WEBGL1_MAX_LIGHTS; lightIndex++) + { + if(lightIndex >= lightsCount) break; + #else + for(uint lightIndex = 0; lightIndex < lightsCount; lightIndex++) + { + #endif + Light light = GetAdditionalLight(lightIndex, positionWS); + #if VERSION_GREATER_EQUAL(12, 0) + if((light.layerMask & renderingLayers) != 0) + #endif + additionalLightColor += light.color * light.distanceAttenuation; + } + + #if defined(USE_CLUSTERED_LIGHTING) && USE_CLUSTERED_LIGHTING + } + #endif + #endif + + #if defined(_ADDITIONAL_LIGHTS) && defined(USE_CLUSTERED_LIGHTING) && USE_CLUSTERED_LIGHTING + for(uint lightIndex = 0; lightIndex < min(_AdditionalLightsDirectionalCount, MAX_VISIBLE_LIGHTS); lightIndex++) + { + Light light = GetAdditionalLight(lightIndex, inputData, shadowMask, aoFactor); + #if VERSION_GREATER_EQUAL(12, 0) + if((light.layerMask & renderingLayers) != 0) + #endif additionalLightColor += light.color * light.distanceAttenuation; } - additionalLightColor = saturate(additionalLightColor); #endif return additionalLightColor; @@ -1226,17 +1310,19 @@ float3 lilHeadDirection(float3 positionWS) // Lightmap #define LIL_DECODE_LIGHTMAP(lm) DecodeLightmap(lm, float4(LIGHTMAP_HDR_MULTIPLIER,LIGHTMAP_HDR_EXPONENT,0.0,0.0)) - #define LIL_DECODE_DYNAMICLIGHTMAP(lm) DecodeLightmap(lm, float4(LIGHTMAP_HDR_MULTIPLIER,LIGHTMAP_HDR_EXPONENT,0.0,0.0)) + #define LIL_DECODE_DYNAMICLIGHTMAP(lm) lm.rgb // Environment reflection #define LIL_GET_ENVIRONMENT_REFLECTION(viewDirection,normalDirection,perceptualRoughness,positionWS) \ GlossyEnvironmentReflection(reflect(-viewDirection,normalDirection), perceptualRoughness, 1.0) // Fog - #define LIL_FOG_COORDS(idx) float fogCoord : TEXCOORD##idx; - #define LIL_TRANSFER_FOG(i,o) o.fogCoord = ComputeFogFactor(i.positionCS.z) - #define LIL_APPLY_FOG(col,fogCoord) col.rgb = MixFog(col.rgb,fogCoord) - #define LIL_APPLY_FOG_COLOR(col,fogCoord,fogColor) col.rgb = MixFogColor(col.rgb,fogColor.rgb,fogCoord) + #define LIL_APPLY_FOG_BASE(col,fogCoord) col.rgb = MixFog(col.rgb,fogCoord) + #define LIL_APPLY_FOG_COLOR_BASE(col,fogCoord,fogColor) col.rgb = MixFogColor(col.rgb,fogColor.rgb,fogCoord) + float lilCalcFogFactor(float depth) + { + return ComputeFogFactor(depth); + } #endif // Meta @@ -1303,21 +1389,51 @@ float3 lilHeadDirection(float3 positionWS) #define LIL_SHADOWMAP_SAMP samplerunity_ShadowMasks #define LIL_LIGHTMAP_TEX unity_Lightmaps #define LIL_LIGHTMAP_SAMP samplerunity_Lightmaps - #define LIL_DYNAMICLIGHTMAP_TEX unity_DynamicLightmap - #define LIL_DYNAMICLIGHTMAP_SAMP samplerunity_DynamicLightmap - #define LIL_DIRLIGHTMAP_TEX unity_LightmapsInd + #define LIL_LIGHTMAP_DIR_TEX unity_LightmapsInd #define LIL_SAMPLE_LIGHTMAP(tex,samp,uv) LIL_SAMPLE_2D_ARRAY(tex,samp,uv,unity_LightmapIndex.x) #else #define LIL_SHADOWMAP_TEX unity_ShadowMask #define LIL_SHADOWMAP_SAMP samplerunity_ShadowMask #define LIL_LIGHTMAP_TEX unity_Lightmap #define LIL_LIGHTMAP_SAMP samplerunity_Lightmap - #define LIL_DYNAMICLIGHTMAP_TEX unity_DynamicLightmap - #define LIL_DYNAMICLIGHTMAP_SAMP samplerunity_DynamicLightmap - #define LIL_DIRLIGHTMAP_TEX unity_LightmapInd + #define LIL_LIGHTMAP_DIR_TEX unity_LightmapInd #define LIL_SAMPLE_LIGHTMAP(tex,samp,uv) LIL_SAMPLE_2D(tex,samp,uv) #endif +#define LIL_DYNAMICLIGHTMAP_TEX unity_DynamicLightmap +#define LIL_DYNAMICLIGHTMAP_SAMP samplerunity_DynamicLightmap +#define LIL_DYNAMICLIGHTMAP_DIR_TEX unity_DynamicDirectionality + +float3 lilGetLightMapColor(float2 uv1, float2 uv2) +{ + float3 outCol = 0; + #if defined(LIL_USE_LIGHTMAP) + float2 lightmapUV = uv1 * unity_LightmapST.xy + unity_LightmapST.zw; + float4 lightmap = LIL_SAMPLE_LIGHTMAP(LIL_LIGHTMAP_TEX, LIL_LIGHTMAP_SAMP, lightmapUV); + outCol += LIL_DECODE_LIGHTMAP(lightmap); + #endif + #if defined(LIL_USE_DYNAMICLIGHTMAP) + float2 dynlightmapUV = uv2 * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; + float4 dynlightmap = LIL_SAMPLE_2D(LIL_DYNAMICLIGHTMAP_TEX, LIL_DYNAMICLIGHTMAP_SAMP, dynlightmapUV); + outCol += LIL_DECODE_DYNAMICLIGHTMAP(dynlightmap); + #endif + return outCol; +} + +float3 lilGetLightMapDirection(float2 uv) +{ + float3 lightmapDir = 0.0; + #if defined(LIL_USE_LIGHTMAP) && defined(LIL_USE_DIRLIGHTMAP) + float4 lightmapDirection = LIL_SAMPLE_LIGHTMAP(LIL_DIRLIGHTMAP_TEX, LIL_LIGHTMAP_SAMP, uv); + lightmapDir = lightmapDirection.xyz * 2.0 - 1.0; + #endif + #if defined(LIL_USE_DYNAMICLIGHTMAP) && defined(LIL_USE_DIRLIGHTMAP) + float4 lightmapDirection = LIL_SAMPLE_LIGHTMAP(LIL_DYNAMICLIGHTMAP_DIR_TEX, LIL_DYNAMICLIGHTMAP_SAMP, uv); + lightmapDir = lightmapDirection.xyz * 2.0 - 1.0; + #endif + return lightmapDir; +} + // Main Light Coords #if defined(LIL_PASS_FORWARDADD) #define LIL_LIGHTCOLOR_COORDS(idx) @@ -1395,39 +1511,39 @@ struct lilLightData // Main Light in PS (Color / Direction / Attenuation) #if defined(LIL_PASS_FORWARDADD) // Point Light & Spot Light (ForwardAdd) - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightDirection = lilGetLightDirection(input.positionWS); \ - lightColor = saturate(LIL_MAINLIGHT_COLOR * atten); \ - lightColor = lerp(lightColor, lilGray(lightColor), _MonochromeLighting); \ - lightColor = lerp(lightColor, 0.0, _AsUnlit) + ld = lilGetLightDirection(input.positionWS); \ + lc = saturate(LIL_MAINLIGHT_COLOR * atten); \ + lc = lerp(lc, lilGray(lc), _MonochromeLighting); \ + lc = lerp(lc, 0.0, _AsUnlit) #elif defined(LIL_HDRP) && defined(LIL_USE_LIGHTMAP) // HDRP with lightmap - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightColor = input.lightColor; \ - float3 lightmapColor = lilGetLightMapColor(input.uv1); \ - lightColor += lightmapColor * GetCurrentExposureMultiplier(); \ - LIL_CORRECT_LIGHTCOLOR_PS(lightColor) + lc = input.lightColor; \ + float3 lightmapColor = lilGetLightMapColor(fd.uv1,fd.uv2); \ + lc += lightmapColor * GetCurrentExposureMultiplier(); \ + LIL_CORRECT_LIGHTCOLOR_PS(lc) #elif defined(LIL_USE_LIGHTMAP) && defined(LIL_LIGHTMODE_SHADOWMASK) // Mixed Lightmap (Shadowmask) - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightColor = input.lightColor; \ - float3 lightmapColor = lilGetLightMapColor(input.uv1); \ - lightColor = max(lightColor, lightmapColor); \ - LIL_CORRECT_LIGHTCOLOR_PS(lightColor); \ - atten = min(atten, LIL_SAMPLE_LIGHTMAP(LIL_SHADOWMAP_TEX,LIL_LIGHTMAP_SAMP,input.uv1).r) + lc = input.lightColor; \ + float3 lightmapColor = lilGetLightMapColor(fd.uv1,fd.uv2); \ + lc = max(lc, lightmapColor); \ + LIL_CORRECT_LIGHTCOLOR_PS(lc); \ + atten = min(atten, LIL_SAMPLE_LIGHTMAP(LIL_SHADOWMAP_TEX,LIL_LIGHTMAP_SAMP,fd.uv1).r) #elif defined(LIL_USE_LIGHTMAP) && defined(LIL_LIGHTMODE_SUBTRACTIVE) && defined(LIL_USE_DYNAMICLIGHTMAP) // Mixed Lightmap (Subtractive) // Use Lightmap as Shadowmask #undef LIL_USE_DYNAMICLIGHTMAP - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightColor = input.lightColor; \ - float3 lightmapColor = lilGetLightMapColor(input.uv1); \ - lightColor = max(lightColor, lightmapColor); \ - LIL_CORRECT_LIGHTCOLOR_PS(lightColor); \ + lc = input.lightColor; \ + float3 lightmapColor = lilGetLightMapColor(fd.uv1,fd.uv2); \ + lc = max(lc, lightmapColor); \ + LIL_CORRECT_LIGHTCOLOR_PS(lc); \ float3 lightmapShadowThreshold = LIL_MAINLIGHT_COLOR*0.5; \ float3 lightmapS = (lightmapColor - lightmapShadowThreshold) / (LIL_MAINLIGHT_COLOR - lightmapShadowThreshold); \ float lightmapAttenuation = saturate((lightmapS.r+lightmapS.g+lightmapS.b)/3.0); \ @@ -1435,69 +1551,86 @@ struct lilLightData #elif defined(LIL_USE_LIGHTMAP) && defined(LIL_LIGHTMODE_SUBTRACTIVE) // Mixed Lightmap (Subtractive) // Use Lightmap as Shadowmask - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightColor = input.lightColor; \ - float3 lightmapColor = lilGetLightMapColor(input.uv1); \ - lightColor = max(lightColor, lightmapColor); \ - LIL_CORRECT_LIGHTCOLOR_PS(lightColor); \ + lc = input.lightColor; \ + float3 lightmapColor = lilGetLightMapColor(fd.uv1,fd.uv2); \ + lc = max(lc, lightmapColor); \ + LIL_CORRECT_LIGHTCOLOR_PS(lc); \ float3 lightmapS = (lightmapColor - lilShadeSH9(input.normalWS)) / LIL_MAINLIGHT_COLOR; \ float lightmapAttenuation = saturate((lightmapS.r+lightmapS.g+lightmapS.b)/3.0); \ atten = min(atten, lightmapAttenuation) #elif defined(LIL_USE_LIGHTMAP) && defined(LIL_USE_DIRLIGHTMAP) // Lightmap (Directional) - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightColor = input.lightColor; \ - float3 lightmapColor = lilGetLightMapColor(input.uv1); \ + lc = input.lightColor; \ + float3 lightmapColor = lilGetLightMapColor(fd.uv1,fd.uv2); \ float3 lightmapDirection = lilGetLightMapDirection(input.uv1); \ - lightColor = saturate(lightColor + lightmapColor); \ - LIL_CORRECT_LIGHTCOLOR_PS(lightColor); \ - lightDirection = normalize(lightDirection + lightmapDirection * lilLuminance(lightmapColor)) + lc = saturate(lc + lightmapColor); \ + LIL_CORRECT_LIGHTCOLOR_PS(lc); \ + ld = normalize(ld + lightmapDirection * lilLuminance(lightmapColor)) #elif defined(LIL_USE_LIGHTMAP) && defined(LIL_USE_SHADOW) // Mixed Lightmap (Baked Indirect) with shadow - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightColor = LIL_MAINLIGHT_COLOR; \ - float3 lightmapColor = lilGetLightMapColor(input.uv1); \ - lightColor = saturate(lightColor + max(lightmapColor,lilGetSHToon(_LightDirectionOverride))); \ - LIL_CORRECT_LIGHTCOLOR_PS(lightColor) + lc = LIL_MAINLIGHT_COLOR; \ + float3 lightmapColor = lilGetLightMapColor(fd.uv1,fd.uv2); \ + lc = saturate(lc + max(lightmapColor,lilGetSHToon(_LightDirectionOverride))); \ + LIL_CORRECT_LIGHTCOLOR_PS(lc) #elif defined(LIL_USE_LIGHTMAP) && defined(LIL_USE_DYNAMICLIGHTMAP) // Mixed Lightmap (Baked Indirect) or Lightmap (Non-Directional) #undef LIL_USE_DYNAMICLIGHTMAP - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightColor = input.lightColor; \ - float3 lightmapColor = lilGetLightMapColor(input.uv1); \ - lightColor = saturate(lightColor + lightmapColor); \ - LIL_CORRECT_LIGHTCOLOR_PS(lightColor) + lc = input.lightColor; \ + float3 lightmapColor = lilGetLightMapColor(fd.uv1,fd.uv2); \ + lc = saturate(lc + lightmapColor); \ + LIL_CORRECT_LIGHTCOLOR_PS(lc) #elif defined(LIL_USE_LIGHTMAP) // Mixed Lightmap (Baked Indirect) or Lightmap (Non-Directional) - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightColor = LIL_MAINLIGHT_COLOR; \ - float3 lightmapColor = lilGetLightMapColor(input.uv1); \ - lightColor = saturate(lightColor + lightmapColor); \ - LIL_CORRECT_LIGHTCOLOR_PS(lightColor) + lc = LIL_MAINLIGHT_COLOR; \ + float3 lightmapColor = lilGetLightMapColor(fd.uv1,fd.uv2); \ + lc = saturate(lc + lightmapColor); \ + LIL_CORRECT_LIGHTCOLOR_PS(lc) #else // Realtime - #define LIL_GET_MAINLIGHT(input,lightColor,lightDirection,atten) \ + #define LIL_GET_MAINLIGHT(input,lc,ld,atten) \ LIL_LIGHT_ATTENUATION(atten, input); \ - lightColor = input.lightColor; + lc = input.lightColor; +#endif + +// Additional Light VS and Fog +#if defined(LIL_USE_ADDITIONALLIGHT_VS) + #define LIL_VERTEXLIGHT_FOG_TYPE float4 + #define LIL_VERTEXLIGHT_FOG_COORDS(idx) float4 vlf : TEXCOORD##idx; + #define LIL_TRANSFER_FOG(i,o) o.vlf.w = lilCalcFogFactor(i.positionCS.z) + #define LIL_APPLY_FOG(col,i) LIL_APPLY_FOG_BASE(col,i.vlf.w) + #define LIL_APPLY_FOG_COLOR(col,i,fogColor) LIL_APPLY_FOG_COLOR_BASE(col,i.vlf.w,fogColor) +#elif defined(LIL_HDRP) + #define LIL_VERTEXLIGHT_FOG_TYPE + #define LIL_VERTEXLIGHT_FOG_COORDS(idx) + #define LIL_TRANSFER_FOG(i,o) + #define LIL_APPLY_FOG(col,i) LIL_APPLY_FOG_BASE(col,i.vlf) + #define LIL_APPLY_FOG_COLOR(col,i,fogColor) LIL_APPLY_FOG_COLOR_BASE(col,i.vlf,fogColor) +#else + #define LIL_VERTEXLIGHT_FOG_TYPE float + #define LIL_VERTEXLIGHT_FOG_COORDS(idx) float vlf : TEXCOORD##idx; + #define LIL_TRANSFER_FOG(i,o) o.vlf = 1.0 + #define LIL_APPLY_FOG(col,i) LIL_APPLY_FOG_BASE(col,i.vlf) + #define LIL_APPLY_FOG_COLOR(col,i,fogColor) LIL_APPLY_FOG_COLOR_BASE(col,i.vlf,fogColor) #endif -// Additional Light VS -#if defined(LIL_USE_ADDITIONALLIGHT_VS) && (defined(VERTEXLIGHT_ON) || defined(LIL_TESSELLATION) || !defined(LIL_BRP)) - #define LIL_VERTEXLIGHT_COORDS(idx) float3 vl : TEXCOORD##idx; +#if defined(LIL_USE_ADDITIONALLIGHT_VS) && (defined(VERTEXLIGHT_ON) || !defined(LIL_BRP)) #define LIL_CALC_VERTEXLIGHT(i,o) \ - o.vl = lilGetAdditionalLights(i.positionWS); \ - o.vl = lerp(o.vl, lilGray(o.vl), _MonochromeLighting); \ - o.vl = lerp(o.vl, 0.0, _AsUnlit) + o.vlf.rgb = lilGetAdditionalLights(i.positionWS); \ + o.vlf.rgb = lerp(o.vlf.rgb, lilGray(o.vlf.rgb), _MonochromeLighting); \ + o.vlf.rgb = lerp(o.vlf.rgb, 0.0, _AsUnlit) #elif defined(LIL_USE_ADDITIONALLIGHT_VS) - #define LIL_VERTEXLIGHT_COORDS(idx) float3 vl : TEXCOORD##idx; #define LIL_CALC_VERTEXLIGHT(i,o) #else - #define LIL_VERTEXLIGHT_COORDS(idx) #define LIL_CALC_VERTEXLIGHT(i,o) #endif @@ -1509,19 +1642,45 @@ struct lilLightData o = lerp(o, 0.0, _AsUnlit) #elif defined(LIL_USE_ADDITIONALLIGHT_VS) #define LIL_GET_ADDITIONALLIGHT(i,o) \ - o = i.vl + o = i.vlf.rgb #else #define LIL_GET_ADDITIONALLIGHT(i,o) \ o = 0 #endif +// Fragment Macro +#define LIL_GET_LIGHTING_DATA(input,fd) \ + LIL_GET_MAINLIGHT(input, fd.lightColor, fd.L, fd.attenuation); \ + LIL_GET_ADDITIONALLIGHT(input, fd.addLightColor); \ + fd.invLighting = saturate((1.0 - fd.lightColor) * sqrt(fd.lightColor)) + +#define LIL_GET_POSITION_WS_DATA(input,fd) \ + fd.depth = length(lilHeadDirection(fd.positionWS)); \ + fd.V = normalize(lilViewDirection(fd.positionWS)); \ + fd.headV = normalize(lilHeadDirection(fd.positionWS)); \ + fd.vl = dot(fd.V, fd.L); \ + fd.hl = dot(fd.headV, fd.L); \ + fd.uvPanorama = lilGetPanoramaUV(fd.V) + +#define LIL_GET_TBN_DATA(input,fd) \ + float3 bitangentWS = cross(input.normalWS, input.tangentWS.xyz) * (input.tangentWS.w * LIL_NEGATIVE_SCALE); \ + fd.TBN = float3x3(input.tangentWS.xyz, bitangentWS, input.normalWS) + +#define LIL_GET_PARALLAX_DATA(input,fd) \ + fd.parallaxViewDirection = mul(fd.TBN, fd.V); \ + fd.parallaxOffset = (fd.parallaxViewDirection.xy / (fd.parallaxViewDirection.z+0.5)) + // Main Color & Emission -#if defined(LIL_WITHOUT_ANIMATION) +#if defined(LIL_BAKER) #define LIL_GET_SUBTEX(tex,uv) lilGetSubTexWithoutAnimation(Exists##tex, tex, tex##_ST, tex##Angle, uv, 1, tex##IsDecal, tex##IsLeftOnly, tex##IsRightOnly, tex##ShouldCopy, tex##ShouldFlipMirror, tex##ShouldFlipCopy, tex##IsMSDF, isRightHand LIL_SAMP_IN(sampler##tex)) #define LIL_GET_EMITEX(tex,uv) LIL_SAMPLE_2D(tex, sampler##tex, lilCalcUVWithoutAnimation(uv, tex##_ST, tex##_ScrollRotate)) #define LIL_GET_EMIMASK(tex,uv) LIL_SAMPLE_2D(tex, sampler_MainTex, lilCalcUVWithoutAnimation(uv, tex##_ST, tex##_ScrollRotate)) +#elif defined(LIL_WITHOUT_ANIMATION) + #define LIL_GET_SUBTEX(tex,uv) lilGetSubTexWithoutAnimation(Exists##tex, tex, tex##_ST, tex##Angle, uv, 1, tex##IsDecal, tex##IsLeftOnly, tex##IsRightOnly, tex##ShouldCopy, tex##ShouldFlipMirror, tex##ShouldFlipCopy, tex##IsMSDF, fd.isRightHand LIL_SAMP_IN(sampler##tex)) + #define LIL_GET_EMITEX(tex,uv) LIL_SAMPLE_2D(tex, sampler##tex, lilCalcUVWithoutAnimation(uv, tex##_ST, tex##_ScrollRotate)) + #define LIL_GET_EMIMASK(tex,uv) LIL_SAMPLE_2D(tex, sampler_MainTex, lilCalcUVWithoutAnimation(uv, tex##_ST, tex##_ScrollRotate)) #else - #define LIL_GET_SUBTEX(tex,uv) lilGetSubTex(Exists##tex, tex, tex##_ST, tex##Angle, uv, nv, tex##IsDecal, tex##IsLeftOnly, tex##IsRightOnly, tex##ShouldCopy, tex##ShouldFlipMirror, tex##ShouldFlipCopy, tex##IsMSDF, isRightHand, tex##DecalAnimation, tex##DecalSubParam LIL_SAMP_IN(sampler##tex)) + #define LIL_GET_SUBTEX(tex,uv) lilGetSubTex(Exists##tex, tex, tex##_ST, tex##Angle, uv, fd.nv, tex##IsDecal, tex##IsLeftOnly, tex##IsRightOnly, tex##ShouldCopy, tex##ShouldFlipMirror, tex##ShouldFlipCopy, tex##IsMSDF, fd.isRightHand, tex##DecalAnimation, tex##DecalSubParam LIL_SAMP_IN(sampler##tex)) #define LIL_GET_EMITEX(tex,uv) LIL_SAMPLE_2D(tex, sampler##tex, lilCalcUV(uv, tex##_ST, tex##_ScrollRotate)) #define LIL_GET_EMIMASK(tex,uv) LIL_SAMPLE_2D(tex, sampler_MainTex, lilCalcUV(uv, tex##_ST, tex##_ScrollRotate)) #endif diff --git a/Assets/lilToon/Shader/Includes/lil_common_vert.hlsl b/Assets/lilToon/Shader/Includes/lil_common_vert.hlsl index eada1f73..73e5d7f3 100644 --- a/Assets/lilToon/Shader/Includes/lil_common_vert.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_common_vert.hlsl @@ -61,8 +61,15 @@ LIL_V2F_TYPE vert(appdata input) //------------------------------------------------------------------------------------------------------------------------------ // Invisible - LIL_BRANCH - if(_Invisible) return LIL_V2F_OUT; + #if defined(LIL_TESSELLATION) + LIL_BRANCH + if(!_Invisible) + { + #else + // In the tessellation shader this gives a warning + LIL_BRANCH + if(_Invisible) return LIL_V2F_OUT; + #endif //------------------------------------------------------------------------------------------------------------------------------ // Single Pass Instanced rendering @@ -72,7 +79,7 @@ LIL_V2F_TYPE vert(appdata input) //------------------------------------------------------------------------------------------------------------------------------ // UV - float2 uvMain = lilCalcUV(input.uv, _MainTex_ST); + float2 uvMain = lilCalcUV(input.uv0, _MainTex_ST); //------------------------------------------------------------------------------------------------------------------------------ // Vertex Modification @@ -148,11 +155,25 @@ LIL_V2F_TYPE vert(appdata input) // UV #if defined(LIL_V2F_TEXCOORD0) - LIL_V2F_OUT_BASE.uv = input.uv; + LIL_V2F_OUT_BASE.uv0 = input.uv0; #endif #if defined(LIL_V2F_TEXCOORD1) LIL_V2F_OUT_BASE.uv1 = input.uv1; #endif + #if defined(LIL_V2F_TEXCOORD2) + LIL_V2F_OUT_BASE.uv2 = input.uv2; + #endif + #if defined(LIL_V2F_TEXCOORD3) + LIL_V2F_OUT_BASE.uv3 = input.uv3; + #endif + #if defined(LIL_V2F_PACKED_TEXCOORD01) + LIL_V2F_OUT_BASE.uv01.xy = input.uv0; + LIL_V2F_OUT_BASE.uv01.zw = input.uv1; + #endif + #if defined(LIL_V2F_PACKED_TEXCOORD23) + LIL_V2F_OUT_BASE.uv23.xy = input.uv2; + LIL_V2F_OUT_BASE.uv23.zw = input.uv3; + #endif #if defined(LIL_V2F_UVMAT) LIL_V2F_OUT_BASE.uvMat = lilCalcMatCapUV(input.uv1, vertexNormalInput.normalWS, viewDirection, headDirection, _MatCapTex_ST, _MatCapBlendUV1.xy, _MatCapZRotCancel, _MatCapPerspective, _MatCapVRParallaxStrength); #endif @@ -167,9 +188,6 @@ LIL_V2F_TYPE vert(appdata input) #if defined(LIL_V2F_POSITION_WS) LIL_V2F_OUT_BASE.positionWS = vertexInput.positionWS; #endif - #if defined(LIL_V2F_POSITION_SS) - LIL_V2F_OUT_BASE.positionSS = vertexInput.positionSS; - #endif // Normal #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_NORMALIZE_NORMAL_IN_VS) && !defined(SHADER_QUALITY_LOW) @@ -180,9 +198,6 @@ LIL_V2F_TYPE vert(appdata input) #if defined(LIL_V2F_TANGENT_WS) LIL_V2F_OUT_BASE.tangentWS = float4(vertexNormalInput.tangentWS, input.tangentOS.w); #endif - #if defined(LIL_V2F_BITANGENT_WS) - LIL_V2F_OUT_BASE.bitangentWS = vertexNormalInput.bitangentWS; - #endif LIL_CUSTOM_VERT_COPY @@ -190,10 +205,9 @@ LIL_V2F_TYPE vert(appdata input) // Meta #if defined(LIL_PASS_META_INCLUDED) && !defined(LIL_HDRP) LIL_TRANSFER_METAPASS(input,LIL_V2F_OUT_BASE); - LIL_V2F_OUT_BASE.uv = input.uv; #if defined(EDITOR_VISUALIZATION) if (unity_VisualizationMode == EDITORVIZ_TEXTURE) - LIL_V2F_OUT_BASE.vizUV = UnityMetaVizUV(unity_EditorViz_UVIndex, input.uv, input.uv1, input.uv2, unity_EditorViz_Texture_ST); + LIL_V2F_OUT_BASE.vizUV = UnityMetaVizUV(unity_EditorViz_UVIndex, input.uv0, input.uv1, input.uv2, unity_EditorViz_Texture_ST); else if (unity_VisualizationMode == EDITORVIZ_SHOWLIGHTMASK) { LIL_V2F_OUT_BASE.vizUV = input.uv1 * unity_LightmapST.xy + unity_LightmapST.zw; @@ -204,7 +218,8 @@ LIL_V2F_TYPE vert(appdata input) //------------------------------------------------------------------------------------------------------------------------------ // Fog & Lighting - LIL_GET_HDRPDATA(vertexInput); + lilFragData fd = lilInitFragData(); + LIL_GET_HDRPDATA(vertexInput,fd); #if defined(LIL_V2F_LIGHTCOLOR) || defined(LIL_V2F_LIGHTDIRECTION) || defined(LIL_V2F_INDLIGHTCOLOR) LIL_CALC_MAINLIGHT(vertexInput, lightdataInput); #endif @@ -220,10 +235,8 @@ LIL_V2F_TYPE vert(appdata input) #if defined(LIL_V2F_SHADOW) LIL_TRANSFER_SHADOW(vertexInput, input.uv1, LIL_V2F_OUT_BASE); #endif - #if defined(LIL_V2F_FOG) + #if defined(LIL_V2F_VERTEXLIGHT_FOG) LIL_TRANSFER_FOG(vertexInput, LIL_V2F_OUT_BASE); - #endif - #if defined(LIL_V2F_VERTEXLIGHT) LIL_CALC_VERTEXLIGHT(vertexInput, LIL_V2F_OUT_BASE); #endif #if defined(LIL_V2F_SHADOW_CASTER) @@ -288,6 +301,10 @@ LIL_V2F_TYPE vert(appdata input) #endif #endif + #if defined(LIL_TESSELLATION) + } + #endif + return LIL_V2F_OUT; } diff --git a/Assets/lilToon/Shader/Includes/lil_common_vert_fur.hlsl b/Assets/lilToon/Shader/Includes/lil_common_vert_fur.hlsl index 2f51c30e..e64df97a 100644 --- a/Assets/lilToon/Shader/Includes/lil_common_vert_fur.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_common_vert_fur.hlsl @@ -46,7 +46,7 @@ v2g vert(appdata input) //------------------------------------------------------------------------------------------------------------------------------ // UV - float2 uvMain = lilCalcUV(input.uv, _MainTex_ST); + float2 uvMain = lilCalcUV(input.uv0, _MainTex_ST); //------------------------------------------------------------------------------------------------------------------------------ // Vertex Modification @@ -95,11 +95,25 @@ v2g vert(appdata input) output.positionWS = vertexInput.positionWS; #endif #if defined(LIL_V2G_TEXCOORD0) - output.uv = input.uv; + output.uv0 = input.uv0; #endif #if defined(LIL_V2G_TEXCOORD1) output.uv1 = input.uv1; #endif + #if defined(LIL_V2G_TEXCOORD2) + output.uv2 = input.uv2; + #endif + #if defined(LIL_V2G_TEXCOORD3) + output.uv3 = input.uv3; + #endif + #if defined(LIL_V2G_PACKED_TEXCOORD01) + output.uv01.xy = input.uv0; + output.uv01.zw = input.uv1; + #endif + #if defined(LIL_V2G_PACKED_TEXCOORD23) + output.uv23.xy = input.uv2; + output.uv23.zw = input.uv3; + #endif #if defined(LIL_V2G_NORMAL_WS) output.normalWS = vertexNormalInput.normalWS; #endif @@ -108,7 +122,8 @@ v2g vert(appdata input) //------------------------------------------------------------------------------------------------------------------------------ // Fog & Lighting - LIL_GET_HDRPDATA(vertexInput); + lilFragData fd = lilInitFragData(); + LIL_GET_HDRPDATA(vertexInput,fd); #if defined(LIL_V2F_LIGHTCOLOR) || defined(LIL_V2F_LIGHTDIRECTION) || defined(LIL_V2F_INDLIGHTCOLOR) LIL_CALC_MAINLIGHT(vertexInput, lightdataInput); #endif @@ -119,15 +134,13 @@ v2g vert(appdata input) output.lightDirection = lightdataInput.lightDirection; #endif #if defined(LIL_V2F_INDLIGHTCOLOR) - output.indLightColor = lightdataInput.indLightColor; + output.indLightColor = lightdataInput.indLightColor * _ShadowEnvStrength; #endif #if defined(LIL_V2G_SHADOW) LIL_TRANSFER_SHADOW(vertexInput, input.uv1, output); #endif - #if defined(LIL_V2G_FOG) + #if defined(LIL_V2G_VERTEXLIGHT_FOG) LIL_TRANSFER_FOG(vertexInput, output); - #endif - #if defined(LIL_V2G_VERTEXLIGHT) LIL_CALC_VERTEXLIGHT(vertexInput, output); #endif @@ -182,7 +195,7 @@ void geom(triangle v2g input[3], inout TriangleStream outStream) outputBase[i].previousPositionCS = mul(UNITY_MATRIX_PREV_VP, float4(input[i].previousPositionWS, 1.0)); #endif #if defined(LIL_V2F_TEXCOORD0) - outputBase[i].uv = input[i].uv; + outputBase[i].uv0 = input[i].uv0; #endif #if defined(LIL_V2F_NORMAL_WS) outputBase[i].normalWS = input[i].normalWS; @@ -229,19 +242,28 @@ void geom(triangle v2g input[3], inout TriangleStream outStream) float3 wpc = (input[0].positionWS +input[1].positionWS +input[2].positionWS) *0.333333333333; #endif #if defined(LIL_V2G_TEXCOORD0) - float2 uvc = (input[0].uv +input[1].uv +input[2].uv) *0.333333333333; + float2 uv0c = (input[0].uv0 +input[1].uv0 +input[2].uv0) *0.333333333333; #endif #if defined(LIL_V2G_TEXCOORD1) - float2 uv1c = (input[0].uv1 +input[1].uv1 +input[2].uv1) *0.333333333333; + float2 uv1c = (input[0].uv1 +input[1].uv1 +input[2].uv1) *0.333333333333; + #endif + #if defined(LIL_V2G_TEXCOORD2) + float2 uv1c = (input[0].uv2 +input[1].uv2 +input[2].uv2) *0.333333333333; + #endif + #if defined(LIL_V2G_TEXCOORD3) + float2 uv1c = (input[0].uv3 +input[1].uv3 +input[2].uv3) *0.333333333333; + #endif + #if defined(LIL_V2G_PACKED_TEXCOORD01) + float4 uv01c = (input[0].uv01 +input[1].uv01 +input[2].uv01) *0.333333333333; + #endif + #if defined(LIL_V2G_PACKED_TEXCOORD23) + float4 uv23c = (input[0].uv23 +input[1].uv23 +input[2].uv23) *0.333333333333; #endif #if defined(LIL_V2G_NORMAL_WS) float3 ndc = (input[0].normalWS +input[1].normalWS +input[2].normalWS) *0.333333333333; #endif - #if defined(LIL_V2G_FOG) && (defined(FOG_LINEAR) || defined(FOG_EXP) || defined(FOG_EXP2)) - float fcc = (input[0].fogCoord +input[1].fogCoord +input[2].fogCoord) *0.333333333333; - #endif - #if defined(LIL_V2G_VERTEXLIGHT) && defined(LIL_USE_VERTEXLIGHT) - float3 vlc = (input[0].vl +input[1].vl +input[2].vl) *0.333333333333; + #if defined(LIL_V2G_VERTEXLIGHT_FOG) && (defined(LIL_USE_ADDITIONALLIGHT_VS) || defined(FOG_LINEAR) || defined(FOG_EXP) || defined(FOG_EXP2)) + LIL_VERTEXLIGHT_FOG_TYPE vlfc = (input[0].vlf + input[1].vlf + input[2].vlf) * 0.333333333333; #endif #if defined(LIL_PASS_MOTIONVECTOR_INCLUDED) float3 pwpc = (input[0].previousPositionWS + input[1].previousPositionWS + input[2].previousPositionWS) *0.333333333333; @@ -269,21 +291,30 @@ void geom(triangle v2g input[3], inout TriangleStream outStream) int ii2 = ii==3 ? 0 : ii; // Common - float2 outUV = lerp(input[ii2].uv,uvc,lpmix); + float2 outUV = lerp(input[ii2].uv0,uv0c,lpmix); #if defined(LIL_V2F_TEXCOORD0) - output.uv = outUV; + output.uv0 = outUV; #endif #if defined(LIL_V2F_TEXCOORD1) output.uv1 = lerp(input[ii2].uv1,uv1c,lpmix); #endif + #if defined(LIL_V2F_TEXCOORD2) + output.uv2 = lerp(input[ii2].uv2,uv2c,lpmix); + #endif + #if defined(LIL_V2F_TEXCOORD3) + output.uv3 = lerp(input[ii2].uv3,uv3c,lpmix); + #endif + #if defined(LIL_V2F_PACKED_TEXCOORD01) + output.uv01 = lerp(input[ii2].uv01,uv01c,lpmix); + #endif + #if defined(LIL_V2F_PACKED_TEXCOORD23) + output.uv23 = lerp(input[ii2].uv23,uv23c,lpmix); + #endif #if defined(LIL_V2F_NORMAL_WS) output.normalWS = lerp(input[ii2].normalWS,ndc,lpmix); #endif - #if defined(LIL_V2F_FOG) && (defined(FOG_LINEAR) || defined(FOG_EXP) || defined(FOG_EXP2)) - output.fogCoord = lerp(input[ii2].fogCoord,fcc,lpmix); - #endif - #if defined(LIL_V2F_VERTEXLIGHT) && defined(LIL_USE_VERTEXLIGHT) - output.vl = lerp(input[ii2].vl,vlc,lpmix); + #if defined(LIL_V2G_VERTEXLIGHT_FOG) && (defined(LIL_USE_ADDITIONALLIGHT_VS) || defined(FOG_LINEAR) || defined(FOG_EXP) || defined(FOG_EXP2)) + output.vlf = lerp(input[ii2].vlf,vlfc,lpmix); #endif float3 fvmix = lerp(input[ii2].furVector,fvc,lpmix); diff --git a/Assets/lilToon/Shader/Includes/lil_pass_depthnormals.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_depthnormals.hlsl index 2f050e87..86e0269d 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_depthnormals.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_depthnormals.hlsl @@ -24,7 +24,7 @@ struct v2f float4 positionCS : SV_POSITION; float3 normalWS : TEXCOORD0; #if defined(LIL_V2F_TEXCOORD0) - float2 uv : TEXCOORD1; + float2 uv0 : TEXCOORD1; #endif #if defined(LIL_V2F_POSITION_OS) float3 positionOS : TEXCOORD2; @@ -42,7 +42,11 @@ struct v2f float4 frag(v2f input LIL_VFACE(facing)) : SV_Target { - LIL_VFACE_FALLBACK(facing); + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F + LIL_COPY_VFACE(fd.facing); LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); diff --git a/Assets/lilToon/Shader/Includes/lil_pass_depthonly.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_depthonly.hlsl index c8bac866..93044577 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_depthonly.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_depthonly.hlsl @@ -28,16 +28,16 @@ struct v2f { float4 positionCS : SV_POSITION; #if defined(LIL_V2F_TEXCOORD0) - float2 uv : TEXCOORD0; + float2 uv0 : TEXCOORD0; #endif #if defined(LIL_V2F_POSITION_OS) float3 positionOS : TEXCOORD1; #endif #if defined(LIL_V2F_NORMAL_WS) - float3 normalWS : TEXCOORD2; + float3 normalWS : TEXCOORD2; #endif #if defined(LIL_FUR) - float furLayer : TEXCOORD3; + float furLayer : TEXCOORD3; #endif LIL_CUSTOM_V2F_MEMBER(4,5,6,7,8,9,10,11) LIL_VERTEX_INPUT_INSTANCE_ID @@ -55,10 +55,10 @@ struct v2f struct v2g { float3 positionWS : TEXCOORD0; - float2 uv : TEXCOORD1; - float3 furVector : TEXCOORD2; + float2 uv0 : TEXCOORD1; + float3 furVector : TEXCOORD2; #if defined(LIL_V2G_NORMAL_WS) - float3 normalWS : TEXCOORD3; + float3 normalWS : TEXCOORD3; #endif LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO @@ -98,7 +98,11 @@ void frag(v2f input #endif ) { - LIL_VFACE_FALLBACK(facing); + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F + LIL_COPY_VFACE(fd.facing); LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); diff --git a/Assets/lilToon/Shader/Includes/lil_pass_forward_fakeshadow.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_forward_fakeshadow.hlsl index cceff617..573827e6 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_forward_fakeshadow.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_forward_fakeshadow.hlsl @@ -12,11 +12,11 @@ struct v2f { - float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; - LIL_FOG_COORDS(1) + float4 positionCS : SV_POSITION; + float2 uv0 : TEXCOORD0; + LIL_VERTEXLIGHT_FOG_COORDS(1) #if defined(LIL_HDRP) || defined(LIL_V2F_FORCE_POSITION_WS) - float3 positionWS : TEXCOORD2; + float3 positionWS : TEXCOORD2; #endif LIL_CUSTOM_V2F_MEMBER(3,4,5,6,7,8,9,10) LIL_VERTEX_INPUT_INSTANCE_ID @@ -48,7 +48,8 @@ v2f vert(appdata input) LIL_VERTEX_POSITION_INPUTS(input.positionOS, vertexInput); #if defined(LIL_HDRP) LIL_VERTEX_NORMAL_INPUTS(input.normalOS, vertexNormalInput); - LIL_GET_HDRPDATA(vertexInput); + lilFragData fd = lilInitFragData(); + LIL_GET_HDRPDATA(vertexInput,fd); float3 lightColor; float3 lightDirection; lilGetLightDirectionAndColor(lightDirection, lightColor, posInput); @@ -60,7 +61,7 @@ v2f vert(appdata input) float2 lightShift = mul((float3x3)LIL_MATRIX_VP, lightDirection * _FakeShadowVector.w).xy; output.positionCS = vertexInput.positionCS; output.positionCS.xy -= lightShift.xy; - output.uv = input.uv * _MainTex_ST.xy + _MainTex_ST.zw; + output.uv0 = input.uv0 * _MainTex_ST.xy + _MainTex_ST.zw; LIL_TRANSFER_FOG(vertexInput, output); return output; @@ -68,18 +69,24 @@ v2f vert(appdata input) float4 frag(v2f input) : SV_Target { + lilFragData fd = lilInitFragData(); + + fd.uv0 = input.uv0; + #if defined(LIL_HDRP) || defined(LIL_V2F_FORCE_POSITION_WS) + fd.positionWS = input.positionWS; + #endif LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - LIL_GET_HDRPDATA(input); + LIL_GET_HDRPDATA(input,fd); #if defined(LIL_HDRP) - float3 viewDirection = normalize(lilViewDirection(input.positionWS)); + fd.V = normalize(lilViewDirection(fd.positionWS)); #endif - float4 col = LIL_SAMPLE_2D(_MainTex, sampler_MainTex, input.uv); - col *= _Color; - LIL_HDRP_DEEXPOSURE(col); + fd.col = LIL_SAMPLE_2D(_MainTex, sampler_MainTex, fd.uv0); + fd.col *= _Color; + LIL_HDRP_DEEXPOSURE(fd.col); float4 fogColor = float4(1,1,1,1); - LIL_APPLY_FOG_COLOR(col, input.fogCoord, fogColor); - return col; + LIL_APPLY_FOG_COLOR(fd.col, input, fogColor); + return fd.col; } #endif \ No newline at end of file diff --git a/Assets/lilToon/Shader/Includes/lil_pass_forward_fur.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_forward_fur.hlsl index 838a52d4..67182014 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_forward_fur.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_forward_fur.hlsl @@ -6,6 +6,10 @@ //------------------------------------------------------------------------------------------------------------------------------ // Structure +#if !defined(LIL_CUSTOM_V2G_MEMBER) + #define LIL_CUSTOM_V2G_MEMBER(id0,id1,id2,id3,id4,id5,id6,id7) +#endif + #if !defined(LIL_CUSTOM_V2F_MEMBER) #define LIL_CUSTOM_V2F_MEMBER(id0,id1,id2,id3,id4,id5,id6,id7) #endif @@ -16,13 +20,9 @@ #if defined(LIL_V2G_FORCE_NORMAL_WS) || (!defined(LIL_PASS_FORWARDADD) && defined(LIL_SHOULD_NORMAL)) #define LIL_V2G_NORMAL_WS #endif -#if defined(LIL_V2G_FORCE_TEXCOORD1) || defined(LIL_USE_LIGHTMAP_UV) - #define LIL_V2G_TEXCOORD1 -#endif #if !defined(LIL_PASS_FORWARDADD) #define LIL_V2G_LIGHTCOLOR #define LIL_V2G_LIGHTDIRECTION - #define LIL_V2G_VERTEXLIGHT #if defined(LIL_FEATURE_SHADOW) #define LIL_V2G_INDLIGHTCOLOR #endif @@ -34,10 +34,6 @@ #define LIL_V2F_POSITION_CS #define LIL_V2F_TEXCOORD0 -#if defined(LIL_V2F_FORCE_TEXCOORD1) || defined(LIL_USE_LIGHTMAP_UV) - #define LIL_V2F_TEXCOORD1 -#endif - #if defined(LIL_V2F_FORCE_POSITION_WS) || defined(LIL_PASS_FORWARDADD) || defined(LIL_FEATURE_DISTANCE_FADE) || !defined(LIL_BRP) || defined(LIL_USE_LPPV) #define LIL_V2F_POSITION_WS #endif @@ -48,30 +44,26 @@ #if !defined(LIL_PASS_FORWARDADD) #define LIL_V2F_LIGHTCOLOR #define LIL_V2F_LIGHTDIRECTION - #define LIL_V2F_VERTEXLIGHT #if defined(LIL_FEATURE_SHADOW) #define LIL_V2F_INDLIGHTCOLOR #endif #endif -#define LIL_V2F_FOG +#define LIL_V2F_VERTEXLIGHT_FOG #define LIL_V2F_FURLAYER struct v2g { - float2 uv : TEXCOORD0; - #if defined(LIL_V2G_TEXCOORD1) - float2 uv1 : TEXCOORD1; - #endif - float3 positionWS : TEXCOORD2; - float3 furVector : TEXCOORD3; + float2 uv0 : TEXCOORD0; + float3 positionWS : TEXCOORD1; + float3 furVector : TEXCOORD2; #if defined(LIL_V2G_NORMAL_WS) - float3 normalWS : TEXCOORD4; + float3 normalWS : TEXCOORD3; #endif - LIL_LIGHTCOLOR_COORDS(5) - LIL_LIGHTDIRECTION_COORDS(6) - LIL_INDLIGHTCOLOR_COORDS(7) - LIL_VERTEXLIGHT_COORDS(8) - LIL_FOG_COORDS(9) + LIL_LIGHTCOLOR_COORDS(4) + LIL_LIGHTDIRECTION_COORDS(5) + LIL_INDLIGHTCOLOR_COORDS(6) + LIL_VERTEXLIGHT_FOG_COORDS(7) + LIL_CUSTOM_V2G_MEMBER(8,9,10,11,12,13,14,15) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; @@ -79,23 +71,19 @@ struct v2g struct v2f { float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; - #if defined(LIL_V2F_TEXCOORD1) - float2 uv1 : TEXCOORD1; - #endif + float2 uv0 : TEXCOORD0; #if defined(LIL_V2F_POSITION_WS) - float3 positionWS : TEXCOORD2; + float3 positionWS : TEXCOORD1; #endif #if defined(LIL_V2F_NORMAL_WS) - float3 normalWS : TEXCOORD3; + float3 normalWS : TEXCOORD2; #endif - float furLayer : TEXCOORD4; - LIL_LIGHTCOLOR_COORDS(5) - LIL_LIGHTDIRECTION_COORDS(6) - LIL_INDLIGHTCOLOR_COORDS(7) - LIL_VERTEXLIGHT_COORDS(8) - LIL_FOG_COORDS(9) - LIL_CUSTOM_V2F_MEMBER(10,11,12,13,14,15,16,17) + float furLayer : TEXCOORD3; + LIL_LIGHTCOLOR_COORDS(4) + LIL_LIGHTDIRECTION_COORDS(5) + LIL_INDLIGHTCOLOR_COORDS(6) + LIL_VERTEXLIGHT_FOG_COORDS(7) + LIL_CUSTOM_V2F_MEMBER(8,9,10,11,12,13,14,15) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; @@ -109,70 +97,25 @@ float4 frag(v2f input) : SV_Target { //------------------------------------------------------------------------------------------------------------------------------ // Initialize - float3 lightDirection = float3(0.0, 1.0, 0.0); - float3 lightColor = 1.0; - float3 addLightColor = 0.0; - float attenuation = 1.0; - - float4 col = 1.0; - float3 albedo = 1.0; - float3 emissionColor = 0.0; - - float anisotropy = 0.0; - float3 anisoTangentWS = 0.0; - float3 anisoBitangentWS = 0.0; - float3 normalDirection = 0.0; - float3 reflectionNormalDirection = 0.0; - float3 matcapNormalDirection = 0.0; - float3 matcap2ndNormalDirection = 0.0; - float3 viewDirection = 0.0; - float3 headDirection = 0.0; - float3x3 tbnWS = 0.0; - float depth = 0.0; - float3 parallaxViewDirection = 0.0; - float2 parallaxOffset = 0.0; - - float smoothness = 1.0; - float roughness = 1.0; - float perceptualRoughness = 1.0; - - float vl = 0.0; - float hl = 0.0; - float ln = 0.0; - float nv = 0.0; - float nvabs = 0.0; - - bool isRightHand = true; - float shadowmix = 1.0; - float audioLinkValue = 1.0; - float3 invLighting = 0.0; - - float facing = 1.0; + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - LIL_GET_HDRPDATA(input); - #if defined(LIL_V2F_LIGHTDIRECTION) - lightDirection = input.lightDirection; - #endif - LIL_GET_MAINLIGHT(input, lightColor, lightDirection, attenuation); - LIL_GET_ADDITIONALLIGHT(input, addLightColor); - invLighting = saturate((1.0 - lightColor) * sqrt(lightColor)); + LIL_GET_HDRPDATA(input,fd); + LIL_GET_LIGHTING_DATA(input,fd); //------------------------------------------------------------------------------------------------------------------------------ // View Direction #if defined(LIL_V2F_POSITION_WS) - depth = length(lilHeadDirection(input.positionWS)); - viewDirection = normalize(lilViewDirection(input.positionWS)); - headDirection = normalize(lilHeadDirection(input.positionWS)); - vl = dot(viewDirection, lightDirection); - hl = dot(headDirection, lightDirection); + LIL_GET_POSITION_WS_DATA(input,fd); #endif - #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) && defined(LIL_V2F_BITANGENT_WS) - tbnWS = float3x3(input.tangentWS.xyz, input.bitangentWS, input.normalWS); - #if defined(LIL_V2F_POSITION_WS) - parallaxViewDirection = mul(tbnWS, viewDirection); - parallaxOffset = (parallaxViewDirection.xy / (parallaxViewDirection.z+0.5)); - #endif + #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) + LIL_GET_TBN_DATA(input,fd); + #endif + #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) && defined(LIL_V2F_POSITION_WS) + LIL_GET_PARALLAX_DATA(input,fd); #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -192,16 +135,16 @@ float4 frag(v2f input) : SV_Target //------------------------------------------------------------------------------------------------------------------------------ // Copy - albedo = col.rgb; + fd.albedo = fd.col.rgb; //------------------------------------------------------------------------------------------------------------------------------ // Alpha #if LIL_RENDER == 1 // Cutout - col.a = saturate(col.a*5.0-2.0); + fd.col.a = saturate(fd.col.a*5.0-2.0); #else // Transparent - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #endif BEFORE_SHADOW @@ -209,16 +152,16 @@ float4 frag(v2f input) : SV_Target //------------------------------------------------------------------------------------------------------------------------------ // Lighting #if defined(LIL_FEATURE_SHADOW) - normalDirection = normalize(input.normalWS); - ln = dot(lightDirection, normalDirection); + fd.N = normalize(input.normalWS); + fd.ln = dot(fd.L, fd.N); OVERRIDE_SHADOW - col.rgb += albedo * addLightColor; - col.rgb = min(col.rgb, albedo * _LightMaxLimit); + fd.col.rgb += fd.albedo * fd.addLightColor; + fd.col.rgb = min(fd.col.rgb, fd.albedo * _LightMaxLimit); #else - col.rgb *= saturate(lightColor + addLightColor); + fd.col.rgb *= saturate(fd.lightColor + fd.addLightColor); #endif #else - col.rgb *= lightColor; + fd.col.rgb *= fd.lightColor; #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -230,7 +173,7 @@ float4 frag(v2f input) : SV_Target //------------------------------------------------------------------------------------------------------------------------------ // Fix Color - LIL_HDRP_DEEXPOSURE(col); + LIL_HDRP_DEEXPOSURE(fd.col); //------------------------------------------------------------------------------------------------------------------------------ // Fog diff --git a/Assets/lilToon/Shader/Includes/lil_pass_forward_gem.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_forward_gem.hlsl index 82deae03..b969c2ab 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_forward_gem.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_forward_gem.hlsl @@ -15,68 +15,54 @@ #if defined(LIL_V2F_FORCE_POSITION_WS) || defined(LIL_HDRP) #define LIL_V2F_POSITION_WS #endif - #define LIL_V2F_FOG + #define LIL_V2F_VERTEXLIGHT_FOG struct v2f { - float4 positionCS : SV_POSITION; + float4 positionCS : SV_POSITION; #if defined(LIL_V2F_POSITION_WS) - float3 positionWS : TEXCOORD0; + float3 positionWS : TEXCOORD0; #endif - LIL_FOG_COORDS(1) + LIL_VERTEXLIGHT_FOG_COORDS(1) LIL_CUSTOM_V2F_MEMBER(2,3,4,5,6,7,8,9) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; #else #define LIL_V2F_POSITION_CS - #define LIL_V2F_TEXCOORD0 - #if defined(LIL_V2F_FORCE_TEXCOORD1) || defined(LIL_USE_LIGHTMAP_UV) || defined(LIL_SHOULD_UV1) - #define LIL_V2F_TEXCOORD1 - #endif + #define LIL_V2F_PACKED_TEXCOORD01 + #define LIL_V2F_PACKED_TEXCOORD23 #if defined(LIL_V2F_FORCE_POSITION_OS) || defined(LIL_SHOULD_POSITION_OS) #define LIL_V2F_POSITION_OS #endif #define LIL_V2F_POSITION_WS - #define LIL_V2F_POSITION_SS #define LIL_V2F_NORMAL_WS #if defined(LIL_V2F_FORCE_TANGENT) || defined(LIL_SHOULD_TBN) #define LIL_V2F_TANGENT_WS #endif - #if defined(LIL_V2F_FORCE_BITANGENT) || defined(LIL_SHOULD_TBN) - #define LIL_V2F_BITANGENT_WS - #endif #if !defined(LIL_PASS_FORWARDADD) #define LIL_V2F_LIGHTCOLOR #define LIL_V2F_LIGHTDIRECTION - #define LIL_V2F_VERTEXLIGHT #endif - #define LIL_V2F_FOG + #define LIL_V2F_VERTEXLIGHT_FOG struct v2f { - float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; - #if defined(LIL_V2F_TEXCOORD1) - float2 uv1 : TEXCOORD1; - #endif - float3 normalWS : TEXCOORD2; - float3 positionWS : TEXCOORD3; - float4 positionSS : TEXCOORD4; + float4 positionCS : SV_POSITION; + float4 uv01 : TEXCOORD0; + float4 uv23 : TEXCOORD1; + float3 normalWS : TEXCOORD2; + float3 positionWS : TEXCOORD3; #if defined(LIL_V2F_TANGENT_WS) - float4 tangentWS : TEXCOORD5; - #endif - #if defined(LIL_V2F_BITANGENT_WS) - float3 bitangentWS : TEXCOORD6; + float4 tangentWS : TEXCOORD4; #endif #if defined(LIL_V2F_POSITION_OS) - float3 positionOS : TEXCOORD7; + float3 positionOS : TEXCOORD5; #endif - LIL_LIGHTCOLOR_COORDS(8) - LIL_LIGHTDIRECTION_COORDS(9) - LIL_VERTEXLIGHT_COORDS(10) - LIL_FOG_COORDS(11) - LIL_CUSTOM_V2F_MEMBER(12,13,14,15,16,17,18,19) + LIL_LIGHTCOLOR_COORDS(6) + LIL_LIGHTDIRECTION_COORDS(7) + LIL_VERTEXLIGHT_FOG_COORDS(8) + LIL_CUSTOM_V2F_MEMBER(9,10,11,12,13,14,15,16) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; @@ -90,85 +76,45 @@ #if defined(LIL_GEM_PRE) float4 frag(v2f input) : SV_Target { + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - LIL_GET_HDRPDATA(input); + LIL_GET_HDRPDATA(input,fd); #if defined(LIL_HDRP) - float3 viewDirection = normalize(lilViewDirection(input.positionWS)); + fd.V = normalize(lilViewDirection(input.positionWS)); #endif - float4 col = 0; + fd.col = 0; OVERRIDE_FOG - return col; + return fd.col; } #else float4 frag(v2f input LIL_VFACE(facing)) : SV_Target { //------------------------------------------------------------------------------------------------------------------------------ // Initialize - float3 lightDirection = float3(0.0, 1.0, 0.0); - float3 lightColor = 1.0; - float3 addLightColor = 0.0; - float attenuation = 1.0; - - float4 col = 1.0; - float3 albedo = 1.0; - float3 emissionColor = 0.0; - - float anisotropy = 0.0; - float3 anisoTangentWS = 0.0; - float3 anisoBitangentWS = 0.0; - float3 normalDirection = 0.0; - float3 reflectionNormalDirection = 0.0; - float3 matcapNormalDirection = 0.0; - float3 matcap2ndNormalDirection = 0.0; - float3 viewDirection = 0.0; - float3 headDirection = 0.0; - float3x3 tbnWS = 0.0; - float depth = 0.0; - float3 parallaxViewDirection = 0.0; - float2 parallaxOffset = 0.0; - - float smoothness = 1.0; - float roughness = 1.0; - float perceptualRoughness = 1.0; - - float vl = 0.0; - float hl = 0.0; - float ln = 0.0; - float nv = 0.0; - float nvabs = 0.0; - - bool isRightHand = true; - float shadowmix = 1.0; - float audioLinkValue = 1.0; - float3 invLighting = 0.0; - - LIL_VFACE_FALLBACK(facing); + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F + LIL_COPY_VFACE(fd.facing); LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - LIL_GET_HDRPDATA(input); - #if defined(LIL_V2F_LIGHTDIRECTION) - lightDirection = input.lightDirection; - #endif - LIL_GET_MAINLIGHT(input, lightColor, lightDirection, attenuation); - LIL_GET_ADDITIONALLIGHT(input, addLightColor); - invLighting = saturate((1.0 - lightColor) * sqrt(lightColor)); + LIL_GET_HDRPDATA(input,fd); + LIL_GET_LIGHTING_DATA(input,fd); //------------------------------------------------------------------------------------------------------------------------------ // View Direction #if defined(LIL_V2F_POSITION_WS) - depth = length(lilHeadDirection(input.positionWS)); - viewDirection = normalize(lilViewDirection(input.positionWS)); - headDirection = normalize(lilHeadDirection(input.positionWS)); - vl = dot(viewDirection, lightDirection); - hl = dot(headDirection, lightDirection); + LIL_GET_POSITION_WS_DATA(input,fd); #endif #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) && defined(LIL_V2F_BITANGENT_WS) - tbnWS = float3x3(input.tangentWS.xyz, input.bitangentWS, input.normalWS); - #if defined(LIL_V2F_POSITION_WS) - parallaxViewDirection = mul(tbnWS, viewDirection); - parallaxOffset = (parallaxViewDirection.xy / (parallaxViewDirection.z+0.5)); - #endif + LIL_GET_TBN_DATA(input,fd); + #endif + #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) && defined(LIL_V2F_BITANGENT_WS) && defined(LIL_V2F_POSITION_WS) + LIL_GET_PARALLAX_DATA(input,fd); #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -179,9 +125,9 @@ //------------------------------------------------------------------------------------------------------------------------------ // Gem View Direction #if defined(USING_STEREO_MATRICES) - float3 gemViewDirection = lerp(headDirection, viewDirection, _GemVRParallaxStrength); + float3 gemViewDirection = lerp(fd.headV, fd.V, _GemVRParallaxStrength); #else - float3 gemViewDirection = viewDirection; + float3 gemViewDirection = fd.V; #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -206,25 +152,26 @@ OVERRIDE_NORMAL_2ND #endif - normalDirection = mul(normalmap, tbnWS); - normalDirection = facing < 0.0 ? -normalDirection - viewDirection * 0.2 : normalDirection; - normalDirection = normalize(normalDirection); + fd.N = mul(normalmap, fd.TBN); + fd.N = fd.facing < 0.0 ? -fd.N - fd.V * 0.2 : fd.N; + fd.N = normalize(fd.N); #else - normalDirection = input.normalWS; - normalDirection = facing < 0.0 ? -normalDirection - viewDirection * 0.2 : normalDirection; - normalDirection = normalize(normalDirection); + fd.N = input.normalWS; + fd.N = fd.facing < 0.0 ? -fd.N - fd.V * 0.2 : fd.N; + fd.N = normalize(fd.N); #endif - reflectionNormalDirection = normalDirection; - matcapNormalDirection = normalDirection; - matcap2ndNormalDirection = normalDirection; - - nvabs = abs(dot(normalDirection, viewDirection)); - nv = nvabs; - float nv1 = abs(dot(normalDirection, gemViewDirection)); - float nv2 = abs(dot(normalDirection, gemViewDirection.yzx)); - float nv3 = abs(dot(normalDirection, gemViewDirection.zxy)); + fd.reflectionN = fd.N; + fd.matcapN = fd.N; + fd.matcap2ndN = fd.N; + + fd.nvabs = abs(dot(fd.N, fd.V)); + fd.nv = fd.nvabs; + fd.uvRim = float2(fd.nvabs,fd.nvabs); + float nv1 = abs(dot(fd.N, gemViewDirection)); + float nv2 = abs(dot(fd.N, gemViewDirection.yzx)); + float nv3 = abs(dot(fd.N, gemViewDirection.zxy)); float invnv = 1-nv1; - ln = dot(lightDirection, normalDirection); + fd.ln = dot(fd.L, fd.N); //------------------------------------------------------------------------------------------------------------------------------ // Anisotropy @@ -243,60 +190,59 @@ //------------------------------------------------------------------------------------------------------------------------------ // Lighting #ifndef LIL_PASS_FORWARDADD - shadowmix = saturate(ln); - lightColor = saturate(lightColor + addLightColor); - shadowmix = saturate(shadowmix + lilLuminance(addLightColor)); + fd.shadowmix = saturate(fd.ln); + fd.lightColor = saturate(fd.lightColor + fd.addLightColor); + fd.shadowmix = saturate(fd.shadowmix + lilLuminance(fd.addLightColor)); #endif - albedo = col.rgb; - col.rgb *= nv; - float4 baseCol = col; - col.rgb *= 0.75; + fd.albedo = fd.col.rgb; + fd.col.rgb *= fd.nv; + float4 baseCol = fd.col; + fd.col.rgb *= 0.75; //------------------------------------------------------------------------------------------------------------------------------ // Refraction - float2 scnUV = input.positionSS.xy/input.positionSS.w; - float2 ref = mul((float3x3)LIL_MATRIX_V, normalDirection).xy; - float nvRef = pow(saturate(1.0 - nv), _RefractionFresnelPower); + float2 ref = mul((float3x3)LIL_MATRIX_V, fd.N).xy; + float nvRef = pow(saturate(1.0 - fd.nv), _RefractionFresnelPower); float3 refractColor; - refractColor.r = LIL_GET_BG_TEX(scnUV + (nvRef * _RefractionStrength) * ref, 0).r; - refractColor.g = LIL_GET_BG_TEX(scnUV + (nvRef * (_RefractionStrength + _GemChromaticAberration)) * ref, 0).g; - refractColor.b = LIL_GET_BG_TEX(scnUV + (nvRef * (_RefractionStrength + _GemChromaticAberration * 2)) * ref, 0).b; + refractColor.r = LIL_GET_BG_TEX(fd.uvScn + (nvRef * _RefractionStrength) * ref, 0).r; + refractColor.g = LIL_GET_BG_TEX(fd.uvScn + (nvRef * (_RefractionStrength + _GemChromaticAberration)) * ref, 0).g; + refractColor.b = LIL_GET_BG_TEX(fd.uvScn + (nvRef * (_RefractionStrength + _GemChromaticAberration * 2)) * ref, 0).b; refractColor = pow(saturate(refractColor), _GemEnvContrast) * _GemEnvContrast; refractColor = lerp(dot(refractColor, float3(1.0/3.0,1.0/3.0,1.0/3.0)), refractColor, saturate(1.0/_GemEnvContrast)); - col.rgb *= refractColor; + fd.col.rgb *= refractColor; //------------------------------------------------------------------------------------------------------------------------------ // Reflection - smoothness = _Smoothness; - if(Exists_SmoothnessTex) smoothness *= LIL_SAMPLE_2D(_SmoothnessTex, sampler_MainTex, uvMain).r; - perceptualRoughness = perceptualRoughness - smoothness * perceptualRoughness; - roughness = perceptualRoughness * perceptualRoughness; - - float3 normalDirectionR = normalDirection; - float3 normalDirectionG = facing < 0.0 ? normalize(normalDirection + viewDirection * invnv * _GemChromaticAberration) : normalDirection; - float3 normalDirectionB = facing < 0.0 ? normalize(normalDirection + viewDirection * invnv * _GemChromaticAberration * 2) : normalDirection; - float envReflectionColorR = LIL_GET_ENVIRONMENT_REFLECTION(viewDirection, normalDirectionR, perceptualRoughness, input.positionWS).r; - float envReflectionColorG = LIL_GET_ENVIRONMENT_REFLECTION(viewDirection, normalDirectionG, perceptualRoughness, input.positionWS).g; - float envReflectionColorB = LIL_GET_ENVIRONMENT_REFLECTION(viewDirection, normalDirectionB, perceptualRoughness, input.positionWS).b; + fd.smoothness = _Smoothness; + if(Exists_SmoothnessTex) fd.smoothness *= LIL_SAMPLE_2D(_SmoothnessTex, sampler_MainTex, fd.uvMain).r; + fd.perceptualRoughness = fd.perceptualRoughness - fd.smoothness * fd.perceptualRoughness; + fd.roughness = fd.perceptualRoughness * fd.perceptualRoughness; + + float3 normalDirectionR = fd.N; + float3 normalDirectionG = fd.facing < 0.0 ? normalize(fd.N + fd.V * invnv * _GemChromaticAberration) : fd.N; + float3 normalDirectionB = fd.facing < 0.0 ? normalize(fd.N + fd.V * invnv * _GemChromaticAberration * 2) : fd.N; + float envReflectionColorR = LIL_GET_ENVIRONMENT_REFLECTION(fd.V, normalDirectionR, fd.perceptualRoughness, fd.positionWS).r; + float envReflectionColorG = LIL_GET_ENVIRONMENT_REFLECTION(fd.V, normalDirectionG, fd.perceptualRoughness, fd.positionWS).g; + float envReflectionColorB = LIL_GET_ENVIRONMENT_REFLECTION(fd.V, normalDirectionB, fd.perceptualRoughness, fd.positionWS).b; float3 envReflectionColor = float3(envReflectionColorR, envReflectionColorG, envReflectionColorB); envReflectionColor = pow(saturate(envReflectionColor), _GemEnvContrast) * _GemEnvContrast * _GemEnvColor.rgb; envReflectionColor = lerp(dot(envReflectionColor, float3(1.0/3.0,1.0/3.0,1.0/3.0)), envReflectionColor, saturate(1.0/_GemEnvContrast)); - envReflectionColor = facing < 0.0 ? envReflectionColor * baseCol.rgb : envReflectionColor; + envReflectionColor = fd.facing < 0.0 ? envReflectionColor * baseCol.rgb : envReflectionColor; float oneMinusReflectivity = LIL_DIELECTRIC_SPECULAR.a; - float grazingTerm = saturate(smoothness + (1.0-oneMinusReflectivity)); + float grazingTerm = saturate(fd.smoothness + (1.0-oneMinusReflectivity)); #ifdef LIL_COLORSPACE_GAMMA - float surfaceReduction = 1.0 - 0.28 * roughness * perceptualRoughness; + float surfaceReduction = 1.0 - 0.28 * fd.roughness * fd.perceptualRoughness; #else - float surfaceReduction = 1.0 / (roughness * roughness + 1.0); + float surfaceReduction = 1.0 / (fd.roughness * fd.roughness + 1.0); #endif float particle = step(0.5, frac(nv1 * _GemParticleLoop)) * step(0.5, frac(nv2 * _GemParticleLoop)) * step(0.5, frac(nv3 * _GemParticleLoop)); - float3 particleColor = facing < 0.0 ? 1.0 + particle * _GemParticleColor.rgb : 1.0; + float3 particleColor = fd.facing < 0.0 ? 1.0 + particle * _GemParticleColor.rgb : 1.0; - col.rgb += (surfaceReduction * lilFresnelLerp(_Reflectance, grazingTerm, nv) + 0.5) * 0.5 * particleColor * envReflectionColor; + fd.col.rgb += (surfaceReduction * lilFresnelLerp(_Reflectance, grazingTerm, fd.nv) + 0.5) * 0.5 * particleColor * envReflectionColor; //------------------------------------------------------------------------------------------------------------------------------ // MatCap @@ -342,7 +288,7 @@ //------------------------------------------------------------------------------------------------------------------------------ // Fix Color - LIL_HDRP_DEEXPOSURE(col); + LIL_HDRP_DEEXPOSURE(fd.col); float4 fogColor = float4(0,0,0,0); BEFORE_FOG diff --git a/Assets/lilToon/Shader/Includes/lil_pass_forward_lite.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_forward_lite.hlsl index 177f9b3f..6d15e5d3 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_forward_lite.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_forward_lite.hlsl @@ -12,10 +12,8 @@ #if defined(LIL_OUTLINE) #define LIL_V2F_POSITION_CS - #define LIL_V2F_TEXCOORD0 - #if defined(LIL_V2F_FORCE_TEXCOORD1) || defined(LIL_USE_LIGHTMAP_UV) - #define LIL_V2F_TEXCOORD1 - #endif + #define LIL_V2F_PACKED_TEXCOORD01 + #define LIL_V2F_PACKED_TEXCOORD23 #if defined(LIL_V2F_FORCE_POSITION_WS) || defined(LIL_PASS_FORWARDADD) || !defined(LIL_BRP) || defined(LIL_USE_LPPV) #define LIL_V2F_POSITION_WS #endif @@ -24,63 +22,53 @@ #endif #if !defined(LIL_PASS_FORWARDADD) #define LIL_V2F_LIGHTCOLOR - #define LIL_V2F_VERTEXLIGHT #endif - #define LIL_V2F_FOG + #define LIL_V2F_VERTEXLIGHT_FOG struct v2f { - float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; - #if defined(LIL_V2F_TEXCOORD1) - float2 uv1 : TEXCOORD1; - #endif + float4 positionCS : SV_POSITION; + float4 uv01 : TEXCOORD0; + float4 uv23 : TEXCOORD1; #if defined(LIL_V2F_POSITION_WS) - float3 positionWS : TEXCOORD2; + float3 positionWS : TEXCOORD2; #endif #if defined(LIL_V2F_NORMAL_WS) - float3 normalWS : TEXCOORD3; + float3 normalWS : TEXCOORD3; #endif LIL_LIGHTCOLOR_COORDS(4) - LIL_VERTEXLIGHT_COORDS(5) - LIL_FOG_COORDS(6) - LIL_CUSTOM_V2F_MEMBER(7,8,9,10,11,12,13,14) + LIL_VERTEXLIGHT_FOG_COORDS(5) + LIL_CUSTOM_V2F_MEMBER(6,7,8,9,10,11,12,13) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; #else #define LIL_V2F_POSITION_WS #define LIL_V2F_POSITION_CS - #define LIL_V2F_TEXCOORD0 - #if defined(LIL_V2F_FORCE_TEXCOORD1) || defined(LIL_USE_LIGHTMAP_UV) - #define LIL_V2F_TEXCOORD1 - #endif + #define LIL_V2F_PACKED_TEXCOORD01 + #define LIL_V2F_PACKED_TEXCOORD23 #define LIL_V2F_NORMAL_WS #define LIL_V2F_UVMAT #if !defined(LIL_PASS_FORWARDADD) #define LIL_V2F_LIGHTCOLOR #define LIL_V2F_LIGHTDIRECTION #define LIL_V2F_INDLIGHTCOLOR - #define LIL_V2F_VERTEXLIGHT #endif - #define LIL_V2F_FOG + #define LIL_V2F_VERTEXLIGHT_FOG struct v2f { - float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; - #if defined(LIL_V2F_TEXCOORD1) - float2 uv1 : TEXCOORD1; - #endif - float2 uvMat : TEXCOORD2; - float3 normalWS : TEXCOORD3; - float3 positionWS : TEXCOORD4; + float4 positionCS : SV_POSITION; + float4 uv01 : TEXCOORD0; + float4 uv23 : TEXCOORD1; + float2 uvMat : TEXCOORD2; + float3 normalWS : TEXCOORD3; + float3 positionWS : TEXCOORD4; LIL_LIGHTCOLOR_COORDS(5) LIL_LIGHTDIRECTION_COORDS(6) LIL_INDLIGHTCOLOR_COORDS(7) - LIL_VERTEXLIGHT_COORDS(8) - LIL_FOG_COORDS(9) - LIL_CUSTOM_V2F_MEMBER(10,11,12,13,14,15,16,17) + LIL_VERTEXLIGHT_FOG_COORDS(8) + LIL_CUSTOM_V2F_MEMBER(9,10,11,12,13,14,15,16) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; @@ -95,70 +83,26 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target { //------------------------------------------------------------------------------------------------------------------------------ // Initialize - float3 lightDirection = float3(0.0, 1.0, 0.0); - float3 lightColor = 1.0; - float3 addLightColor = 0.0; - float attenuation = 1.0; - - float4 col = 1.0; - float3 albedo = 1.0; - float3 emissionColor = 0.0; - - float anisotropy = 0.0; - float3 anisoTangentWS = 0.0; - float3 anisoBitangentWS = 0.0; - float3 normalDirection = 0.0; - float3 reflectionNormalDirection = 0.0; - float3 matcapNormalDirection = 0.0; - float3 matcap2ndNormalDirection = 0.0; - float3 viewDirection = 0.0; - float3 headDirection = 0.0; - float3x3 tbnWS = 0.0; - float depth = 0.0; - float3 parallaxViewDirection = 0.0; - float2 parallaxOffset = 0.0; - - float smoothness = 1.0; - float roughness = 1.0; - float perceptualRoughness = 1.0; + lilFragData fd = lilInitFragData(); - float vl = 0.0; - float hl = 0.0; - float ln = 0.0; - float nv = 0.0; - float nvabs = 0.0; - - bool isRightHand = true; - float shadowmix = 1.0; - float audioLinkValue = 1.0; - float3 invLighting = 0.0; - - LIL_VFACE_FALLBACK(facing); + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F + LIL_COPY_VFACE(fd.facing); LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - LIL_GET_HDRPDATA(input); - #if defined(LIL_V2F_LIGHTDIRECTION) - lightDirection = input.lightDirection; - #endif - LIL_GET_MAINLIGHT(input, lightColor, lightDirection, attenuation); - LIL_GET_ADDITIONALLIGHT(input, addLightColor); - invLighting = saturate((1.0 - lightColor) * sqrt(lightColor)); + LIL_GET_HDRPDATA(input,fd); + LIL_GET_LIGHTING_DATA(input,fd); //------------------------------------------------------------------------------------------------------------------------------ // View Direction #if defined(LIL_V2F_POSITION_WS) - depth = length(lilHeadDirection(input.positionWS)); - viewDirection = normalize(lilViewDirection(input.positionWS)); - headDirection = normalize(lilHeadDirection(input.positionWS)); - vl = dot(viewDirection, lightDirection); - hl = dot(headDirection, lightDirection); + LIL_GET_POSITION_WS_DATA(input,fd); #endif - #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) && defined(LIL_V2F_BITANGENT_WS) - tbnWS = float3x3(input.tangentWS.xyz, input.bitangentWS, input.normalWS); - #if defined(LIL_V2F_POSITION_WS) - parallaxViewDirection = mul(tbnWS, viewDirection); - parallaxOffset = (parallaxViewDirection.xy / (parallaxViewDirection.z+0.5)); - #endif + #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) + LIL_GET_TBN_DATA(input,fd); + #endif + #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) && defined(LIL_V2F_POSITION_WS) + LIL_GET_PARALLAX_DATA(input,fd); #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -180,19 +124,19 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target // Opaque #elif LIL_RENDER == 1 // Cutout - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #elif LIL_RENDER == 2 // Transparent - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #endif //------------------------------------------------------------------------------------------------------------------------------ // Copy - albedo = col.rgb; + fd.albedo = fd.col.rgb; //------------------------------------------------------------------------------------------------------------------------------ // Lighting - col.rgb = lerp(col.rgb, col.rgb * min(lightColor + addLightColor, _LightMaxLimit), _OutlineEnableLighting); + fd.col.rgb = lerp(fd.col.rgb, fd.col.rgb * min(fd.lightColor + fd.addLightColor, _LightMaxLimit), _OutlineEnableLighting); #else //------------------------------------------------------------------------------------------------------------------------------ // UV @@ -203,8 +147,7 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target // Main Color BEFORE_MAIN OVERRIDE_MAIN - float4 triMask = 1.0; - triMask = LIL_SAMPLE_2D(_TriMask, sampler_MainTex, uvMain); + fd.triMask = LIL_SAMPLE_2D(_TriMask, sampler_MainTex, fd.uvMain); //------------------------------------------------------------------------------------------------------------------------------ // Alpha @@ -212,17 +155,17 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target // Opaque #elif LIL_RENDER == 1 // Cutout - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #elif LIL_RENDER == 2 // Transparent - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #endif //------------------------------------------------------------------------------------------------------------------------------ // Normal - normalDirection = normalize(input.normalWS); - normalDirection = facing < (_FlipNormal-1.0) ? -normalDirection : normalDirection; - ln = dot(lightDirection, normalDirection); + fd.N = normalize(input.normalWS); + fd.N = fd.facing < (_FlipNormal-1.0) ? -fd.N : fd.N; + fd.ln = dot(fd.L, fd.N); //------------------------------------------------------------------------------------------------------------------------------ // MatCap @@ -231,7 +174,7 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target //------------------------------------------------------------------------------------------------------------------------------ // Copy - albedo = col.rgb; + fd.albedo = fd.col.rgb; //------------------------------------------------------------------------------------------------------------------------------ // Lighting @@ -239,20 +182,21 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target #ifndef LIL_PASS_FORWARDADD OVERRIDE_SHADOW - lightColor += addLightColor; - shadowmix += lilLuminance(addLightColor); - col.rgb += albedo * addLightColor; + fd.lightColor += fd.addLightColor; + fd.shadowmix += lilLuminance(fd.addLightColor); + fd.col.rgb += fd.albedo * fd.addLightColor; - lightColor = min(lightColor, _LightMaxLimit); - shadowmix = saturate(shadowmix); - col.rgb = min(col.rgb, albedo * _LightMaxLimit); + fd.lightColor = min(fd.lightColor, _LightMaxLimit); + fd.shadowmix = saturate(fd.shadowmix); + fd.col.rgb = min(fd.col.rgb, fd.albedo * _LightMaxLimit); #else - col.rgb *= lightColor; + fd.col.rgb *= fd.lightColor; #endif //------------------------------------------------------------------------------------------------------------------------------ // Rim light - nvabs = abs(dot(normalDirection, viewDirection)); + fd.nvabs = abs(dot(fd.N, fd.V)); + fd.uvRim = float2(fd.nvabs,fd.nvabs); BEFORE_RIMLIGHT OVERRIDE_RIMLIGHT @@ -267,7 +211,7 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target //------------------------------------------------------------------------------------------------------------------------------ // Fix Color - LIL_HDRP_DEEXPOSURE(col); + LIL_HDRP_DEEXPOSURE(fd.col); //------------------------------------------------------------------------------------------------------------------------------ // Fog diff --git a/Assets/lilToon/Shader/Includes/lil_pass_forward_normal.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_forward_normal.hlsl index e5850640..63511d83 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_forward_normal.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_forward_normal.hlsl @@ -12,10 +12,8 @@ #if defined(LIL_OUTLINE) #define LIL_V2F_POSITION_CS - #define LIL_V2F_TEXCOORD0 - #if defined(LIL_V2F_FORCE_TEXCOORD1) || defined(LIL_USE_LIGHTMAP_UV) - #define LIL_V2F_TEXCOORD1 - #endif + #define LIL_V2F_PACKED_TEXCOORD01 + #define LIL_V2F_PACKED_TEXCOORD23 #if defined(LIL_V2F_FORCE_POSITION_OS) || defined(LIL_SHOULD_POSITION_OS) #define LIL_V2F_POSITION_OS #endif @@ -27,39 +25,33 @@ #endif #if !defined(LIL_PASS_FORWARDADD) #define LIL_V2F_LIGHTCOLOR - #define LIL_V2F_VERTEXLIGHT #endif - #define LIL_V2F_FOG + #define LIL_V2F_VERTEXLIGHT_FOG struct v2f { - float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; - #if defined(LIL_V2F_TEXCOORD1) - float2 uv1 : TEXCOORD1; - #endif + float4 positionCS : SV_POSITION; + float4 uv01 : TEXCOORD0; + float4 uv23 : TEXCOORD1; #if defined(LIL_V2F_POSITION_OS) - float3 positionOS : TEXCOORD2; + float3 positionOS : TEXCOORD2; #endif #if defined(LIL_V2F_POSITION_WS) - float3 positionWS : TEXCOORD3; + float3 positionWS : TEXCOORD3; #endif #if defined(LIL_V2F_NORMAL_WS) - float3 normalWS : TEXCOORD4; + float3 normalWS : TEXCOORD4; #endif LIL_LIGHTCOLOR_COORDS(5) - LIL_VERTEXLIGHT_COORDS(6) - LIL_FOG_COORDS(7) - LIL_CUSTOM_V2F_MEMBER(8,9,10,11,12,13,14,15) + LIL_VERTEXLIGHT_FOG_COORDS(6) + LIL_CUSTOM_V2F_MEMBER(7,8,9,10,11,12,13,14) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; #elif defined(LIL_FUR) #define LIL_V2F_POSITION_CS - #define LIL_V2F_TEXCOORD0 - #if defined(LIL_V2F_FORCE_TEXCOORD1) || defined(LIL_USE_LIGHTMAP_UV) - #define LIL_V2F_TEXCOORD1 - #endif + #define LIL_V2F_PACKED_TEXCOORD01 + #define LIL_V2F_PACKED_TEXCOORD23 #if defined(LIL_V2F_FORCE_POSITION_WS) || defined(LIL_PASS_FORWARDADD) || defined(LIL_FEATURE_DISTANCE_FADE) || !defined(LIL_BRP) || defined(LIL_USE_LPPV) #define LIL_V2F_POSITION_WS #endif @@ -69,63 +61,50 @@ #if !defined(LIL_PASS_FORWARDADD) #define LIL_V2F_LIGHTCOLOR #define LIL_V2F_LIGHTDIRECTION - #define LIL_V2F_VERTEXLIGHT #if defined(LIL_FEATURE_SHADOW) #define LIL_V2F_INDLIGHTCOLOR #endif #endif - #define LIL_V2F_FOG + #define LIL_V2F_VERTEXLIGHT_FOG struct v2f { - float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; - #if defined(LIL_V2F_TEXCOORD1) - float2 uv1 : TEXCOORD1; - #endif + float4 positionCS : SV_POSITION; + float4 uv01 : TEXCOORD0; + float4 uv23 : TEXCOORD1; #if defined(LIL_V2F_POSITION_WS) - float3 positionWS : TEXCOORD2; + float3 positionWS : TEXCOORD2; #endif #if defined(LIL_V2F_NORMAL_WS) - float3 normalWS : TEXCOORD3; + float3 normalWS : TEXCOORD3; #endif LIL_LIGHTCOLOR_COORDS(4) LIL_LIGHTDIRECTION_COORDS(5) LIL_INDLIGHTCOLOR_COORDS(6) - LIL_VERTEXLIGHT_COORDS(7) - LIL_FOG_COORDS(8) - LIL_CUSTOM_V2F_MEMBER(9,10,11,12,13,14,15,16) + LIL_VERTEXLIGHT_FOG_COORDS(7) + LIL_CUSTOM_V2F_MEMBER(8,9,10,11,12,13,14,15) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; #else #define LIL_V2F_POSITION_CS - #define LIL_V2F_TEXCOORD0 - #if defined(LIL_V2F_FORCE_TEXCOORD1) || defined(LIL_USE_LIGHTMAP_UV) || defined(LIL_SHOULD_UV1) - #define LIL_V2F_TEXCOORD1 - #endif + #define LIL_V2F_PACKED_TEXCOORD01 + #define LIL_V2F_PACKED_TEXCOORD23 #if defined(LIL_V2F_FORCE_POSITION_OS) || defined(LIL_SHOULD_POSITION_OS) #define LIL_V2F_POSITION_OS #endif #if defined(LIL_V2F_FORCE_POSITION_WS) || defined(LIL_SHOULD_POSITION_WS) #define LIL_V2F_POSITION_WS #endif - #if defined(LIL_V2F_FORCE_POSITION_SS) || defined(LIL_REFRACTION) - #define LIL_V2F_POSITION_SS - #endif #if defined(LIL_V2F_FORCE_NORMAL) || defined(LIL_SHOULD_NORMAL) #define LIL_V2F_NORMAL_WS #endif #if defined(LIL_V2F_FORCE_TANGENT) || defined(LIL_SHOULD_TBN) #define LIL_V2F_TANGENT_WS #endif - #if defined(LIL_V2F_FORCE_BITANGENT) || defined(LIL_SHOULD_TBN) - #define LIL_V2F_BITANGENT_WS - #endif #if !defined(LIL_PASS_FORWARDADD) #define LIL_V2F_LIGHTCOLOR #define LIL_V2F_LIGHTDIRECTION - #define LIL_V2F_VERTEXLIGHT #if defined(LIL_FEATURE_SHADOW) #define LIL_V2F_INDLIGHTCOLOR #endif @@ -133,40 +112,31 @@ #define LIL_V2F_SHADOW #endif #endif - #define LIL_V2F_FOG + #define LIL_V2F_VERTEXLIGHT_FOG struct v2f { - float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; - #if defined(LIL_V2F_TEXCOORD1) - float2 uv1 : TEXCOORD1; - #endif + float4 positionCS : SV_POSITION; + float4 uv01 : TEXCOORD0; + float4 uv23 : TEXCOORD1; #if defined(LIL_V2F_POSITION_OS) - float3 positionOS : TEXCOORD2; + float3 positionOS : TEXCOORD2; #endif #if defined(LIL_V2F_POSITION_WS) - float3 positionWS : TEXCOORD3; + float3 positionWS : TEXCOORD3; #endif #if defined(LIL_V2F_NORMAL_WS) - float3 normalWS : TEXCOORD4; + float3 normalWS : TEXCOORD4; #endif #if defined(LIL_V2F_TANGENT_WS) - float4 tangentWS : TEXCOORD5; - #endif - #if defined(LIL_V2F_BITANGENT_WS) - float3 bitangentWS : TEXCOORD6; - #endif - #if defined(LIL_V2F_POSITION_SS) - float4 positionSS : TEXCOORD7; - #endif - LIL_LIGHTCOLOR_COORDS(8) - LIL_LIGHTDIRECTION_COORDS(9) - LIL_INDLIGHTCOLOR_COORDS(10) - LIL_VERTEXLIGHT_COORDS(11) - LIL_FOG_COORDS(12) - LIL_SHADOW_COORDS(13) - LIL_CUSTOM_V2F_MEMBER(14,15,16,17,18,19,20,21) + float4 tangentWS : TEXCOORD5; + #endif + LIL_LIGHTCOLOR_COORDS(6) + LIL_LIGHTDIRECTION_COORDS(7) + LIL_INDLIGHTCOLOR_COORDS(8) + LIL_VERTEXLIGHT_FOG_COORDS(9) + LIL_SHADOW_COORDS(10) + LIL_CUSTOM_V2F_MEMBER(11,12,13,14,15,16,17,18) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; @@ -181,70 +151,26 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target { //------------------------------------------------------------------------------------------------------------------------------ // Initialize - float3 lightDirection = float3(0.0, 1.0, 0.0); - float3 lightColor = 1.0; - float3 addLightColor = 0.0; - float attenuation = 1.0; - - float4 col = 1.0; - float3 albedo = 1.0; - float3 emissionColor = 0.0; - - float anisotropy = 0.0; - float3 anisoTangentWS = 0.0; - float3 anisoBitangentWS = 0.0; - float3 normalDirection = 0.0; - float3 reflectionNormalDirection = 0.0; - float3 matcapNormalDirection = 0.0; - float3 matcap2ndNormalDirection = 0.0; - float3 viewDirection = 0.0; - float3 headDirection = 0.0; - float3x3 tbnWS = 0.0; - float depth = 0.0; - float3 parallaxViewDirection = 0.0; - float2 parallaxOffset = 0.0; - - float smoothness = 1.0; - float roughness = 1.0; - float perceptualRoughness = 1.0; - - float vl = 0.0; - float hl = 0.0; - float ln = 0.0; - float nv = 0.0; - float nvabs = 0.0; - - bool isRightHand = true; - float shadowmix = 1.0; - float audioLinkValue = 1.0; - float3 invLighting = 0.0; - - LIL_VFACE_FALLBACK(facing); + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F + LIL_COPY_VFACE(fd.facing); LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - LIL_GET_HDRPDATA(input); - #if defined(LIL_V2F_LIGHTDIRECTION) - lightDirection = input.lightDirection; - #endif - LIL_GET_MAINLIGHT(input, lightColor, lightDirection, attenuation); - LIL_GET_ADDITIONALLIGHT(input, addLightColor); - invLighting = saturate((1.0 - lightColor) * sqrt(lightColor)); + LIL_GET_HDRPDATA(input,fd); + LIL_GET_LIGHTING_DATA(input,fd); //------------------------------------------------------------------------------------------------------------------------------ // View Direction #if defined(LIL_V2F_POSITION_WS) - depth = length(lilHeadDirection(input.positionWS)); - viewDirection = normalize(lilViewDirection(input.positionWS)); - headDirection = normalize(lilHeadDirection(input.positionWS)); - vl = dot(viewDirection, lightDirection); - hl = dot(headDirection, lightDirection); + LIL_GET_POSITION_WS_DATA(input,fd); #endif - #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) && defined(LIL_V2F_BITANGENT_WS) - tbnWS = float3x3(input.tangentWS.xyz, input.bitangentWS, input.normalWS); - #if defined(LIL_V2F_POSITION_WS) - parallaxViewDirection = mul(tbnWS, viewDirection); - parallaxOffset = (parallaxViewDirection.xy / (parallaxViewDirection.z+0.5)); - #endif + #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) + LIL_GET_TBN_DATA(input,fd); + #endif + #if defined(LIL_V2F_NORMAL_WS) && defined(LIL_V2F_TANGENT_WS) && defined(LIL_V2F_POSITION_WS) + LIL_GET_PARALLAX_DATA(input,fd); #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -281,19 +207,19 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target // Opaque #elif LIL_RENDER == 1 // Cutout - col.a = saturate((col.a - _Cutoff) / max(fwidth(col.a), 0.0001) + 0.5); + fd.col.a = saturate((fd.col.a - _Cutoff) / max(fwidth(fd.col.a), 0.0001) + 0.5); #elif LIL_RENDER == 2 && !defined(LIL_REFRACTION) // Transparent - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #endif //------------------------------------------------------------------------------------------------------------------------------ // Copy - albedo = col.rgb; + fd.albedo = fd.col.rgb; //------------------------------------------------------------------------------------------------------------------------------ // Lighting - col.rgb = lerp(col.rgb, col.rgb * min(lightColor + addLightColor, _LightMaxLimit), _OutlineEnableLighting); + fd.col.rgb = lerp(fd.col.rgb, fd.col.rgb * min(fd.lightColor + fd.addLightColor, _LightMaxLimit), _OutlineEnableLighting); #elif defined(LIL_FUR) //------------------------------------------------------------------------------------------------------------------------------ // UV @@ -311,41 +237,41 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target // Opaque #elif LIL_RENDER == 1 // Cutout - col.a = saturate((col.a - _Cutoff) / max(fwidth(col.a), 0.0001) + 0.5); + fd.col.a = saturate((fd.col.a - _Cutoff) / max(fwidth(fd.col.a), 0.0001) + 0.5); #elif LIL_RENDER == 2 && !defined(LIL_REFRACTION) // Transparent - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #endif //------------------------------------------------------------------------------------------------------------------------------ // Fur AO #if LIL_RENDER == 1 - col.rgb *= 1.0-_FurAO; + fd.col.rgb *= 1.0-_FurAO; #endif //------------------------------------------------------------------------------------------------------------------------------ // Copy - albedo = col.rgb; + fd.albedo = fd.col.rgb; BEFORE_SHADOW #ifndef LIL_PASS_FORWARDADD //------------------------------------------------------------------------------------------------------------------------------ // Lighting #if defined(LIL_FEATURE_SHADOW) - normalDirection = normalize(input.normalWS); - normalDirection = facing < (_FlipNormal-1.0) ? -normalDirection : normalDirection; - ln = dot(lightDirection, normalDirection); + fd.N = normalize(input.normalWS); + fd.N = fd.facing < (_FlipNormal-1.0) ? -fd.N : fd.N; + fd.ln = dot(fd.L, fd.N); OVERRIDE_SHADOW #else - col.rgb *= lightColor; + fd.col.rgb *= fd.lightColor; #endif - col.rgb += albedo * addLightColor; - col.rgb = min(col.rgb, albedo * _LightMaxLimit); + fd.col.rgb += fd.albedo * fd.addLightColor; + fd.col.rgb = min(fd.col.rgb, fd.albedo * _LightMaxLimit); #else - col.rgb *= lightColor; + fd.col.rgb *= fd.lightColor; // Premultiply for ForwardAdd #if LIL_RENDER == 2 && LIL_PREMULTIPLY_FA - col.rgb *= col.a; + fd.col.rgb *= fd.col.a; #endif #endif #else @@ -358,8 +284,8 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target // Parallax BEFORE_PARALLAX #if defined(LIL_FEATURE_PARALLAX) - float2 ddxMain = ddx(uvMain); - float2 ddyMain = ddy(uvMain); + float2 ddxMain = ddx(fd.uvMain); + float2 ddyMain = ddy(fd.uvMain); OVERRIDE_PARALLAX #endif @@ -389,10 +315,10 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target // Opaque #elif LIL_RENDER == 1 // Cutout - col.a = saturate((col.a - _Cutoff) / max(fwidth(col.a), 0.0001) + 0.5); + fd.col.a = saturate((fd.col.a - _Cutoff) / max(fwidth(fd.col.a), 0.0001) + 0.5); #elif LIL_RENDER == 2 && !defined(LIL_REFRACTION) // Transparent - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -413,21 +339,22 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target OVERRIDE_NORMAL_2ND #endif - normalDirection = normalize(mul(normalmap, tbnWS)); - normalDirection = facing < (_FlipNormal-1.0) ? -normalDirection : normalDirection; + fd.N = normalize(mul(normalmap, fd.TBN)); + fd.N = fd.facing < (_FlipNormal-1.0) ? -fd.N : fd.N; #else - normalDirection = normalize(input.normalWS); - normalDirection = facing < (_FlipNormal-1.0) ? -normalDirection : normalDirection; + fd.N = normalize(input.normalWS); + fd.N = fd.facing < (_FlipNormal-1.0) ? -fd.N : fd.N; #endif - ln = dot(lightDirection, normalDirection); + fd.ln = dot(fd.L, fd.N); #if defined(LIL_V2F_POSITION_WS) - nv = saturate(dot(normalDirection, viewDirection)); - nvabs = abs(dot(normalDirection, viewDirection)); + fd.nv = saturate(dot(fd.N, fd.V)); + fd.nvabs = abs(dot(fd.N, fd.V)); + fd.uvRim = float2(fd.nvabs,fd.nvabs); #endif #endif - reflectionNormalDirection = normalDirection; - matcapNormalDirection = normalDirection; - matcap2ndNormalDirection = normalDirection; + fd.reflectionN = fd.N; + fd.matcapN = fd.N; + fd.matcap2ndN = fd.N; //------------------------------------------------------------------------------------------------------------------------------ // Anisotropy @@ -446,7 +373,7 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target //------------------------------------------------------------------------------------------------------------------------------ // Layer Color #if defined(LIL_V2F_TANGENT_WS) - isRightHand = input.tangentWS.w > 0.0; + fd.isRightHand = input.tangentWS.w > 0.0; #endif // 2nd BEFORE_MAIN2ND @@ -466,7 +393,7 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target //------------------------------------------------------------------------------------------------------------------------------ // Copy - albedo = col.rgb; + fd.albedo = fd.col.rgb; //------------------------------------------------------------------------------------------------------------------------------ // Lighting @@ -475,30 +402,30 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target #if defined(LIL_FEATURE_SHADOW) OVERRIDE_SHADOW #else - col.rgb *= lightColor; + fd.col.rgb *= fd.lightColor; #endif - lightColor += addLightColor; - shadowmix += lilLuminance(addLightColor); - col.rgb += albedo * addLightColor; + fd.lightColor += fd.addLightColor; + fd.shadowmix += lilLuminance(fd.addLightColor); + fd.col.rgb += fd.albedo * fd.addLightColor; - lightColor = min(lightColor, _LightMaxLimit); - shadowmix = saturate(shadowmix); - col.rgb = min(col.rgb, albedo * _LightMaxLimit); + fd.lightColor = min(fd.lightColor, _LightMaxLimit); + fd.shadowmix = saturate(fd.shadowmix); + fd.col.rgb = min(fd.col.rgb, fd.albedo * _LightMaxLimit); #if defined(LIL_FEATURE_MAIN2ND) - if(_UseMain2ndTex) col.rgb = lilBlendColor(col.rgb, color2nd.rgb, color2nd.a - color2nd.a * _Main2ndEnableLighting, _Main2ndTexBlendMode); + if(_UseMain2ndTex) fd.col.rgb = lilBlendColor(fd.col.rgb, color2nd.rgb, color2nd.a - color2nd.a * _Main2ndEnableLighting, _Main2ndTexBlendMode); #endif #if defined(LIL_FEATURE_MAIN3RD) - if(_UseMain3rdTex) col.rgb = lilBlendColor(col.rgb, color3rd.rgb, color3rd.a - color3rd.a * _Main3rdEnableLighting, _Main3rdTexBlendMode); + if(_UseMain3rdTex) fd.col.rgb = lilBlendColor(fd.col.rgb, color3rd.rgb, color3rd.a - color3rd.a * _Main3rdEnableLighting, _Main3rdTexBlendMode); #endif #else - col.rgb *= lightColor; + fd.col.rgb *= fd.lightColor; #if defined(LIL_FEATURE_MAIN2ND) - if(_UseMain2ndTex) col.rgb = lerp(col.rgb, 0, color2nd.a - color2nd.a * _Main2ndEnableLighting); + if(_UseMain2ndTex) fd.col.rgb = lerp(fd.col.rgb, 0, color2nd.a - color2nd.a * _Main2ndEnableLighting); #endif #if defined(LIL_FEATURE_MAIN3RD) - if(_UseMain3rdTex) col.rgb = lerp(col.rgb, 0, color3rd.a - color3rd.a * _Main3rdEnableLighting); + if(_UseMain3rdTex) fd.col.rgb = lerp(fd.col.rgb, 0, color3rd.a - color3rd.a * _Main3rdEnableLighting); #endif #endif @@ -514,7 +441,7 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target //------------------------------------------------------------------------------------------------------------------------------ // Premultiply #if LIL_RENDER == 2 && !defined(LIL_REFRACTION) - col.rgb *= col.a; + fd.col.rgb *= fd.col.a; #endif //------------------------------------------------------------------------------------------------------------------------------ @@ -522,10 +449,10 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target BEFORE_REFRACTION #if defined(LIL_REFRACTION) && !defined(LIL_PASS_FORWARDADD) #if defined(LIL_REFRACTION_BLUR2) && defined(LIL_FEATURE_REFLECTION) - smoothness = _Smoothness; - if(Exists_SmoothnessTex) smoothness *= LIL_SAMPLE_2D(_SmoothnessTex, sampler_MainTex, uvMain).r; - perceptualRoughness = perceptualRoughness - smoothness * perceptualRoughness; - roughness = perceptualRoughness * perceptualRoughness; + fd.smoothness = _Smoothness; + if(Exists_SmoothnessTex) fd.smoothness *= LIL_SAMPLE_2D(_SmoothnessTex, sampler_MainTex, fd.uvMain).r; + fd.perceptualRoughness = fd.perceptualRoughness - fd.smoothness * fd.perceptualRoughness; + fd.roughness = fd.perceptualRoughness * fd.perceptualRoughness; #endif OVERRIDE_REFRACTION #endif @@ -585,10 +512,10 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target #if defined(LIL_FEATURE_LAYER_DISSOLVE) #if defined(LIL_FEATURE_MAIN2ND) - emissionColor += _Main2ndDissolveColor.rgb * main2ndDissolveAlpha; + fd.emissionColor += _Main2ndDissolveColor.rgb * main2ndDissolveAlpha; #endif #if defined(LIL_FEATURE_MAIN3RD) - emissionColor += _Main3rdDissolveColor.rgb * main3rdDissolveAlpha; + fd.emissionColor += _Main3rdDissolveColor.rgb * main3rdDissolveAlpha; #endif #endif @@ -606,7 +533,7 @@ float4 frag(v2f input LIL_VFACE(facing)) : SV_Target //------------------------------------------------------------------------------------------------------------------------------ // Fix Color - LIL_HDRP_DEEXPOSURE(col); + LIL_HDRP_DEEXPOSURE(fd.col); //------------------------------------------------------------------------------------------------------------------------------ // Fog diff --git a/Assets/lilToon/Shader/Includes/lil_pass_forward_refblur.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_forward_refblur.hlsl index 904b5fcd..a9452d47 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_forward_refblur.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_forward_refblur.hlsl @@ -13,14 +13,12 @@ #define LIL_V2F_POSITION_CS #define LIL_V2F_TEXCOORD0 -#define LIL_V2F_POSITION_SS struct v2f { - float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; - float4 positionSS : TEXCOORD1; - LIL_CUSTOM_V2F_MEMBER(2,3,4,5,6,7,8,9) + float4 positionCS : SV_POSITION; + float2 uv0 : TEXCOORD0; + LIL_CUSTOM_V2F_MEMBER(1,2,3,4,5,6,7,8) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; @@ -32,31 +30,33 @@ struct v2f float4 frag(v2f input LIL_VFACE(facing)) : SV_Target { - LIL_VFACE_FALLBACK(facing); + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F + LIL_COPY_VFACE(fd.facing); LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); #if defined(LIL_FEATURE_REFLECTION) BEFORE_ANIMATE_MAIN_UV OVERRIDE_ANIMATE_MAIN_UV - float2 scnUV = input.positionSS.xy/input.positionSS.w; float3 refractCol = 0; float sum = 0; - float smoothness = _Smoothness; - if(Exists_SmoothnessTex) smoothness *= LIL_SAMPLE_2D(_SmoothnessTex, sampler_linear_repeat, uvMain).r; - float perceptualRoughness = 1.0 - smoothness; + fd.smoothness = _Smoothness; + if(Exists_SmoothnessTex) fd.smoothness *= LIL_SAMPLE_2D(_SmoothnessTex, sampler_linear_repeat, fd.uvMain).r; + float perceptualRoughness = 1.0 - fd.smoothness; float roughness = perceptualRoughness * perceptualRoughness; - float blurOffset = perceptualRoughness / input.positionSS.z * _lilBackgroundTexture_TexelSize.x / _lilBackgroundTexture_TexelSize.y * (0.0005 / LIL_REFRACTION_SAMPNUM); + float blurOffset = perceptualRoughness / fd.positionSS.z * _lilBackgroundTexture_TexelSize.x / _lilBackgroundTexture_TexelSize.y * (0.0005 / LIL_REFRACTION_SAMPNUM); for(int j = -LIL_REFRACTION_SAMPNUM; j <= LIL_REFRACTION_SAMPNUM; j++) { - refractCol += LIL_SAMPLE_2D(_lilBackgroundTexture, sampler_lilBackgroundTexture, scnUV + float2(j*blurOffset,0)).rgb * LIL_REFRACTION_GAUSDIST(j); + refractCol += LIL_SAMPLE_2D(_lilBackgroundTexture, sampler_lilBackgroundTexture, fd.uvScn + float2(j*blurOffset,0)).rgb * LIL_REFRACTION_GAUSDIST(j); sum += LIL_REFRACTION_GAUSDIST(j); } refractCol /= sum; return float4(refractCol,1.0); #else - float2 scnUV = input.positionSS.xy/input.positionSS.w; - float3 refractCol = LIL_SAMPLE_2D(_lilBackgroundTexture, sampler_lilBackgroundTexture, scnUV).rgb; + float3 refractCol = LIL_SAMPLE_2D(_lilBackgroundTexture, sampler_lilBackgroundTexture, fd.uvScn).rgb; return float4(refractCol,1.0); #endif } diff --git a/Assets/lilToon/Shader/Includes/lil_pass_meta.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_meta.hlsl index bccd9e66..7d240ed6 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_meta.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_meta.hlsl @@ -24,19 +24,21 @@ #endif #define LIL_V2F_POSITION_CS -#define LIL_V2F_TEXCOORD0 #define LIL_V2F_VIZUV #define LIL_V2F_LIGHTCOORD +#define LIL_V2F_PACKED_TEXCOORD01 +#define LIL_V2F_PACKED_TEXCOORD23 struct v2f { float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; + float4 uv01 : TEXCOORD0; + float4 uv23 : TEXCOORD1; #if defined(EDITOR_VISUALIZATION) && !defined(LIL_HDRP) - float2 vizUV : TEXCOORD1; - float4 lightCoord : TEXCOORD2; + float2 vizUV : TEXCOORD2; + float4 lightCoord : TEXCOORD3; #endif - LIL_CUSTOM_V2F_MEMBER(3,4,5,6,7,8,9,10) + LIL_CUSTOM_V2F_MEMBER(4,5,6,7,8,9,10,11) LIL_VERTEX_INPUT_INSTANCE_ID LIL_VERTEX_OUTPUT_STEREO }; @@ -51,44 +53,20 @@ float4 frag(v2f input) : SV_Target float facing = 1.0; //------------------------------------------------------------------------------------------------------------------------------ // Initialize - float3 lightDirection = float3(0.0, 1.0, 0.0); - float3 lightColor = 1.0; - float3 addLightColor = 0.0; - float attenuation = 1.0; + lilFragData fd = lilInitFragData(); - float4 col = 1.0; - float3 albedo = 1.0; - float3 emissionColor = 0.0; - - float3 normalDirection = 0.0; - float3 viewDirection = 0.0; - float3 headDirection = 0.0; - float3x3 tbnWS = 0.0; - float depth = 0.0; - float3 parallaxViewDirection = 0.0; - float2 parallaxOffset = 0.0; - - float vl = 0.0; - float hl = 0.0; - float ln = 0.0; - float nv = 0.0; - float nvabs = 0.0; - - bool isRightHand = true; - float shadowmix = 1.0; - float audioLinkValue = 1.0; - float3 invLighting = 0.0; + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F BEFORE_ANIMATE_MAIN_UV OVERRIDE_ANIMATE_MAIN_UV BEFORE_MAIN OVERRIDE_MAIN - albedo = col.rgb; - col.rgb = 0.0; + fd.albedo = fd.col.rgb; + fd.col.rgb = 0.0; #if defined(LIL_LITE) - float4 triMask = 1.0; - triMask = LIL_SAMPLE_2D(_TriMask, sampler_MainTex, uvMain); + fd.triMask = LIL_SAMPLE_2D(_TriMask, sampler_MainTex, fd.uvMain); #endif #ifndef LIL_FUR @@ -107,13 +85,13 @@ float4 frag(v2f input) : SV_Target #endif #if defined(LIL_HDRP) - if(!unity_MetaFragmentControl.y) col.rgb = clamp(pow(abs(albedo), saturate(unity_OneOverOutputBoost)), 0, unity_MaxOutputValue); - return col; + if(!unity_MetaFragmentControl.y) fd.col.rgb = clamp(pow(abs(fd.albedo), saturate(unity_OneOverOutputBoost)), 0, unity_MaxOutputValue); + return fd.col; #else MetaInput metaInput; LIL_INITIALIZE_STRUCT(MetaInput, metaInput); - metaInput.Albedo = albedo; - metaInput.Emission = col.rgb; + metaInput.Albedo = abs(fd.albedo); + metaInput.Emission = fd.col.rgb; #ifdef EDITOR_VISUALIZATION metaInput.VizUV = input.vizUV; metaInput.LightCoord = input.lightCoord; diff --git a/Assets/lilToon/Shader/Includes/lil_pass_motionvectors.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_motionvectors.hlsl index 26b2a734..493c9c81 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_motionvectors.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_motionvectors.hlsl @@ -50,16 +50,16 @@ struct v2f float4 positionCS : SV_POSITION; float4 previousPositionCS : TEXCOORD4; #if defined(LIL_V2F_TEXCOORD0) - float2 uv : TEXCOORD0; + float2 uv0 : TEXCOORD0; #endif #if defined(LIL_V2F_POSITION_OS) float3 positionOS : TEXCOORD1; #endif #if defined(LIL_V2F_NORMAL_WS) - float3 normalWS : TEXCOORD2; + float3 normalWS : TEXCOORD2; #endif #if defined(LIL_FUR) - float furLayer : TEXCOORD3; + float furLayer : TEXCOORD3; #endif LIL_CUSTOM_V2F_MEMBER(7,8,9,10,11,12,13,14) LIL_VERTEX_INPUT_INSTANCE_ID @@ -78,10 +78,10 @@ struct v2f struct v2g { float3 positionWS : TEXCOORD0; - float2 uv : TEXCOORD1; - float3 furVector : TEXCOORD2; + float2 uv0 : TEXCOORD1; + float3 furVector : TEXCOORD2; #if defined(LIL_V2G_NORMAL_WS) - float3 normalWS : TEXCOORD3; + float3 normalWS : TEXCOORD3; #endif float3 previousPositionWS : TEXCOORD4; LIL_VERTEX_INPUT_INSTANCE_ID @@ -125,7 +125,11 @@ void frag(v2f input #endif ) { - LIL_VFACE_FALLBACK(facing); + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F + LIL_COPY_VFACE(fd.facing); LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -138,10 +142,10 @@ void frag(v2f input if(forceNoMotion) outMotionVector = float4(2.0, 0.0, 0.0, 0.0); #ifdef WRITE_MSAA_DEPTH - depthColor = input.positionCS.z; + depthColor = fd.positionCS.z; #ifdef _ALPHATOMASK_ON #if LIL_RENDER > 0 - depthColor.a = saturate((alpha - _Cutoff) / max(fwidth(alpha), 0.0001) + 0.5); + depthColor.a = saturate((fd.col.a - _Cutoff) / max(fwidth(fd.col.a), 0.0001) + 0.5); #else depthColor.a = 1.0; #endif @@ -149,12 +153,12 @@ void frag(v2f input #endif #if defined(WRITE_NORMAL_BUFFER) - float3 normalDirection = normalize(input.normalWS); - normalDirection = facing < (_FlipNormal-1.0) ? -normalDirection : normalDirection; + fd.N = normalize(input.normalWS); + fd.N = facing < (_FlipNormal-1.0) ? -fd.N : fd.N; const float seamThreshold = 1.0 / 1024.0; - normalDirection.z = CopySign(max(seamThreshold, abs(normalDirection.z)), normalDirection.z); - float2 octNormalWS = PackNormalOctQuadEncode(normalDirection); + fd.N.z = CopySign(max(seamThreshold, abs(fd.N.z)), fd.N.z); + float2 octNormalWS = PackNormalOctQuadEncode(fd.N); float3 packNormalWS = PackFloat2To888(saturate(octNormalWS * 0.5 + 0.5)); outNormalBuffer = float4(packNormalWS, 1.0); #endif diff --git a/Assets/lilToon/Shader/Includes/lil_pass_shadowcaster.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_shadowcaster.hlsl index d363751f..1df1114c 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_shadowcaster.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_shadowcaster.hlsl @@ -22,7 +22,7 @@ struct v2f { LIL_V2F_SHADOW_CASTER_OUTPUT #if defined(LIL_V2F_TEXCOORD0) - float2 uv : TEXCOORD1; + float2 uv0 : TEXCOORD1; #endif #if defined(LIL_V2F_POSITION_OS) float3 positionOS : TEXCOORD2; @@ -39,7 +39,11 @@ struct v2f float4 frag(v2f input LIL_VFACE(facing)) : SV_Target { - LIL_VFACE_FALLBACK(facing); + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F + LIL_COPY_VFACE(fd.facing); LIL_SETUP_INSTANCE_ID(input); LIL_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); diff --git a/Assets/lilToon/Shader/Includes/lil_pass_universal2d.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_universal2d.hlsl index d4378b04..485d084c 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_universal2d.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_universal2d.hlsl @@ -16,7 +16,7 @@ struct v2f { float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; + float2 uv0 : TEXCOORD0; LIL_CUSTOM_V2F_MEMBER(1,2,3,4,5,6,7,8) }; @@ -27,23 +27,26 @@ struct v2f float4 frag(v2f input) : SV_Target { - float facing = 1.0; + lilFragData fd = lilInitFragData(); + + BEFORE_UNPACK_V2F + OVERRIDE_UNPACK_V2F + BEFORE_ANIMATE_MAIN_UV OVERRIDE_ANIMATE_MAIN_UV - float4 col = 1.0; BEFORE_MAIN OVERRIDE_MAIN #if LIL_RENDER == 1 #ifdef LIL_LITE - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #else - col.a = saturate((col.a - _Cutoff) / max(fwidth(col.a), 0.0001) + 0.5); + fd.col.a = saturate((fd.col.a - _Cutoff) / max(fwidth(fd.col.a), 0.0001) + 0.5); #endif #elif LIL_RENDER == 2 - clip(col.a - _Cutoff); + clip(fd.col.a - _Cutoff); #endif - return col; + return fd.col; } #endif \ No newline at end of file diff --git a/Assets/lilToon/Shader/Includes/lil_replace_keywords.hlsl b/Assets/lilToon/Shader/Includes/lil_replace_keywords.hlsl index c056a24b..1164b7f2 100644 --- a/Assets/lilToon/Shader/Includes/lil_replace_keywords.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_replace_keywords.hlsl @@ -9,6 +9,49 @@ // Ignore shader setting #define LIL_IGNORE_SHADERSETTING +//---------------------------------------------------------------------------------------------------------------------- +// Shader keyword list + +// Built-in keyword Replace +// ------------------------------------ -------------------------------------------------------------------------------- +// UNITY_UI_ALPHACLIP LIL_RENDER 1 +// UNITY_UI_CLIP_RECT LIL_RENDER 2 +// ------------------------------------ -------------------------------------------------------------------------------- +// EFFECT_HUE_VARIATION LIL_FEATURE_MAIN_GRADATION_MAP LIL_FEATURE_MAIN_TONE_CORRECTION +// _COLORADDSUBDIFF_ON LIL_FEATURE_MAIN2ND +// _COLORCOLOR_ON LIL_FEATURE_MAIN3RD +// _SUNDISK_NONE LIL_FEATURE_ANIMATE_DECAL +// GEOM_TYPE_FROND LIL_FEATURE_LAYER_DISSOLVE +// _COLOROVERLAY_ON LIL_FEATURE_ALPHAMASK +// ------------------------------------ -------------------------------------------------------------------------------- +// _REQUIRE_UV2 LIL_FEATURE_SHADOW +// ANTI_FLICKER LIL_FEATURE_BACKLIGHT +// _EMISSION LIL_FEATURE_EMISSION_1ST +// GEOM_TYPE_BRANCH LIL_FEATURE_EMISSION_2ND +// _SUNDISK_SIMPLE LIL_FEATURE_TEX_EMISSION_MASK +// ------------------------------------ -------------------------------------------------------------------------------- +// _NORMALMAP LIL_FEATURE_NORMAL_1ST +// EFFECT_BUMP LIL_FEATURE_NORMAL_2ND +// SOURCE_GBUFFER LIL_FEATURE_ANISOTROPY +// _GLOSSYREFLECTIONS_OFF LIL_FEATURE_REFLECTION +// _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A LIL_FEATURE_MATCAP +// _SPECULARHIGHLIGHTS_OFF LIL_FEATURE_MATCAP_2ND +// GEOM_TYPE_MESH LIL_FEATURE_TEX_MATCAP_NORMALMAP +// _METALLICGLOSSMAP LIL_FEATURE_RIMLIGHT +// GEOM_TYPE_LEAF LIL_FEATURE_RIMLIGHT_DIRECTION +// _SPECGLOSSMAP LIL_FEATURE_GLITTER +// ------------------------------------ -------------------------------------------------------------------------------- +// _PARALLAXMAP LIL_FEATURE_PARALLAX +// PIXELSNAP_ON LIL_FEATURE_POM +// BILLBOARD_FACE_CAMERA_POS LIL_FEATURE_CLIPPING_CANCELLER +// _FADING_ON LIL_FEATURE_DISTANCE_FADE +// _MAPPING_6_FRAMES_LAYOUT LIL_FEATURE_AUDIOLINK +// _SUNDISK_HIGH_QUALITY LIL_FEATURE_AUDIOLINK_LOCAL +// GEOM_TYPE_BRANCH_DETAIL LIL_FEATURE_DISSOLVE +// ------------------------------------ -------------------------------------------------------------------------------- +// ETC1_EXTERNAL_ALPHA LIL_MULTI_OUTLINE +// _DETAIL_MULX2 LIL_FEATURE_OUTLINE_TONE_CORRECTION + //---------------------------------------------------------------------------------------------------------------------- // Replace keyword to transparent mode and outline #if defined(ETC1_EXTERNAL_ALPHA) diff --git a/Assets/lilToon/Shader/Includes/lil_tessellation.hlsl b/Assets/lilToon/Shader/Includes/lil_tessellation.hlsl index 8a907fe4..54638ea8 100644 --- a/Assets/lilToon/Shader/Includes/lil_tessellation.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_tessellation.hlsl @@ -99,7 +99,7 @@ v2f domain(lilTessellationFactors hsConst, const OutputPatch input, LIL_TRI_INTERPOLATION(input,output,bary,positionOS); #endif #if defined(LIL_APP_TEXCOORD0) - LIL_TRI_INTERPOLATION(input,output,bary,uv); + LIL_TRI_INTERPOLATION(input,output,bary,uv0); #endif #if defined(LIL_APP_TEXCOORD1) LIL_TRI_INTERPOLATION(input,output,bary,uv1); @@ -131,6 +131,9 @@ v2f domain(lilTessellationFactors hsConst, const OutputPatch input, #if defined(LIL_APP_TANGENT) LIL_TRI_INTERPOLATION(input,output,bary,tangentOS); #endif + #if defined(LIL_APP_VERTEXID) + output.vertexID = input[0].vertexID; + #endif #if defined(LIL_APP_PREVPOS) LIL_TRI_INTERPOLATION(input,output,bary,previousPositionOS); #endif diff --git a/Assets/lilToon/Shader/Includes/lil_vert_audiolink.hlsl b/Assets/lilToon/Shader/Includes/lil_vert_audiolink.hlsl index 5ca85d5d..a26155ca 100644 --- a/Assets/lilToon/Shader/Includes/lil_vert_audiolink.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_vert_audiolink.hlsl @@ -14,7 +14,7 @@ float2 audioLinkUV; if(_AudioLinkVertexUVMode == 0) audioLinkUV.x = _AudioLinkVertexUVParams.g; if(_AudioLinkVertexUVMode == 1) audioLinkUV.x = distance(LIL_MODIFY_TARGET.xyz, _AudioLinkVertexStart.xyz) * _AudioLinkVertexUVParams.r + _AudioLinkVertexUVParams.g; - if(_AudioLinkVertexUVMode == 2) audioLinkUV.x = lilRotateUV(input.uv, _AudioLinkVertexUVParams.b).x * _AudioLinkVertexUVParams.r + _AudioLinkVertexUVParams.g; + if(_AudioLinkVertexUVMode == 2) audioLinkUV.x = lilRotateUV(input.uv0, _AudioLinkVertexUVParams.b).x * _AudioLinkVertexUVParams.r + _AudioLinkVertexUVParams.g; audioLinkUV.y = _AudioLinkVertexUVParams.a; // Mask (R:Delay G:Band B:Strength) if(_AudioLinkVertexUVMode == 3 && Exists_AudioLinkMask) @@ -22,26 +22,23 @@ audioLinkMask = LIL_SAMPLE_2D_LOD(_AudioLinkMask, sampler_linear_repeat, uvMain, 0); audioLinkUV = audioLinkMask.rg; } - // Scaling for _AudioTexture (4/64) - #if defined(LIL_FEATURE_AUDIOLINK_LOCAL) - if(!_AudioLinkAsLocal) audioLinkUV.y *= 0.0625; - #else - audioLinkUV.y *= 0.0625; - #endif - // Global - if(_UseAudioLink && _AudioTexture_TexelSize.z > 16) - { - audioLinkValue = LIL_SAMPLE_2D_LOD(_AudioTexture, sampler_linear_clamp, audioLinkUV, 0).r; - audioLinkValue = saturate(audioLinkValue); - } // Local #if defined(LIL_FEATURE_AUDIOLINK_LOCAL) - if(_UseAudioLink && _AudioLinkAsLocal) + if(_AudioLinkAsLocal) { audioLinkUV.x += frac(-LIL_TIME * _AudioLinkLocalMapParams.r / 60 * _AudioLinkLocalMapParams.g) + _AudioLinkLocalMapParams.b; audioLinkValue = LIL_SAMPLE_2D_LOD(_AudioLinkLocalMap, sampler_linear_repeat, audioLinkUV, 0).r; } + else #endif + // Global + if(lilCheckAudioLink()) + { + // Scaling for _AudioTexture (4/64) + audioLinkUV.y *= 0.0625; + audioLinkValue = LIL_SAMPLE_2D_LOD(_AudioTexture, sampler_linear_clamp, audioLinkUV, 0).r; + audioLinkValue = saturate(audioLinkValue); + } LIL_MODIFY_TARGET.xyz += (input.normalOS * _AudioLinkVertexStrength.w + _AudioLinkVertexStrength.xyz) * audioLinkValue * audioLinkMask.b; } #endif diff --git a/Assets/lilToon/Shader/lts.shader b/Assets/lilToon/Shader/lts.shader index d410f987..81c7ae61 100644 --- a/Assets/lilToon/Shader/lts.shader +++ b/Assets/lilToon/Shader/lts.shader @@ -171,6 +171,8 @@ Shader "lilToon" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "lilToon" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "lilToon" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_cutout.shader b/Assets/lilToon/Shader/lts_cutout.shader index d533edb3..e08f5dea 100644 --- a/Assets/lilToon/Shader/lts_cutout.shader +++ b/Assets/lilToon/Shader/lts_cutout.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonCutout" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonCutout" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonCutout" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_cutout_o.shader b/Assets/lilToon/Shader/lts_cutout_o.shader index 53f4975b..91787015 100644 --- a/Assets/lilToon/Shader/lts_cutout_o.shader +++ b/Assets/lilToon/Shader/lts_cutout_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonCutoutOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonCutoutOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonCutoutOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_fakeshadow.shader b/Assets/lilToon/Shader/lts_fakeshadow.shader index 50750944..bc598d22 100644 --- a/Assets/lilToon/Shader/lts_fakeshadow.shader +++ b/Assets/lilToon/Shader/lts_fakeshadow.shader @@ -89,7 +89,7 @@ Shader "_lil/[Optional] lilToonFakeShadow" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -146,7 +146,7 @@ Shader "_lil/[Optional] lilToonFakeShadow" #pragma vertex vert #pragma fragment frag #pragma exclude_renderers gles gles3 glcore - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -199,7 +199,7 @@ Shader "_lil/[Optional] lilToonFakeShadow" #pragma vertex vert #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -256,7 +256,7 @@ Shader "_lil/[Optional] lilToonFakeShadow" #pragma vertex vert #pragma fragment frag #pragma exclude_renderers gles gles3 glcore - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -309,7 +309,7 @@ Shader "_lil/[Optional] lilToonFakeShadow" #pragma vertex vert #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/lts_fur.shader b/Assets/lilToon/Shader/lts_fur.shader index 5b911bb1..f7267821 100644 --- a/Assets/lilToon/Shader/lts_fur.shader +++ b/Assets/lilToon/Shader/lts_fur.shader @@ -97,7 +97,7 @@ Shader "Hidden/lilToonFur" [lilToggle] _VertexColor2FurVector ("VertexColor->Vector", Int) = 0 _FurGravity ("Fur Gravity", Range(0,1)) = 0.25 _FurAO ("Fur AO", Range(0,1)) = 0 - [IntRange] _FurLayerNum ("Fur Layer Num", Range(1, 6)) = 4 + [IntRange] _FurLayerNum ("Fur Layer Num", Range(1, 6)) = 2 _FurRootOffset ("Fur Root Offset", Range(-1,0)) = 0 //---------------------------------------------------------------------------------------------------------------------- @@ -180,10 +180,10 @@ Shader "Hidden/lilToonFur" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -225,7 +225,7 @@ Shader "Hidden/lilToonFur" #pragma geometry geom #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest #pragma skip_variants SHADOWS_SCREEN @@ -308,11 +308,9 @@ Shader "Hidden/lilToonFur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -357,11 +355,9 @@ Shader "Hidden/lilToonFur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -481,11 +477,9 @@ Shader "Hidden/lilToonFur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -528,11 +522,9 @@ Shader "Hidden/lilToonFur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -658,11 +650,9 @@ Shader "Hidden/lilToonFur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -707,12 +697,18 @@ Shader "Hidden/lilToonFur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -894,11 +890,9 @@ Shader "Hidden/lilToonFur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -942,12 +936,18 @@ Shader "Hidden/lilToonFur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1134,10 +1134,9 @@ Shader "Hidden/lilToonFur" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD @@ -1183,10 +1182,9 @@ Shader "Hidden/lilToonFur" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/lts_fur_cutout.shader b/Assets/lilToon/Shader/lts_fur_cutout.shader index 8cfd674a..988ae944 100644 --- a/Assets/lilToon/Shader/lts_fur_cutout.shader +++ b/Assets/lilToon/Shader/lts_fur_cutout.shader @@ -97,7 +97,7 @@ Shader "Hidden/lilToonFurCutout" [lilToggle] _VertexColor2FurVector ("VertexColor->Vector", Int) = 0 _FurGravity ("Fur Gravity", Range(0,1)) = 0.25 _FurAO ("Fur AO", Range(0,1)) = 0 - [IntRange] _FurLayerNum ("Fur Layer Num", Range(1, 6)) = 4 + [IntRange] _FurLayerNum ("Fur Layer Num", Range(1, 6)) = 2 _FurRootOffset ("Fur Root Offset", Range(-1,0)) = 0 //---------------------------------------------------------------------------------------------------------------------- @@ -180,10 +180,10 @@ Shader "Hidden/lilToonFurCutout" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -225,7 +225,7 @@ Shader "Hidden/lilToonFurCutout" #pragma geometry geom #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest #pragma skip_variants SHADOWS_SCREEN @@ -269,8 +269,8 @@ Shader "Hidden/lilToonFurCutout" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -315,8 +315,8 @@ Shader "Hidden/lilToonFurCutout" #pragma vertex vert #pragma geometry geom #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -399,11 +399,9 @@ Shader "Hidden/lilToonFurCutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -448,11 +446,9 @@ Shader "Hidden/lilToonFurCutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -573,11 +569,9 @@ Shader "Hidden/lilToonFurCutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -621,11 +615,9 @@ Shader "Hidden/lilToonFurCutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -751,11 +743,9 @@ Shader "Hidden/lilToonFurCutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -800,12 +790,18 @@ Shader "Hidden/lilToonFurCutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -987,11 +983,9 @@ Shader "Hidden/lilToonFurCutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -1035,12 +1029,18 @@ Shader "Hidden/lilToonFurCutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1227,10 +1227,9 @@ Shader "Hidden/lilToonFurCutout" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD @@ -1276,10 +1275,9 @@ Shader "Hidden/lilToonFurCutout" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/lts_gem.shader b/Assets/lilToon/Shader/lts_gem.shader index a97f26b8..b556e32b 100644 --- a/Assets/lilToon/Shader/lts_gem.shader +++ b/Assets/lilToon/Shader/lts_gem.shader @@ -159,6 +159,8 @@ Shader "Hidden/lilToonGem" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -244,6 +246,7 @@ Shader "Hidden/lilToonGem" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -279,6 +282,7 @@ Shader "Hidden/lilToonGem" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -438,7 +442,7 @@ Shader "Hidden/lilToonGem" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -481,7 +485,7 @@ Shader "Hidden/lilToonGem" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest #pragma skip_variants SHADOWS_SCREEN @@ -581,11 +585,9 @@ Shader "Hidden/lilToonGem" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -746,11 +748,9 @@ Shader "Hidden/lilToonGem" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -916,12 +916,18 @@ Shader "Hidden/lilToonGem" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -1145,12 +1151,18 @@ Shader "Hidden/lilToonGem" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1379,10 +1391,9 @@ Shader "Hidden/lilToonGem" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/lts_o.shader b/Assets/lilToon/Shader/lts_o.shader index 8ab40d4b..d84df8fd 100644 --- a/Assets/lilToon/Shader/lts_o.shader +++ b/Assets/lilToon/Shader/lts_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_onetrans.shader b/Assets/lilToon/Shader/lts_onetrans.shader index e7eab3ba..29d265fa 100644 --- a/Assets/lilToon/Shader/lts_onetrans.shader +++ b/Assets/lilToon/Shader/lts_onetrans.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonOnePassTransparent" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonOnePassTransparent" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonOnePassTransparent" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_onetrans_o.shader b/Assets/lilToon/Shader/lts_onetrans_o.shader index f25d92d4..77c5db46 100644 --- a/Assets/lilToon/Shader/lts_onetrans_o.shader +++ b/Assets/lilToon/Shader/lts_onetrans_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonOnePassTransparentOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonOnePassTransparentOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonOnePassTransparentOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_overlay.shader b/Assets/lilToon/Shader/lts_overlay.shader index 9e413c2e..d5529cef 100644 --- a/Assets/lilToon/Shader/lts_overlay.shader +++ b/Assets/lilToon/Shader/lts_overlay.shader @@ -171,6 +171,8 @@ Shader "_lil/[Optional] lilToonOverlay" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "_lil/[Optional] lilToonOverlay" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "_lil/[Optional] lilToonOverlay" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_overlay_one.shader b/Assets/lilToon/Shader/lts_overlay_one.shader index 3e2069c2..31fcf0ee 100644 --- a/Assets/lilToon/Shader/lts_overlay_one.shader +++ b/Assets/lilToon/Shader/lts_overlay_one.shader @@ -171,6 +171,8 @@ Shader "_lil/[Optional] lilToonOverlayOnePass" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "_lil/[Optional] lilToonOverlayOnePass" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "_lil/[Optional] lilToonOverlayOnePass" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_ref.shader b/Assets/lilToon/Shader/lts_ref.shader index fbc9837b..d6bfa672 100644 --- a/Assets/lilToon/Shader/lts_ref.shader +++ b/Assets/lilToon/Shader/lts_ref.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonRefraction" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonRefraction" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonRefraction" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -458,9 +462,10 @@ Shader "Hidden/lilToonRefraction" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -504,8 +509,8 @@ Shader "Hidden/lilToonRefraction" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -568,11 +573,9 @@ Shader "Hidden/lilToonRefraction" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -700,11 +703,9 @@ Shader "Hidden/lilToonRefraction" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Skip receiving shadow @@ -834,12 +835,18 @@ Shader "Hidden/lilToonRefraction" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Skip receiving shadow @@ -1028,12 +1035,18 @@ Shader "Hidden/lilToonRefraction" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Skip receiving shadow //#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1224,14 +1237,13 @@ Shader "Hidden/lilToonRefraction" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + //#pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + //#pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/lts_ref_blur.shader b/Assets/lilToon/Shader/lts_ref_blur.shader index 333fdaae..53c72c39 100644 --- a/Assets/lilToon/Shader/lts_ref_blur.shader +++ b/Assets/lilToon/Shader/lts_ref_blur.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonRefractionBlur" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonRefractionBlur" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonRefractionBlur" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -498,9 +502,10 @@ Shader "Hidden/lilToonRefractionBlur" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -544,8 +549,8 @@ Shader "Hidden/lilToonRefractionBlur" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -608,11 +613,9 @@ Shader "Hidden/lilToonRefractionBlur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -740,11 +743,9 @@ Shader "Hidden/lilToonRefractionBlur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Skip receiving shadow @@ -874,12 +875,18 @@ Shader "Hidden/lilToonRefractionBlur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Skip receiving shadow @@ -1068,12 +1075,18 @@ Shader "Hidden/lilToonRefractionBlur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Skip receiving shadow //#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1263,14 +1276,13 @@ Shader "Hidden/lilToonRefractionBlur" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + //#pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + //#pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/lts_tess.shader b/Assets/lilToon/Shader/lts_tess.shader index c879a720..5787be0b 100644 --- a/Assets/lilToon/Shader/lts_tess.shader +++ b/Assets/lilToon/Shader/lts_tess.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellation" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellation" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellation" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_tess_cutout.shader b/Assets/lilToon/Shader/lts_tess_cutout.shader index cd74ad03..070fc0e0 100644 --- a/Assets/lilToon/Shader/lts_tess_cutout.shader +++ b/Assets/lilToon/Shader/lts_tess_cutout.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellationCutout" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellationCutout" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellationCutout" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_tess_cutout_o.shader b/Assets/lilToon/Shader/lts_tess_cutout_o.shader index 1fa80835..e037c9cb 100644 --- a/Assets/lilToon/Shader/lts_tess_cutout_o.shader +++ b/Assets/lilToon/Shader/lts_tess_cutout_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellationCutoutOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellationCutoutOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellationCutoutOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_tess_o.shader b/Assets/lilToon/Shader/lts_tess_o.shader index bfb50fb0..919c36b9 100644 --- a/Assets/lilToon/Shader/lts_tess_o.shader +++ b/Assets/lilToon/Shader/lts_tess_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellationOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellationOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellationOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_tess_onetrans.shader b/Assets/lilToon/Shader/lts_tess_onetrans.shader index 5a4df97c..c75f179b 100644 --- a/Assets/lilToon/Shader/lts_tess_onetrans.shader +++ b/Assets/lilToon/Shader/lts_tess_onetrans.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellationOnePassTransparent" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellationOnePassTransparent" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellationOnePassTransparent" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_tess_onetrans_o.shader b/Assets/lilToon/Shader/lts_tess_onetrans_o.shader index 12432fae..a9a31a18 100644 --- a/Assets/lilToon/Shader/lts_tess_onetrans_o.shader +++ b/Assets/lilToon/Shader/lts_tess_onetrans_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellationOnePassTransparentOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellationOnePassTransparentOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellationOnePassTransparentOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_tess_trans.shader b/Assets/lilToon/Shader/lts_tess_trans.shader index fdf1f4ca..1fb8820a 100644 --- a/Assets/lilToon/Shader/lts_tess_trans.shader +++ b/Assets/lilToon/Shader/lts_tess_trans.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellationTransparent" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellationTransparent" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellationTransparent" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_tess_trans_o.shader b/Assets/lilToon/Shader/lts_tess_trans_o.shader index 26748e86..feb018e6 100644 --- a/Assets/lilToon/Shader/lts_tess_trans_o.shader +++ b/Assets/lilToon/Shader/lts_tess_trans_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellationTransparentOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellationTransparentOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellationTransparentOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_tess_twotrans.shader b/Assets/lilToon/Shader/lts_tess_twotrans.shader index 3b3314f3..9d3b71c5 100644 --- a/Assets/lilToon/Shader/lts_tess_twotrans.shader +++ b/Assets/lilToon/Shader/lts_tess_twotrans.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellationTwoPassTransparent" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellationTwoPassTransparent" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellationTwoPassTransparent" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_tess_twotrans_o.shader b/Assets/lilToon/Shader/lts_tess_twotrans_o.shader index 7130eea8..159eb23c 100644 --- a/Assets/lilToon/Shader/lts_tess_twotrans_o.shader +++ b/Assets/lilToon/Shader/lts_tess_twotrans_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTessellationTwoPassTransparentOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTessellationTwoPassTransparentOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTessellationTwoPassTransparentOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_trans.shader b/Assets/lilToon/Shader/lts_trans.shader index bf664281..d2ef3483 100644 --- a/Assets/lilToon/Shader/lts_trans.shader +++ b/Assets/lilToon/Shader/lts_trans.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTransparent" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTransparent" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTransparent" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_trans_o.shader b/Assets/lilToon/Shader/lts_trans_o.shader index eb86abc1..353a310d 100644 --- a/Assets/lilToon/Shader/lts_trans_o.shader +++ b/Assets/lilToon/Shader/lts_trans_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTransparentOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTransparentOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTransparentOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_twotrans.shader b/Assets/lilToon/Shader/lts_twotrans.shader index 7dc2fc28..2797d3ff 100644 --- a/Assets/lilToon/Shader/lts_twotrans.shader +++ b/Assets/lilToon/Shader/lts_twotrans.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTwoPassTransparent" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTwoPassTransparent" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTwoPassTransparent" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/lts_twotrans_o.shader b/Assets/lilToon/Shader/lts_twotrans_o.shader index b5f7da92..717ceca6 100644 --- a/Assets/lilToon/Shader/lts_twotrans_o.shader +++ b/Assets/lilToon/Shader/lts_twotrans_o.shader @@ -171,6 +171,8 @@ Shader "Hidden/lilToonTwoPassTransparentOutline" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -256,6 +258,7 @@ Shader "Hidden/lilToonTwoPassTransparentOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -291,6 +294,7 @@ Shader "Hidden/lilToonTwoPassTransparentOutline" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) diff --git a/Assets/lilToon/Shader/ltsl.shader b/Assets/lilToon/Shader/ltsl.shader index 0743fa1c..db5ce65e 100644 --- a/Assets/lilToon/Shader/ltsl.shader +++ b/Assets/lilToon/Shader/ltsl.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLite" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_cutout.shader b/Assets/lilToon/Shader/ltsl_cutout.shader index bc6d1f84..6ccb3e58 100644 --- a/Assets/lilToon/Shader/ltsl_cutout.shader +++ b/Assets/lilToon/Shader/ltsl_cutout.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLiteCutout" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_cutout_o.shader b/Assets/lilToon/Shader/ltsl_cutout_o.shader index a67943e2..85d4bd7d 100644 --- a/Assets/lilToon/Shader/ltsl_cutout_o.shader +++ b/Assets/lilToon/Shader/ltsl_cutout_o.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLiteCutoutOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_o.shader b/Assets/lilToon/Shader/ltsl_o.shader index b502afe2..d39ed15e 100644 --- a/Assets/lilToon/Shader/ltsl_o.shader +++ b/Assets/lilToon/Shader/ltsl_o.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLiteOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_onetrans.shader b/Assets/lilToon/Shader/ltsl_onetrans.shader index fac49713..19ed49af 100644 --- a/Assets/lilToon/Shader/ltsl_onetrans.shader +++ b/Assets/lilToon/Shader/ltsl_onetrans.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLiteOnePassTransparent" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_onetrans_o.shader b/Assets/lilToon/Shader/ltsl_onetrans_o.shader index 0a028f5c..866dce65 100644 --- a/Assets/lilToon/Shader/ltsl_onetrans_o.shader +++ b/Assets/lilToon/Shader/ltsl_onetrans_o.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLiteOnePassTransparentOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_overlay.shader b/Assets/lilToon/Shader/ltsl_overlay.shader index 6090e6a6..a6841a5a 100644 --- a/Assets/lilToon/Shader/ltsl_overlay.shader +++ b/Assets/lilToon/Shader/ltsl_overlay.shader @@ -64,6 +64,7 @@ Shader "_lil/[Optional] lilToonLiteOverlay" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_overlay_one.shader b/Assets/lilToon/Shader/ltsl_overlay_one.shader index e08251d0..03c5f1cc 100644 --- a/Assets/lilToon/Shader/ltsl_overlay_one.shader +++ b/Assets/lilToon/Shader/ltsl_overlay_one.shader @@ -64,6 +64,7 @@ Shader "_lil/[Optional] lilToonLiteOverlayOnePass" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_trans.shader b/Assets/lilToon/Shader/ltsl_trans.shader index fb9bbde6..05612146 100644 --- a/Assets/lilToon/Shader/ltsl_trans.shader +++ b/Assets/lilToon/Shader/ltsl_trans.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLiteTransparent" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_trans_o.shader b/Assets/lilToon/Shader/ltsl_trans_o.shader index 263b342e..58bdda1f 100644 --- a/Assets/lilToon/Shader/ltsl_trans_o.shader +++ b/Assets/lilToon/Shader/ltsl_trans_o.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLiteTransparentOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_twotrans.shader b/Assets/lilToon/Shader/ltsl_twotrans.shader index cd69844b..91a327cb 100644 --- a/Assets/lilToon/Shader/ltsl_twotrans.shader +++ b/Assets/lilToon/Shader/ltsl_twotrans.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLiteTwoPassTransparent" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsl_twotrans_o.shader b/Assets/lilToon/Shader/ltsl_twotrans_o.shader index 6d6ef2a8..5ed25e26 100644 --- a/Assets/lilToon/Shader/ltsl_twotrans_o.shader +++ b/Assets/lilToon/Shader/ltsl_twotrans_o.shader @@ -64,6 +64,7 @@ Shader "Hidden/lilToonLiteTwoPassTransparentOutline" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 [lilBlink] _EmissionBlink ("Blink Strength|Blink Type|Blink Speed|Blink Offset", Vector) = (0,0,3.141593,0) //---------------------------------------------------------------------------------------------------------------------- diff --git a/Assets/lilToon/Shader/ltsmulti.shader b/Assets/lilToon/Shader/ltsmulti.shader index 8dee9ce2..a8895f37 100644 --- a/Assets/lilToon/Shader/ltsmulti.shader +++ b/Assets/lilToon/Shader/ltsmulti.shader @@ -175,6 +175,8 @@ Shader "_lil/lilToonMulti" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -260,6 +262,7 @@ Shader "_lil/lilToonMulti" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -295,6 +298,7 @@ Shader "_lil/lilToonMulti" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -522,9 +526,10 @@ Shader "_lil/lilToonMulti" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // Transparent mode #pragma shader_feature_local UNITY_UI_ALPHACLIP @@ -604,10 +609,10 @@ Shader "_lil/lilToonMulti" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED // Transparent mode #pragma shader_feature_local UNITY_UI_ALPHACLIP @@ -631,8 +636,8 @@ Shader "_lil/lilToonMulti" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -670,8 +675,8 @@ Shader "_lil/lilToonMulti" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -831,11 +836,9 @@ Shader "_lil/lilToonMulti" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -921,9 +924,9 @@ Shader "_lil/lilToonMulti" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -949,8 +952,8 @@ Shader "_lil/lilToonMulti" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -1100,11 +1103,9 @@ Shader "_lil/lilToonMulti" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1189,9 +1190,9 @@ Shader "_lil/lilToonMulti" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Transparent mode @@ -1216,8 +1217,8 @@ Shader "_lil/lilToonMulti" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -1370,12 +1371,18 @@ Shader "_lil/lilToonMulti" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1460,10 +1467,13 @@ Shader "_lil/lilToonMulti" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Transparent mode @@ -1488,8 +1498,8 @@ Shader "_lil/lilToonMulti" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -1712,12 +1722,18 @@ Shader "_lil/lilToonMulti" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN #pragma multi_compile_fragment _ _SHADOWS_SOFT @@ -1801,10 +1817,13 @@ Shader "_lil/lilToonMulti" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Transparent mode #pragma shader_feature_local UNITY_UI_ALPHACLIP @@ -1828,8 +1847,8 @@ Shader "_lil/lilToonMulti" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL @@ -2055,13 +2074,12 @@ Shader "_lil/lilToonMulti" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK - #pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - #pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + #pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD @@ -2145,10 +2163,9 @@ Shader "_lil/lilToonMulti" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD @@ -2174,8 +2191,8 @@ Shader "_lil/lilToonMulti" #include "Includes/lil_pass_forward.hlsl" #else #include "Includes/lil_pipeline.hlsl" - void vert(){} - void frag(){} + float4 vert() : SV_POSITION {return float4(0.0,0.0,0.0,0.0);} + float4 frag() : SV_Target {return float4(0.0,0.0,0.0,0.0);} #endif ENDHLSL diff --git a/Assets/lilToon/Shader/ltsmulti_fur.shader b/Assets/lilToon/Shader/ltsmulti_fur.shader index e2daea1b..3bafca40 100644 --- a/Assets/lilToon/Shader/ltsmulti_fur.shader +++ b/Assets/lilToon/Shader/ltsmulti_fur.shader @@ -101,7 +101,7 @@ Shader "Hidden/lilToonMultiFur" [lilToggle] _VertexColor2FurVector ("VertexColor->Vector", Int) = 0 _FurGravity ("Fur Gravity", Range(0,1)) = 0.25 _FurAO ("Fur AO", Range(0,1)) = 0 - [IntRange] _FurLayerNum ("Fur Layer Num", Range(1, 6)) = 4 + [IntRange] _FurLayerNum ("Fur Layer Num", Range(1, 6)) = 2 _FurRootOffset ("Fur Root Offset", Range(-1,0)) = 0 //---------------------------------------------------------------------------------------------------------------------- @@ -194,10 +194,10 @@ Shader "Hidden/lilToonMultiFur" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED // Transparent mode #pragma shader_feature_local UNITY_UI_CLIP_RECT @@ -249,7 +249,7 @@ Shader "Hidden/lilToonMultiFur" #pragma geometry geom #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest #pragma skip_variants SHADOWS_SCREEN @@ -370,11 +370,9 @@ Shader "Hidden/lilToonMultiFur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -429,11 +427,9 @@ Shader "Hidden/lilToonMultiFur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -575,11 +571,9 @@ Shader "Hidden/lilToonMultiFur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Transparent mode @@ -632,11 +626,9 @@ Shader "Hidden/lilToonMultiFur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Transparent mode @@ -784,12 +776,11 @@ Shader "Hidden/lilToonMultiFur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Transparent mode @@ -843,12 +834,18 @@ Shader "Hidden/lilToonMultiFur" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Transparent mode @@ -1058,12 +1055,11 @@ Shader "Hidden/lilToonMultiFur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Transparent mode #pragma shader_feature_local UNITY_UI_CLIP_RECT @@ -1116,12 +1112,18 @@ Shader "Hidden/lilToonMultiFur" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Transparent mode #pragma shader_feature_local UNITY_UI_CLIP_RECT @@ -1336,10 +1338,9 @@ Shader "Hidden/lilToonMultiFur" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD @@ -1395,10 +1396,9 @@ Shader "Hidden/lilToonMultiFur" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltsmulti_gem.shader b/Assets/lilToon/Shader/ltsmulti_gem.shader index e3c0fba9..7940d152 100644 --- a/Assets/lilToon/Shader/ltsmulti_gem.shader +++ b/Assets/lilToon/Shader/ltsmulti_gem.shader @@ -163,6 +163,8 @@ Shader "Hidden/lilToonMultiGem" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -248,6 +250,7 @@ Shader "Hidden/lilToonMultiGem" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -283,6 +286,7 @@ Shader "Hidden/lilToonMultiGem" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -463,7 +467,7 @@ Shader "Hidden/lilToonMultiGem" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -506,10 +510,10 @@ Shader "Hidden/lilToonMultiGem" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED // AlphaMask and Dissolve #pragma shader_feature_local GEOM_TYPE_BRANCH_DETAIL @@ -688,11 +692,9 @@ Shader "Hidden/lilToonMultiGem" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -897,11 +899,9 @@ Shader "Hidden/lilToonMultiGem" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // AlphaMask and Dissolve @@ -1111,12 +1111,18 @@ Shader "Hidden/lilToonMultiGem" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // AlphaMask and Dissolve @@ -1390,12 +1396,18 @@ Shader "Hidden/lilToonMultiGem" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // AlphaMask and Dissolve #pragma shader_feature_local GEOM_TYPE_BRANCH_DETAIL @@ -1674,10 +1686,9 @@ Shader "Hidden/lilToonMultiGem" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltsmulti_ref.shader b/Assets/lilToon/Shader/ltsmulti_ref.shader index 8973da9c..122ae0f2 100644 --- a/Assets/lilToon/Shader/ltsmulti_ref.shader +++ b/Assets/lilToon/Shader/ltsmulti_ref.shader @@ -175,6 +175,8 @@ Shader "Hidden/lilToonMultiRefraction" [lilToggle] _ApplySpecular ("Apply Specular", Int) = 1 [lilToggle] _ApplySpecularFA ("Apply Specular in ForwardAdd", Int) = 1 [lilToggle] _SpecularToon ("Specular Toon", Int) = 1 + _SpecularBorder ("Border", Range(0, 1)) = 0.5 + _SpecularBlur ("Blur", Range(0, 1)) = 0.0 [lilToggle] _ApplyReflection ("Apply Reflection", Int) = 0 [lilHDR] _ReflectionColor ("Color", Color) = (1,1,1,1) [NoScaleOffset] _ReflectionColorTex ("Color", 2D) = "white" {} @@ -260,6 +262,7 @@ Shader "Hidden/lilToonMultiRefraction" [HDR][lilHDR] _EmissionColor ("Color", Color) = (1,1,1,1) _EmissionMap ("Texture", 2D) = "white" {} [lilUVAnim] _EmissionMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _EmissionMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _EmissionBlend ("Blend", Range(0,1)) = 1 _EmissionBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _EmissionBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -295,6 +298,7 @@ Shader "Hidden/lilToonMultiRefraction" [HDR][lilHDR] _Emission2ndColor ("Color", Color) = (1,1,1,1) _Emission2ndMap ("Texture", 2D) = "white" {} [lilUVAnim] _Emission2ndMap_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) + [lilEnum] _Emission2ndMap_UVMode ("UV Mode|UV0|UV1|UV2|UV3|Rim", Int) = 0 _Emission2ndBlend ("Blend", Range(0,1)) = 1 _Emission2ndBlendMask ("Mask", 2D) = "white" {} [lilUVAnim] _Emission2ndBlendMask_ScrollRotate ("Angle|UV Animation|Scroll|Rotate", Vector) = (0,0,0,0) @@ -491,9 +495,10 @@ Shader "Hidden/lilToonMultiRefraction" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // AlphaMask and Dissolve #pragma shader_feature_local _COLOROVERLAY_ON @@ -569,8 +574,8 @@ Shader "Hidden/lilToonMultiRefraction" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -584,11 +589,6 @@ Shader "Hidden/lilToonMultiRefraction" #pragma shader_feature_local _COLORCOLOR_ON #pragma shader_feature_local _SUNDISK_NONE #pragma shader_feature_local GEOM_TYPE_FROND - #pragma shader_feature_local _REQUIRE_UV2 - #pragma shader_feature_local ANTI_FLICKER - #pragma shader_feature_local _EMISSION - #pragma shader_feature_local GEOM_TYPE_BRANCH - #pragma shader_feature_local _SUNDISK_SIMPLE #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local EFFECT_BUMP #pragma shader_feature_local SOURCE_GBUFFER @@ -727,11 +727,9 @@ Shader "Hidden/lilToonMultiRefraction" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -916,11 +914,9 @@ Shader "Hidden/lilToonMultiRefraction" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1107,12 +1103,18 @@ Shader "Hidden/lilToonMultiRefraction" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1365,12 +1367,18 @@ Shader "Hidden/lilToonMultiRefraction" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN #pragma multi_compile_fragment _ _SHADOWS_SOFT @@ -1625,13 +1633,12 @@ Shader "Hidden/lilToonMultiRefraction" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK - #pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - #pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + #pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltspass_baker.shader b/Assets/lilToon/Shader/ltspass_baker.shader index 3c3ade99..e5d9f1cf 100644 --- a/Assets/lilToon/Shader/ltspass_baker.shader +++ b/Assets/lilToon/Shader/ltspass_baker.shader @@ -65,14 +65,12 @@ Shader "Hidden/ltsother_baker" #define LIL_BAKER #define LIL_WITHOUT_ANIMATION #include "Includes/lil_pipeline.hlsl" - #include "Includes/lil_common_input.hlsl" - #include "Includes/lil_common_functions.hlsl" #include "Includes/lil_common_appdata.hlsl" struct v2f { float4 positionCS : SV_POSITION; - float2 uv : TEXCOORD0; + float2 uv0 : TEXCOORD0; float tangentW : TEXCOORD1; }; @@ -81,7 +79,7 @@ Shader "Hidden/ltsother_baker" v2f o; LIL_VERTEX_POSITION_INPUTS(input.positionOS, vertexInput); o.positionCS = vertexInput.positionCS; - o.uv = input.uv; + o.uv0 = input.uv0; o.tangentW = input.tangentOS.w; return o; } @@ -89,26 +87,26 @@ Shader "Hidden/ltsother_baker" float4 frag(v2f input) : SV_Target { #ifdef _TRIMASK - float4 col1 = LIL_SAMPLE_2D(_MainTex,sampler_MainTex,input.uv); - float4 col2 = LIL_SAMPLE_2D(_Main2ndTex,sampler_Main2ndTex,input.uv); - float4 col3 = LIL_SAMPLE_2D(_Main3rdTex,sampler_Main3rdTex,input.uv); + float4 col1 = LIL_SAMPLE_2D(_MainTex,sampler_MainTex,input.uv0); + float4 col2 = LIL_SAMPLE_2D(_Main2ndTex,sampler_Main2ndTex,input.uv0); + float4 col3 = LIL_SAMPLE_2D(_Main3rdTex,sampler_Main3rdTex,input.uv0); float mat = lilGray(col1.rgb); float rim = lilGray(col2.rgb); float emi = lilGray(col3.rgb); float4 col = float4(mat,rim,emi,1); #elif _ALPHAMASK - float4 col = LIL_SAMPLE_2D(_MainTex,sampler_MainTex,input.uv); - float alphaMask = LIL_SAMPLE_2D(_AlphaMask,sampler_MainTex,input.uv).r; + float4 col = LIL_SAMPLE_2D(_MainTex,sampler_MainTex,input.uv0); + float alphaMask = LIL_SAMPLE_2D(_AlphaMask,sampler_MainTex,input.uv0).r; alphaMask = saturate(alphaMask + _AlphaMaskValue); col.a = _AlphaMaskMode == 1 ? alphaMask : col.a * alphaMask; #elif _NORMAL_DXGL - float4 col = LIL_SAMPLE_2D(_MainTex,sampler_MainTex,input.uv); + float4 col = LIL_SAMPLE_2D(_MainTex,sampler_MainTex,input.uv0); col.g = 1.0 - col.g; #else // Main - float4 col = LIL_SAMPLE_2D(_MainTex,sampler_MainTex,input.uv); + float4 col = LIL_SAMPLE_2D(_MainTex,sampler_MainTex,input.uv0); float3 baseColor = col.rgb; - float colorAdjustMask = LIL_SAMPLE_2D(_MainColorAdjustMask, sampler_MainTex, input.uv).r; + float colorAdjustMask = LIL_SAMPLE_2D(_MainColorAdjustMask, sampler_MainTex, input.uv0).r; col.rgb = lilToneCorrection(col.rgb, _MainTexHSVG); #if defined(LIL_FEATURE_MAIN_GRADATION_MAP) col.rgb = lilGradationMap(col.rgb, _MainGradationTex, _MainGradationStrength); @@ -122,16 +120,16 @@ Shader "Hidden/ltsother_baker" UNITY_BRANCH if(_UseMain2ndTex) { - _Color2nd *= LIL_GET_SUBTEX(_Main2ndTex,input.uv); - col.rgb = lilBlendColor(col.rgb, _Color2nd.rgb, LIL_SAMPLE_2D(_Main2ndBlendMask,sampler_MainTex,input.uv).r * _Color2nd.a, _Main2ndTexBlendMode); + _Color2nd *= LIL_GET_SUBTEX(_Main2ndTex,input.uv0); + col.rgb = lilBlendColor(col.rgb, _Color2nd.rgb, LIL_SAMPLE_2D(_Main2ndBlendMask,sampler_MainTex,input.uv0).r * _Color2nd.a, _Main2ndTexBlendMode); } // 3rd UNITY_BRANCH if(_UseMain3rdTex) { - _Color3rd *= LIL_GET_SUBTEX(_Main3rdTex,input.uv); - col.rgb = lilBlendColor(col.rgb, _Color3rd.rgb, LIL_SAMPLE_2D(_Main3rdBlendMask,sampler_MainTex,input.uv).r * _Color3rd.a, _Main3rdTexBlendMode); + _Color3rd *= LIL_GET_SUBTEX(_Main3rdTex,input.uv0); + col.rgb = lilBlendColor(col.rgb, _Color3rd.rgb, LIL_SAMPLE_2D(_Main3rdBlendMask,sampler_MainTex,input.uv0).r * _Color3rd.a, _Main3rdTexBlendMode); } #endif diff --git a/Assets/lilToon/Shader/ltspass_cutout.shader b/Assets/lilToon/Shader/ltspass_cutout.shader index 12baeb01..ccfabbce 100644 --- a/Assets/lilToon/Shader/ltspass_cutout.shader +++ b/Assets/lilToon/Shader/ltspass_cutout.shader @@ -45,9 +45,10 @@ Shader "Hidden/ltspass_cutout" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -91,10 +92,10 @@ Shader "Hidden/ltspass_cutout" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -136,8 +137,8 @@ Shader "Hidden/ltspass_cutout" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -243,11 +244,9 @@ Shader "Hidden/ltspass_cutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -295,9 +294,9 @@ Shader "Hidden/ltspass_cutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -421,11 +420,9 @@ Shader "Hidden/ltspass_cutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Skip receiving shadow @@ -472,9 +469,9 @@ Shader "Hidden/ltspass_cutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -601,12 +598,18 @@ Shader "Hidden/ltspass_cutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Skip receiving shadow @@ -653,10 +656,13 @@ Shader "Hidden/ltspass_cutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -841,12 +847,18 @@ Shader "Hidden/ltspass_cutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Skip receiving shadow //#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -892,10 +904,13 @@ Shader "Hidden/ltspass_cutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1082,14 +1097,13 @@ Shader "Hidden/ltspass_cutout" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + //#pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + //#pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD @@ -1134,10 +1148,9 @@ Shader "Hidden/ltspass_cutout" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltspass_lite_cutout.shader b/Assets/lilToon/Shader/ltspass_lite_cutout.shader index 80ab8beb..906df941 100644 --- a/Assets/lilToon/Shader/ltspass_lite_cutout.shader +++ b/Assets/lilToon/Shader/ltspass_lite_cutout.shader @@ -43,10 +43,10 @@ Shader "Hidden/ltspass_lite_cutout" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -87,10 +87,10 @@ Shader "Hidden/ltspass_lite_cutout" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -132,8 +132,8 @@ Shader "Hidden/ltspass_lite_cutout" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -239,11 +239,9 @@ Shader "Hidden/ltspass_lite_cutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -287,9 +285,9 @@ Shader "Hidden/ltspass_lite_cutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -409,11 +407,9 @@ Shader "Hidden/ltspass_lite_cutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -456,9 +452,9 @@ Shader "Hidden/ltspass_lite_cutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -585,12 +581,18 @@ Shader "Hidden/ltspass_lite_cutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -633,10 +635,13 @@ Shader "Hidden/ltspass_lite_cutout" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -817,12 +822,18 @@ Shader "Hidden/ltspass_lite_cutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -864,10 +875,13 @@ Shader "Hidden/ltspass_lite_cutout" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1054,14 +1068,9 @@ Shader "Hidden/ltspass_lite_cutout" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK - - // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD @@ -1106,10 +1115,9 @@ Shader "Hidden/ltspass_lite_cutout" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltspass_lite_opaque.shader b/Assets/lilToon/Shader/ltspass_lite_opaque.shader index 025c9561..e619438d 100644 --- a/Assets/lilToon/Shader/ltspass_lite_opaque.shader +++ b/Assets/lilToon/Shader/ltspass_lite_opaque.shader @@ -43,10 +43,10 @@ Shader "Hidden/ltspass_lite_opaque" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -87,10 +87,10 @@ Shader "Hidden/ltspass_lite_opaque" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -132,8 +132,8 @@ Shader "Hidden/ltspass_lite_opaque" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -239,11 +239,9 @@ Shader "Hidden/ltspass_lite_opaque" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -287,9 +285,9 @@ Shader "Hidden/ltspass_lite_opaque" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -409,11 +407,9 @@ Shader "Hidden/ltspass_lite_opaque" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -456,9 +452,9 @@ Shader "Hidden/ltspass_lite_opaque" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -585,12 +581,18 @@ Shader "Hidden/ltspass_lite_opaque" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -633,10 +635,13 @@ Shader "Hidden/ltspass_lite_opaque" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -817,12 +822,18 @@ Shader "Hidden/ltspass_lite_opaque" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -864,10 +875,13 @@ Shader "Hidden/ltspass_lite_opaque" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1054,14 +1068,9 @@ Shader "Hidden/ltspass_lite_opaque" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK - - // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD @@ -1106,10 +1115,9 @@ Shader "Hidden/ltspass_lite_opaque" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltspass_lite_transparent.shader b/Assets/lilToon/Shader/ltspass_lite_transparent.shader index b0337836..8e72094a 100644 --- a/Assets/lilToon/Shader/ltspass_lite_transparent.shader +++ b/Assets/lilToon/Shader/ltspass_lite_transparent.shader @@ -43,10 +43,10 @@ Shader "Hidden/ltspass_lite_transparent" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -87,10 +87,10 @@ Shader "Hidden/ltspass_lite_transparent" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -131,10 +131,10 @@ Shader "Hidden/ltspass_lite_transparent" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -176,8 +176,8 @@ Shader "Hidden/ltspass_lite_transparent" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -283,11 +283,9 @@ Shader "Hidden/ltspass_lite_transparent" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -331,9 +329,9 @@ Shader "Hidden/ltspass_lite_transparent" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -453,11 +451,9 @@ Shader "Hidden/ltspass_lite_transparent" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -500,9 +496,9 @@ Shader "Hidden/ltspass_lite_transparent" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -629,12 +625,18 @@ Shader "Hidden/ltspass_lite_transparent" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -677,10 +679,13 @@ Shader "Hidden/ltspass_lite_transparent" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -861,12 +866,18 @@ Shader "Hidden/ltspass_lite_transparent" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -908,10 +919,13 @@ Shader "Hidden/ltspass_lite_transparent" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1098,14 +1112,9 @@ Shader "Hidden/ltspass_lite_transparent" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK - - // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD @@ -1150,10 +1159,9 @@ Shader "Hidden/ltspass_lite_transparent" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltspass_opaque.shader b/Assets/lilToon/Shader/ltspass_opaque.shader index 7ee345e6..481723aa 100644 --- a/Assets/lilToon/Shader/ltspass_opaque.shader +++ b/Assets/lilToon/Shader/ltspass_opaque.shader @@ -45,9 +45,10 @@ Shader "Hidden/ltspass_opaque" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -91,10 +92,10 @@ Shader "Hidden/ltspass_opaque" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -136,8 +137,8 @@ Shader "Hidden/ltspass_opaque" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -243,11 +244,9 @@ Shader "Hidden/ltspass_opaque" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -295,9 +294,9 @@ Shader "Hidden/ltspass_opaque" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -421,11 +420,9 @@ Shader "Hidden/ltspass_opaque" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Skip receiving shadow @@ -472,9 +469,9 @@ Shader "Hidden/ltspass_opaque" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -601,12 +598,18 @@ Shader "Hidden/ltspass_opaque" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Skip receiving shadow @@ -653,10 +656,13 @@ Shader "Hidden/ltspass_opaque" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -841,12 +847,18 @@ Shader "Hidden/ltspass_opaque" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Skip receiving shadow //#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -892,10 +904,13 @@ Shader "Hidden/ltspass_opaque" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1082,14 +1097,13 @@ Shader "Hidden/ltspass_opaque" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + //#pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + //#pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD @@ -1134,10 +1148,9 @@ Shader "Hidden/ltspass_opaque" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltspass_tess_cutout.shader b/Assets/lilToon/Shader/ltspass_tess_cutout.shader index 8e99a51e..14647fb2 100644 --- a/Assets/lilToon/Shader/ltspass_tess_cutout.shader +++ b/Assets/lilToon/Shader/ltspass_tess_cutout.shader @@ -46,9 +46,11 @@ Shader "Hidden/ltspass_tess_cutout" #pragma domain domain #pragma require tesshw tessellation #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED + #pragma multi_compile_domain _ VERTEXLIGHT_ON // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -95,10 +97,11 @@ Shader "Hidden/ltspass_tess_cutout" #pragma domain domain #pragma require tesshw tessellation #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED + #pragma multi_compile_domain _ VERTEXLIGHT_ON //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -143,8 +146,8 @@ Shader "Hidden/ltspass_tess_cutout" #pragma hull hull #pragma domain domain #pragma require tesshw tessellation - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -250,11 +253,9 @@ Shader "Hidden/ltspass_tess_cutout" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -305,9 +306,9 @@ Shader "Hidden/ltspass_tess_cutout" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -430,11 +431,9 @@ Shader "Hidden/ltspass_tess_cutout" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Skip receiving shadow @@ -484,9 +483,9 @@ Shader "Hidden/ltspass_tess_cutout" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -613,12 +612,18 @@ Shader "Hidden/ltspass_tess_cutout" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Skip receiving shadow @@ -668,10 +673,13 @@ Shader "Hidden/ltspass_tess_cutout" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -855,12 +863,18 @@ Shader "Hidden/ltspass_tess_cutout" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Skip receiving shadow //#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -909,10 +923,13 @@ Shader "Hidden/ltspass_tess_cutout" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1099,14 +1116,13 @@ Shader "Hidden/ltspass_tess_cutout" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + //#pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + //#pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD @@ -1154,10 +1170,9 @@ Shader "Hidden/ltspass_tess_cutout" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltspass_tess_opaque.shader b/Assets/lilToon/Shader/ltspass_tess_opaque.shader index b1ea7f7d..cd83babd 100644 --- a/Assets/lilToon/Shader/ltspass_tess_opaque.shader +++ b/Assets/lilToon/Shader/ltspass_tess_opaque.shader @@ -46,9 +46,11 @@ Shader "Hidden/ltspass_tess_opaque" #pragma domain domain #pragma require tesshw tessellation #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED + #pragma multi_compile_domain _ VERTEXLIGHT_ON // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -95,10 +97,11 @@ Shader "Hidden/ltspass_tess_opaque" #pragma domain domain #pragma require tesshw tessellation #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED + #pragma multi_compile_domain _ VERTEXLIGHT_ON //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -143,8 +146,8 @@ Shader "Hidden/ltspass_tess_opaque" #pragma hull hull #pragma domain domain #pragma require tesshw tessellation - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -249,11 +252,9 @@ Shader "Hidden/ltspass_tess_opaque" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -304,9 +305,9 @@ Shader "Hidden/ltspass_tess_opaque" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -429,11 +430,9 @@ Shader "Hidden/ltspass_tess_opaque" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Skip receiving shadow @@ -483,9 +482,9 @@ Shader "Hidden/ltspass_tess_opaque" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -612,12 +611,18 @@ Shader "Hidden/ltspass_tess_opaque" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Skip receiving shadow @@ -667,10 +672,13 @@ Shader "Hidden/ltspass_tess_opaque" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -854,12 +862,18 @@ Shader "Hidden/ltspass_tess_opaque" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Skip receiving shadow //#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -908,10 +922,13 @@ Shader "Hidden/ltspass_tess_opaque" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1098,14 +1115,13 @@ Shader "Hidden/ltspass_tess_opaque" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + //#pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + //#pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD @@ -1153,10 +1169,9 @@ Shader "Hidden/ltspass_tess_opaque" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltspass_tess_transparent.shader b/Assets/lilToon/Shader/ltspass_tess_transparent.shader index 1c3369f6..5b4c5227 100644 --- a/Assets/lilToon/Shader/ltspass_tess_transparent.shader +++ b/Assets/lilToon/Shader/ltspass_tess_transparent.shader @@ -46,9 +46,11 @@ Shader "Hidden/ltspass_tess_transparent" #pragma domain domain #pragma require tesshw tessellation #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED + #pragma multi_compile_domain _ VERTEXLIGHT_ON // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -95,9 +97,11 @@ Shader "Hidden/ltspass_tess_transparent" #pragma domain domain #pragma require tesshw tessellation #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED + #pragma multi_compile_domain _ VERTEXLIGHT_ON // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -144,10 +148,11 @@ Shader "Hidden/ltspass_tess_transparent" #pragma domain domain #pragma require tesshw tessellation #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED + #pragma multi_compile_domain _ VERTEXLIGHT_ON //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -192,8 +197,8 @@ Shader "Hidden/ltspass_tess_transparent" #pragma hull hull #pragma domain domain #pragma require tesshw tessellation - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -299,11 +304,9 @@ Shader "Hidden/ltspass_tess_transparent" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -354,9 +357,9 @@ Shader "Hidden/ltspass_tess_transparent" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -479,11 +482,9 @@ Shader "Hidden/ltspass_tess_transparent" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Skip receiving shadow @@ -533,9 +534,9 @@ Shader "Hidden/ltspass_tess_transparent" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -662,12 +663,18 @@ Shader "Hidden/ltspass_tess_transparent" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Skip receiving shadow @@ -717,10 +724,13 @@ Shader "Hidden/ltspass_tess_transparent" #pragma require tesshw tessellation #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -904,12 +914,18 @@ Shader "Hidden/ltspass_tess_transparent" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Skip receiving shadow //#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -958,10 +974,13 @@ Shader "Hidden/ltspass_tess_transparent" #pragma require tesshw tessellation #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1148,14 +1167,13 @@ Shader "Hidden/ltspass_tess_transparent" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + //#pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + //#pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD @@ -1203,10 +1221,9 @@ Shader "Hidden/ltspass_tess_transparent" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/Shader/ltspass_transparent.shader b/Assets/lilToon/Shader/ltspass_transparent.shader index 49d578eb..b8e94567 100644 --- a/Assets/lilToon/Shader/ltspass_transparent.shader +++ b/Assets/lilToon/Shader/ltspass_transparent.shader @@ -45,9 +45,10 @@ Shader "Hidden/ltspass_transparent" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -91,9 +92,10 @@ Shader "Hidden/ltspass_transparent" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest + #pragma skip_variants DIRLIGHTMAP_COMBINED // Skip receiving shadow #pragma skip_variants SHADOWS_SCREEN @@ -137,10 +139,10 @@ Shader "Hidden/ltspass_transparent" #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase - #pragma multi_compile_fog + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest - #pragma skip_variants SHADOWS_SCREEN + #pragma skip_variants SHADOWS_SCREEN DIRLIGHTMAP_COMBINED //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -182,8 +184,8 @@ Shader "Hidden/ltspass_transparent" // Build Option #pragma vertex vert #pragma fragment frag - #pragma multi_compile_fwdadd - #pragma multi_compile_fog + #pragma multi_compile_fragment POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma fragmentoption ARB_precision_hint_fastest @@ -289,11 +291,9 @@ Shader "Hidden/ltspass_transparent" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -341,9 +341,9 @@ Shader "Hidden/ltspass_transparent" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON @@ -467,11 +467,9 @@ Shader "Hidden/ltspass_transparent" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing // Skip receiving shadow @@ -518,9 +516,9 @@ Shader "Hidden/ltspass_transparent" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile_fragment _ _MIXED_LIGHTING_SUBTRACTIVE + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing //---------------------------------------------------------------------------------------------------------------------- @@ -647,12 +645,18 @@ Shader "Hidden/ltspass_transparent" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON // Skip receiving shadow @@ -699,10 +703,13 @@ Shader "Hidden/ltspass_transparent" #pragma fragment frag #pragma exclude_renderers gles gles3 glcore #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON //---------------------------------------------------------------------------------------------------------------------- @@ -887,12 +894,18 @@ Shader "Hidden/ltspass_transparent" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING - #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ _LIGHT_COOKIES + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer // Skip receiving shadow //#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -938,10 +951,13 @@ Shader "Hidden/ltspass_transparent" #pragma fragment frag #pragma only_renderers gles gles3 glcore d3d11 #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile_fog + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_vertex _ FOG_LINEAR FOG_EXP FOG_EXP2 #pragma multi_compile_instancing + #pragma instancing_options renderinglayer //---------------------------------------------------------------------------------------------------------------------- // Pass @@ -1128,14 +1144,13 @@ Shader "Hidden/ltspass_transparent" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK // Skip receiving shadow - //#pragma multi_compile SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON - //#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH + //#pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON + //#pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #define SHADERPASS SHADERPASS_FORWARD @@ -1180,10 +1195,9 @@ Shader "Hidden/ltspass_transparent" #pragma multi_compile_instancing #pragma instancing_options renderinglayer #pragma multi_compile _ DOTS_INSTANCING_ON - #pragma multi_compile _ LIGHTMAP_ON - #pragma multi_compile _ DIRLIGHTMAP_COMBINED - #pragma multi_compile _ DYNAMICLIGHTMAP_ON - #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile_fragment _ LIGHTMAP_ON + #pragma multi_compile_fragment _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK #define SHADERPASS SHADERPASS_FORWARD diff --git a/Assets/lilToon/package.json b/Assets/lilToon/package.json index c98c8ec4..0f545175 100644 --- a/Assets/lilToon/package.json +++ b/Assets/lilToon/package.json @@ -1,7 +1,7 @@ { "name": "jp.lilxyzw.liltoon", "displayName": "lilToon", - "version": "1.2.3", + "version": "1.2.4", "unity": "2017.1", "description": "Feature-rich toon shader.", "keywords": ["Toon", "Shader", "Material"], diff --git a/version.json b/version.json index ecab874c..29e6ccb5 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"latest_vertion_name": "1.2.3", "latest_vertion_value": 16} \ No newline at end of file +{"latest_vertion_name": "1.2.4", "latest_vertion_value": 17} \ No newline at end of file