Skip to content

Commit

Permalink
Flip Book Progressについても各テクスチャ毎に用意するよう変更
Browse files Browse the repository at this point in the history
  • Loading branch information
CA-Tatami committed Aug 7, 2024
1 parent 84d4dcc commit e8ebea8
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 13 deletions.
3 changes: 3 additions & 0 deletions Assets/Nova/Editor/Core/Scripts/MaterialPropertyNames.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,12 @@ public static class MaterialPropertyNames
public const string AlphaTransitionMapSecondTexture = "_AlphaTransitionMapSecondTexture";
public const string AlphaTransitionMapSecondTexture2DArray = "_AlphaTransitionMapSecondTexture2DArray";
public const string AlphaTransitionMapSecondTexture3D = "_AlphaTransitionMapSecondTexture3D";
public const string AlphaTransitionMapSecondTextureProgress = "_AlphaTransitionMapSecondTextureProgress";
public const string AlphaTransitionMapSecondTextureProgressCoord = "_AlphaTransitionMapSecondTextureProgressCoord";
public const string AlphaTransitionMapSecondTextureOffsetXCoord = "_AlphaTransitionMapSecondTextureOffsetXCoord";
public const string AlphaTransitionMapSecondTextureOffsetYCoord = "_AlphaTransitionMapSecondTextureOffsetYCoord";
public const string AlphaTransitionMapSecondTextureChannelsX = "_AlphaTransitionMapSecondTextureChannelsX";
public const string AlphaTransitionMapSecondTextureSliceCount = "_AlphaTransitionMapSecondTextureSliceCount";
public const string AlphaTransitionProgressSecondTexture = "_AlphaTransitionProgressSecondTexture";
public const string AlphaTransitionProgressCoordSecondTexture = "_AlphaTransitionProgressCoordSecondTexture";
public const string DissolveSharpnessSecondTexture = "_DissolveSharpnessSecondTexture";
Expand Down
29 changes: 28 additions & 1 deletion Assets/Nova/Editor/Core/Scripts/ParticlesUberCommonGUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -439,11 +439,38 @@ private void InternalDrawAlphaTransitionProperties()
var alphaTransitionSecondTextureBlendMode = (AlphaTransitionBlendMode)props.AlphaTransitionSecondTextureBlendModeProp.Value.floatValue;
if (alphaTransitionSecondTextureBlendMode != AlphaTransitionBlendMode.None)
{
MaterialEditorUtility.DrawTexture(_editor, alphaTransitionMapSecondTextureProp,
using (var changeCheckScope = new EditorGUI.ChangeCheckScope())
{
MaterialEditorUtility.DrawTexture(_editor, alphaTransitionMapSecondTextureProp,
props.AlphaTransitionMapSecondTextureOffsetXCoordProp.Value, props.AlphaTransitionMapSecondTextureOffsetYCoordProp.Value,
props.AlphaTransitionMapSecondTextureChannelsXProp.Value, null);

if (changeCheckScope.changed)
{
if (alphaTransitionMapMode == AlphaTransitionMapMode.FlipBook
&& props.AlphaTransitionMapSecondTexture2DArrayProp.Value.textureValue != null)
{
var tex2DArray = (Texture2DArray)props.AlphaTransitionMapSecondTexture2DArrayProp.Value.textureValue;
props.AlphaTransitionMapSecondTextureSliceCountProp.Value.floatValue = tex2DArray.depth;
}

if (alphaTransitionMapMode == AlphaTransitionMapMode.FlipBookBlending
&& props.AlphaTransitionMapSecondTexture3DProp.Value.textureValue != null)
{
var tex3D = (Texture3D)props.AlphaTransitionMapSecondTexture3DProp.Value.textureValue;
props.AlphaTransitionMapSecondTextureSliceCountProp.Value.floatValue = tex3D.depth;
}
}
}

if (alphaTransitionMapMode == AlphaTransitionMapMode.FlipBook
|| alphaTransitionMapMode == AlphaTransitionMapMode.FlipBookBlending)
MaterialEditorUtility.DrawPropertyAndCustomCoord(_editor, "Flip-Book Progress",
props.AlphaTransitionMapSecondTextureProgressProp.Value, props.AlphaTransitionMapSecondTextureProgressCoordProp.Value);

MaterialEditorUtility.DrawPropertyAndCustomCoord(_editor, "Transition Progress",
props.AlphaTransitionProgressSecondTextureProp.Value, props.AlphaTransitionProgressCoordSecondTextureProp.Value);

if (mode == AlphaTransitionMode.Dissolve)
_editor.ShaderProperty(props.DissolveSharpnessSecondTextureProp.Value, "Edge Sharpness");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,8 @@ public void Setup(MaterialProperty[] properties)
AlphaTransitionMapSecondTextureProp.Setup(properties);
AlphaTransitionMapSecondTexture2DArrayProp.Setup(properties);
AlphaTransitionMapSecondTexture3DProp.Setup(properties);
AlphaTransitionMapSecondTextureProgressProp.Setup(properties);
AlphaTransitionMapSecondTextureProgressCoordProp.Setup(properties);
AlphaTransitionMapSecondTextureOffsetXCoordProp.Setup(properties);
AlphaTransitionMapSecondTextureOffsetYCoordProp.Setup(properties);
AlphaTransitionMapSecondTextureChannelsXProp.Setup(properties);
Expand Down Expand Up @@ -396,6 +398,12 @@ public void Setup(MaterialProperty[] properties)

public ParticlesGUI.Property AlphaTransitionMapSecondTexture3DProp { get; } = new(PropertyNames.AlphaTransitionMapSecondTexture3D);

public ParticlesGUI.Property AlphaTransitionMapSecondTextureProgressProp { get; } =
new(PropertyNames.AlphaTransitionMapSecondTextureProgress);

public ParticlesGUI.Property AlphaTransitionMapSecondTextureProgressCoordProp { get; } =
new(PropertyNames.AlphaTransitionMapSecondTextureProgressCoord);

public ParticlesGUI.Property AlphaTransitionMapSecondTextureOffsetXCoordProp { get; } =
new(PropertyNames.AlphaTransitionMapSecondTextureOffsetXCoord);

Expand All @@ -405,6 +413,9 @@ public void Setup(MaterialProperty[] properties)
public ParticlesGUI.Property AlphaTransitionMapSecondTextureChannelsXProp { get; } =
new(PropertyNames.AlphaTransitionMapSecondTextureChannelsX);

public ParticlesGUI.Property AlphaTransitionMapSecondTextureSliceCountProp { get; } =
new(PropertyNames.AlphaTransitionMapSecondTextureSliceCount);

public ParticlesGUI.Property AlphaTransitionProgressProp { get; } = new(PropertyNames.AlphaTransitionProgress);

public ParticlesGUI.Property AlphaTransitionProgressCoordProp { get; } =
Expand Down
3 changes: 3 additions & 0 deletions Assets/Nova/Runtime/Core/Shaders/ParticlesUber.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,10 @@ float4 _AlphaTransitionMapSecondTexture3D_ST;

float _AlphaTransitionMapProgress;
DECLARE_CUSTOM_COORD(_AlphaTransitionMapProgressCoord);
float _AlphaTransitionMapSecondTextureProgress;
DECLARE_CUSTOM_COORD(_AlphaTransitionMapSecondTextureProgressCoord);
float _AlphaTransitionMapSliceCount;
float _AlphaTransitionMapSecondTextureSliceCount;
DECLARE_CUSTOM_COORD(_AlphaTransitionMapOffsetXCoord);
DECLARE_CUSTOM_COORD(_AlphaTransitionMapOffsetYCoord);
DECLARE_CUSTOM_COORD(_AlphaTransitionMapSecondTextureOffsetXCoord);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,12 +232,20 @@ VaryingsDrawDepth vert(AttributesDrawDepth input)
#endif

// Transition Map Progress
#ifdef _ALPHA_TRANSITION_MAP_MODE_2D_ARRAY
#if defined(_ALPHA_TRANSITION_MAP_MODE_2D_ARRAY) || defined(_ALPHA_TRANSITION_MAP_MODE_2D_ARRAY)
#if defined(_ALPHA_TRANSITION_BLEND_SECOND_TEX_ADDITIVE) || defined(_ALPHA_TRANSITION_BLEND_SECOND_TEX_MULTIPLY)
float transitionMapProgress = _AlphaTransitionMapSecondTextureProgress + GET_CUSTOM_COORD(_AlphaTransitionMapSecondTextureProgressCoord);
float sliceCount = _AlphaTransitionMapSecondTextureSliceCount;
#else
float transitionMapProgress = _AlphaTransitionMapProgress + GET_CUSTOM_COORD(_AlphaTransitionMapProgressCoord);
output.transitionEmissionProgresses.x = FlipBookProgress(transitionMapProgress, _AlphaTransitionMapSliceCount);
float sliceCount = _AlphaTransitionMapSliceCount;
#endif

#ifdef _ALPHA_TRANSITION_MAP_MODE_2D_ARRAY
output.transitionEmissionProgresses.x = FlipBookProgress(transitionMapProgress, sliceCount);
#elif _ALPHA_TRANSITION_MAP_MODE_3D
float transitionMapProgress = _AlphaTransitionMapProgress + GET_CUSTOM_COORD(_AlphaTransitionMapProgressCoord);
output.transitionEmissionProgresses.x = FlipBookBlendingProgress(transitionMapProgress, _AlphaTransitionMapSliceCount);
output.transitionEmissionProgresses.x = FlipBookBlendingProgress(transitionMapProgress, sliceCount);
#endif
#endif

// Emission Map UV
Expand Down
3 changes: 3 additions & 0 deletions Assets/Nova/Runtime/Core/Shaders/ParticlesUberLit.shader
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,12 @@ Shader "Nova/Particles/UberLit"
_AlphaTransitionMapSecondTexture("Alpha Transition Second Texture Map", 2D) = "white" {}
_AlphaTransitionMapSecondTexture2DArray("Alpha Transition Second Texture Map 2D Array", 2DArray) = "" {}
_AlphaTransitionMapSecondTexture3D("Alpha Transition Second Texture Map 3D", 3D) = "" {}
_AlphaTransitionMapSecondTextureProgress("Alpha Transition Map Second Texture Progress", Range(0.0, 1.0)) = 0.0
_AlphaTransitionMapSecondTextureProgressCoord("Alpha Transition Map Second Texture Progress Coord", Float) = 0.0
_AlphaTransitionMapSecondTextureOffsetXCoord("Alpha Transition Second Texture Map Offset X Coord", Float) = 0.0
_AlphaTransitionMapSecondTextureOffsetYCoord("Alpha Transition Second Texture Map Offset Y Coord", Float) = 0.0
_AlphaTransitionMapSecondTextureChannelsX("Alpha Transition Second Texture Map Channes X", Float) = 0.0
_AlphaTransitionMapSecondTextureSliceCount("Alpha Transition Map Second Texture Slice Count", Float) = 4.0
_AlphaTransitionProgressSecondTexture("Alpha Transition Second Texture Progress", Range(0.0, 1.0)) = 0.0
_AlphaTransitionProgressCoordSecondTexture("Alpha Transition Second Texture Progress Coord", Float) = 0.0
_DissolveSharpnessSecondTexture("Dissolve Sharpness", Range(0.0, 1.0)) = 0.5
Expand Down
16 changes: 12 additions & 4 deletions Assets/Nova/Runtime/Core/Shaders/ParticlesUberShadowCaster.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,20 @@ Varyings ShadowPassVertex(Attributes input)
#endif

// Transition Map Progress
#ifdef _ALPHA_TRANSITION_MAP_MODE_2D_ARRAY
#if defined(_ALPHA_TRANSITION_MAP_MODE_2D_ARRAY) || defined(_ALPHA_TRANSITION_MAP_MODE_2D_ARRAY)
#if defined(_ALPHA_TRANSITION_BLEND_SECOND_TEX_ADDITIVE) || defined(_ALPHA_TRANSITION_BLEND_SECOND_TEX_MULTIPLY)
float transitionMapProgress = _AlphaTransitionMapSecondTextureProgress + GET_CUSTOM_COORD(_AlphaTransitionMapSecondTextureProgressCoord);
float sliceCount = _AlphaTransitionMapSecondTextureSliceCount;
#else
float transitionMapProgress = _AlphaTransitionMapProgress + GET_CUSTOM_COORD(_AlphaTransitionMapProgressCoord);
output.transitionProgress = FlipBookProgress(transitionMapProgress, _AlphaTransitionMapSliceCount);
float sliceCount = _AlphaTransitionMapSliceCount;
#endif

#ifdef _ALPHA_TRANSITION_MAP_MODE_2D_ARRAY
output.transitionProgress = FlipBookProgress(transitionMapProgress, sliceCount);
#elif _ALPHA_TRANSITION_MAP_MODE_3D
float transitionMapProgress = _AlphaTransitionMapProgress + GET_CUSTOM_COORD(_AlphaTransitionMapProgressCoord);
output.transitionProgress = FlipBookBlendingProgress(transitionMapProgress, _AlphaTransitionMapSliceCount);
output.transitionProgress = FlipBookBlendingProgress(transitionMapProgress, sliceCount);
#endif
#endif
#endif

Expand Down
16 changes: 12 additions & 4 deletions Assets/Nova/Runtime/Core/Shaders/ParticlesUberUnlit.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -177,12 +177,20 @@ Varyings vertUnlit(Attributes input, out float3 positionWS, uniform bool useEmis
#endif

// Transition Map Progress
#ifdef _ALPHA_TRANSITION_MAP_MODE_2D_ARRAY
#if defined(_ALPHA_TRANSITION_MAP_MODE_2D_ARRAY) || defined(_ALPHA_TRANSITION_MAP_MODE_2D_ARRAY)
#if defined(_ALPHA_TRANSITION_BLEND_SECOND_TEX_ADDITIVE) || defined(_ALPHA_TRANSITION_BLEND_SECOND_TEX_MULTIPLY)
float transitionMapProgress = _AlphaTransitionMapSecondTextureProgress + GET_CUSTOM_COORD(_AlphaTransitionMapSecondTextureProgressCoord);
float sliceCount = _AlphaTransitionMapSecondTextureSliceCount;
#else
float transitionMapProgress = _AlphaTransitionMapProgress + GET_CUSTOM_COORD(_AlphaTransitionMapProgressCoord);
output.transitionEmissionProgresses.x = FlipBookProgress(transitionMapProgress, _AlphaTransitionMapSliceCount);
float sliceCount = _AlphaTransitionMapSliceCount;
#endif

#ifdef _ALPHA_TRANSITION_MAP_MODE_2D_ARRAY
output.transitionEmissionProgresses.x = FlipBookProgress(transitionMapProgress, sliceCount);
#elif _ALPHA_TRANSITION_MAP_MODE_3D
float transitionMapProgress = _AlphaTransitionMapProgress + GET_CUSTOM_COORD(_AlphaTransitionMapProgressCoord);
output.transitionEmissionProgresses.x = FlipBookBlendingProgress(transitionMapProgress, _AlphaTransitionMapSliceCount);
output.transitionEmissionProgresses.x = FlipBookBlendingProgress(transitionMapProgress, sliceCount);
#endif
#endif

if (useEmission)
Expand Down
3 changes: 3 additions & 0 deletions Assets/Nova/Runtime/Core/Shaders/ParticlesUberUnlit.shader
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,12 @@ Shader "Nova/Particles/UberUnlit"
_AlphaTransitionMapSecondTexture("Alpha Transition Second Texture Map", 2D) = "white" {}
_AlphaTransitionMapSecondTexture2DArray("Alpha Transition Second Texture Map 2D Array", 2DArray) = "" {}
_AlphaTransitionMapSecondTexture3D("Alpha Transition Second Texture Map 3D", 3D) = "" {}
_AlphaTransitionMapSecondTextureProgress("Alpha Transition Map Second Texture Progress", Range(0.0, 1.0)) = 0.0
_AlphaTransitionMapSecondTextureProgressCoord("Alpha Transition Map Second Texture Progress Coord", Float) = 0.0
_AlphaTransitionMapSecondTextureOffsetXCoord("Alpha Transition Second Texture Map Offset X Coord", Float) = 0.0
_AlphaTransitionMapSecondTextureOffsetYCoord("Alpha Transition Second Texture Map Offset Y Coord", Float) = 0.0
_AlphaTransitionMapSecondTextureChannelsX("Alpha Transition Second Texture Map Channes X", Float) = 0.0
_AlphaTransitionMapSecondTextureSliceCount("Alpha Transition Map Second Texture Slice Count", Float) = 4.0
_AlphaTransitionProgressSecondTexture("Alpha Transition Second Texture Progress", Range(0.0, 1.0)) = 0.0
_AlphaTransitionProgressCoordSecondTexture("Alpha Transition Second Texture Progress Coord", Float) = 0.0
_DissolveSharpnessSecondTexture("Dissolve Sharpness", Range(0.0, 1.0)) = 0.5
Expand Down

0 comments on commit e8ebea8

Please sign in to comment.