mirror of
https://github.com/nothke/quality-control.git
synced 2025-08-09 07:13:42 +00:00
Blockout art
This commit is contained in:
116
Assets/Shaders/TriplanarStandard.shader
Normal file
116
Assets/Shaders/TriplanarStandard.shader
Normal file
@@ -0,0 +1,116 @@
|
||||
Shader "Triplanar"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
_Color("Main Color", Color) = (1,1,1,1)
|
||||
_MainTex("Albedo Top", 2D) = "white" {}
|
||||
_MainTex1("Albedo Front", 2D) = "white" {}
|
||||
_MainTex2("Albedo Side", 2D) = "white" {}
|
||||
_SizeX("SizeX", Float) = 20
|
||||
_SizeY("SizeY", Float) = 20
|
||||
_NX("NX", Range(0,1)) = 1
|
||||
_NY("NY", Range(0,1)) = 1
|
||||
_NZ("NZ", Range(0,1)) = 1
|
||||
_PreventRepeatMult("Prevent Repeat Mult", Float) = 0
|
||||
[MaterialToggle] _FlipTop("Flip Top", Float) = 0
|
||||
|
||||
//_SplatMap("Splat", 2D) = "white" {}
|
||||
|
||||
_OcclusionTex("Occlusion Map", 2D) = "white" {}
|
||||
|
||||
//_BumpMap0("Normal", 2D) = "white" {}
|
||||
//_BumpMap1("Normal", 2D) = "white" {}
|
||||
//_BumpMap2("Normal", 2D) = "white" {}
|
||||
}
|
||||
SubShader
|
||||
{
|
||||
Tags{ "RenderType" = "Opaque" }
|
||||
LOD 200
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf Standard
|
||||
#pragma target 3.0
|
||||
|
||||
sampler2D _MainTex;
|
||||
sampler2D _MainTex1;
|
||||
sampler2D _MainTex2;
|
||||
fixed4 _Color;
|
||||
fixed _NX;
|
||||
fixed _NY;
|
||||
fixed _NZ;
|
||||
half _SizeX;
|
||||
half _SizeY;
|
||||
half _PreventRepeatMult;
|
||||
|
||||
//sampler2D _BumpMap0;
|
||||
//sampler2D _BumpMap1;
|
||||
//sampler2D _BumpMap2;
|
||||
|
||||
//sampler2D _SplatMap;
|
||||
|
||||
sampler2D _OcclusionTex;
|
||||
uniform bool _FlipTop;
|
||||
|
||||
struct Input
|
||||
{
|
||||
half3 worldPos;
|
||||
fixed3 worldNormal;
|
||||
fixed2 uv_OcclusionTex;
|
||||
INTERNAL_DATA
|
||||
};
|
||||
|
||||
void surf(Input IN, inout SurfaceOutputStandard o)
|
||||
{
|
||||
half2 scale = half2(_SizeX, _SizeY);
|
||||
|
||||
float3 wp = IN.worldPos;
|
||||
//float3 n = IN.worldNormal;
|
||||
|
||||
// top down
|
||||
half2 uvy = (_FlipTop ? wp.xz : wp.zx) + wp.y * _PreventRepeatMult;
|
||||
|
||||
// sideways
|
||||
half2 uvx = wp.zy + wp.x * _PreventRepeatMult;
|
||||
half2 uvz = wp.xy + wp.z * _PreventRepeatMult;
|
||||
//n.x * wp.yz + n.y * wp.xz + n.z * wp.xy;
|
||||
|
||||
fixed4 cy = tex2D(_MainTex, uvy / scale); // top down
|
||||
fixed4 cx = tex2D(_MainTex2, uvx / scale); // left right
|
||||
fixed4 cz = tex2D(_MainTex1, uvz / scale); // back forth
|
||||
|
||||
//fixed3 n0 = UnpackNormal(tex2D(_BumpMap0, IN.worldPos.xz / scale));
|
||||
//fixed3 n1 = UnpackNormal(tex2D(_BumpMap1, IN.worldPos.xy / scale));
|
||||
//fixed3 n2 = UnpackNormal(tex2D(_BumpMap2, IN.worldPos.zy / scale));
|
||||
|
||||
fixed occlusion = tex2D(_OcclusionTex, IN.uv_OcclusionTex.xy);
|
||||
|
||||
fixed3 nWNormal = Unity_SafeNormalize(IN.worldNormal*fixed3(_NX, _NY, _NZ));
|
||||
//fixed3 nWNormal = IN.worldNormal;
|
||||
fixed3 projnormal = saturate(pow(nWNormal*1.5, 4));
|
||||
|
||||
//fixed4 splatMap = tex2D(_SplatMap, IN.worldPos.xz / scale);
|
||||
//fixed splat = splatMap.r;
|
||||
|
||||
// Sides
|
||||
half4 result = lerp(cz, cx, projnormal.x);
|
||||
// Top
|
||||
result = lerp(result, cy, round(projnormal.y * (0.5+ result.r)));
|
||||
|
||||
//half3 resultBump = lerp(n0, n1, projnormal.z);
|
||||
//resultBump = lerp(resultBump, n2, projnormal.x);
|
||||
//normal = lerp(normal, half3(0, 1, 0), projnormal.z);
|
||||
//half3 normal = resultBump;
|
||||
|
||||
//o.Normal = normal;
|
||||
|
||||
o.Albedo = result.rgb * _Color.rgb * occlusion;
|
||||
o.Alpha = result.a * _Color.a;
|
||||
|
||||
o.Occlusion = occlusion;
|
||||
|
||||
//o.Normal = normal;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
Fallback "VertexLit"
|
||||
}
|
10
Assets/Shaders/TriplanarStandard.shader.meta
Normal file
10
Assets/Shaders/TriplanarStandard.shader.meta
Normal file
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3761fdd1a25d8124680d1ac654376ed0
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
preprocessorOverride: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user