* 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)
* Reimu (#101)
* add the reimu
* Add Reimu story
* account for various blunders
* add reimu dialog picture
* Reimu: WIP yin-yang orbs
* reimu: fix up indents
* Reimu: swap the shotmode names to match the kanji order in her Japanese name
* Reimu: compatibility with the latest system
* WIP ReimuA crap
* ReimuA homing trails
* more ReimuA stuff
* more ReimuA adjustments + enhanced DPS stats
* Reimu: stubs for new player animation sequences
* Reimu: occupy the 0th character slot
* Reimu: tweak needle sprite
* Reimu: buff movement speed to better match Touhou
* Reimu: fixup for the recent projectile changes
* ReimuA: make homing shots a bit smaller; give them custom effect on collision
* Reimu: add intermediate frames; move some loose sprites to the atlas
* Reimu: fix compile errors
* replace DBL_MAX by INFINITY
* Don’t draw reimu orbs twice
fixes #127
* add new reimu dialog pic
* ReimuA adjustments (mostly homing); it's still OP
* wip ReimuB gaps
* still not sure where i'm going with these gaps
* meh
* Reimu: premultiplied alpha fixups after rebase
* reimuB shot pattern with basic power scaling (not balanced at all)
* reimuB: some lame-ass particle effects
* ReimuB bomb effect prototype
* reimuA bomb prototype
* fix reimu shots for the new damage system
* Reimu: use the new player_is_bomb_active() function, add placeholder BG for ReimuB
* some reimuB bomb projectiles
* ReimuB bomb bg and some framebuffer utils required to support it.
Might reuse this at least in part for ReimuA unless we come up with
something better.
* hack to fix ReimuB bomb fade; refactoring needed
* reimuA damaging bombs
* fix ub
* prevent nan when reimuA bombs without enemies present
* add a bomb_bg to reimuA
* ...
* various fantasy seal tweaks
* Reimu: placeholder bomb sounds; slight fantasy seal buff
* fix null pointer dereference
* Reimu "balance" adjustments; minor fixes
* putting bandaids over gunshot wounds
* Add aoe damage and bullet cancel to ReimuB's bomb
* more exorcism porn
* make reimu bomb bg runes better visible on dark backgrounds
* More ReimuA shot changes
* 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.
* Renderer: rename render targets to framebuffers
* Refactor framebuffer pair helper and some of the video API
* Remove hardcoded dimensions from draw_framebuffer_tex
* Make viewport a per-framebuffer property rather than a global one
* Handle config updates via the events system. React to viewport fg/bg quality change requests.
* 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