Atmosphere tests

30 of 30 passed · each test's latest run, 2026-10-07 11:45 to 2026-10-07 15:29

Performance

✓ All measurements within their limits.

Test system

GPUNVIDIA GeForce RTX 2080 Super with Max-Q Design
CPUIntel Core i7-10875H @ 2.30GHz, 16 threads
Memory15.9 GB
Windowsbuild 19045
Game window1152 x 864, windowed, multisampling 4x, vsync off
ClientWorld of Warcraft 1.12.1.5875, DXVK
comfyatmos.dllv0.11.2-alpha, built Oct 7 2026 15:29:24
comfyatmos.ini188 settings

comfyatmos.ini

The settings file of the test client, as the tests ran with it. A test's own Atmosphere controls (its test settings) are applied over the matching values here.

[fog]

The fog: thick at the ground and thinning upward. It darkens what lies behind it and is lit by the sun and by the sky. Needs [depth] enabled. With [volume] enabled it is drawn with the volumetric light, and shows shafts where things shade the sun. With [volume] enabled = 0 it draws alone, with no shadow map: the sun lights all of it, as at Volumetric Light Strength 25. The game's own fog stays, as the far wall.

enabled1
density0.0025fog per yard at the ground. 0.0025 lets through 60% of what is 200 yards away
height25yards: the fog thins by 2.7 times every this many yards up
groundRadius150yards around you the ground under the fog is averaged over (the map files)
reach200yards: how far a line of sight gathers fog. It fades out over the last 40%; past it the game's own fog is the far wall
skyDistance75yards: the same for a line of sight to the sky (0 = the sky gets no fog)
brightness1.2the sky's light on the fog: the game's fog colour times this
sunLight4.0the sun's light on the fog, against the air's. Volumetric Light Strength sets both
patchiness0.50 = an even fog; 1 = thick patches with clear air between
scale60yards: how big a patch is
flatten2patches are this many times wider than tall
windDeg45the way the wind blows the patches: 0 north, 90 east
windSpeed1.5yards a second
follow0.50 = the fog lies on the ground smoothed over smoothRadius, so it fills valleys; 1 = on the ground itself, as thick on a hilltop as in the valley below
smoothRadius100yards
lowGround1.5the fog this much thicker again where the ground lies lowDepth yards below the
lowDepth25smoothed ground around it: valleys and hollows
water2.1this much thicker again over rivers, lakes and the sea
morning1.0this much thicker at dawn (6:00), and half of it at dusk (20:00)
lampMist0.5a lamp's glow in the air this much brighter for each time the ground's fog thickness around it. The fog between you and a lamp dims it either way
debug01 = the transmittance (white = clear); 2 = the sky's light on the fog alone

[sun]

Where the sun is, for the shadow map and the volumetric light. By default it is the sun the client draws in the sky, so the light follows the time of day.

fixed01 = a fixed sun at azimuth/elevation below, whatever time the game says it is, for testing in the same light every time
azimuth45degrees; the defaults are the afternoon sun the sky showed while this was tuned
elevation50
glide3seconds the sun takes to follow the sky (Sun Smoothing). Shadows, rays and light follow it. Lower moves sooner with the time of day; 0 shows the measurement's wander

[client]

Where the client keeps the camera and the player (the same addresses comfygrass uses). Shadows and volumetric light read them. Another WoW.exe build moves them.

camAddr0x00C7CF20
objMgrAddr0x00B41414
playerPosOff0x9B8
clockAddr0x00CE9B64the game's time of day, for [night] (the address comfytime writes)
mapNameAddr0x00C961A0the current map's folder name, for [shadow] mapTerrain

[depth]

A depth buffer the shaders can read (the INTZ format) swapped in for the client's. The volumetric light reads it. Off by default.

enabled1
seeThrough11 = a see-through model (a stealthed unit) writes no depth, so the shadows and the light do not outline it; 0 = as the game draws it
seeThroughNear4yards: not while the camera is this near your character. Zoomed in, the game fades your character the same way, and its face showed through the back of its head
seeThroughNearMounted15yards: the same while you ride a mount. The game fades the larger model from farther off, and the far side of the horse showed through
waterDepth11 = the water writes depth, so the sun shadows and the light see its surface; 0 = as the game draws it (they see what lies under the water)

[shadow]

A shadow map from the sun: the frame's solid world (terrain, buildings, trees) drawn a second time as the sun sees it. The volumetric light reads it. Off by default.

enabled1
size4096texels per side, 256..4096. 4096 gives sharper sun shadows and costs about twice the GPU time of 2048. The Shadow Resolution control sets 1024, 2048 or 4096
range250yards covered either side of you
nearRange32a finer map this many yards either side of you, for the sun shadows. 0 = none. The Near Shadow Distance control sets it (16 to 128)
midRange100a middle map this many yards either side, for the sun shadows past the near map: the shade a wall's merlons or eaves cast close behind them. 0 = none (64 MB less)
depth700yards toward and away from the sun (far enough for a ridge to block it)
horizonDepth1500with mapTerrain: yards toward the sun the ground still casts, so a far ridge blocks the light. Buildings and models stay within depth
nearMargin16yards past the near map a model's reference point may be and still be drawn into it
terrainLeaves11 = hills and mountains cast part shade ([sunshadows] terrainShade), in a map of their own; 0 = full shade, in the solid maps
mapTerrain11 = the ground is read from the map files at full detail; 0 = only what the game draws
terrainLow11 = that ground casts from a copy never above the game's coarse far mesh, so the far ground does not shade itself in blocks; 0 = from the full detail
leafAlpha224the leaves from the map files cast where their texture's alpha is at least this (1..255)
leaves11 = leaves and bushes (alpha-tested) in shadow maps of their own, so they can let part of the sun through ([sunshadows] leafShade)
minTriangles200models with fewer triangles stay out of the far map past 60 yards (0 = all in)
farEvery2of those rebuilds, redraw the far map on every Nth (the near map on each), 1..8
mapEvery1rebuild the shadow map every N frames, 1..8 (3 = a third of the replay cost). The Shadow Redraw control sets it
horizon11 = distant terrain shades you too
snap11 = hold the far map on whole texels of its own grid: shadow edges do not crawl as you walk. 0 = it slides with you
nearSnap11 = hold the near map on whole texels of its own grid: shadow edges near you do not hop as you walk. 0 = it slides with you
sunStep0degrees: the maps' sun is held and moved on in steps of this, so the shadow edges do not crawl while you stand still. With a low sun each step moves long shadows a few pixels at once. 0 = it moves every frame
keepMargin100yards past range that a tree or building out of view keeps casting shade, from you across the ground: while it can still cast into the map
cacheTime0seconds at most that something out of view keeps casting shade; 0 = no limit
staleTime8with mapTerrain: seconds at most that something the game stopped drawing keeps its shade (characters, creatures, objects); 0 = no limit
evictDistance20yards: something in view this near that the game stopped drawing is gone
stillRadius0.3yards a tree may seem to move and keep its place in the map

[volume]

Volumetric light: the fog glowing where the sun reaches it and dark where leaves and walls shade it. The lamp-in-a-foggy-room look, fixed in the world as you move the camera. Needs [depth] and [shadow] enabled. Alt+F11 toggles it.

