Currently work in progress, check back later
Demo website
http://kdr.romanian-jumpers.com/app
- Renderer
- BSP
- Face
- Texture
- Lightmap
- Weird math lightmap in the case of older compiled HL maps. FIXED
- Light styles (unplanned)
- Transparency
- Alpha test ("rendermode" = 4)
- Beter alpha test
- "rendermode"
- general entity brush transparency
- very correct transparency for according rendermode, aka everything else beside 4 or 0
- "renderamt"
- Named entities. Some entities aren't properly displaced
- Samey shader as the game
-
"rendermode"(duplicated) - Water and futurely moving sprites
- MDL
- Face
- Texture
- Model view projection
- Bone based vertex transformation
- just simple stuffs
- less simple stuffs like correctly load all of the transformation. At the moment, it seems like RLE decoding is very incorrectly implemented. The result is that the rotation is not that all correct. But for simple models like flags in chk_kobayashi, this seems to work just fine. More complicated models like chick.mdl in cs_italy doesn't seem to work well.
- Can load any model
- Shading
- Pre-calculating all animation values like the game, this results in some models have correct model view, except for some, check kzro_pussy
- Make all models have correct animation
- More than 1 blending. Not sure if this is neeeded
- Model lighting
- Viewmodel bob
- Skybox
- SPRites
- Texture Filtering
- Linear. Comes with the graphic API. Looks bad.
- Bilinear. Heh?
- Nearest neighbor with AA. Looks pretty good.
- Fast cubic.
- Hotswap between texture filtering. This needs some egui integration, soon
- Optimization
- Lightmap atlas
- Batch rendering based on texture
- Array of texture
- Transparency sorting. Order independent transparency. Need to get WBOIT at the very least.
- Implemented WBOIT
- Visibility. At the moment it renders everything. Or does it? It does render everything when there is some PVS tricks map like kz_hb_hopez or arte_drift.
- Mipmapping
- Z Pre Pass to eliminate overdraw for complicated maps like surf_cyberwave
- "FBO" rendering. There is a render surface and a swapchain surface.
- Post Processing (for fun)
- Bloom
- HDR
-
AnisotropicKuwahara Filtering - Some random other shader effects just to prove that it is easy to add.
- Posterize
- MSAA. Doesn't seem like a lot of work but not the priority.
- BSP
- Navigation
- Noclip movement
- Pitch and Yaw
- GoldSrc movement (unplanned)
- Mouse view. Similar to bspguy
- Demo Player
- Demo. Easy to do because this is the same code I have in other two projects
- Viewmodel. That needs good MDL rendering first
- Ghost. Same thing. Very easy to implement
- Demo player UI. This needs to be compatible in both native and web. egui is the best bet. This needs some refactor to separate the "app" logic so that it is platform agnostic.
- Demo Renderer
- Framebuffer
- Remux
- Gstream or ffmpeg built-in. Gstream if everything contained but ffmpeg external binary seems nicer to work with.
- BSP viewer. It is implicitly one.
- Demo checker. Seems like a cool addition. If I add the normal UI on top, should be easy to have demo checker UI similar to demo.unique-kz.net. That UI should be for scrubbing through the demo?
- Integration
- Native
- Vulkan. This is the definitive backend
- OpenGL. This is the backup backend to test with WebGL2. So far, all of the weird kinks are ironed out
- Config files. Somehow have a config files so that resource provider is correct. Like how bspguy does
- API server config
- Native kdr config
- Web kdr config
- Web
- WebGL2. Clear color is different than native OpenGL for some reasons.
- Minimal web example. This uses simple HTML script block. Basically no javascript or node project to help people bootstrap this
- Less minimal web example. A nodejs module example because most people don't roll pure html.
- REST API server. There is one now but I guess it is too minimal. It works great though. It uses the game folder so that is very standard
- Final version of gchimp ResMake. To help the server distribute maps faster, gchimp ResMake zip option pre-processess all the files so that the server only needs to distribute the archive instead of searchign for files in the game install.
- URL Query as config. "localhost/?mapname=de_dust2&location=1,3,4" or "localhost/?replayname=abcde.dem"
- BSP Loads:
- BSP self
- BSP another
- MDL
- SPR
- User interface.
eguiprobably works- usable interface
- seek bar for demo
- demo checker ui?
- Map list
- Demo list
- Live Playback
- Working client
- Mock server
- Specs for server implementation
- Native
- Sound
- On screen text
- Chat message
- Timer? Health? Armor? maybe not needed
- TeTextMessage?
- Timer during playback
- Instructions on how to use it