#ifndef WMARK_H #define WMARK_H #include "common.hlsli" #define NORMAL_SHIFT 0.007f #define MIN_SHIFT 0.003f #define MAX_SHIFT 0.011f #define RANGE 100.f uniform float3 eye_direction; float4 wmark_shift(float3 P, float3 N) { float3 sd = eye_position - P; float d = length(sd); float w = min(d / RANGE, 1.f); float s = lerp(MIN_SHIFT, MAX_SHIFT, d); P += N.xyz * NORMAL_SHIFT; P -= normalize(eye_direction - sd * rcp(d)) * s; return float4(P, 1.f); } #endif