init
This commit is contained in:
commit
2fe6ca2f65
1473 changed files with 251771 additions and 0 deletions
83
gamedata/shaders/editor/water.vs.hlsl
Normal file
83
gamedata/shaders/editor/water.vs.hlsl
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
#include "common.hlsli"
|
||||
#include "shared\waterconfig.hlsli"
|
||||
#include "shared\watermove.hlsli"
|
||||
|
||||
struct vv
|
||||
{
|
||||
float4 P : POSITION;
|
||||
float2 tc : TEXCOORD0;
|
||||
float3 N : NORMAL;
|
||||
float4 C : COLOR0;
|
||||
};
|
||||
|
||||
struct vf
|
||||
{
|
||||
float2 tbase : TEXCOORD0; // base
|
||||
float2 tnorm0 : TEXCOORD1; // nm0
|
||||
float2 tnorm1 : TEXCOORD2; // nm1
|
||||
float3 M1 : TEXCOORD3;
|
||||
float3 M2 : TEXCOORD4;
|
||||
float3 M3 : TEXCOORD5;
|
||||
float3 v2point : TEXCOORD6;
|
||||
float4 tctexgen : TEXCOORD7;
|
||||
float3 pos : TEXCOORD8;
|
||||
float4 c0 : COLOR0;
|
||||
float4 hpos : POSITION;
|
||||
};
|
||||
|
||||
uniform float4x4 m_texgen;
|
||||
void main(in vv v, out vf o)
|
||||
{
|
||||
// v.N = unpack_normal(v.N.xyz);
|
||||
|
||||
// world
|
||||
float4 P = float4(mul(m_W, v.P), 1.0f);
|
||||
P = watermove(P);
|
||||
|
||||
o.pos = P.xyz;
|
||||
o.v2point = P - eye_position;
|
||||
|
||||
o.tbase = P.xz * 0.3; // unpack_tc_base(v.uv, v.T.w, v.B.w);
|
||||
o.tnorm0 = watermove_tc(o.tbase * W_DISTORT_BASE_TILE_0, P.xz, W_DISTORT_AMP_0);
|
||||
o.tnorm1 = watermove_tc(o.tbase * W_DISTORT_BASE_TILE_1, P.xz, W_DISTORT_AMP_1);
|
||||
|
||||
// Calculate the 3x3 transform from tangent space to eye-space
|
||||
// TangentToEyeSpace = object2eye * tangent2object
|
||||
// = object2eye * transpose(object2tangent) (since the inverse of a rotation is its transpose)
|
||||
|
||||
float3 N = normalize(v.N);
|
||||
|
||||
float3 T = float3(-1.0f, 0.0f, 0.0f);
|
||||
T = normalize(T - dot(T, N) * N);
|
||||
|
||||
float3 B = cross(N, T);
|
||||
|
||||
float3x3 xform = mul((float3x3)m_W, float3x3(
|
||||
T.x, B.x, N.x,
|
||||
T.y, B.y, N.y,
|
||||
T.z, B.z, N.z));
|
||||
|
||||
// The pixel shader operates on the bump-map in [0..1] range
|
||||
// Remap this range in the matrix, anyway we are pixel-shader limited :)
|
||||
// ...... [ 2 0 0 0]
|
||||
// ...... [ 0 2 0 0]
|
||||
// ...... [ 0 0 2 0]
|
||||
// ...... [-1 -1 -1 1]
|
||||
// issue: strange, but it's slower :(
|
||||
// issue: interpolators? dp4? VS limited? black magic?
|
||||
|
||||
// Feed this transform to pixel shader
|
||||
o.M1 = xform[0];
|
||||
o.M2 = xform[1];
|
||||
o.M3 = xform[2];
|
||||
|
||||
// xform, input in world coords
|
||||
o.hpos = mul(m_VP, P);
|
||||
|
||||
o.c0 = v.C;
|
||||
|
||||
// Igor: for additional depth dest
|
||||
o.tctexgen = mul(m_texgen, P);
|
||||
o.tctexgen.z = mul(m_V, P).z;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue