Sets global quad rays sample count (ray tracing quality, 8-512 range, affects performance). Takes samples (number of samples per ray, clamped 8-512, default 64). Returns nothing. Sets g_quadRaysSettings.numSamples (sample count parameter, shader iterates this many times per ray).
Sets global quad rays sample count (ray tracing quality, 8-512 range, affects performance). Takes samples (number of samples per ray, clamped 8-512, default 64). Returns nothing. Sets g_quadRaysSettings.numSamples (sample count parameter, shader iterates this many times per ray). Use to control ray quality (more samples = smoother rays, fewer samples = banded artifacts), balance performance vs quality (higher samples = slower, lower samples = faster), or scale with hardware (high-end 128-256, low-end 16-32). Sample count: 8-16 = very low quality (visible banding, fast ~0.5ms), 32-64 = medium quality (slight banding, balanced ~1-2ms), 128-256 = high quality (smooth rays, slower ~3-5ms), 512 = maximum quality (very smooth, expensive ~8-10ms). Clamped automatically: values <8 clamped to 8 (minimum usable quality), values >512 clamped to 512 (maximum supported, diminishing returns). Ray tracing: shader steps along ray from pixel to light source (numSamples iterations), samples occlusion texture each step (checks if ray blocked by geometry), accumulates light with decay (light *= decay per sample, exponential falloff). Performance impact: linear with sample count (double samples ~ double render time), per-pixel cost (1920x1080 = 2M pixels x numSamples iterations), typical 64 samples ~2ms (depends on GPU, resolution, rayLength). Use cases: (1) Performance scaling (low 16, medium 64, high 128, ultra 256 based on hardware), (2) Quality priority (cinematic rendering use 256+ for smooth rays), (3) Real-time gameplay (use 32-64 for balanced performance), (4) Mobile/low-end (use 8-16 for acceptable framerate), (5) Dynamic adjustment (reduce samples when FPS drops, increase when stable). Common patterns: quality settings = low 16, medium 64, high 128, ultra 256; dynamic scaling = If fps < 30 Then samples 32 Else samples 128 adjust per-frame; cinematic = samples 256 for smooth high-quality rays. Typical values: very low 8-16 (banding visible, fast), low 16-32 (slight banding, acceptable), medium 32-64 (balanced, default), high 64-128 (smooth, good quality), ultra 128-256 (very smooth, expensive), extreme 256-512 (overkill, diminishing returns). Interaction with decay and length: more samples = longer visible rays before fadeout (decay applied per sample, more iterations = more cumulative decay), shorter rayLength with fewer samples = acceptable quality (less distance to cover, fewer steps needed). Immediate effect (applies next frame), automatic clamping (8-512 range enforced), thread-safe (set from main thread).