116 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			HLSL
		
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			HLSL
		
	
	
	
// Curved World <http://u3d.as/1W8h>
 | 
						|
// Copyright (c) Amazing Assets <https://amazingassets.world>
 | 
						|
 
 | 
						|
 | 
						|
 | 
						|
#ifndef UNITY_STANDARD_PARTICLE_EDITOR_INCLUDED
 | 
						|
#define UNITY_STANDARD_PARTICLE_EDITOR_INCLUDED
 | 
						|
 | 
						|
#if _REQUIRE_UV2
 | 
						|
#define _FLIPBOOK_BLENDING 1
 | 
						|
#endif
 | 
						|
 | 
						|
#include "UnityCG.cginc"
 | 
						|
#include "UnityShaderVariables.cginc"
 | 
						|
#include "UnityStandardConfig.cginc"
 | 
						|
#include "UnityStandardUtils.cginc"
 | 
						|
#include "UnityStandardParticleInstancing.cginc"
 | 
						|
 | 
						|
 | 
						|
#include "../../Core/CurvedWorldTransform.cginc" 
 | 
						|
 | 
						|
 | 
						|
#ifdef _ALPHATEST_ON
 | 
						|
half        _Cutoff;
 | 
						|
#endif
 | 
						|
sampler2D   _MainTex;
 | 
						|
float4      _MainTex_ST;
 | 
						|
 | 
						|
float _ObjectId;
 | 
						|
float _PassValue;
 | 
						|
float4 _SelectionID;
 | 
						|
uniform float _SelectionAlphaCutoff;
 | 
						|
 | 
						|
struct VertexInput
 | 
						|
{
 | 
						|
    float4 vertex   : POSITION;
 | 
						|
    float3 normal   : NORMAL;
 | 
						|
    fixed4 color    : COLOR;
 | 
						|
    #if defined(_FLIPBOOK_BLENDING) && !defined(UNITY_PARTICLE_INSTANCING_ENABLED)
 | 
						|
        float4 texcoords : TEXCOORD0;
 | 
						|
        float texcoordBlend : TEXCOORD1;
 | 
						|
    #else
 | 
						|
        float2 texcoords : TEXCOORD0;
 | 
						|
    #endif
 | 
						|
    UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
						|
};
 | 
						|
 | 
						|
struct VertexOutput
 | 
						|
{
 | 
						|
    float2 texcoord : TEXCOORD0;
 | 
						|
    #ifdef _FLIPBOOK_BLENDING
 | 
						|
        float3 texcoord2AndBlend : TEXCOORD1;
 | 
						|
    #endif
 | 
						|
    fixed4 color : TEXCOORD2;
 | 
						|
};
 | 
						|
 | 
						|
void vertEditorPass(VertexInput v, out VertexOutput o, out float4 opos : SV_POSITION)
 | 
						|
{
 | 
						|
    UNITY_SETUP_INSTANCE_ID(v);
 | 
						|
 | 
						|
 | 
						|
    #if defined(CURVEDWORLD_IS_INSTALLED) && !defined(CURVEDWORLD_DISABLED_ON)
 | 
						|
        CURVEDWORLD_TRANSFORM_VERTEX(v.vertex);
 | 
						|
    #endif
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    opos = UnityObjectToClipPos(v.vertex);
 | 
						|
 | 
						|
    #ifdef _FLIPBOOK_BLENDING
 | 
						|
        #ifdef UNITY_PARTICLE_INSTANCING_ENABLED
 | 
						|
            vertInstancingUVs(v.texcoords.xy, o.texcoord, o.texcoord2AndBlend);
 | 
						|
        #else
 | 
						|
            o.texcoord = v.texcoords.xy;
 | 
						|
            o.texcoord2AndBlend.xy = v.texcoords.zw;
 | 
						|
            o.texcoord2AndBlend.z = v.texcoordBlend;
 | 
						|
        #endif
 | 
						|
    #else
 | 
						|
        #ifdef UNITY_PARTICLE_INSTANCING_ENABLED
 | 
						|
            vertInstancingUVs(v.texcoords.xy, o.texcoord);
 | 
						|
            o.texcoord = TRANSFORM_TEX(o.texcoord, _MainTex);
 | 
						|
        #else
 | 
						|
            o.texcoord = TRANSFORM_TEX(v.texcoords.xy, _MainTex);
 | 
						|
        #endif
 | 
						|
    #endif
 | 
						|
    o.color = v.color;
 | 
						|
}
 | 
						|
 | 
						|
void fragSceneClip(VertexOutput i)
 | 
						|
{
 | 
						|
    half alpha = tex2D(_MainTex, i.texcoord).a;
 | 
						|
#ifdef _FLIPBOOK_BLENDING
 | 
						|
    half alpha2 = tex2D(_MainTex, i.texcoord2AndBlend.xy);
 | 
						|
    alpha = lerp(alpha, alpha2, i.texcoord2AndBlend.z);
 | 
						|
#endif
 | 
						|
    alpha *= i.color.a;
 | 
						|
 | 
						|
#ifdef _ALPHATEST_ON
 | 
						|
    clip(alpha - _Cutoff);
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
half4 fragSceneHighlightPass(VertexOutput i) : SV_Target
 | 
						|
{
 | 
						|
    fragSceneClip(i);
 | 
						|
    return float4(_ObjectId, _PassValue, 1, 1);
 | 
						|
}
 | 
						|
 | 
						|
half4 fragScenePickingPass(VertexOutput i) : SV_Target
 | 
						|
{
 | 
						|
    fragSceneClip(i);
 | 
						|
    return _SelectionID;
 | 
						|
}
 | 
						|
 | 
						|
#endif // UNITY_STANDARD_PARTICLE_EDITOR_INCLUDED
 |