ECM2
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
// The following comment prevents Unity from auto upgrading the shader. Please keep it to keep backward compatibility.
|
||||
// UNITY_SHADER_NO_UPGRADE
|
||||
|
||||
#ifndef _VLB_SHADER_SPECIFIC_INCLUDED_
|
||||
#define _VLB_SHADER_SPECIFIC_INCLUDED_
|
||||
|
||||
// POSITION TRANSFORM
|
||||
#if UNITY_VERSION < 540
|
||||
#define __VLBMatrixWorldToObject _World2Object
|
||||
#define __VLBMatrixObjectToWorld _Object2World
|
||||
#define __VLBMatrixV UNITY_MATRIX_V
|
||||
inline float4 VLBObjectToClipPos(in float3 pos) { return mul(UNITY_MATRIX_MVP, float4(pos, 1.0)); }
|
||||
#else
|
||||
#if VLB_CUSTOM_INSTANCED_OBJECT_MATRICES
|
||||
#define __VLBMatrixWorldToObject UNITY_ACCESS_INSTANCED_PROP(Props, _WorldToLocalMatrix)
|
||||
#define __VLBMatrixObjectToWorld UNITY_ACCESS_INSTANCED_PROP(Props, _LocalToWorldMatrix)
|
||||
#define __VLBMatrixV unity_MatrixV
|
||||
inline float4 VLBObjectToClipPos(in float3 pos) { return mul(mul(unity_MatrixVP, __VLBMatrixObjectToWorld), float4(pos, 1.0)); }
|
||||
#else
|
||||
#define __VLBMatrixWorldToObject unity_WorldToObject
|
||||
#define __VLBMatrixObjectToWorld unity_ObjectToWorld
|
||||
#define __VLBMatrixV UNITY_MATRIX_V
|
||||
#define VLBObjectToClipPos UnityObjectToClipPos
|
||||
#endif
|
||||
#endif
|
||||
|
||||
inline float4 VLBObjectToWorldPos(in float4 pos) { return mul(__VLBMatrixObjectToWorld, pos); }
|
||||
#define VLBWorldToViewPos(pos) (mul(__VLBMatrixV, float4(pos.xyz, 1.0)).xyz)
|
||||
|
||||
// FRUSTUM PLANES
|
||||
#define VLBFrustumPlanes unity_CameraWorldClipPlanes
|
||||
|
||||
// CAMERA
|
||||
inline float3 __VLBWorldToObjectPos(in float3 pos) { return mul(__VLBMatrixWorldToObject, float4(pos, 1.0)).xyz; }
|
||||
inline float3 VLBGetCameraPositionObjectSpace(float3 scaleObjectSpace)
|
||||
{
|
||||
return __VLBWorldToObjectPos(_WorldSpaceCameraPos).xyz * scaleObjectSpace;
|
||||
}
|
||||
|
||||
// DEPTH
|
||||
#ifndef UNITY_DECLARE_DEPTH_TEXTURE // handle Unity pre 5.6.0
|
||||
#define UNITY_DECLARE_DEPTH_TEXTURE(tex) sampler2D_float tex
|
||||
#endif
|
||||
UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture);
|
||||
|
||||
#define VLBSampleDepthTexture(/*float4*/uv) (SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, (uv)/(uv.w)))
|
||||
#define VLBLinearEyeDepth(depth) (LinearEyeDepth(depth))
|
||||
|
||||
// FOG
|
||||
#define VLB_FOG_UNITY_BUILTIN_COORDS
|
||||
|
||||
#if VLB_ALPHA_AS_BLACK
|
||||
#define VLB_FOG_APPLY(color) \
|
||||
float4 fogColor = unity_FogColor; \
|
||||
fogColor.rgb *= color.a; \
|
||||
UNITY_APPLY_FOG_COLOR(i.fogCoord, color, fogColor);
|
||||
// since we use this shader with Additive blending, fog color should be modulated by general alpha
|
||||
#else
|
||||
#define VLB_FOG_APPLY(color) UNITY_APPLY_FOG(i.fogCoord, color);
|
||||
#endif
|
||||
|
||||
|
||||
inline void ApplyPipelineSpecificIntensityModifier(inout float intensity) {}
|
||||
|
||||
#endif // _VLB_SHADER_SPECIFIC_INCLUDED_
|
||||
Reference in New Issue
Block a user