* Refacor uniforms API:
- More complete and consistent
- Type-safety
- Usage correctess assertions missing for now, planned
* Redesign texturing API: texunits gone, assign textures to sampler uniforms directly
r_texture_create now allocates memory and returns an opaque Texture
pointer; similar changes to the other renderer APIs will follow.
* Framebuffers: make _create return an opaque pointer, add debug label APIs (unused for now)
* opaque pointers and debug label APIs for vertex arrays and buffers
* fix null renderer
* Refactor glsl preprocessing into an independent module
* Separate shader resource management from renderer backend
This makes it possible to add more shading languages and/or include a
transpiler, which will be useful for the GLES backend.
* refactor r_clear into a stateless API
* add r_texture_clear API; fix gl33_framebuffer_clear
* Replace deprecated glsl_objects with objects in all *.prog files
* fix missing texture_clear implementation in null renderer
* remove some dead code in null renderer
* fix GLES segfault
* GLES 3.0 actually has glVertexAttribDivisor
* Query GL for supported GLSL versions (preparing to add shader transcompilation)
* WIP premultiplied alpha
* WIP color API rework (doesn't build yet; lots of things left to convert)
* convert everything remaining to new Color api except stage*_event.c files
* convert the stages to new Color api. builds & runs now; still many rendering errors
* fix the bullet shader for premultiplied alpha
* fix masterspark, graphs and stage 1 fog clouds
* fix marisa_b and most of spellcards
* Add deprecation warnings for BLEND_ADD and PFLAG_DRAWADD
* fix a segfault in stage 6
undo accidental earlier change
* fix text_hud.frag.glsl
* fix scuttle bg and remaining stage3 BLEND_ADDs
* fix marisa laser opacity
* hacky fix for myon
The old implementation relied on alpha being stored inside p->color. In
premul alpha this doesn’t work and functions like color_set_opacity
can’t solve this i think.
So I tried messing around with it until it looked somewhat similar.
* fix marisa_b stars
* remove color_set_opacity i overlooked
* more plrmode blending changes
* fixup additive blending in stage 1
* various premultiplied alpha fixups for bosses and enemies
* stage 2 premul alpha fixups
* stage 4 premul alpha fixups
* stage 5 premul alpha fixups
* stage 6 premul alpha fixups
* make lasers also use the PMA blend mode
* remove PFLAG_DRAWADD and PFLAG_DRAWSUB
* fix remaining PMA issues in menus
* lame extraspell bg workaround
* fix item alpha
* make marisaA lasers look somewhat like in master
* fix marisaA bomb background fadeout
* fixup various r_color4 calls
* fix myon
* remove dead code
* fix use of BLEND_ADD in player death effect
* fix myon shot trails (broken on master as well)
* fix myon shot fade-in
* extend the sprite shaders custom parameter to a vec4
* fix youmuB stuff and make it look somewhat better.
the code looks even worse though.
* wip font rendering stuff; hashtable monstrosity is temporary
* various text rendering fixes/improvements
* HashTables™ 3.0
* Add some comments to aid navigating the hashtable macro maze
* overhaul text rendering API; add default and example shaders
* text: implement text_render for spellcard effect; misc fixes
* README: update dependencies
Bye SDL_ttf, hello freetype2.
* text_draw: fix resolution/scale-dependent bugs
* make text_draw fallback to the current shader, fix hud and stagetext
* repair the bgm loading
* fix spell practice mode
* fix walloftext
forgot one site of text_draw earlier
* fix wrapped text rendering
* fix and simplify the hud text shader
* dynamic glyph cache
* implement font size change on window resize/quality setting change/etc.
* rename text shaders for consistency
* preloads for fonts and text shaders
* make the stagetext shader look somewhat better
* text_render: attempt to normalize height
* small improvement for stagetext
I would've preferred to just go with 4-spaces for indent and no tabs,
but lao is a bit conservative about it. :^)
Still, this is a ton better than mixing different styles all over the
place, especially within the same file.