#ifndef __VERTEX_INC #define __VERTEX_INC #include "vertex_deformation.hlsl" #define FOO(x) (x) void deform(inout float3 objPos) { #if defined(_VERTEX_DEFORMATION_XZ_TUBE) { float t = _Vertex_Deformation_XZ_Tube_t; objPos = plane_to_tube(objPos.xyz, t); } #endif // _VERTEX_DEFORMATION_XZ_TUBE #if defined(_VERTEX_DEFORMATION_YZ_TUBE) { float t = _Vertex_Deformation_YZ_Tube_t; objPos = plane_to_tube(objPos.yxz, t); objPos = objPos.yxz; } #endif // _VERTEX_DEFORMATION_YZ_TUBE #if defined(_VERTEX_DEFORMATION_XY_TUBE) { float t = _Vertex_Deformation_XY_Tube_t; objPos = plane_to_tube(objPos.xzy, t); objPos = objPos.xzy; } #endif // _VERTEX_DEFORMATION_XY_TUBE #if defined(_VERTEX_DEFORMATION_SEAL) { float A = _Vertex_Deformation_Seal_A; float k = _Vertex_Deformation_Seal_k; float t = _Time[3] * _Vertex_Deformation_Seal_t; objPos = seal(objPos.xyz, A, k, t); } #endif // _VERTEX_DEFORMATION_SEAL #if defined(_VERTEX_DEFORMATION_SINE_WAVES) { float t = _Time[3]; float3 amplitude = _Vertex_Deformation_Sine_Waves_Amplitude; float3 direction = _Vertex_Deformation_Sine_Waves_Direction; float3 k = _Vertex_Deformation_Sine_Waves_k; float3 omega = _Vertex_Deformation_Sine_Waves_omega; objPos = sine_wave(objPos.xyz, amplitude, direction, k, omega, t); } #endif // _VERTEX_DEFORMATION_SINE_WAVES #if defined(_VERTEX_DEFORMATION_FBM) { float t = _Time[3]; float amplitude = _Vertex_Deformation_FBM_Amplitude; float gain = _Vertex_Deformation_FBM_Gain; float lacunarity = _Vertex_Deformation_FBM_Lacunarity; float scale = _Vertex_Deformation_FBM_Scale; float octaves = _Vertex_Deformation_FBM_Octaves; float3 velocity = _Vertex_Deformation_FBM_Velocity; objPos = fbm( objPos, t, amplitude, gain, lacunarity, scale, octaves, velocity); } #endif // _VERTEX_DEFORMATION_FBM } void deform_normal(float3 objPos, inout float3 objNorm, inout float3 objTan) { #if defined(_VERTEX_DEFORMATION_XZ_TUBE) { float t = _Vertex_Deformation_XZ_Tube_t; plane_to_tube_normal(objPos, objNorm, objTan, t); } #endif // _VERTEX_DEFORMATION_XZ_TUBE #if defined(_VERTEX_DEFORMATION_YZ_TUBE) { float t = _Vertex_Deformation_YZ_Tube_t; plane_to_tube_normal(objPos.yxz, objNorm.yxz, objTan.yxz, t); } #endif // _VERTEX_DEFORMATION_YZ_TUBE #if defined(_VERTEX_DEFORMATION_XY_TUBE) { float t = _Vertex_Deformation_XY_Tube_t; plane_to_tube_normal(objPos.xzy, objNorm.xzy, objTan.xzy, t); } #endif // _VERTEX_DEFORMATION_XY_TUBE #if defined(_VERTEX_DEFORMATION_SEAL) { float A = _Vertex_Deformation_Seal_A; float k = _Vertex_Deformation_Seal_k; float t = _Time[3] * _Vertex_Deformation_Seal_t; seal_normal(objPos, objNorm, objTan, A, k, t); } #endif // _VERTEX_DEFORMATION_SEAL #if defined(_VERTEX_DEFORMATION_SINE_WAVES) { float t = _Time[3]; float3 amplitude = _Vertex_Deformation_Sine_Waves_Amplitude; float3 direction = _Vertex_Deformation_Sine_Waves_Direction; float3 k = _Vertex_Deformation_Sine_Waves_k; float3 omega = _Vertex_Deformation_Sine_Waves_omega; sine_wave_normal(objPos, objNorm, objTan, amplitude, direction, k, omega, t); } #endif // _VERTEX_DEFORMATION_SINE_WAVES #if defined(_VERTEX_DEFORMATION_FBM) { float t = _Time[3]; float amplitude = _Vertex_Deformation_FBM_Amplitude; float gain = _Vertex_Deformation_FBM_Gain; float lacunarity = _Vertex_Deformation_FBM_Lacunarity; float scale = _Vertex_Deformation_FBM_Scale; float octaves = _Vertex_Deformation_FBM_Octaves; float3 velocity = _Vertex_Deformation_FBM_Velocity; fbm_normal( objPos, objNorm, objTan, t, amplitude, gain, lacunarity, scale, octaves, velocity); } #endif // _VERTEX_DEFORMATION_FBM } void propagateObjPos(inout v2f i) { i.worldPos = mul(unity_ObjectToWorld, float4(i.objPos, 1)); i.pos = UnityObjectToClipPos(i.objPos); i.eyeVec.xyz = i.worldPos - _WorldSpaceCameraPos; } #endif // __VERTEX_INC