enabled1
strength25the dial, 0..100
maxIntensity3.0brightness at 100
density0.016how much the air scatters light, per yard. Higher = thicker, brighter shafts
smooth0.850..0.95: how much of the last frame's glow is kept. It moves with the camera, so a turn does not smear. 0 also stops the noise pattern from changing each frame
steps64samples along each line of sight (more holds up over a long maxDistance)
maxDistance190yards along each line of sight (keep at or under [shadow] range)
anisotropy0.0700 = glows the same from every side; toward 1 = mostly when looking toward the sun
bias0.5yards of slack in the shadow test, against speckle on sunlit surfaces
leafShade1how much of the sun the leaves stop in the air, 0..1. 1 = the light comes through the gaps between the leaves only, in shafts. The ground's own is [sunshadows] leafShade
color0xFFE6BERGB of the light (default: warm late-morning)
downscale2work at 1/N resolution per axis (2 = half)
blur1smooth the noise the step jitter leaves
quality31 low, 2 medium, 3 high. High uses the values above; medium and low replace steps and downscale with cheaper ones: medium 48, 2; low 32, 3
debug01 = show the glow alone, white, to see its shape. For finding faults, one stage of the march each: 2 = white if it runs at all, 3 = the depth it reads, 4 = distance marched (white = maxDistance), 5 = share of each ray in sunlight
occlusion11 = the light fades when the sun's disc is behind terrain on screen, as for the rays ([rays] occlusionRadius and occlusionFull). The shadow map reaches only [shadow] depth, so without this a sun setting behind the far horizon lights the fog

[sunshadows]

Sun shadows: trees, buildings and characters shade the ground and walls. They come from the volumetric light's shadow map, so they draw only while [volume] draws. They follow the sun's height and [night] strength. Within [shadow] nearRange yards of you they use a finer map (0.016 yards a texel at size 4096), further out the far one (0.12). F12 logs the draw (lines starting "sunshadows:").

enabled1
world1terrain, buildings, trees and doodads cast. 0 = only players and creatures do, and the ground keeps the game's own baked shadows
units1players and creatures cast. 0 = the game's round shadow under them instead
lock01 = shadows at a set tilt all day, as the game's own baked shadows are; 0 = follow the sun
lockTilt15with lock: degrees from straight down (0 = the sun overhead, short shadows)
lodBias2yards of slack in the shadow test for every 100 yards past lodStart: the game draws distant ground coarser, and without it soft blobs lie on far slopes. 0 = none
lodStart80yards from the camera where lodBias starts
indoor00..1, how much of the sun shadows is kept inside a building (the game lights rooms itself)
shadeColor0x7C94C8RGB shade leans toward: the sky's cool light (its hue only: brightness is kept)
shadeTint0.650..1, how much. 0 = shade only darkens, in grey
sunColor0xFFE4C0RGB sunlit ground leans toward: warm
sunTint0.950..1, how much
strength20the dial, 0..100: how much of the light a shaded surface loses
night1000..100: the shadows at night, as % of strength. [night] strength does not apply
riseFrom12degrees: with the sun or moon lower than this, the shadows' light climbs back up as it sinks. A low light pushes shadows away from what casts them. 0 = never
riseTo85degrees: the shadows' light with the sun or moon at the horizon or under it
unitStrength450..100: players' and creatures' shadows this much darker again, also inside the shade of a building. 0 = as dark as the world's
unitGap0.5yards along the sun over which that extra fades in from the unit, on its own body only: less on its back and arms, and the ground keeps it up to the feet
unitDrop4yards under the unit past which that extra fades out, over 3 more: a shadow on the ground lies within the unit's height, the water under a bridge lower
bodyShade300..100: the shade on a player's or creature's own body, as a share. 100 = all of it, 0 = none. The Character Backside Shadow control sets it
bias3texels of slack in the depth test at the least; more as the sun gets lower, so flat ground does not shade itself in stripes. In texels of each map. Higher = no bands where a surface shades itself, but shadows start further from what casts them
minGap0yards: a blocker nearer the surface than this, along the sun, does not shade it. Against a model or a tree shading itself; shadows then start this far from where something touches the ground
sunOffset0.06yards each point is moved toward the sun before the test, against the same
normalBias4texels of the finest map each point is moved along its facing, rebuilt from the depth, where the sun grazes the surface or is behind it. 0 = none, and walls the sun grazes shade themselves in stripes. Players and creatures take none of it (the facing is per triangle on a model); with units = 0 they take all of it
slope00..1, how much of the surface's slope (from the same facing) sets each tap's depth. Try 1 if sloped ground shows stripes at a high softness
softness1.0how far apart the taps of the soft edge are, in map texels. 0 = sharp edges
baked00..1, how much of the terrain's own baked shadow is kept while these draw. It points one way at every hour; it is back in full as these fade at dusk
leafShade0.60..1, the share of the sun that leaves stop (the Tree Shadow Strength control). A tree's shade shows inside a hill's, darker. Solid things under them still shade
terrainShade0.60..1, the share of the sun that hills and mountains stop, with [shadow] terrainLeaves
terrainBias1.5yards: the least slack in the hills' depth test. Less, and the ground shades itself in faint bands; more, and a small hill's shade starts further from it
sunlight0.350..0.5, what the sun reaches is brightened by up to this share (0.2 = 20%)
debug01 = show the shade alone (white = lit); 2 = the leaves' shade alone

[lamps]

Lamps, lanterns and torches: the fog glows around them, and lampposts light the ground and walls near them as the game's torches do. The lights are the game's own (torches and braziers, also those NPCs carry) and lampposts, found by their glow sprite. It uses the volumetric light's depth and camera, so it draws only while [volume] draws, but it does not follow the sun and draws at night too. F12 logs the lights it draws (lines starting "lampglow:").

enabled1
strength26the dial, 0..100
maxIntensity10.0the glow in the air: brightness at 100
surface7a lamppost's light on the ground and walls near it, like a torch's: brightness at 100. 0 = none. The game's own torches light these already and are left alone
torchLight0.23fires (torches, braziers, campfires, and the torches NPCs carry): their glow and light, 0..2. The game lights models near them already, so at 1 those are lit twice
lanternLight0.69lamps (lampposts, lanterns, candles, chandeliers): their glow and light, 0..2
indoors0.29every lamp while you are inside a building, 0..1. A room holds many lights close together, and at 1 the air between them washes out
density0.03how much the air scatters a lamp's light, per yard. Higher = a wider, brighter glow
day51% of the night strength by day, by [night] dusk, dawn and fade
maxDistance120yards: a light further away adds nothing. The glow also fades over the far half of the fog
maxLights32the most lights one part of the screen draws, nearest first, 1..32
keep2seconds a light on screen may go unseen before it fades out. A light off screen is kept: the game names a lamppost only while it is on screen
softness0.4yards: the radius of a light's bright core
through1.5yards the glow runs on past the first surface in the way. The game's light sits inside the torch head or the bowl, which hides it from some angles at 0. A lamp this near behind a wall glows faintly through it
sprites11 = lampposts glow too, found by their warm glow sprite
files11 = the candles, torches and fireplaces in buildings glow too, read from the map files
fogReach2.6how far into the fog lamps still glow: 1 = they fade over the far half of the fog, as the game fades its own lamp sprites; 2 = twice as far
spriteReach16yards a lamppost's light reaches (a torch's is 17; the game's lights carry their own)
spriteGain1.5a lamppost's brightness; 1.5 is about a torch's
debug01 = show the glow alone, over black; 2 = the distance it reads (white = 50 yd); 3 = the light on surfaces alone

[rays]

