Document WebGL page texture pipeline

This commit is contained in:
2026-06-06 11:24:50 +02:00
parent 0cb1e7c6f5
commit 83ca095d54
2 changed files with 29 additions and 3 deletions
+18 -2
View File
@@ -39,14 +39,17 @@ This section records the current state after the procedural book integration wor
- The spine arc and cloth spine must not receive page-content textures.
- Page-content textures are high-resolution canvas textures with hardcover-style margins.
- The current page canvases are deliberately smoother than the old noisy page texture.
- The animated flipping page uses its own clean paper material (`flipPageSurface`) instead of the resting page material, so motion does not reveal stationary paper grain, stack-line textures, content textures, or construction patterns.
- Page-stack side lines are generated as textures, not as free-standing line meshes.
- Stack side textures should have consistent orientation and line count on all visible stack sides.
- Cover, hinge, spine base, and cover edge materials use leather-style materials with procedural leather color and normal maps.
- Cloth spine head/end-bands are real small raised meshes with their own woven red/ivory texture material, not painted stripes on the spine cloth shader.
- The book, table, candles, and flipping pages have `castShadow` and `receiveShadow` disabled.
- Three.js/OpenGL primitive shadows must stay disabled.
- Candle shadows are implemented in the custom table/book shader path, not through Three.js shadow maps.
- Scene SSAO is present as a postprocessing pass, but the procedural book and flip page are currently excluded from that AO pass because the previous AO interaction caused misleading/inset visual artifacts.
- Scene SSAO is present as a postprocessing pass. The procedural book, head/end-bands, and flip page are normal scene participants unless a mesh is explicitly added to `aoExcludedObjects`; flames and glow sprites remain excluded.
- The table reflection path remains active and should include the book and candles.
- The custom book material shader includes a small local indirect/bounce-light term for book surfaces. This is not emissive; it is multiplied by material albedo so paper, leather, and head/end-band colors remain distinct while shadowed side faces stay readable.
- Temporary screenshots and generated debug images are not product assets unless explicitly promoted.
## Non-Negotiable Workflow Rules
@@ -162,6 +165,16 @@ The book should become a dynamic procedural object:
- Page textures must be smooth enough that projected content does not reveal unwanted construction lines, stack lines, or noisy paper grain.
- Neutral paper texture and content-page texture should have compatible filtering, mipmapping, and anisotropy.
- Spine arc, hinge, cloth, and support-strip materials must not accidentally receive page-content texture.
- The animated flipping page must use a clean paper material separate from resting/content pages. It should keep scene lighting, custom book shadows, and local bounce light, but should not use the procedural paper color/normal pattern that can create visible moving grain or shader artifacts.
### Text Sharpness Notes
- Current visible page content is rasterized into high-resolution canvas textures (`pageTextureWidth = 3200`) and then sampled on curved/angled 3D geometry.
- Browser canvas text antialiasing, mipmap selection, linear filtering, anisotropy, page curvature, postprocessing, and viewing distance all affect perceived sharpness. This is not just a Windows font-rendering issue.
- A single raster page texture cannot be perfectly sharp from every distance. Increasing the canvas to 4096 or 8192 can improve close views but costs memory and still depends on mipmap/filter behavior.
- SDF means signed distance field: glyph edges are encoded as distances in a texture and reconstructed in the shader, allowing cleaner scalable edges than ordinary raster text.
- MSDF means multi-channel signed distance field: edge distances are encoded across color channels, preserving corners and serifs better than single-channel SDF. MSDF is the better future path if page typography must stay crisp across camera distances.
- SDF/MSDF text would require a separate text layout/rendering path or an MSDF font atlas. It should not be mixed into this sprint unless the raster canvas approach is proven insufficient.
## Camera Requirements
@@ -487,7 +500,8 @@ Steps:
6. Keep stack side texture orientation consistent across front, back, left, and right sides.
7. Use procedural leather color and normal maps for cover, hinge, spine base, and cover edge.
8. Round the edge impression of cover panels without introducing open faces.
9. Verify cover, hinge, spine base, cover edge, paper side, paper top, and cloth spine material groups.
9. Use a dedicated clean paper material for animated flipping pages.
10. Verify cover, hinge, spine base, cover edge, paper side, paper top, flip page, head/end-band, and cloth spine material groups.
Acceptance criteria:
@@ -495,8 +509,10 @@ Acceptance criteria:
- Stack side lines are not free-standing meshes.
- Stack side lines meet at corners without visible mismatch.
- The visible page surface is smooth and does not reveal construction-line artifacts.
- The animated flipping page remains clean during motion and does not show resting-page paper grain, page-content texture, or stack-side line patterns.
- Leather parts look like real cover geometry, not flat orange planes.
- Cloth spine remains visually distinct from leather cover parts.
- Head/end-bands read as small woven bookbinding details and participate in mirror, SSAO, custom book shadows, and local bounce lighting.
### Phase 4: True SSAO Revisit