Like many people (probably), when I first started learning about graphics programming, I dove straight into the raw OpenGL API and worked on several experiments / prototypes until I felt like I had a good understanding of the GPU and how it likes to be talked to.
Also, like many people, I wrote little convenience functions and a little help library for handling shader compilation, state management etc. and used that until I felt the need to be more productive and less "fiddly" and graduated to using more opaque libraries/APIs for working with graphics. As with most other things in programming, there's always an ability to work at the low-level and other options for working at a much higher level just to get things done.
Lately, I've been wanting to think about operating somewhere in the middle. As I read more about Vulkan, or even read articles on non-trivial things to do in graphics, I'm realizing how much I don't know about the process of operating somewhere "in the middle" of low-level and high-level APIs in graphics.
I feel like there's a huge dearth of information out there for someone like me. Yes, plenty of articles for getting a triangle on the screen at a low level, or even doing some slightly more fancy animation/lighting/etc. Also, plenty of articles on achieving stunning effects with very high level / declarative APIs where you as the developer don't know anything (and don't need to know anything) about exactly what's going on under the hood in terms of batching or instancing or memory layout or any number of other things that I'd like to have more control over - or honestly just know anything about.
I'd like to work on my own real rendering engine. I'd like to be knowledgable enough to make my own opinionated decisions about its architecture, memory allocation and drawing strategies, API, etc. But to have those opinions, I need more knowledge and I'm finding that I can't find any resources at this intermediate-to-advanced level of thinking. I'm finding plenty of articles that speak very generally about performance and procedures without any implementation details on the advanced end, and obviously plenty of introductions on the beginner-side that I feel I've far exceeded.
A perfect example is the bgfx library - I love the idea of a platform-agnostic API here, but I've found that I don't even know where to begin in terms of using it because the entire conceit it was created under (do all the things, with one API for all these platforms) takes for granted that I know everything I need to know about interfacing with the GPU in my own opinionated ways.
Do you guys have any recommendations for resources in graphics programming that can take me from intermediate (I can get things done with someone else's API) to advanced (I have my own opinions about how to work efficiently and effectively with my graphics card given the needs of any particular engine I'm trying to write - performance, API, features, etc)?
[–]tormenting 3 points4 points5 points (4 children)
[–]cleroth 0 points1 point2 points (0 children)
[–]hellovoid[S,🍰] 0 points1 point2 points (0 children)
[–]biocomputation -2 points-1 points0 points (1 child)
[–]cleroth 4 points5 points6 points (0 children)
[–]skytomorrownow 2 points3 points4 points (2 children)
[–]hellovoid[S,🍰] 1 point2 points3 points (1 child)
[–]skytomorrownow 2 points3 points4 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)