Sun rays: bright sky near the sun streaks outward, through gaps in the trees and clouds. Drawn after the world and before the UI, so the UI gets none. Cheap, and needs neither [depth] nor [shadow]. The rays follow the sun in [sun]. Ctrl+F11 toggles them.

enabled1
strength40
maxExposure5.7
relThreshold0.200..1, a pixel casts rays if it is this bright relative to the brightest thing on screen, so sky gaps in a dim forest still cast. Lower = more things glow
threshold0.200..1, absolute minimum brightness, so dark scenes do not streak from dim lights
radius0.8how far from the sun, in screen heights, pixels still cast rays. Keep this tight: wider lets bright clouds elsewhere in the sky cast rays too
falloff2.0how sharply that fades with distance: 1 = straight line, 2+ = hugs the sun
length0.850..1, ray length as a fraction of the way from each pixel toward the sun
maxLength0.6...but never longer than this many screen heights (matters when the sun is far off screen)
maxAngle60degrees between where you look and the sun at which rays are gone. Over 90, rays stream in from the top of the screen with the sun out of view, fed by whatever sky is there, so the view brightened and darkened as the camera tilted. The shafts from a sun out of view come from the volumetric light instead
viewFalloff1.0how quickly rays weaken as you turn from the sun toward maxAngle; higher = faster
parallel0.00 = rays fan out from the sun (how real sunbeams look in perspective); 1 = parallel streaks all falling the same way: a stylised look, not steadier
adaptTime0.5seconds for "what counts as bright" to follow the scene; 0 = instant (flickers)
coverTime0.15seconds the rays and the volumetric light take to fade when something covers the sun, and to come back when it is clear
decay0.960.5..1, falloff along each ray; lower = shorter, softer shafts
soften1pixels (of the mask, which is 1/downscale of the screen) the mask is blurred before the rays are drawn, so small gaps between leaves do not make rays jump. 0 = none
smooth00..0.95, how much of the last frame is kept, moved with the sun. Leaf edges smaller than a pixel flicker as the camera moves; this keeps the rays steady. 0 = none
color0xFFE6BERGB of the light (default: warm late-morning)
passes31..3 blur passes; fewer is cheaper but shows banding
downscale2work at 1/N resolution per axis
debugView01 = show only the bright-pixel mask, 2 = show only the rays, 3 = show the sky kept before the clouds (for skyOnly). For tuning
placement00 = between world and UI; 1 = over everything, UI included (fallback)
mask11 = a pixel casts where it shows sky, from the depth buffer: steady as the camera moves. 0 = by brightness, relative to the brightest thing on screen (relThreshold)
skyOnly11 = only the sky casts, not the clouds: lit clouds near the sun glow otherwise. The kept sky has no glow, so it is dimmer; relThreshold 0.20 suits it. 0 = all
secondMoon1at night the volumetric light follows the larger of the two moons. 1 = the other moon casts rays too; 0 = rays from the larger moon only
occlusion11 = rays fade when the sun itself is covered, by a mountain or a wall. Tested by depth when [depth] is on, else by brightness (needs skyOnly; heavy fog defeats it). 0 = the sky above a ridge casts rays over it with the sun behind it
occlusionRadius0.08screen heights around the sun that are tested
occlusionFull0.35share of that sky in view that gives full rays; less fades them. Lower keeps more rays through a canopy

[night]

Sun rays and volumetric light at night. At night they follow the moons, which are high in the sky, so without this the rays and the light at night are as strong as by day. Night is told from the game clock ([client] clockAddr), so it follows the time comfytime sets. F12 logs the game time and the value in use.

strength25the dial, 0..100: the rays and the light at night, as % of their day strength. 100 = as by day, 0 = none at night
dusk20hour the change to night starts (fractions allowed: 20.5 = 20:30)
dawn5hour the change to day starts
fade1.5hours each change takes: full night from dusk + fade to dawn, full day from dawn + fade to dusk
darkness0.200..0.9: how much darker the world is at full night (Night Darkness). Lamps still light the ground near them. Needs Volumetric Light on
tint0.650..1: how far the night leans toward moonColor (Moonlight Colour)
moonColor0x9CB8FFRGB of the moonlight (its hue only: brightness is kept)
sky0.50..1: the share of the darkness the sky gets. 0 leaves the sky, moons and stars
indoors01 = darker inside buildings too

[bench]

The benchmark. Alt+F12 runs four steps: rays + volumetric light + fog, rays + the fog alone, rays, nothing. Each step runs for settle seconds, then is measured for measure seconds. Then the settings go back as they were, and a table goes to comfyfog.log: frame rate, the slowest 1% of frames, and the GPU and CPU time of our own passes, with the light split into its parts. Play with the light on for a minute first, so its cache is full. Stand still, do not move the mouse, and face the sun. F11 stops it.

settle5seconds before each step is measured (shaders compile, the shadow cache fills)
measure5seconds each step is measured

[sky]

clouds00 = do not draw the cloud layer (live with F11)

[general]

enabled10 = every effect off at once, the game as stock (the Atmosphere Effects box)
trace01 = F12 also traces 180 frames of the volumetric light (slow: reads the GPU), and the log gets frame rate and light statistics every 300 frames
log1
hook10 = load but patch nothing, for bisecting problems
sliders10 = do not register the CVars that the addon's controls set
reloadKey122VK_F11 (comfygrass has F10)
probeKey123VK_F12; with Alt, the benchmark
chainWaitMs10000wait this long for comfygrass to patch first, so grass follows the new fog
minWorldDraws16world draws needed before the switch to 2D counts as the end of the world

[water]

Foam where the water is shallow: at the shore, and round anything that stands in the water.

enabled1
foam0.80..1: how white the foam is
foamWidth1yards of depth: the foam thins out to nothing at this depth
foamReach4yards out from the waterline: the same across the water, for a gentle beach
foamScale0.6yards: the size of a bubble in the foam
foamSpeed1how fast the foam moves and the bands roll in to the shore
ripples0.40..1: the rings round anyone standing in the water
wetSand0.450..1: how much darker the sand is where the water reaches
foamColor0xEEF4F6RGB of the foam by day; the night darkens it
fadeEnd150yards: the foam fades out over the last 40% of this distance
debug01 = the depth under the water (blue shallow, red at 4 x foamWidth); 2 = the foam alone

Test settings: frame-rate-performance

The Atmosphere page controls this test applies at the start of every run, so results compare across runs. Captured from a reference setup on 2026-10-06. Values are shown as on the in-game sliders. Settings without a slider use the defaults in comfyatmos.ini.

Sun fixed at azimuth 45 and elevation 45 degrees, the same light every run.

Light

Volumetric Light1comfyVolume
Volumetric Light Strength25comfyVolumeStrength
Volumetric Light Quality3comfyVolumeQuality
Light Density16comfyVolumeDensity
Light Distance190comfyVolumeDistance
Light Toward the Sun70comfyVolumeDirection

Fog

Fog1comfyMist
Fog Density25comfyMistDensity
Fog Height25comfyMistHeight
Fog Brightness120comfyMistBrightness
Fog Sunlight40comfyMistSun
Fog Patchiness50comfyMistPatches
Wind Speed15comfyMistWind
Wind Direction45comfyMistWindDir
Fog Reach200comfyMistReach
Fog on Sky75comfyMistSky
Low Ground Mist150comfyMistLow
Water Mist210comfyMistWater
Morning Mist100comfyMistMorning
Lamps in Mist50comfyMistLamps

