// Benchmark case: no screen-space derivatives used (deriv-on vs deriv-off should match).
float wave_mix(float a, float b, float phase) {
float w = sin(phase) * 0.5f + cos(phase * 0.73f) * 0.5f;
return a * w + b * (1.0f - w);
}
float rational_shape(float x, float denom) {
float num = x * x + 1.0f;
return num / (denom + 2.0f);
}
float soften(float t) {
return t / (1.0f + t * t);
}
shader main(out float o) {
float x1 = global_value<x1>;
float x2 = global_value<x2>;
float u = global_value<uv_u>;
float v = global_value<uv_v>;
float p = wave_mix(x1, x2, u + v);
float q = rational_shape(p, x2);
o = soften(q) + log(1.0f + u * v) * 0.1f;
}