The mapping looked flat/skewed because rays were cast on the wrong side of
the facade, world directions were mixed with room-local origins, and
B/(B+d) UV crush / center mullions distorted the pre-projected atlas.
Use per-window object space (window at z=+1 into -Z), Joost far-hit slab
tests, bounded B/(B+d) sampling, outer sash only, and a matching
perspective atlas bake.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
Replace slow runtime ImageData painting with a generated PNG atlas, and
lift the window wall so all rows clear the ground plane.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>