Lamps

Lamp Glow26comfyLampGlow
Lamp Distance260comfyLampDistance
Lamps1comfyLamps
Torch Light23comfyTorchLight
Lantern Light69comfyLanternLight
Indoor Lamps29comfyIndoorLamps
Lamps by Day51comfyLampsDay
Lighthouses1comfyLighthouses
Lighthouse Beam80comfyLighthouseBeam
Lighthouse Beacon200comfyLighthouseBeacon
Beam Length425comfyLighthouseLength
Beam Width8comfyLighthouseWidth
Beam Spread75comfyLighthouseSpread
Beam Speed20comfyLighthouseSpeed
Two Beams0comfyLighthouseTwoBeams
Lighthouse Glint200comfyLighthouseGlint
Wave Face Strength110comfyLighthouseFace
Wave Face Tilt90comfyLighthouseFaceTilt
Wave Face Softness100comfyLighthouseFaceSoft
Beam Width on Water185comfyLighthouseWaterWidth

Shadows

Shadow Resolution3comfyShadowResolution
Shadow Softness1comfyShadowSoftness
Shadow Redraw1comfyShadowEvery
Sun Shadows1comfySunShadows
Sun Shadow Strength20comfySunShadowStrength
Sunlight35comfySunlight
World / Object Shadows1comfySunShadowsWorld
Player / Creature Shadows1comfySunShadowsUnits
Lock Shadow Angle0comfyShadowLock
Shadow Angle15comfyShadowTilt
Shade Colour65comfyShadeTint
Sunlight Warmth60comfySunTint
Night Shadows100comfySunShadowsNight
Character Shadow Strength45comfySunShadowsUnitStrength
Sun Smoothing3comfySunGlide
Character Backside Shadow30comfySunShadowsBody
Near Shadow Distance32comfyShadowNear
Tree Shadow Strength60comfyTreeShade

Sky

Clouds0comfyClouds
Sun Rays1comfyRays
Sun Rays Strength40comfyRaysStrength
Night Strength25comfyNightStrength
Sun Rays Softness1comfyRaysSoften
Sun Rays Smoothing0comfyRaysSmooth
Night Darkness40comfyNightDarkness
Moonlight Colour65comfyMoonlight
Rain Darkness20comfyRainDarkness

Color

Day Saturation100comfyDaySaturation
Night Saturation75comfyNightSaturation
Color Effects1comfyColor

Water

Wave Height0comfyWaveHeight
Wave Size50comfyWaveSize
Water Effects1comfyWater
Water Colour10comfyWaterColour
Water Clarity400comfyWaterClarity
Sky Reflection15comfyWaterReflect
Underwater Distortion0comfyWaterBend
Underwater Cover75comfyWaterCover
Wake80comfyWaterWake
Foam35comfyWaterFoam
Swash1comfyWaterSwash
Sun Glint100comfyWaterGlint
Moon Glint60comfyWaterMoonGlint
Glint Size100comfyWaterGlintSize
Edge Line10comfyWaterEdge
Edge Line Width1comfyWaterEdgeWidth
Water Brightness70comfyWaterBright
Standing Ripple Depth100comfyWaterRippleDepth
Swash Height100comfyWaterSwashHeight
Swash Length50comfyWaterSwashLength
Swash Speed30comfyWaterSwashSpeed
Moving Ripple Depth340comfyWaterRippleMoving
Standing Ripple Spread50comfyWaterRippleSpread
Moving Ripple Spread70comfyWaterRippleSpreadMoving
Drawn Foam1comfyWaterFoamDrawn
Foam Size3comfyWaterFoamSize
Foam Reach25comfyWaterFoamReach
Open Water Foam0comfyWaterOpenFoam
Open Water Foam Amount0comfyWaterOpenFoamAmount
Foam Breakup0comfyWaterFoamEdge
Wake Foam0comfyWaterWakeFoam
Object Foam60comfyWaterObjectFoam
Object Foam Width8comfyWaterObjectFoamWidth
Lake Swash75comfyWaterLakeSwash
Lake Foam15comfyWaterLakeFoam
Lake Waves0comfyWaterLakeWaves
Rain on Water80comfyWaterRain
Ship Wake0comfyWaterShipWake
Ship Wake Forward0comfyWaterShipForward
Ship Wake Depth0comfyWaterShipDepth

Other

Atmosphere Effects1comfyAtmosphere

Signing in

last run 2026-10-07 11:55
No freeze
Largest stutter0.64 s limit 1.5 s
Slow frames after it3 over 40 ms, limit 12
Compiling in the game0 ms limit 100 ms; 11,091 ms before the shader cache
Effects on after20.2 s after the world first appears
Shader worker47 ms until every shader is ready
Largest stutter at sign-in (s)
0.31.52.84limit 1.5 sOct 6 12:08Oct 7 11:55
Largest stutter 0.6 s

Frame rate

last run 2026-10-07 11:51

Measured for 10 s at each place fps with effects fps the effects take

Harbour
123 fps
Without effects194 fps
Effects cost3.0 ms
Frame time8.1 ms game 5.2
Stutter13.5 ms limit 40
Elwynn
97 fps
Without effects129 fps
Effects cost2.6 ms
Frame time10.4 ms game 7.8
Stutter13.1 ms limit 40
Ironforge
194 fps
Without effects329 fps
Effects cost2.1 ms
Frame time5.2 ms game 3.0
Stutter9.2 ms limit 40
Frames per second
3392151211limit 50 fpsOct 6 12:06Oct 7 11:51
Harbour 123 fpsElwynn 97 fpsIronforge 194 fps
Effects cost (ms a frame)
035.98.9Oct 6 12:06Oct 7 11:51
Harbour 3 msElwynn 2.6 msIronforge 2.1 ms
Stutter, slowest 1% (ms)
5183144limit 40 msOct 6 12:06Oct 7 11:51
Harbour 13 msElwynn 13 msIronforge 9 ms
All numbers

frame-rate-performance

Harbour fps
122.7 fps
limit at least 50 fps
Harbour slowest 1%
13.5 ms
limit at most 40 ms
Harbour our CPU
1.3 ms
recorded only
Elwynn fps
96.6 fps
limit at least 50 fps
Elwynn slowest 1%
13.1 ms
limit at most 40 ms
Elwynn our CPU
1.7 ms
recorded only
Ironforge fps
193.5 fps
limit at least 50 fps
Ironforge slowest 1%
9.2 ms
limit at most 40 ms
Ironforge our CPU
1.4 ms
recorded only
Harbour fps without effects
193.7 fps
recorded only
Elwynn fps without effects
128.5 fps
recorded only
Ironforge fps without effects
329.3 fps
recorded only

load-performance

Compiling on the game's thread
0 ms
limit at most 100 ms
Worst frame as the effects start
637 ms
limit at most 1500 ms
Slow frames as the effects start
3
limit at most 12
Effects start after the world
20.2 s
recorded only
Shader worker
47 ms
recorded only

ashenvale-edge-strips PASS last run 2026-10-07 11:45

