1
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
// Fantasy Adventure Environment
|
||||
// Copyright Staggart Creations
|
||||
// staggart.xyz
|
||||
|
||||
Shader "Hidden/PigmentMapComposite"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[NoScaleOffset] _MainTex("Input pigment map", 2D) = "white" {}
|
||||
[NoScaleOffset] _SplatMap("Splatmap", 2D) = "white" {}
|
||||
_SplatMask("SplatMask", Vector) = (1,1,1,1) //RGBA component masks
|
||||
_Transform("Transform", Vector) = (0,0,0,0)
|
||||
//X: Horizontal
|
||||
//Y: Vertical
|
||||
//Z: Rotation
|
||||
//W: ...
|
||||
|
||||
}
|
||||
SubShader
|
||||
{
|
||||
Tags { "RenderType" = "Opaque" }
|
||||
|
||||
Pass
|
||||
{
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
|
||||
struct v2f
|
||||
{
|
||||
float2 uv : TEXCOORD0;
|
||||
float4 vertex : SV_POSITION;
|
||||
};
|
||||
|
||||
sampler2D _MainTex;
|
||||
float4 _MainTex_ST;
|
||||
sampler2D _SplatMap;
|
||||
uniform float4 _SplatMask;
|
||||
uniform float4 _Transform;
|
||||
|
||||
float2 RotateUV(float2 uv, float rotation) {
|
||||
float cosine = cos(rotation);
|
||||
float sine = sin(rotation);
|
||||
float2 pivot = float2(0.5, 0.5);
|
||||
float2 rotator = (mul(uv - pivot, float2x2(cosine, -sine, sine, cosine)) + pivot);
|
||||
return saturate(rotator);
|
||||
}
|
||||
|
||||
v2f vert(appdata v)
|
||||
{
|
||||
v2f o;
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
|
||||
float2 uv = TRANSFORM_TEX(v.uv, _MainTex);
|
||||
if (_Transform.x == 1) uv.x = 1 - uv.x;
|
||||
if (_Transform.y == 1) uv.y = 1 - uv.y;
|
||||
uv = RotateUV(uv, _Transform.z);
|
||||
|
||||
o.uv = uv;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
fixed4 frag(v2f i) : SV_Target
|
||||
{
|
||||
//Tex samples
|
||||
float3 col = tex2D(_MainTex, i.uv).rgb;
|
||||
float4 splatMap = tex2D(_SplatMap, i.uv);
|
||||
|
||||
//Isolate splatmap channel
|
||||
float alpha = 0;
|
||||
alpha += splatMap.r * _SplatMask.r;
|
||||
alpha += splatMap.g * _SplatMask.g;
|
||||
alpha += splatMap.b * _SplatMask.b;
|
||||
alpha += splatMap.a * _SplatMask.a;
|
||||
|
||||
//return float4(alpha, alpha, alpha, 1);
|
||||
|
||||
//return float4(0, 1, 0, alpha);
|
||||
|
||||
return float4(col.rgb, alpha);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user