xash3d-fwgs/ref_vk/TODO.md

4.0 KiB

Next

  • (RTX; common) Staging vs on-GPU buffers
  • (RTX) BLAS construction on buffer unlock
  • (RTX) ray trace compute shader
  • (RTX) geometry indexing
  • (RTX) textures

Planned

  • restore render debug labels
  • make 2nd commad buffer for resource upload
  • fix sprite blending; there are commented out functions that we really need (see tunnel before the helicopter in the very beginning)
  • RTX: make projection matrix independent render global/current/static state
  • fix projection matrix differences w/ gl render
  • bad condition for temp vs map-permanent buffer error message
  • draw more types of beams
  • fix brush blending
  • sprite depth offset
  • fix incorrect viewport sprite culling
  • improve g_camera handling; trace SetViewPass vs RenderScene ...
  • loading to the same map breaks geometry
  • studio model lighting
  • move all consts to vk_const
  • what is GL_Backend*/GL_RenderFrame ???
  • particles
  • decals
  • issue: transparent brushes are too transparent (train ride)
  • render skybox
  • mipmaps
  • lightmap dynamic styles
  • flashlight
  • screenshot
  • fog
  • RTX
  • studio models survive NewMap; need to compactify buffers after removing all brushes
  • sometimes it gets very slow (1fps) when ran under lldb (only on stream?)
  • optimize perf: cmdbuf managements and semaphores, upload to gpu, ...
  • RTX: studio models should not pre-transform vertices with modelView matrix

Someday

  • start building command buffers in beginframe
  • multiple frames in flight (#nd cmdbuf, ...)
  • cleanup unused stuff in vk_studio.c
  • (helps with RTX?) unified rendering (brush/studio models/...), each model is instance, instance data is read from storage buffers, gives info about vertex format, texture bindings, etc; which are read from another set of storage buffers, ..
  • waf shader build step -- get from upstream
  • embed shaders into binary
  • verify resources lifetime: make sure we don't leak and delete all textures, brushes, models, etc between maps
  • custom allocator for vulkan
  • stats
  • better 2d renderer: fill DRAWQUAD(texture, color, ...) command into storage buffer instead of 4 vertices
  • auto-atlas lots of smol textures: most of model texture are tiny (64x64 or less), can we not rebind them all the time? alt: bindless texture array
  • can we also try to coalesce sprite draw calls?
  • not visibly watertight map brushes
  • collect render_draw_t w/o submitting them to cmdbuf, then sort by render_mode, trans depth, and other parameters, trying to batch as much stuff as possible; only then submit

Previously

2021-02-06

  • alpha test
  • compare w/ gl R_SetRendeMode
    • raster state
    • color constants
  • culling
  • shaders s/map/brush/
  • pipeline cache
  • swapchain getting stale
  • HUD sprites
  • issue: lightmap sometimes gets corrupted on map load

2021-02-08

  • move entity rendering-enumeration into vk_scene

2021-02-10

  • refactor brush into brushes and separate rendering/buffer management
  • animated textures (accept PR)

2021-02-13

  • move pipelines from brush to render
  • render temp buffer api
  • draw studio models somehow
  • studio models vk debug markers
  • studio models white texture as lightmap
  • studio models fixes

2021-02-15

  • weapon models -- viewmodel
  • coalesce studio model draw calls
  • initual sprite support

2021-02-17

  • draw some beams

2021-02-20

  • refactor vk_render interface:
    • move uniform_data_t to global render state ~inside render_draw_t, remove any mentions of uniform/slots from api; alt: global render state?~
    • rename RenderDraw to SubmitDraw
    • ~add debug label to render_draw_t?;~ alt: VK_RenderDebugNameBegin/End
    • perform 3d rendering on corresponding refapi calls, not endframe
  • fix sprite blending

2021-02-22

  • RTX: load extensions with -rtx arg
  • vk_render: buffer-alloc-centric upload and draw api