The Barrens at the Ashenvale border, flying about 100 yards up and facing the sun over a ridge. Two long dark strips ran down the slope toward the camera (2026-10-04, the owner's screenshot at game time 17:39). Shots in the normal view and in Debug Views 24, 25, 26 and 5.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 24: sun shadows: where the shade comes from (red solid, green leaves, blue hills)

This run, shot 2
This run
Expected, shot 2
Expected

Shot 3: Debug View 25: sun shadows: shade taken off behind a hill (red solid, green leaves, blue where the check runs)

This run, shot 3
This run
Expected, shot 3
Expected

Shot 4: Debug View 26: sun shadows: the hill check's depths (red the solid caster before the hill, green behind it, blue the point behind the hill; 15 yards full at terrainBias 1.5)

This run, shot 4
This run
Expected, shot 4
Expected

Shot 5: Debug View 5: sun shadows: the shade alone

  • No strip of full shade across the slope in the shade alone (Debug View 5): the hill's shade there is about 100, the strips were 1row 600 averages 107, its darkest pixel 102 at column 680 (wanted: average any, darkest at least 60)
This run, shot 5
This run
Expected, shot 5
Expected
Positions and messages
Where the character was:
  arrive 1291.80 -3001.20 203.78 in 1.0 s
  pos 1286.9 -3000.1 102.7 102.7 ground |  (on the ground)
  arrive 1291.80 -3001.20 203.01 in 1.0 s
  heading 40.40
  pitch -10.50

darkshore-water-split PASS last run 2026-10-07 14:34

On the shore by Auberdine, the water split along straight lines: the sea floor showed through a gap in the surface, and with Wave Height 0 it closed (2026-10-07, the owner). The probe: the chunk with its middle at (6650.0 683.3) counts as a lake (swell 0.00 yards), the chunks beside it as the sea (swell 0.80 yards). The swell is set per chunk, so where the two meet one edge rises and falls and the other stays flat. Now the swell is chosen for each of a chunk's points, by the sea cells round it (NOTES.md, the sea and a pond). Shot 1 with the owner's Wave Height 8, shot 2 with Wave Height 0, the unbroken surface to compare.

Shot 1: Normal view

  • The water is whole with the owner's Wave Height 8: no ground shows through it. The box holds open water only; the sea is blue-green there, and the gap between the lake chunk and the sea's showed the brown sea floor across it. Shot 2, Wave Height 0, had no pixel there with more red than green0% of the box is redder than green (at most 0.5%)
This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Normal view

  • The same box with Wave Height 0: the check sees no gap where the water is whole0% of the box is redder than green (at most 0.5%)
This run, shot 2
This run
Expected, shot 2
Expected
Positions and messages
Where the character was:
  arrive 6664.70 683.20 5.70 in 1.0 s
  heading 128.60
  heading 128.60
  pitch -39.50

development-guard-stealth PASS last run 2026-10-07 11:45

On the development map (451), where the Charger test stands, the owner's Stormwind City Guard (a world spawn, guid 2950067, 3.7 yards in front of the start) given Stealth (.aura 1784). The game draws a stealthed unit flat: its depth passes, then its colour passes with a layer after each, against its own depth. Its passes go into a scratch depth, copied from the world's once, at its first depth pass (2026-10-04, a stealthed Pinto with dark spots). A unit's cached shadow goes once it is stealthed, which needs its model, read on the map thread as the unit is first seen (2026-10-05: a half second of shadow as Stealth went on). His helmet, shoulders and weapons are models of their own: they are taken as his within 1.5 yards, or they cast on the ground under a guard with no body, and again with the player standing inside him (2026-10-05, the owner). The test records Stealth going on, takes a shot in stealth, records Stealth going off, then stealths him again, moves the character into him and takes a shot: no shadow of his. It used a Pinto until 2026-10-05, but the game itself leans a stealthing horse forward and draws it black for a second. The guard is left out of stealth after.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Normal view

This run, shot 2
This run
Expected, shot 2
Expected

Recording 1: Stealth goes on 1 s in, Normal view

This run
Expected
20 frames of it20 frames of recording 1

Recording 2: Stealth goes off 1 s in, Normal view

This run
Expected
20 frames of it20 frames of recording 2
Positions and messages
Where the character was:
  arrive 4617.60 -452.60 289.60 in 1.0 s
  heading 167.40
  heading 167.40
  pitch -22.00
  heading 167.40
  pitch -22.00

development-horse-seethrough PASS last run 2026-10-07 11:46

On the development map (451), a Warhorse and a Charger standing beside the player, the camera 11 yards back looking at them. The client drew the Warhorse faded (a depth pass, then its colour blended), and the see-through rule, meant for stealthed units, skipped that depth pass: the horse flashed, see-through and in triangles, standing still (2026-10-04, the owner). The rule now takes a stealthed unit's model alone, and a unit's entry leaves the cache only when no unit near it wears that model. The runner summons the two horses and deletes them after. Shots in the normal view and in Debug View 15 (the bodies).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 15: sun shadows: the bodies it finds

This run, shot 2
This run
Expected, shot 2
Expected
Positions and messages
Where the character was:
  arrive 4611.60 -451.00 290.28 in 1.0 s
  arrive 4613.00 -454.60 290.18 in 1.0 s
  arrive 4617.60 -452.60 289.60 in 1.0 s
  heading 167.40
  heading 167.40
  pitch -22.00

development-saturation PASS last run 2026-10-07 11:46

On the development map (451), the Day Saturation and Night Saturation sliders (2026-10-05). The test client's clock is fixed by comfytime in the day, so Night Saturation must change nothing. Five shots: both at 100 (the game's own colour, no pass), Day Saturation 0 (grey), Day Saturation 200, and Day Saturation 100 with Night Saturation 0 (the game's own colour again), and Day Saturation 0 with the Color Effects box off (the game's own colour, no pass). The UI keeps its colour in each.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Normal view

This run, shot 2
This run
Expected, shot 2
Expected

Shot 3: Normal view

This run, shot 3
This run
Expected, shot 3
Expected

Shot 4: Normal view

This run, shot 4
This run
Expected, shot 4
Expected

Shot 5: Normal view

This run, shot 5
This run
Expected, shot 5
Expected
Positions and messages
Where the character was:
  arrive 4617.60 -452.60 289.60 in 1.0 s
  heading 167.40
  heading 167.40
  pitch -22.00

development-windmill PASS last run 2026-10-07 11:47

On the development map (451), a Westfall windmill seen from beside it, flying in its blades' shade, in first person; then 200 yards out, the camera turned all the way round, and back (2026-10-04, the owner). Four faults of its shade, all on this windmill: its parts were too small for the far map one by one (minTriangles), so its shade came in steps; batches of windmills drawn from afar held frozen poses under the turning blades; the windmill's blades, out of view in first person, went as an "older pose" when its tower's edge was drawn; and its stone tower cast as leaves because its sails are alpha tested. The owner's snapshot controls; the owner's snapshot place and sun. Last, from 90 yards, flying, in first person, where its parts must all be in the far map; the probe is taken there. Before going out and after coming back, a 5 s recording in the normal view and one in Debug View 5 (the shade alone), so the blades' shade is seen turning (2026-10-05, the owner); from 90 yards, shots in both views. Since 2026-10-04 the windmill is a record in the object table, its parts filed under it.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 5: sun shadows: the shade alone

This run, shot 2
This run
Expected, shot 2
Expected

Recording 1: beside it, before going out, Normal view

This run
Expected
20 frames of it20 frames of recording 1

Recording 2: beside it, before going out, Debug View 5, Debug View 5: sun shadows: the shade alone

This run
Expected
20 frames of it20 frames of recording 2

Recording 3: after coming back, Normal view

This run
Expected
20 frames of it20 frames of recording 3

Recording 4: after coming back, Debug View 5, Debug View 5: sun shadows: the shade alone

