Files
fparkan/docs/reference/render-frame.md
T
Valentin Popov 78fc5f1deb
Docs Deploy / Build and Deploy MkDocs (push) Successful in 34s
Test / Lint (push) Failing after 1m7s
Test / Test (push) Has been skipped
Test / Render parity (push) Has been skipped
docs: rewrite MkDocs documentation
2026-06-22 01:58:51 +04:00

2.1 KiB
Raw Blame History

Render frame

Кадр является последней стадией цикла, а не самостоятельной функцией renderer-а. До draw calls уже накоплен input, рассчитан tick, применены отложенные операции, выбрана камера и обновлён 3D sound listener.

Frame skeleton

system messages and input
  -> simulation calculation
  -> deferred object operations
  -> animation and transforms
  -> camera and sound listener
  -> visibility and render queues
  -> materials and draw passes
  -> renderer completion
  -> end-of-render callbacks and UI

В World3D::stdRenderGame доказан крупный порядок: camera передаётся Terrain, настраиваются viewport/matrices, вызываются renderer boundary slots, устанавливается in_render, выполняется traversal мира, закрывается world/shade pass, вызывается renderer completion, снимается in_render, рассылается end-of-render.

Draw item

Подготовленный draw item содержит:

  • node world matrix;
  • batch flags and index range;
  • WEAR material handle;
  • MAT0 active phase and coefficients;
  • texture handle;
  • optional lightmap handle;
  • render phase and sorting key;
  • legacy pipeline state.

Подготовленный item должен ссылаться на immutable данные кадра. Изменение phase или texture cache посреди прохода не должно менять уже собранную очередь.

Parity risks

  • x87 precision and rounding;
  • scalar/SIMD g_FastProc differences;
  • object, batch and transparent primitive order;
  • depth, cull, alpha test and blend transitions;
  • mip-skip, palette and Page coordinates;
  • material fallback and phase selection;
  • RNG sequence for FX and atmosphere;
  • device capability fallback;
  • simulation time quantization.

Для отладки нужен deterministic frame capture: camera state, visible object IDs, draw-item list, pipeline keys, matrices и hashes промежуточных buffers.