openage icon indicating copy to clipboard operation
openage copied to clipboard

Render manager

Open TheJJ opened this issue 11 years ago • 6 comments

The rendermanager is some kind of batching mechanism to optimize the opengl calls. This mainly means to reduce the amount of texture and shader switches for now.

Everything that should be rendered is submitted to the render manager. It orders the jobs and finally draws them in the optimized, but correct order.

The remaining features are tracked in the TODO-list below.

TheJJ avatar Oct 28 '14 01:10 TheJJ

I have started working on this here: https://github.com/jamesmintram/openage/tree/graphics_renderer

jamesmintram avatar Oct 28 '14 18:10 jamesmintram

dis is free software: https://github.com/google/ion, README transcription follows:


Ion is a portable suite of libraries and tools for building client applications, especially graphical ones. It is small, fast, and robust, and is cross-platform across many platforms and devices, including desktops, mobile devices, browsers, and other embedded platforms. Why Use Ion?

  • Small: < 500k binary size on mobile platforms, often much smaller
  • Powerful: Tools for faster productivity when developing applications
    • Robust, portable application infrastructure aids in:
    • Object lifetime management
    • Memory allocation
    • Application start-up and static instances
    • Threading
    • Run-time setting editing
    • Automatic performance instrumentation
    • More!
  • Tools for graphics:
    • Analyze graphics scenes to find performance bottleneck
    • Trace all OpenGL calls and examine their arguments
    • Use scene resources in multiple contexts, automatically
    • Run-time graphics state introspection
    • Run-time shader editing: change your shaders and immediately see the results
  • Fast graphics: Minimal overhead between your application and OpenGL / ES
  • Tested: Well-tested and facilitates testing your application
    • ~100% test coverage
    • Black- and white-box tested, unit tests and integration tests
    • Mock implementation of OpenGL API allows direct renderer unit tests and validation
    • Integrated Remote: extensible API allows changing arbitrary application settings on-the-fly for faster development, testing, and debugging
  • Cross-platform:
    • Desktop: Linux, Mac OSX, Windows (OpenGL)
    • Handheld: Android (ARM, x86 MIPS), iOS (ARM and x86), and their 64-bit variants
    • Browser: Emscripten/asm.js, NaCl / pNaCl
  • Cross-functional
    • Used by many teams across Google, running on billions of devices through multiple Google products

NOTE: This is not an official Google product.

franciscod avatar Feb 10 '16 03:02 franciscod

https://github.com/google/ion/tree/master/third_party hrrg

TheJJ avatar Feb 10 '16 10:02 TheJJ

My attempt (will continue someday) is #287, but I'm currently working on nyan. You can continue my branch and submit pulls there if anyone likes.

TheJJ avatar Oct 08 '16 23:10 TheJJ

See #850

zuntrax avatar May 06 '18 10:05 zuntrax

Here is a list of things to be done for the new renderer implementation:

  • [x] Abstraction of render backend
    • [x] OpenGL 3.3 or higher
      • [x] Use 4.x when available (optional)
      • [ ] Support ancient 2.x legacy (optional)
    • [ ] Vulkan (optional, #242)
  • [ ] Render pipeline abstraction
    • [x] Textures
    • [x] Shaders
      • [x] Uniforms
      • [ ] Uniform buffers
      • [x] Vertex attributes
    • [x] Geometries
      • [x] Quad primitives
      • [ ] Circles
      • [ ] Smooth paths
      • [ ] Mesh importing (optional)
    • [x] Render targets
      • [x] Framebuffers
      • [ ] Renderbuffers (optional)
  • [ ] Functionality
    • [x] Screenshot support
    • [x] Pixel-perfect unit hitbox for unit selection and damage areas (#368, #671 )
    • [ ] Outline rendering
    • [ ] Investigate why tree textures render incorrectly (#359, maybe this?)
    • [ ] Fix #374
  • [ ] Terrain rendering
    • [x] Merge terrain texture into a single bitmap
    • [ ] Cache blending results (#154, #158)
    • [ ] Do as much as possible in shaders (#149)
    • [x] Clip tiles properly (#141)
  • [ ] Optimizations
    • [ ] Occlusion queries
    • [ ] Minimize OpenGL state changes (batch by shader, then by buffer)
    • [x] Texture binpacking into atlas
    • [x] Smooth zooming
  • [x] Integration
    • [x] Rewrite all of drawing functionality to be expressed in terms of Renderer
      • [x] Get rid of GL code everywhere except the rendering backend and the GUI
      • [x] Write a GameRenderer that takes evaluations of curves at the current instant as input
    • [x] GUI integration
      • [x] TBD (#624)

Vtec234 avatar Jun 30 '18 14:06 Vtec234

we have added various components of a render manager meanwhile :)

TheJJ avatar Apr 03 '23 12:04 TheJJ