This run
Expected
20 frames of it20 frames of recording 4
Positions and messages
Where the character was:
  arrive 4346.20 -230.40 305.33 in 1.0 s
  pos 4342.7 -229.6 293.6 293.6 ground |  (on the ground)
  arrive 4346.20 -230.40 306.00 in 1.0 s
  heading -139.30
  heading -139.30
  pitch -28.20
  pos 4497.8 -100.0 303.7 269.4 after hop to 200
  heading -49.30
  heading 40.70
  heading 130.70
  heading -139.30
  pos 4346.2 -230.4 303.7 293.9 after hop to 0
  heading -139.30
  pitch -28.20
  heading 122.10
  pitch -11.50

elwynn-own-face PASS last run 2026-10-07 11:49

The owner's own character with the camera 1.8 yards back, where the game fades it as it fades a stealthed unit (2026-10-04, the owner). The see-through rule once took that fade for stealth and the face showed through the back of the head; the rule now takes stealthed units alone, and their passes go into a scratch depth. Nothing of the character may be taken as stealthed. One shot in the normal view.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected
Positions and messages
Where the character was:
  arrive -9433.20 -1401.20 46.66 in 1.0 s
  heading -167.80
  heading -167.80
  pitch -16.20

elwynn-ridge-fog PASS last run 2026-10-07 11:49

Standing in eastern Elwynn, first person, looking at ridges one behind another. The fog makes a second ridgeline: it does not fade smoothly into the terrain, and each ridge shows twice (2026-10-05, the owner). A shot with fog off (comfyMist 0), then with fog on; with fog on there must be no second ridgeline that stands out. Then Debug View 12 (how much of the light gets through the fog) and Debug View 14 (where mist collects). No check reads the shots yet: the owner judges them.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Normal view

This run, shot 2
This run
Expected, shot 2
Expected

Shot 3: Debug View 12: fog: how much gets through (white = clear)

This run, shot 3
This run
Expected, shot 3
Expected

Shot 4: Debug View 14: fog: where mist collects (low ground, water)

This run, shot 4
This run
Expected, shot 4
Expected
Positions and messages
Where the character was:
  arrive -9416.70 -2248.00 67.80 in 1.0 s
  heading 53.00
  heading 53.00
  pitch 11.70

elwynn-stump-edge PASS last run 2026-10-07 11:49

In eastern Elwynn, the back of a tree stump, turned away from the sun. Its shade stopped short of the top edge: a lighter strip along it, about 0.1 yards (2026-10-05, the owner). The shadow lookup moves each point a little along its facing (normalBias); the stump's back leans in toward its top, so its facing points a little up, and near the edge the point rose over the stump into the sun. On a face turned from the sun the point now moves straight away from the sun. Shots in the normal view and in Debug View 5 (the shade alone).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 5: sun shadows: the shade alone

  • The back face's rim is in the stump's shade up to the top edge, in the shade alone (Debug View 5): row 312 crosses the rim, which the camera sees from below its top. Before the fix columns 520 to 690 averaged 155 (lit), after it 39. Row 222 until 2026-10-07, placed at 1280x800: at 1152x864 it ran over the trees behind the stump, about 45 rows above its toprow 312 averages 0, its darkest pixel 0 at column 520 (wanted: average at most 80, darkest any)
This run, shot 2
This run
Expected, shot 2
Expected
Positions and messages
Where the character was:
  arrive -9413.20 -2235.60 67.37 in 1.0 s
  heading 61.10
  heading 61.10
  pitch -11.80

elwynn-trough-shadow PASS last run 2026-10-07 11:50

Standing in the water trough at the Eastvale paddock, the camera zoomed in. The trough's shadow got a character's extra darkness: a rule took any model within 3 yards of the player for the player's (2026-10-04, the owner). The trough must not be marked a body.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected
Positions and messages
Where the character was:
  arrive -9439.20 -1377.30 47.20 in 1.0 s
  heading -2.40
  heading -2.40
  pitch -40.00

far-terrain-cache PASS last run 2026-10-07 11:50

Hop 300 yards away from a hill in the Barrens and back. The game draws far ground with its coarse mesh (64 to 76 triangles a chunk) through a shader the terrain test does not know; the cache must not keep those draws once you are back, or their full shade lies over the hill in big triangles (2026-10-03).

Shot 1: Debug View 24: sun shadows: where the shade comes from (red solid, green leaves, blue hills)

This run, shot 1
This run
Expected, shot 1
Expected
Positions and messages
Where the character was:
  arrive 1191.20 -2740.90 211.30 in 1.0 s
  pos 1194.7 -2741.0 211.3 211.3 ground |  (on the ground)
  arrive 1182.20 -2735.20 308.70 in 1.1 s
  heading 40.10
  heading 40.10
  pitch -16.70
  pos 949.1 -2924.0 305.6 91.8 after hop to 300
  pos 1182.2 -2735.2 305.0 211.3 after hop to 0
Errors from the game:
  error flight on: not so after the cast (ok 0 flags 0x00000000)

ironforge-ah-glow PASS last run 2026-10-07 11:53

