Add GL error handling, resource fallbacks and GPU timing; speed up lighting
Bug fixes: - Release static GL objects (UBOs, logo texture) before the context is destroyed via new Renderer::shutdown() - Fix max point/spot light warnings never firing - Show frame time in ms instead of seconds - Size the viewport framebuffer in physical pixels on HiDPI displays - Stop double-flipping OBJ UVs; add flip_uvs option to load_obj for models with a top-left UV origin (backpack) Build: - Track header dependencies (-MMD -MP) so header edits trigger rebuilds - Create build/ automatically Error handling: - Add gldebug module: KHR_debug output routed to the logger in debug builds, object labels, and error/status string helpers - Validate inputs and check GL errors when creating textures, meshes, framebuffers, uniform buffers and shaders; FrameBuffer::resize() and Renderer::init() now report failure Resources: - Add ResourceCache: shares textures and shaders by path and substitutes fallbacks (magenta checkerboard texture, unlit shader, cube mesh) for assets that fail to load; specular maps are optional - load_obj never fails, a broken model becomes a fallback cube - Renderer draws submeshes with broken materials using the fallback material instead of skipping them - Add Texture::create_from_pixels, Shader::create_from_source and Mesh::create_cube - Cache uniform locations in Shader, looked up with string_view so hits don't allocate; missing uniforms warn once Performance: - Add CpuTimer and GpuTimer (GL_TIME_ELAPSED, non-blocking readback) and a Performance section in the UI with averaged overlay numbers - Sample material textures once per fragment and apply material colors after accumulating lights - Pass camera position through CameraBlock instead of inverting the view matrix per fragment - Compute the normal matrix on the CPU instead of per vertex - Skip spot light work for fragments outside the outer cone
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 231 B |
Reference in New Issue
Block a user