A renderer-shaped generated corpus: utility + scene + material layers behind IMaterial/IBSDF interfaces (n = material count), a raygen/ closesthit/miss entry-point root importing the whole library, and a generic compute root for per-material specialization. Programs here are few×HEAVY — each imports the full library — complementing api_many_kernels' many×tiny per-compile-overhead probes.
bucket: rt_renderer · compile mode: api · flags: (none) · default N: 24
Full sub-counter decomposition of compileInner — named leaf timers plus (self) residuals (a parent's time not covered by a named child, e.g. the autodiff transform in linkAndOptimizeIR (self)). Topmost band traces compileInner; hover a band for its phase.
Overall apiTotal: 736.3 → 728.2 ms -1.1% (2026-07-30 7c58a326b → 2026-08-29 28c755b09)
Contributors — the mutually-exclusive phase buckets (named leaves + (self) residuals) that tile apiTotal; the pp column sums to the overall %. Buckets moving the total by ≥0.2% are listed, the rest fold into the remainder row. Below them, every other reported counter (nested/overlapping, e.g. serialized-module reads — own change only):
| counter | Δ | own % | of total |
|---|---|---|---|
| apiGetCode | -5.7 ms | -7.3% | -0.8pp |
| apiCreateGlobalSession | -4.8 ms | -4.7% | -0.6pp |
| apiLoadModule | +2.5 ms | +0.4% | +0.3pp |
| (remaining 5 buckets) | -0.0 ms | – | -0.0pp |
Largest day steps (≥5% of the previous day, both directions; bisect with git log <c0>..<c1> -- source/):
| boundary | % vs prev day | commits | top buckets (own %) |
|---|---|---|---|
| none | |||
Run from the slang repo root. This regenerates the sources below and re-runs this workload's measurement; --gen-dir keeps the generated files (they go to a tempdir and are deleted otherwise).
python3 tools/compile-perf/bench.py --slangc /path/to/slangc --only rt_renderer --label repro --gen-dir repro-rt_renderer
the complete compiled source (N = 24), shown in full
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_base;
public float3 frac3(float3 v) { return frac(v); }
public static const float kPi = 3.14159265358979;
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_base;
public interface IBSDF
{
float3 eval(float3 wi, float3 wo, float3 n);
float3 sample(float3 wi, float3 n, float2 u);
float pdf(float3 wi, float3 wo, float3 n);
}
public interface IMaterial
{
static float3 evalStatic(float3 p, float3 n, float2 uv);
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_0;
import rutil_base;
public float3 util_hash_0(float x)
{
float3 v = float3(x * 1.0, x + 0.0, x - 1.0);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_0(float3 s)
{
float a = s.x * 1.0 + s.y * 0.0;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.0), b * sin(s.z * 1.0), a);
return normalize(r + 1e-5);
}
public float util_lum_0(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.0;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_1;
import rutil_base;
import rutil_0;
public float3 util_hash_1(float x)
{
float3 v = float3(x * 1.01, x + 0.1, x - 1.125);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_1(float3 s)
{
float a = s.x * 1.01 + s.y * 0.1;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.125), b * sin(s.z * 1.125), a);
r += util_hash_0(r.x + 1.0) * 0.125;
return normalize(r + 1e-5);
}
public float util_lum_1(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.125;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_2;
import rutil_base;
import rutil_1;
public float3 util_hash_2(float x)
{
float3 v = float3(x * 1.02, x + 0.2, x - 1.25);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_2(float3 s)
{
float a = s.x * 1.02 + s.y * 0.2;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.25), b * sin(s.z * 1.25), a);
r += util_hash_1(r.x + 2.0) * 0.125;
return normalize(r + 1e-5);
}
public float util_lum_2(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.25;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_3;
import rutil_base;
import rutil_1;
import rutil_2;
public float3 util_hash_3(float x)
{
float3 v = float3(x * 1.03, x + 0.3, x - 1.375);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_3(float3 s)
{
float a = s.x * 1.03 + s.y * 0.3;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.375), b * sin(s.z * 1.375), a);
r += util_hash_1(r.x + 3.0) * 0.125;
r = util_warp_2(r * 0.993);
return normalize(r + 1e-5);
}
public float util_lum_3(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.375;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_4;
import rutil_base;
import rutil_1;
public float3 util_hash_4(float x)
{
float3 v = float3(x * 1.04, x + 0.4, x - 1.5);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_4(float3 s)
{
float a = s.x * 1.04 + s.y * 0.4;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.5), b * sin(s.z * 1.5), a);
r += util_hash_1(r.x + 4.0) * 0.125;
return normalize(r + 1e-5);
}
public float util_lum_4(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.5;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_5;
import rutil_base;
import rutil_1;
import rutil_0;
public float3 util_hash_5(float x)
{
float3 v = float3(x * 1.05, x + 0.5, x - 1.625);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_5(float3 s)
{
float a = s.x * 1.05 + s.y * 0.5;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.625), b * sin(s.z * 1.625), a);
r += util_hash_1(r.x + 5.0) * 0.125;
r = util_warp_0(r * 0.995);
return normalize(r + 1e-5);
}
public float util_lum_5(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.625;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_6;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_6(float x)
{
float3 v = float3(x * 1.06, x + 0.6, x - 1.75);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_6(float3 s)
{
float a = s.x * 1.06 + s.y * 0.6;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.75), b * sin(s.z * 1.75), a);
r += util_hash_1(r.x + 6.0) * 0.125;
r = util_warp_5(r * 0.996);
return normalize(r + 1e-5);
}
public float util_lum_6(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.75;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_7;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_7(float x)
{
float3 v = float3(x * 1.07, x + 0.7, x - 1.0);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_7(float3 s)
{
float a = s.x * 1.07 + s.y * 0.7;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.0), b * sin(s.z * 1.0), a);
r += util_hash_1(r.x + 7.0) * 0.125;
r = util_warp_5(r * 0.997);
return normalize(r + 1e-5);
}
public float util_lum_7(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.0;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_8;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_8(float x)
{
float3 v = float3(x * 1.08, x + 0.8, x - 1.125);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_8(float3 s)
{
float a = s.x * 1.08 + s.y * 0.8;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.125), b * sin(s.z * 1.125), a);
r += util_hash_1(r.x + 8.0) * 0.125;
r = util_warp_5(r * 0.998);
return normalize(r + 1e-5);
}
public float util_lum_8(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.125;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_9;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_9(float x)
{
float3 v = float3(x * 1.09, x + 0.9, x - 1.25);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_9(float3 s)
{
float a = s.x * 1.09 + s.y * 0.9;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.25), b * sin(s.z * 1.25), a);
r += util_hash_1(r.x + 9.0) * 0.125;
r = util_warp_5(r * 0.999);
return normalize(r + 1e-5);
}
public float util_lum_9(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.25;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_10;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_10(float x)
{
float3 v = float3(x * 1.1, x + 1.0, x - 1.375);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_10(float3 s)
{
float a = s.x * 1.1 + s.y * 1.0;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.375), b * sin(s.z * 1.375), a);
r += util_hash_1(r.x + 10.0) * 0.125;
r = util_warp_5(r * 0.990);
return normalize(r + 1e-5);
}
public float util_lum_10(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.375;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_11;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_11(float x)
{
float3 v = float3(x * 1.11, x + 1.1, x - 1.5);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_11(float3 s)
{
float a = s.x * 1.11 + s.y * 1.1;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.5), b * sin(s.z * 1.5), a);
r += util_hash_1(r.x + 11.0) * 0.125;
r = util_warp_5(r * 0.991);
return normalize(r + 1e-5);
}
public float util_lum_11(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.5;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_12;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_12(float x)
{
float3 v = float3(x * 1.12, x + 1.2, x - 1.625);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_12(float3 s)
{
float a = s.x * 1.12 + s.y * 1.2;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.625), b * sin(s.z * 1.625), a);
r += util_hash_1(r.x + 12.0) * 0.125;
r = util_warp_5(r * 0.992);
return normalize(r + 1e-5);
}
public float util_lum_12(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.625;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_13;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_13(float x)
{
float3 v = float3(x * 1.13, x + 1.3, x - 1.75);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_13(float3 s)
{
float a = s.x * 1.13 + s.y * 1.3;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.75), b * sin(s.z * 1.75), a);
r += util_hash_1(r.x + 13.0) * 0.125;
r = util_warp_5(r * 0.993);
return normalize(r + 1e-5);
}
public float util_lum_13(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.75;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_14;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_14(float x)
{
float3 v = float3(x * 1.1400000000000001, x + 1.4, x - 1.0);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_14(float3 s)
{
float a = s.x * 1.1400000000000001 + s.y * 1.4;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.0), b * sin(s.z * 1.0), a);
r += util_hash_1(r.x + 14.0) * 0.125;
r = util_warp_5(r * 0.994);
return normalize(r + 1e-5);
}
public float util_lum_14(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.0;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_15;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_15(float x)
{
float3 v = float3(x * 1.15, x + 1.5, x - 1.125);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_15(float3 s)
{
float a = s.x * 1.15 + s.y * 1.5;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.125), b * sin(s.z * 1.125), a);
r += util_hash_1(r.x + 15.0) * 0.125;
r = util_warp_5(r * 0.995);
return normalize(r + 1e-5);
}
public float util_lum_15(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.125;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_16;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_16(float x)
{
float3 v = float3(x * 1.16, x + 1.6, x - 1.25);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_16(float3 s)
{
float a = s.x * 1.16 + s.y * 1.6;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.25), b * sin(s.z * 1.25), a);
r += util_hash_1(r.x + 16.0) * 0.125;
r = util_warp_5(r * 0.996);
return normalize(r + 1e-5);
}
public float util_lum_16(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.25;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_17;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_17(float x)
{
float3 v = float3(x * 1.17, x + 1.7, x - 1.375);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_17(float3 s)
{
float a = s.x * 1.17 + s.y * 1.7;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.375), b * sin(s.z * 1.375), a);
r += util_hash_1(r.x + 17.0) * 0.125;
r = util_warp_5(r * 0.997);
return normalize(r + 1e-5);
}
public float util_lum_17(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.375;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_18;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_18(float x)
{
float3 v = float3(x * 1.18, x + 1.8, x - 1.5);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_18(float3 s)
{
float a = s.x * 1.18 + s.y * 1.8;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.5), b * sin(s.z * 1.5), a);
r += util_hash_1(r.x + 18.0) * 0.125;
r = util_warp_5(r * 0.998);
return normalize(r + 1e-5);
}
public float util_lum_18(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.5;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_19;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_19(float x)
{
float3 v = float3(x * 1.19, x + 1.9, x - 1.625);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_19(float3 s)
{
float a = s.x * 1.19 + s.y * 1.9;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.625), b * sin(s.z * 1.625), a);
r += util_hash_1(r.x + 19.0) * 0.125;
r = util_warp_5(r * 0.999);
return normalize(r + 1e-5);
}
public float util_lum_19(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.625;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_20;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_20(float x)
{
float3 v = float3(x * 1.2, x + 2.0, x - 1.75);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_20(float3 s)
{
float a = s.x * 1.2 + s.y * 2.0;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.75), b * sin(s.z * 1.75), a);
r += util_hash_1(r.x + 20.0) * 0.125;
r = util_warp_5(r * 0.990);
return normalize(r + 1e-5);
}
public float util_lum_20(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.75;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_21;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_21(float x)
{
float3 v = float3(x * 1.21, x + 2.1, x - 1.0);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_21(float3 s)
{
float a = s.x * 1.21 + s.y * 2.1;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.0), b * sin(s.z * 1.0), a);
r += util_hash_1(r.x + 21.0) * 0.125;
r = util_warp_5(r * 0.991);
return normalize(r + 1e-5);
}
public float util_lum_21(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.0;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_22;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_22(float x)
{
float3 v = float3(x * 1.22, x + 2.2, x - 1.125);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_22(float3 s)
{
float a = s.x * 1.22 + s.y * 2.2;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.125), b * sin(s.z * 1.125), a);
r += util_hash_1(r.x + 22.0) * 0.125;
r = util_warp_5(r * 0.992);
return normalize(r + 1e-5);
}
public float util_lum_22(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.125;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_23;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_23(float x)
{
float3 v = float3(x * 1.23, x + 2.3, x - 1.25);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_23(float3 s)
{
float a = s.x * 1.23 + s.y * 2.3;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.25), b * sin(s.z * 1.25), a);
r += util_hash_1(r.x + 23.0) * 0.125;
r = util_warp_5(r * 0.993);
return normalize(r + 1e-5);
}
public float util_lum_23(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.25;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_24;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_24(float x)
{
float3 v = float3(x * 1.24, x + 2.4, x - 1.375);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_24(float3 s)
{
float a = s.x * 1.24 + s.y * 2.4;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.375), b * sin(s.z * 1.375), a);
r += util_hash_1(r.x + 24.0) * 0.125;
r = util_warp_5(r * 0.994);
return normalize(r + 1e-5);
}
public float util_lum_24(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.375;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_25;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_25(float x)
{
float3 v = float3(x * 1.25, x + 2.5, x - 1.5);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_25(float3 s)
{
float a = s.x * 1.25 + s.y * 2.5;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.5), b * sin(s.z * 1.5), a);
r += util_hash_1(r.x + 25.0) * 0.125;
r = util_warp_5(r * 0.995);
return normalize(r + 1e-5);
}
public float util_lum_25(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.5;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_26;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_26(float x)
{
float3 v = float3(x * 1.26, x + 2.6, x - 1.625);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_26(float3 s)
{
float a = s.x * 1.26 + s.y * 2.6;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.625), b * sin(s.z * 1.625), a);
r += util_hash_1(r.x + 26.0) * 0.125;
r = util_warp_5(r * 0.996);
return normalize(r + 1e-5);
}
public float util_lum_26(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.625;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_27;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_27(float x)
{
float3 v = float3(x * 1.27, x + 2.7, x - 1.75);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_27(float3 s)
{
float a = s.x * 1.27 + s.y * 2.7;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.75), b * sin(s.z * 1.75), a);
r += util_hash_1(r.x + 27.0) * 0.125;
r = util_warp_5(r * 0.997);
return normalize(r + 1e-5);
}
public float util_lum_27(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.75;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_28;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_28(float x)
{
float3 v = float3(x * 1.28, x + 2.8, x - 1.0);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_28(float3 s)
{
float a = s.x * 1.28 + s.y * 2.8;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.0), b * sin(s.z * 1.0), a);
r += util_hash_1(r.x + 28.0) * 0.125;
r = util_warp_5(r * 0.998);
return normalize(r + 1e-5);
}
public float util_lum_28(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.0;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_29;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_29(float x)
{
float3 v = float3(x * 1.29, x + 2.9, x - 1.125);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_29(float3 s)
{
float a = s.x * 1.29 + s.y * 2.9;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.125), b * sin(s.z * 1.125), a);
r += util_hash_1(r.x + 29.0) * 0.125;
r = util_warp_5(r * 0.999);
return normalize(r + 1e-5);
}
public float util_lum_29(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.125;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_30;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_30(float x)
{
float3 v = float3(x * 1.3, x + 3.0, x - 1.25);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_30(float3 s)
{
float a = s.x * 1.3 + s.y * 3.0;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.25), b * sin(s.z * 1.25), a);
r += util_hash_1(r.x + 30.0) * 0.125;
r = util_warp_5(r * 0.990);
return normalize(r + 1e-5);
}
public float util_lum_30(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.25;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_31;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_31(float x)
{
float3 v = float3(x * 1.31, x + 0.0, x - 1.375);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_31(float3 s)
{
float a = s.x * 1.31 + s.y * 0.0;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.375), b * sin(s.z * 1.375), a);
r += util_hash_1(r.x + 31.0) * 0.125;
r = util_warp_5(r * 0.991);
return normalize(r + 1e-5);
}
public float util_lum_31(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.375;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_32;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_32(float x)
{
float3 v = float3(x * 1.32, x + 0.1, x - 1.5);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_32(float3 s)
{
float a = s.x * 1.32 + s.y * 0.1;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.5), b * sin(s.z * 1.5), a);
r += util_hash_1(r.x + 32.0) * 0.125;
r = util_warp_5(r * 0.992);
return normalize(r + 1e-5);
}
public float util_lum_32(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.5;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_33;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_33(float x)
{
float3 v = float3(x * 1.33, x + 0.2, x - 1.625);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_33(float3 s)
{
float a = s.x * 1.33 + s.y * 0.2;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.625), b * sin(s.z * 1.625), a);
r += util_hash_1(r.x + 33.0) * 0.125;
r = util_warp_5(r * 0.993);
return normalize(r + 1e-5);
}
public float util_lum_33(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.625;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_34;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_34(float x)
{
float3 v = float3(x * 1.34, x + 0.3, x - 1.75);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_34(float3 s)
{
float a = s.x * 1.34 + s.y * 0.3;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.75), b * sin(s.z * 1.75), a);
r += util_hash_1(r.x + 34.0) * 0.125;
r = util_warp_5(r * 0.994);
return normalize(r + 1e-5);
}
public float util_lum_34(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.75;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_35;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_35(float x)
{
float3 v = float3(x * 1.35, x + 0.4, x - 1.0);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_35(float3 s)
{
float a = s.x * 1.35 + s.y * 0.4;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.0), b * sin(s.z * 1.0), a);
r += util_hash_1(r.x + 35.0) * 0.125;
r = util_warp_5(r * 0.995);
return normalize(r + 1e-5);
}
public float util_lum_35(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.0;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_36;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_36(float x)
{
float3 v = float3(x * 1.3599999999999999, x + 0.5, x - 1.125);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_36(float3 s)
{
float a = s.x * 1.3599999999999999 + s.y * 0.5;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.125), b * sin(s.z * 1.125), a);
r += util_hash_1(r.x + 36.0) * 0.125;
r = util_warp_5(r * 0.996);
return normalize(r + 1e-5);
}
public float util_lum_36(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.125;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_37;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_37(float x)
{
float3 v = float3(x * 1.37, x + 0.6, x - 1.25);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_37(float3 s)
{
float a = s.x * 1.37 + s.y * 0.6;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.25), b * sin(s.z * 1.25), a);
r += util_hash_1(r.x + 37.0) * 0.125;
r = util_warp_5(r * 0.997);
return normalize(r + 1e-5);
}
public float util_lum_37(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.25;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_38;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_38(float x)
{
float3 v = float3(x * 1.38, x + 0.7, x - 1.375);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_38(float3 s)
{
float a = s.x * 1.38 + s.y * 0.7;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.375), b * sin(s.z * 1.375), a);
r += util_hash_1(r.x + 38.0) * 0.125;
r = util_warp_5(r * 0.998);
return normalize(r + 1e-5);
}
public float util_lum_38(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.375;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_39;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_39(float x)
{
float3 v = float3(x * 1.3900000000000001, x + 0.8, x - 1.5);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_39(float3 s)
{
float a = s.x * 1.3900000000000001 + s.y * 0.8;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.5), b * sin(s.z * 1.5), a);
r += util_hash_1(r.x + 39.0) * 0.125;
r = util_warp_5(r * 0.999);
return normalize(r + 1e-5);
}
public float util_lum_39(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.5;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_40;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_40(float x)
{
float3 v = float3(x * 1.4, x + 0.9, x - 1.625);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_40(float3 s)
{
float a = s.x * 1.4 + s.y * 0.9;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.625), b * sin(s.z * 1.625), a);
r += util_hash_1(r.x + 40.0) * 0.125;
r = util_warp_5(r * 0.990);
return normalize(r + 1e-5);
}
public float util_lum_40(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.625;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_41;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_41(float x)
{
float3 v = float3(x * 1.41, x + 1.0, x - 1.75);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_41(float3 s)
{
float a = s.x * 1.41 + s.y * 1.0;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.75), b * sin(s.z * 1.75), a);
r += util_hash_1(r.x + 41.0) * 0.125;
r = util_warp_5(r * 0.991);
return normalize(r + 1e-5);
}
public float util_lum_41(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.75;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_42;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_42(float x)
{
float3 v = float3(x * 1.42, x + 1.1, x - 1.0);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_42(float3 s)
{
float a = s.x * 1.42 + s.y * 1.1;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.0), b * sin(s.z * 1.0), a);
r += util_hash_1(r.x + 42.0) * 0.125;
r = util_warp_5(r * 0.992);
return normalize(r + 1e-5);
}
public float util_lum_42(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.0;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_43;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_43(float x)
{
float3 v = float3(x * 1.43, x + 1.2, x - 1.125);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_43(float3 s)
{
float a = s.x * 1.43 + s.y * 1.2;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.125), b * sin(s.z * 1.125), a);
r += util_hash_1(r.x + 43.0) * 0.125;
r = util_warp_5(r * 0.993);
return normalize(r + 1e-5);
}
public float util_lum_43(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.125;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_44;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_44(float x)
{
float3 v = float3(x * 1.44, x + 1.3, x - 1.25);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_44(float3 s)
{
float a = s.x * 1.44 + s.y * 1.3;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.25), b * sin(s.z * 1.25), a);
r += util_hash_1(r.x + 44.0) * 0.125;
r = util_warp_5(r * 0.994);
return normalize(r + 1e-5);
}
public float util_lum_44(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.25;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_45;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_45(float x)
{
float3 v = float3(x * 1.45, x + 1.4, x - 1.375);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_45(float3 s)
{
float a = s.x * 1.45 + s.y * 1.4;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.375), b * sin(s.z * 1.375), a);
r += util_hash_1(r.x + 45.0) * 0.125;
r = util_warp_5(r * 0.995);
return normalize(r + 1e-5);
}
public float util_lum_45(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.375;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_46;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_46(float x)
{
float3 v = float3(x * 1.46, x + 1.5, x - 1.5);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_46(float3 s)
{
float a = s.x * 1.46 + s.y * 1.5;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.5), b * sin(s.z * 1.5), a);
r += util_hash_1(r.x + 46.0) * 0.125;
r = util_warp_5(r * 0.996);
return normalize(r + 1e-5);
}
public float util_lum_46(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.5;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rutil_47;
import rutil_base;
import rutil_1;
import rutil_5;
public float3 util_hash_47(float x)
{
float3 v = float3(x * 1.47, x + 1.6, x - 1.625);
v = frac(sin(v * 127.1) * 43758.5453);
return v;
}
public float3 util_warp_47(float3 s)
{
float a = s.x * 1.47 + s.y * 1.6;
float b = sqrt(max(1.0 - a * a, 0.0));
float3 r = float3(b * cos(s.z * 1.625), b * sin(s.z * 1.625), a);
r += util_hash_1(r.x + 47.0) * 0.125;
r = util_warp_5(r * 0.997);
return normalize(r + 1e-5);
}
public float util_lum_47(float3 c)
{
return dot(c, float3(0.2126, 0.7152, 0.0722)) * 1.625;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_0;
import rutil_base;
import rutil_0;
import rutil_11;
import rutil_22;
public struct Light_0
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_0(float3 p, float3 n)
{
Light_0 light;
light.position = util_hash_0(p.x) * 10.0;
light.intensity = float3(1.0, 1.0 * 0.9, 1.0 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
return l;
}
public float scene_shadow_0(float3 p)
{
return saturate(util_lum_11(util_warp_22(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_1;
import rutil_base;
import rutil_5;
import rutil_16;
import rutil_27;
import rscene_0;
public struct Light_1
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_1(float3 p, float3 n)
{
Light_1 light;
light.position = util_hash_5(p.x) * 10.0;
light.intensity = float3(1.0625, 1.0625 * 0.9, 1.0625 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_0(p * 0.97, n);
return l;
}
public float scene_shadow_1(float3 p)
{
return saturate(util_lum_16(util_warp_27(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_2;
import rutil_base;
import rutil_10;
import rutil_21;
import rutil_32;
import rscene_1;
public struct Light_2
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_2(float3 p, float3 n)
{
Light_2 light;
light.position = util_hash_10(p.x) * 10.0;
light.intensity = float3(1.125, 1.125 * 0.9, 1.125 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_1(p * 0.97, n);
return l;
}
public float scene_shadow_2(float3 p)
{
return saturate(util_lum_21(util_warp_32(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_3;
import rutil_base;
import rutil_15;
import rutil_26;
import rutil_37;
import rscene_2;
public struct Light_3
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_3(float3 p, float3 n)
{
Light_3 light;
light.position = util_hash_15(p.x) * 10.0;
light.intensity = float3(1.1875, 1.1875 * 0.9, 1.1875 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_2(p * 0.97, n);
return l;
}
public float scene_shadow_3(float3 p)
{
return saturate(util_lum_26(util_warp_37(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_4;
import rutil_base;
import rutil_20;
import rutil_31;
import rutil_42;
import rscene_3;
public struct Light_4
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_4(float3 p, float3 n)
{
Light_4 light;
light.position = util_hash_20(p.x) * 10.0;
light.intensity = float3(1.25, 1.25 * 0.9, 1.25 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_3(p * 0.97, n);
return l;
}
public float scene_shadow_4(float3 p)
{
return saturate(util_lum_31(util_warp_42(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_5;
import rutil_base;
import rutil_25;
import rutil_36;
import rutil_47;
import rscene_4;
public struct Light_5
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_5(float3 p, float3 n)
{
Light_5 light;
light.position = util_hash_25(p.x) * 10.0;
light.intensity = float3(1.3125, 1.3125 * 0.9, 1.3125 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_4(p * 0.97, n);
return l;
}
public float scene_shadow_5(float3 p)
{
return saturate(util_lum_36(util_warp_47(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_6;
import rutil_base;
import rutil_30;
import rutil_41;
import rutil_4;
import rscene_5;
public struct Light_6
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_6(float3 p, float3 n)
{
Light_6 light;
light.position = util_hash_30(p.x) * 10.0;
light.intensity = float3(1.375, 1.375 * 0.9, 1.375 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_5(p * 0.97, n);
return l;
}
public float scene_shadow_6(float3 p)
{
return saturate(util_lum_41(util_warp_4(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_7;
import rutil_base;
import rutil_35;
import rutil_46;
import rutil_9;
import rscene_6;
public struct Light_7
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_7(float3 p, float3 n)
{
Light_7 light;
light.position = util_hash_35(p.x) * 10.0;
light.intensity = float3(1.4375, 1.4375 * 0.9, 1.4375 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_6(p * 0.97, n);
return l;
}
public float scene_shadow_7(float3 p)
{
return saturate(util_lum_46(util_warp_9(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_8;
import rutil_base;
import rutil_40;
import rutil_3;
import rutil_14;
import rscene_7;
public struct Light_8
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_8(float3 p, float3 n)
{
Light_8 light;
light.position = util_hash_40(p.x) * 10.0;
light.intensity = float3(1.5, 1.5 * 0.9, 1.5 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_7(p * 0.97, n);
return l;
}
public float scene_shadow_8(float3 p)
{
return saturate(util_lum_3(util_warp_14(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_9;
import rutil_base;
import rutil_45;
import rutil_8;
import rutil_19;
import rscene_8;
public struct Light_9
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_9(float3 p, float3 n)
{
Light_9 light;
light.position = util_hash_45(p.x) * 10.0;
light.intensity = float3(1.5625, 1.5625 * 0.9, 1.5625 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_8(p * 0.97, n);
return l;
}
public float scene_shadow_9(float3 p)
{
return saturate(util_lum_8(util_warp_19(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_10;
import rutil_base;
import rutil_2;
import rutil_13;
import rutil_24;
import rscene_9;
public struct Light_10
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_10(float3 p, float3 n)
{
Light_10 light;
light.position = util_hash_2(p.x) * 10.0;
light.intensity = float3(1.625, 1.625 * 0.9, 1.625 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_9(p * 0.97, n);
return l;
}
public float scene_shadow_10(float3 p)
{
return saturate(util_lum_13(util_warp_24(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_11;
import rutil_base;
import rutil_7;
import rutil_18;
import rutil_29;
import rscene_10;
public struct Light_11
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_11(float3 p, float3 n)
{
Light_11 light;
light.position = util_hash_7(p.x) * 10.0;
light.intensity = float3(1.6875, 1.6875 * 0.9, 1.6875 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_10(p * 0.97, n);
return l;
}
public float scene_shadow_11(float3 p)
{
return saturate(util_lum_18(util_warp_29(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_12;
import rutil_base;
import rutil_12;
import rutil_23;
import rutil_34;
import rscene_11;
public struct Light_12
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_12(float3 p, float3 n)
{
Light_12 light;
light.position = util_hash_12(p.x) * 10.0;
light.intensity = float3(1.75, 1.75 * 0.9, 1.75 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_11(p * 0.97, n);
return l;
}
public float scene_shadow_12(float3 p)
{
return saturate(util_lum_23(util_warp_34(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_13;
import rutil_base;
import rutil_17;
import rutil_28;
import rutil_39;
import rscene_12;
public struct Light_13
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_13(float3 p, float3 n)
{
Light_13 light;
light.position = util_hash_17(p.x) * 10.0;
light.intensity = float3(1.0, 1.0 * 0.9, 1.0 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_12(p * 0.97, n);
return l;
}
public float scene_shadow_13(float3 p)
{
return saturate(util_lum_28(util_warp_39(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_14;
import rutil_base;
import rutil_22;
import rutil_33;
import rutil_44;
import rscene_13;
public struct Light_14
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_14(float3 p, float3 n)
{
Light_14 light;
light.position = util_hash_22(p.x) * 10.0;
light.intensity = float3(1.0625, 1.0625 * 0.9, 1.0625 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_13(p * 0.97, n);
return l;
}
public float scene_shadow_14(float3 p)
{
return saturate(util_lum_33(util_warp_44(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_15;
import rutil_base;
import rutil_27;
import rutil_38;
import rutil_1;
import rscene_14;
public struct Light_15
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_15(float3 p, float3 n)
{
Light_15 light;
light.position = util_hash_27(p.x) * 10.0;
light.intensity = float3(1.125, 1.125 * 0.9, 1.125 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_14(p * 0.97, n);
return l;
}
public float scene_shadow_15(float3 p)
{
return saturate(util_lum_38(util_warp_1(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_16;
import rutil_base;
import rutil_32;
import rutil_43;
import rutil_6;
import rscene_15;
public struct Light_16
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_16(float3 p, float3 n)
{
Light_16 light;
light.position = util_hash_32(p.x) * 10.0;
light.intensity = float3(1.1875, 1.1875 * 0.9, 1.1875 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_15(p * 0.97, n);
return l;
}
public float scene_shadow_16(float3 p)
{
return saturate(util_lum_43(util_warp_6(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_17;
import rutil_base;
import rutil_37;
import rutil_0;
import rutil_11;
import rscene_16;
public struct Light_17
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_17(float3 p, float3 n)
{
Light_17 light;
light.position = util_hash_37(p.x) * 10.0;
light.intensity = float3(1.25, 1.25 * 0.9, 1.25 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_16(p * 0.97, n);
return l;
}
public float scene_shadow_17(float3 p)
{
return saturate(util_lum_0(util_warp_11(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_18;
import rutil_base;
import rutil_42;
import rutil_5;
import rutil_16;
import rscene_17;
public struct Light_18
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_18(float3 p, float3 n)
{
Light_18 light;
light.position = util_hash_42(p.x) * 10.0;
light.intensity = float3(1.3125, 1.3125 * 0.9, 1.3125 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_17(p * 0.97, n);
return l;
}
public float scene_shadow_18(float3 p)
{
return saturate(util_lum_5(util_warp_16(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_19;
import rutil_base;
import rutil_47;
import rutil_10;
import rutil_21;
import rscene_18;
public struct Light_19
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_19(float3 p, float3 n)
{
Light_19 light;
light.position = util_hash_47(p.x) * 10.0;
light.intensity = float3(1.375, 1.375 * 0.9, 1.375 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_18(p * 0.97, n);
return l;
}
public float scene_shadow_19(float3 p)
{
return saturate(util_lum_10(util_warp_21(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_20;
import rutil_base;
import rutil_4;
import rutil_15;
import rutil_26;
import rscene_19;
public struct Light_20
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_20(float3 p, float3 n)
{
Light_20 light;
light.position = util_hash_4(p.x) * 10.0;
light.intensity = float3(1.4375, 1.4375 * 0.9, 1.4375 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_19(p * 0.97, n);
return l;
}
public float scene_shadow_20(float3 p)
{
return saturate(util_lum_15(util_warp_26(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_21;
import rutil_base;
import rutil_9;
import rutil_20;
import rutil_31;
import rscene_20;
public struct Light_21
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_21(float3 p, float3 n)
{
Light_21 light;
light.position = util_hash_9(p.x) * 10.0;
light.intensity = float3(1.5, 1.5 * 0.9, 1.5 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_20(p * 0.97, n);
return l;
}
public float scene_shadow_21(float3 p)
{
return saturate(util_lum_20(util_warp_31(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_22;
import rutil_base;
import rutil_14;
import rutil_25;
import rutil_36;
import rscene_21;
public struct Light_22
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_22(float3 p, float3 n)
{
Light_22 light;
light.position = util_hash_14(p.x) * 10.0;
light.intensity = float3(1.5625, 1.5625 * 0.9, 1.5625 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_21(p * 0.97, n);
return l;
}
public float scene_shadow_22(float3 p)
{
return saturate(util_lum_25(util_warp_36(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rscene_23;
import rutil_base;
import rutil_19;
import rutil_30;
import rutil_41;
import rscene_22;
public struct Light_23
{
public float3 position;
public float3 intensity;
public float radius;
}
public float3 scene_light_23(float3 p, float3 n)
{
Light_23 light;
light.position = util_hash_19(p.x) * 10.0;
light.intensity = float3(1.625, 1.625 * 0.9, 1.625 * 0.8);
light.radius = 0.5;
float3 toL = light.position - p;
float d2 = max(dot(toL, toL), 1e-4);
float3 l = light.intensity * max(dot(n, normalize(toL)), 0.0) / d2;
l += scene_light_22(p * 0.97, n);
return l;
}
public float scene_shadow_23(float3 p)
{
return saturate(util_lum_30(util_warp_41(p)));
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_0;
import rutil_base;
import rmat_base;
import rutil_0;
import rutil_7;
import rutil_14;
import rutil_21;
import rscene_0;
public struct BSDF_0 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.1, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_0(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_7(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_0 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_0 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.1;
float3 li = scene_light_0(p, n) * scene_shadow_0(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_0 bsdf;
bsdf.albedo = util_hash_14(uv.x);
bsdf.roughness = 0.1;
float3 wi = util_warp_21(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_0(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_1;
import rutil_base;
import rmat_base;
import rutil_17;
import rutil_24;
import rutil_31;
import rutil_38;
import rscene_3;
public struct BSDF_1 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.2, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_17(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_24(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_1 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_1 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.2;
float3 li = scene_light_3(p, n) * scene_shadow_3(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_1 bsdf;
bsdf.albedo = util_hash_31(uv.x);
bsdf.roughness = 0.2;
float3 wi = util_warp_38(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_3(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_2;
import rutil_base;
import rmat_base;
import rutil_34;
import rutil_41;
import rutil_0;
import rutil_7;
import rscene_6;
public struct BSDF_2 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.30000000000000004, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_34(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_41(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_2 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_2 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.30000000000000004;
float3 li = scene_light_6(p, n) * scene_shadow_6(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_2 bsdf;
bsdf.albedo = util_hash_0(uv.x);
bsdf.roughness = 0.30000000000000004;
float3 wi = util_warp_7(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_6(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_3;
import rutil_base;
import rmat_base;
import rutil_3;
import rutil_10;
import rutil_17;
import rutil_24;
import rscene_9;
public struct BSDF_3 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.4, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_3(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_10(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_3 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_3 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.4;
float3 li = scene_light_9(p, n) * scene_shadow_9(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_3 bsdf;
bsdf.albedo = util_hash_17(uv.x);
bsdf.roughness = 0.4;
float3 wi = util_warp_24(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_9(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_4;
import rutil_base;
import rmat_base;
import rutil_20;
import rutil_27;
import rutil_34;
import rutil_41;
import rscene_12;
public struct BSDF_4 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.5, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_20(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_27(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_4 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_4 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.5;
float3 li = scene_light_12(p, n) * scene_shadow_12(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_4 bsdf;
bsdf.albedo = util_hash_34(uv.x);
bsdf.roughness = 0.5;
float3 wi = util_warp_41(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_12(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_5;
import rutil_base;
import rmat_base;
import rutil_37;
import rutil_44;
import rutil_3;
import rutil_10;
import rscene_15;
public struct BSDF_5 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.6, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_37(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_44(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_5 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_5 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.6;
float3 li = scene_light_15(p, n) * scene_shadow_15(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_5 bsdf;
bsdf.albedo = util_hash_3(uv.x);
bsdf.roughness = 0.6;
float3 wi = util_warp_10(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_15(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_6;
import rutil_base;
import rmat_base;
import rutil_6;
import rutil_13;
import rutil_20;
import rutil_27;
import rscene_18;
public struct BSDF_6 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.7, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_6(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_13(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_6 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_6 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.7;
float3 li = scene_light_18(p, n) * scene_shadow_18(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_6 bsdf;
bsdf.albedo = util_hash_20(uv.x);
bsdf.roughness = 0.7;
float3 wi = util_warp_27(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_18(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_7;
import rutil_base;
import rmat_base;
import rutil_23;
import rutil_30;
import rutil_37;
import rutil_44;
import rscene_21;
public struct BSDF_7 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.7999999999999999, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_23(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_30(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_7 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_7 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.7999999999999999;
float3 li = scene_light_21(p, n) * scene_shadow_21(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_7 bsdf;
bsdf.albedo = util_hash_37(uv.x);
bsdf.roughness = 0.7999999999999999;
float3 wi = util_warp_44(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_21(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_8;
import rutil_base;
import rmat_base;
import rutil_40;
import rutil_47;
import rutil_6;
import rutil_13;
import rscene_0;
public struct BSDF_8 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.9, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_40(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_47(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_8 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_8 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.9;
float3 li = scene_light_0(p, n) * scene_shadow_0(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_8 bsdf;
bsdf.albedo = util_hash_6(uv.x);
bsdf.roughness = 0.9;
float3 wi = util_warp_13(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_0(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_9;
import rutil_base;
import rmat_base;
import rutil_9;
import rutil_16;
import rutil_23;
import rutil_30;
import rscene_3;
public struct BSDF_9 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.1, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_9(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_16(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_9 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_9 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.1;
float3 li = scene_light_3(p, n) * scene_shadow_3(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_9 bsdf;
bsdf.albedo = util_hash_23(uv.x);
bsdf.roughness = 0.1;
float3 wi = util_warp_30(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_3(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_10;
import rutil_base;
import rmat_base;
import rutil_26;
import rutil_33;
import rutil_40;
import rutil_47;
import rscene_6;
public struct BSDF_10 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.2, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_26(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_33(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_10 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_10 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.2;
float3 li = scene_light_6(p, n) * scene_shadow_6(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_10 bsdf;
bsdf.albedo = util_hash_40(uv.x);
bsdf.roughness = 0.2;
float3 wi = util_warp_47(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_6(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_11;
import rutil_base;
import rmat_base;
import rutil_43;
import rutil_2;
import rutil_9;
import rutil_16;
import rscene_9;
public struct BSDF_11 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.30000000000000004, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_43(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_2(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_11 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_11 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.30000000000000004;
float3 li = scene_light_9(p, n) * scene_shadow_9(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_11 bsdf;
bsdf.albedo = util_hash_9(uv.x);
bsdf.roughness = 0.30000000000000004;
float3 wi = util_warp_16(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_9(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_12;
import rutil_base;
import rmat_base;
import rutil_12;
import rutil_19;
import rutil_26;
import rutil_33;
import rscene_12;
public struct BSDF_12 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.4, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_12(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_19(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_12 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_12 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.4;
float3 li = scene_light_12(p, n) * scene_shadow_12(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_12 bsdf;
bsdf.albedo = util_hash_26(uv.x);
bsdf.roughness = 0.4;
float3 wi = util_warp_33(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_12(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_13;
import rutil_base;
import rmat_base;
import rutil_29;
import rutil_36;
import rutil_43;
import rutil_2;
import rscene_15;
public struct BSDF_13 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.5, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_29(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_36(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_13 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_13 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.5;
float3 li = scene_light_15(p, n) * scene_shadow_15(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_13 bsdf;
bsdf.albedo = util_hash_43(uv.x);
bsdf.roughness = 0.5;
float3 wi = util_warp_2(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_15(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_14;
import rutil_base;
import rmat_base;
import rutil_46;
import rutil_5;
import rutil_12;
import rutil_19;
import rscene_18;
public struct BSDF_14 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.6, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_46(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_5(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_14 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_14 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.6;
float3 li = scene_light_18(p, n) * scene_shadow_18(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_14 bsdf;
bsdf.albedo = util_hash_12(uv.x);
bsdf.roughness = 0.6;
float3 wi = util_warp_19(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_18(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_15;
import rutil_base;
import rmat_base;
import rutil_15;
import rutil_22;
import rutil_29;
import rutil_36;
import rscene_21;
public struct BSDF_15 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.7, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_15(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_22(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_15 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_15 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.7;
float3 li = scene_light_21(p, n) * scene_shadow_21(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_15 bsdf;
bsdf.albedo = util_hash_29(uv.x);
bsdf.roughness = 0.7;
float3 wi = util_warp_36(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_21(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_16;
import rutil_base;
import rmat_base;
import rutil_32;
import rutil_39;
import rutil_46;
import rutil_5;
import rscene_0;
public struct BSDF_16 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.7999999999999999, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_32(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_39(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_16 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_16 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.7999999999999999;
float3 li = scene_light_0(p, n) * scene_shadow_0(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_16 bsdf;
bsdf.albedo = util_hash_46(uv.x);
bsdf.roughness = 0.7999999999999999;
float3 wi = util_warp_5(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_0(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_17;
import rutil_base;
import rmat_base;
import rutil_1;
import rutil_8;
import rutil_15;
import rutil_22;
import rscene_3;
public struct BSDF_17 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.9, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_1(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_8(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_17 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_17 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.9;
float3 li = scene_light_3(p, n) * scene_shadow_3(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_17 bsdf;
bsdf.albedo = util_hash_15(uv.x);
bsdf.roughness = 0.9;
float3 wi = util_warp_22(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_3(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_18;
import rutil_base;
import rmat_base;
import rutil_18;
import rutil_25;
import rutil_32;
import rutil_39;
import rscene_6;
public struct BSDF_18 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.1, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_18(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_25(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_18 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_18 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.1;
float3 li = scene_light_6(p, n) * scene_shadow_6(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_18 bsdf;
bsdf.albedo = util_hash_32(uv.x);
bsdf.roughness = 0.1;
float3 wi = util_warp_39(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_6(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_19;
import rutil_base;
import rmat_base;
import rutil_35;
import rutil_42;
import rutil_1;
import rutil_8;
import rscene_9;
public struct BSDF_19 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.2, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_35(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_42(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_19 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_19 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.2;
float3 li = scene_light_9(p, n) * scene_shadow_9(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_19 bsdf;
bsdf.albedo = util_hash_1(uv.x);
bsdf.roughness = 0.2;
float3 wi = util_warp_8(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_9(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_20;
import rutil_base;
import rmat_base;
import rutil_4;
import rutil_11;
import rutil_18;
import rutil_25;
import rscene_12;
public struct BSDF_20 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.30000000000000004, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_4(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_11(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_20 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_20 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.30000000000000004;
float3 li = scene_light_12(p, n) * scene_shadow_12(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_20 bsdf;
bsdf.albedo = util_hash_18(uv.x);
bsdf.roughness = 0.30000000000000004;
float3 wi = util_warp_25(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_12(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_21;
import rutil_base;
import rmat_base;
import rutil_21;
import rutil_28;
import rutil_35;
import rutil_42;
import rscene_15;
public struct BSDF_21 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.4, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_21(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_28(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_21 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_21 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.4;
float3 li = scene_light_15(p, n) * scene_shadow_15(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_21 bsdf;
bsdf.albedo = util_hash_35(uv.x);
bsdf.roughness = 0.4;
float3 wi = util_warp_42(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_15(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_22;
import rutil_base;
import rmat_base;
import rutil_38;
import rutil_45;
import rutil_4;
import rutil_11;
import rscene_18;
public struct BSDF_22 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.5, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_38(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_45(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_22 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_22 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.5;
float3 li = scene_light_18(p, n) * scene_shadow_18(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_22 bsdf;
bsdf.albedo = util_hash_4(uv.x);
bsdf.roughness = 0.5;
float3 wi = util_warp_11(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_18(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rmat_23;
import rutil_base;
import rmat_base;
import rutil_7;
import rutil_14;
import rutil_21;
import rutil_28;
import rscene_21;
public struct BSDF_23 : IBSDF
{
public float3 albedo;
public float roughness;
public float3 eval(float3 wi, float3 wo, float3 n)
{
float3 h = normalize(wi + wo);
float d = pow(max(dot(n, h), 0.0), 1.0 / max(roughness * 0.6, 1e-3));
float3 f = albedo + (1.0 - albedo) * pow(1.0 - max(dot(wi, h), 0.0), 5.0);
return f * d * max(dot(n, wo), 0.0);
}
public float3 sample(float3 wi, float3 n, float2 u)
{
return util_warp_7(float3(u, roughness));
}
public float pdf(float3 wi, float3 wo, float3 n)
{
return max(util_lum_14(eval(wi, wo, n)), 1e-4);
}
}
public struct Material_23 : IMaterial
{
public Texture2D albedoMap;
public SamplerState samp;
public float4 tint;
public float3 shade(float3 p, float3 n, float3 wi, float3 wo, float2 uv)
{
BSDF_23 bsdf;
bsdf.albedo = albedoMap.SampleLevel(samp, uv, 0).rgb * tint.rgb;
bsdf.roughness = tint.a * 0.6;
float3 li = scene_light_21(p, n) * scene_shadow_21(p);
return bsdf.eval(wi, wo, n) * li;
}
public static float3 evalStatic(float3 p, float3 n, float2 uv)
{
BSDF_23 bsdf;
bsdf.albedo = util_hash_21(uv.x);
bsdf.roughness = 0.6;
float3 wi = util_warp_28(float3(uv, 0.5));
return bsdf.eval(wi, n, n) + scene_light_21(p, n);
}
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand. module rlib; __exported import rutil_0; __exported import rutil_1; __exported import rutil_2; __exported import rutil_3; __exported import rutil_4; __exported import rutil_5; __exported import rutil_6; __exported import rutil_7; __exported import rutil_8; __exported import rutil_9; __exported import rutil_10; __exported import rutil_11; __exported import rutil_12; __exported import rutil_13; __exported import rutil_14; __exported import rutil_15; __exported import rutil_16; __exported import rutil_17; __exported import rutil_18; __exported import rutil_19; __exported import rutil_20; __exported import rutil_21; __exported import rutil_22; __exported import rutil_23; __exported import rutil_24; __exported import rutil_25; __exported import rutil_26; __exported import rutil_27; __exported import rutil_28; __exported import rutil_29; __exported import rutil_30; __exported import rutil_31; __exported import rutil_32; __exported import rutil_33; __exported import rutil_34; __exported import rutil_35; __exported import rutil_36; __exported import rutil_37; __exported import rutil_38; __exported import rutil_39; __exported import rutil_40; __exported import rutil_41; __exported import rutil_42; __exported import rutil_43; __exported import rutil_44; __exported import rutil_45; __exported import rutil_46; __exported import rutil_47; __exported import rscene_0; __exported import rscene_1; __exported import rscene_2; __exported import rscene_3; __exported import rscene_4; __exported import rscene_5; __exported import rscene_6; __exported import rscene_7; __exported import rscene_8; __exported import rscene_9; __exported import rscene_10; __exported import rscene_11; __exported import rscene_12; __exported import rscene_13; __exported import rscene_14; __exported import rscene_15; __exported import rscene_16; __exported import rscene_17; __exported import rscene_18; __exported import rscene_19; __exported import rscene_20; __exported import rscene_21; __exported import rscene_22; __exported import rscene_23; __exported import rmat_base; __exported import rmat_0; __exported import rmat_1; __exported import rmat_2; __exported import rmat_3; __exported import rmat_4; __exported import rmat_5; __exported import rmat_6; __exported import rmat_7; __exported import rmat_8; __exported import rmat_9; __exported import rmat_10; __exported import rmat_11; __exported import rmat_12; __exported import rmat_13; __exported import rmat_14; __exported import rmat_15; __exported import rmat_16; __exported import rmat_17; __exported import rmat_18; __exported import rmat_19; __exported import rmat_20; __exported import rmat_21; __exported import rmat_22; __exported import rmat_23;
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rt_kernels;
import rlib;
RaytracingAccelerationStructure gScene;
RWTexture2D<float4> gOutput;
struct RayPayload
{
float3 color;
uint depth;
}
[shader("raygen")]
void rayGenMain()
{
uint2 idx = DispatchRaysIndex().xy;
RayDesc ray;
ray.Origin = float3(idx.x * 0.001, idx.y * 0.001, -1.0);
ray.Direction = float3(0, 0, 1);
ray.TMin = 0.0;
ray.TMax = 1e30;
RayPayload payload = { float3(0, 0, 0), 0 };
TraceRay(gScene, RAY_FLAG_NONE, 0xff, 0, 0, 0, ray, payload);
gOutput[idx] = float4(payload.color, 1.0);
}
[shader("miss")]
void missMain(inout RayPayload payload)
{
payload.color = float3(0.1, 0.2, 0.4);
}
[shader("closesthit")]
void closestHitMain(
inout RayPayload payload,
in BuiltInTriangleIntersectionAttributes attribs)
{
float3 p = WorldRayOrigin() + WorldRayDirection() * RayTCurrent();
float3 n = float3(0, 1, 0);
float2 uv = attribs.barycentrics;
float3 c = float3(0, 0, 0);
c += Material_0.evalStatic(p, n, uv) * 0.0417;
c += Material_1.evalStatic(p, n, uv) * 0.0417;
c += Material_2.evalStatic(p, n, uv) * 0.0417;
c += Material_3.evalStatic(p, n, uv) * 0.0417;
c += Material_4.evalStatic(p, n, uv) * 0.0417;
c += Material_5.evalStatic(p, n, uv) * 0.0417;
c += Material_6.evalStatic(p, n, uv) * 0.0417;
c += Material_7.evalStatic(p, n, uv) * 0.0417;
c += Material_8.evalStatic(p, n, uv) * 0.0417;
c += Material_9.evalStatic(p, n, uv) * 0.0417;
c += Material_10.evalStatic(p, n, uv) * 0.0417;
c += Material_11.evalStatic(p, n, uv) * 0.0417;
c += Material_12.evalStatic(p, n, uv) * 0.0417;
c += Material_13.evalStatic(p, n, uv) * 0.0417;
c += Material_14.evalStatic(p, n, uv) * 0.0417;
c += Material_15.evalStatic(p, n, uv) * 0.0417;
c += Material_16.evalStatic(p, n, uv) * 0.0417;
c += Material_17.evalStatic(p, n, uv) * 0.0417;
c += Material_18.evalStatic(p, n, uv) * 0.0417;
c += Material_19.evalStatic(p, n, uv) * 0.0417;
c += Material_20.evalStatic(p, n, uv) * 0.0417;
c += Material_21.evalStatic(p, n, uv) * 0.0417;
c += Material_22.evalStatic(p, n, uv) * 0.0417;
c += Material_23.evalStatic(p, n, uv) * 0.0417;
payload.color = c;
payload.depth += 1;
}
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
module rt_compute;
import rlib;
RWStructuredBuffer<float> outBuf;
[shader("compute")]
[numthreads(8,8,1)]
void computeMain<T : IMaterial>(uint3 tid : SV_DispatchThreadID)
{
float2 uv = float2(tid.xy) * 0.001;
float3 c = T.evalStatic(float3(uv, 0.0), float3(0, 1, 0), uv);
outBuf[tid.x] = c.x + c.y + c.z;
}