On the road outside Ironforge's gate, facing the statue in the hall (2026-10-05, the owner at game time 17:39). The auction house braziers behind the statue glowed through the hall's walls: the fog took them as 100 yards and more under its ground (the floor under the terrain is looked for no more than 4 yards over your feet, and theirs is higher), so Lamps in Mist made them 24 times as bright. A shot in the normal view and in Debug View 6 (the lamps' glow alone). The probe waits 45 s: 15 s after a start the buildings were still loading (197 lights of 1,057, and no floors under the terrain).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 6: lamps: the glow alone

This run, shot 2
This run
Expected, shot 2
Expected
Positions and messages
Where the character was:
  arrive -5037.50 -816.60 495.10 in 1.0 s
  heading -51.50
  pitch -12.00

ironforge-gate-fog PASS last run 2026-10-07 12:16

Outside Ironforge's gate, at the foot of the mountain the city lies under. The fog was thick enough to hide the trees 60 yards off (2026-10-04, the owner at game time 17:39). Shots in the normal view and in Debug Views 12 (how much gets through) and 14 (where mist collects).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 12: fog: how much gets through (white = clear)

  • The road and the trees show through the fog (Debug View 12, white = clear): row 300 averaged 11 when the mountain lifted the fog's groundrow 300 averages 214, its darkest pixel 207 at column 624 (wanted: average at least 60, darkest any)
This run, shot 2
This run
Expected, shot 2
Expected

Shot 3: Debug View 14: fog: where mist collects (low ground, water)

This run, shot 3
This run
Expected, shot 3
Expected
Positions and messages
Where the character was:
  arrive -5030.80 -820.80 495.10 in 1.1 s
  heading 108.00
  pitch -22.00

redridge-grass PASS last run 2026-10-07 11:57

From the owner's snapshot in Redridge's grass, with Foliage Density at 128 (put back at the end). comfyatmos.dll draws the grass in the wind since 2026-10-06 (comfygrass until then). The probe must show grass draws and the fill loop patched. Recordings with the grass on, off, and while walking through it (the parting); shots in the normal view and in Debug View 30 (the bend: black still, white the tips).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 30: grass: the bend (black still, white the tips; blue where it comes from the texture)

This run, shot 2
This run
Expected, shot 2
Expected

Recording 1: grass on, Normal view

This run
Expected
20 frames of it20 frames of recording 1

Recording 2: grass off, Normal view

This run
Expected
20 frames of it20 frames of recording 2

Recording 3: walking through it, Normal view

This run
Expected
20 frames of it20 frames of recording 3
Positions and messages
Where the character was:
  arrive -9467.80 -2251.20 74.40 in 3.0 s
  heading 147.60
  heading 147.60
  pitch -25.90

stormwind-canal-fog PASS last run 2026-10-07 12:16

On the bank of the canal outside Stormwind's gate, looking over the water toward the bridge. The fog there was thick enough to hide the far bank (2026-10-04, the owner at game time 06:45). Shots in the normal view and in Debug Views 12 (how much gets through) and 14 (where mist collects).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 12: fog: how much gets through (white = clear)

  • The far side of the canal shows through the fog (Debug View 12, white = clear): it averaged 7 when low ground and water both thickened itrow 250 averages 133, its darkest pixel 105 at column 644 (wanted: average at least 25, darkest any)
This run, shot 2
This run
Expected, shot 2
Expected

Shot 3: Debug View 14: fog: where mist collects (low ground, water)

This run, shot 3
This run
Expected, shot 3
Expected
Positions and messages
Where the character was:
  arrive -8997.40 406.60 73.10 in 1.0 s
  heading 45.60
  pitch -10.70

stormwind-canal-wake PASS last run 2026-10-07 14:22

Swimming along a canal inside Stormwind, the camera looking down from above. No ripple and no wake showed round the swimmer (2026-10-04, the owner). The canal is a building's water, which the map files do not hold. Shots in the normal view and in Debug View 20 (ripples red and green, the wake blue).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 20: water: ripples (red, green) and the wake (blue)

This run, shot 2
This run
Expected, shot 2
Expected
Positions and messages
Where the character was:
  arrive -8779.50 788.50 94.20 in 1.0 s
  heading -50.90
  heading -50.90
  pitch -80.00

stormwind-harbour-ridge PASS last run 2026-10-07 14:17

A ridge under the sea in Stormwind's harbour, far terrain textured and not, showed as a dark shape with a hard edge against the open sea beside it (2026-10-06, the owner). The cause was the sun shadows: their Sunlight and sun tint faded with the bed over the ridge while the open sea, with no bed under it, kept them. Shot 1: the normal view, the water one colour from the open sea across the ridge, no edge. Shot 2: Debug View 28, blue over the ridge (the shadows find the water over a bed), grey over the open sea.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 28: sun shadows: the water it finds (blue: the water's depth over a bed, grey: none, so the shade falls on what the depth shows)

This run, shot 2
This run
Expected, shot 2
Expected
Positions and messages
Where the character was:
  arrive -8625.00 1328.90 5.60 in 1.0 s
  heading 36.90
  heading 36.90
  pitch -12.40

stormwind-harbour-ship-shadow PASS last run 2026-10-07 14:17

A moored ship's shadow under the water, seen from the dock (2026-10-06, the owner: under the water the ship's and the dock's shadows show on the sea floor; from above they should too). Shot 1: the normal view. Shot 2: Debug View 5, the shade alone: the soft shade on the water's surface beside the hull (Shadow on Water). Shot 3: Debug View 24, where the shade comes from, red solid, on the floor where the shadows find it. Shot 4: Debug View 28, blue where the shadows find the floor under the water.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 5: sun shadows: the shade alone

This run, shot 2
This run
Expected, shot 2
Expected

Shot 3: Debug View 24: sun shadows: where the shade comes from (red solid, green leaves, blue hills)

This run, shot 3
This run
Expected, shot 3
Expected

Shot 4: Debug View 28: sun shadows: the water it finds (blue: the water's depth over a bed, grey: none, so the shade falls on what the depth shows)

This run, shot 4
This run
Expected, shot 4
Expected
Positions and messages
Where the character was:
  arrive -8605.60 1278.10 5.20 in 1.0 s
  pos -8602.7 1280.3 5.7 5.7 ground |  (on the ground)
  arrive -8603.80 1374.00 36.44 in 1.0 s
  heading -24.20
  heading -24.20
  pitch -36.90

stormwind-lighthouse-light PASS last run 2026-10-07 15:29

Stormwind's harbour lighthouse from the shore, 327 yards off (2026-10-07, the owner): the game's own lighthouse light showed beside ours, and ours showed from too far, with its glitter on the sea past the beam's end. The search for the game's light (LIGHTHOUSEEFFECT) took the first 64 animated doodads of any name, and the harbour has more, so the game's light was not left out and our lamp came from the building's box. Now only lighthouse doodads are counted. A lighthouse further than Lighthouse Distance is not drawn and fades out over the last quarter, and the beam's patch on the water ends at Beam Length. Shot 1 and a 10 s video: one lamp in the lamp room, no second light by it, the beam turning, its glitter only as far as the beam reaches.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Recording 1: the beam turning, from the shore, Normal view

This run
Expected
20 frames of it20 frames of recording 1
Positions and messages
Where the character was:
  arrive -8276.20 1371.90 5.98 in 1.0 s
  heading 56.30
  heading 56.30
  pitch 10.10

stormwind-tower-speckle PASS last run 2026-10-07 11:59

On the bridge into Stormwind, facing the gate with the sun behind it. A band of the left tower, where the sun grazes it, showed a speckled shade (2026-10-04, the owner at game time 17:39). Shots in the normal view and in Debug View 5 (the shade alone).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 5: sun shadows: the shade alone

  • No speckled shade on the left tower where the sun grazes it (Debug View 5): 20% of the box jumped at normalBias 2, none at 41% of the box jumps from one pixel to the next (at most 5%)
This run, shot 2
This run
Expected, shot 2
Expected
Positions and messages
Where the character was:
  arrive -8983.20 497.30 96.50 in 1.1 s
  heading 40.80
  heading 40.80
  pitch 15.00

telabim-wet-sand PASS last run 2026-10-07 14:16

On a jungle beach east of Tanaris (Tel'Abim, by the map position) the wet sand was broken: a dark band on part of the shore, pieces with straight edges in the middle, none on the rest (2026-10-07, the owner). The wet sand pass drew only on ground under 32 degrees of slope, which keeps bodies and posts dry; the bank here is steeper, and the slope is per terrain triangle, so the band came and went triangle by triangle. Now full up to 60 degrees, none past 72 (NOTES.md, the wet sand on a steep bank). Shot 1 in the normal view, shot 2 in the wet sand alone (Debug View 18), shot 3 in the normal view with the Wet Sand slider at 0 (2026-10-07: the slider is new).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 18: water: the wet sand alone

  • The wet sand alone (Debug View 18): row 300 crosses the band on the steep part of the bank, where it was missing. 84 after the fix (2026-10-07); under 10 before itrow 300 averages 84, its darkest pixel 6 at column 468 (wanted: average at least 40, darkest any)
  • The wet sand alone (Debug View 18): row 340 crosses the band on the steep part of the bank, where it was missing. 132 after the fix (2026-10-07); under 10 before itrow 340 averages 132, its darkest pixel 4 at column 568 (wanted: average at least 40, darkest any)
  • The wet sand alone (Debug View 18): row 380 crosses the band on the steep part of the bank, where it was missing. 155 after the fix (2026-10-07); under 10 before itrow 380 averages 155, its darkest pixel 4 at column 560 (wanted: average at least 40, darkest any)
  • The wet sand alone (Debug View 18): row 420 crosses the band on the steep part of the bank, where it was missing. 179 after the fix (2026-10-07); under 10 before itrow 420 averages 179, its darkest pixel 4 at column 670 (wanted: average at least 40, darkest any)
This run, shot 2
This run
Expected, shot 2
Expected

Shot 3: Normal view

This run, shot 3
This run
Expected, shot 3
Expected
Positions and messages
Where the character was:
  arrive -7816.70 -7016.70 9.38 in 1.0 s
  pos -7819.0 -7013.9 8.4 8.3 ground |  (on the ground)
  arrive -7858.40 -6997.90 5.52 in 1.0 s
  heading -4.80
  heading -4.80
  pitch -21.90

volume-cost PASS last run 2026-10-07 11:59

Measures what the Volumetric Light box costs, 10 seconds each, at Stormwind's harbour and on Elwynn's ridges: light on, off, on, off, on, so a drift in the GPU's speed shows. Every other control as frame-rate-performance sets it. The frame log gives each pass's GPU and CPU time. The game window must be in front.

No screenshot taken.

Positions and messages
Where the character was:
  arrive -8625.00 1328.90 5.60 in 1.0 s
  heading 36.90
  heading 36.90
  pitch -12.40
  arrive -9416.70 -2248.00 67.80 in 1.0 s
  heading 53.00
  heading 53.00
  pitch 11.70

volume-parts PASS last run 2026-10-07 12:03

Measures what each part of the volumetric light costs, 10 seconds each, on Elwynn's ridges and at Stormwind's harbour, with every effect on between the others ([shadow] debugSkip): without the sun shadows' pass, the march's reads of the maps, drawing the maps, the cache's upkeep, and the light. The game window must be in front.

No screenshot taken.

Positions and messages
Where the character was:
  arrive -9416.70 -2248.00 67.80 in 1.0 s
  heading 53.00
  arrive -9416.70 -2248.00 67.80 in 1.0 s
  heading 53.00
  heading 53.00
  pitch 11.70
  arrive -8625.00 1328.90 5.60 in 1.1 s
  heading 36.90
  heading 36.90
  pitch -12.40

water-cost PASS last run 2026-10-07 12:09

Measures what the water's draws cost at Stormwind's harbour, 10 seconds each, with every effect on between the others so a drift in the GPU's speed shows: without the sand part, the water part, the bodies' draw, all three ([water] debugSkip), and the water. The frame log gives each one's GPU and CPU time. The game window must be in front.

No screenshot taken.

Positions and messages
Where the character was:
  arrive -8625.00 1328.90 5.60 in 1.0 s
  heading 36.90
  heading 36.90
  pitch -12.40

water-standing PASS last run 2026-10-07 14:19

From the owner's snapshot at the edge of Redridge's lake: a shot there, then about 5 yards forward into the shallows and a shot standing still. A character standing still in the water had foam round its body: the foam round objects (Object Foam) took it for a post (2026-10-06, the owner). Only a body that moves may have foam, from its wake. Each shot also in Debug View 17 (the foam alone).

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Debug View 17: water: the foam alone

This run, shot 2
This run
Expected, shot 2
Expected

Shot 3: Normal view

This run, shot 3
This run
Expected, shot 3
Expected

Shot 4: Debug View 17: water: the foam alone

  • In the shallows, standing still, Debug View 17 (the foam alone): no foam round the character. Row 540 crosses its legs; before the fix the foam round a body standing still averaged about 130 on such a rowrow 540 averages 5, its darkest pixel 3 at column 656 (wanted: average at most 50, darkest any)
This run, shot 4
This run
Expected, shot 4
Expected
Positions and messages
Where the character was:
  arrive -9389.40 -2230.70 56.70 in 1.1 s
  heading -3.80
  heading -3.80
  pitch -40.00

westfall-beach-swash PASS last run 2026-10-07 14:19

The swash on a Westfall beach, from 40 yards up: 10 second recordings at the defaults (Swash Height 5, Length 55, Speed 80), then with one slider moved each. At Height 100 the water must stop at the wet sand's height, not run onto dry sand (2026-10-05, the owner). The sliders replaced a Swash slider whose 5 to 100 changed nothing.

Recording 1: The defaults: Height 5, Length 55, Speed 80, Normal view

This run
Expected
20 frames of it20 frames of recording 1

Recording 2: Swash Height 100: no higher than the wet sand, Normal view

This run
Expected
20 frames of it20 frames of recording 2

Recording 3: Swash Length 10: shorter surges, Normal view

This run
Expected
20 frames of it20 frames of recording 3

Recording 4: Swash Speed 300, Normal view

This run
Expected
20 frames of it20 frames of recording 4
Positions and messages
Where the character was:
  arrive -9605.70 1337.30 39.28 in 1.1 s
  pos -9604.2 1337.2 0.1 0.1 ground |  (on the ground)
  arrive -9605.70 1337.30 39.64 in 1.0 s
  heading -104.80
  heading -104.80
  pitch -44.80

westfall-far-waterline PASS last run 2026-10-07 14:20

The waterline seen from far off: from 66.7 yards up, the shore about 90 yards away. Our water's edge was jagged there and the water showed over the terrain (2026-10-05, the owner): the water must end where the terrain rises out of it, with no swash needed. Shot 1 is our water, shot 2 the game's own (Water Effects off), to compare the line.

Shot 1: Normal view

This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Normal view

This run, shot 2
This run
Expected, shot 2
Expected
Positions and messages
Where the character was:
  arrive -9591.40 1374.90 65.22 in 1.0 s
  arrive -9591.40 1374.90 66.17 in 1.0 s
  heading -109.60
  heading -109.60
  pitch -45.00

westfall-under-the-swell PASS last run 2026-10-07 14:34

Swimming off the Westfall coast with Wave Height 30, the camera just over the game's flat water and under our swell: the sea floor showed as dry sand in clear air, and the game drew no underwater fog (2026-10-07, the owner). The game draws its underwater view only with the camera under its own flat water; our swell rose up to 3 yards over that. Now the swell never rises over the camera near it (the owner's choice: within 15 yards it keeps 0.3 yards under the camera, and grows back to its full height by 40), and a wave further out that stands as high as the camera is drawn as water seen from the front (NOTES.md, the camera inside a wave). Shots 1 and 2 two seconds apart (the swell moves): the sea floor through green water, the waves on the horizon. Shot 3 from 3 yards deeper, the camera under the flat water: the game's own underwater view.

Shot 1: Normal view

  • The sea floor under the camera, seen through the water: blue-green, not the dry sand's orange. Shot 10% of the box is redder than green (at most 5%)
This run, shot 1
This run
Expected, shot 1
Expected

Shot 2: Normal view

  • The sea floor under the camera, seen through the water: blue-green, not the dry sand's orange. Shot 20% of the box is redder than green (at most 5%)
This run, shot 2
This run
Expected, shot 2
Expected

Shot 3: Normal view

  • The sea floor under the camera, seen through the water: blue-green, not the dry sand's orange. Shot 30% of the box is redder than green (at most 5%)
This run, shot 3
This run
Expected, shot 3
Expected
Positions and messages
Where the character was:
  arrive -9570.30 1331.90 -1.68 in 4.2 s
  heading -12.80
  heading -12.80
  pitch 0.70
  arrive -9570.30 1331.90 -4.20 in 1.0 s
  heading -12.80
  heading -12.80
  pitch 0.70
  arrive -9570.30 1331.90 -1.20 in 1.0 s
  heading -12.80