* Smarter generic entity macros
The list of "core" entities is now defined in one macro, and hardcoded
_Generic dispatch tables are eliminated
* Get rid of "custom" entities
All entities are now "first-class". The list of known entity types has
been moved to known_entities.h. The system no longer needs to know the
definition of all entity structs.
* Refactor guts of ENT_BOX/ENT_UNBOX
Made the functions inline, Box::ent is now a proper pointer type (but
please don't use it directly), ENT_UNBOX returns NULL if the box is
"empty" (references NULL entity)
* Merge TASK_BIND_UNBOXED with TASK_BIND
* s/YoumuMyon/YoumuAMyon for consistency
* WIP gles2 compat
* More gles2 compat. Playable with ANGLE now, with some rendering bugs.
* fix matrix mult. order in generic laser shader
* gles20: fix indexed rendering
* Update docs about gles20 status
* fix formatting
This also introduces `float32`, `float64`, and `real` typedefs to be
used in place of `float` and `double` later. `real` is for game code and
other places where we don't particularly care about the precision and
format of the underlying type, and is currently defined to `double`.
`float32` and `float64` should replace `float` and `double` respectively
This replaces the r_mat_foo functions with specialized r_mat_{mv,tex,proj}_foo counterparts that operate explicitly on the modelview, texture, and projection matrix stacks respectively.
* implement player spellcard declarations on bomb
* stagedraw: move "bottom text" to a separate (higher) layer
* update boss spell declaration effect
* import afensorm's character portrait art
* improve dialog visuals
* acknowledge afensorm in credits and COPYING
* 'alphamap' functionality; effects for wriggle and youmu portraits
* update afens art
* add cirno alphamap
* dialog: draw active speaker above other other
* charselect: use r_draw_sprite
* Added (and fixed) a few useful warnings
* Removed some dead code
* Cleaned up the build system files a bit
* Once again separated ZIP support from data packaging
* Converted macOS cross-compilation options into cross-file properties
* WIP some projectile effects
* fix segfault
* Laser smoothing and glow via post-processing blur magic
TODO: make it optional
* fix memory corruption
* fix memory corruption for realsies now
* fix color_get_hsl for out-of-range colors
* some more bullet flare tweaks
* some lame clear effect workarounds
* spawn bullet flares after frame 0; looks better and fixes some problems
* New baryon explosion; fix petal_explosion; leanify everything
* Add missing bullet flare sprite, rebuild main atlas
* improve batching efficiency with bullet spawn flares
* forgot git add
* Group projectiles/particles by shader where possible
* Another take on baryon explosion; make fg framebuffers 16bit
* WIP some settings for toasters
* remove stupid debug log
* microoptimization that probably does nothing anyway
* somewhat more intuitive quality settings
* Whitelist more particles (MarisaB is on hold)
* Whitelist (and fix) some more stage6 particles (mostly ToE)
* Add a spell name background
* Experimental radial healthbar for bosses
* healthbar tweaks
* thiccer healthbars in response to feedback
* remove healthbar survival timer; just fade out on survivals
* Add linear healthbars option; WIP other boss HUD tweaks
* Use the proper spell card name format
* New font and some random garbage to go along with it
* Generate static font outlines for use in text shaders
* Use outlines in overlay text shader
* Complete boss HUD/healthbar fading logic
* fix boss timer limit
* stage5 bombs explosion effect
* split PFLAG_NOSPAWNZOOM into PFLAG_NOSPAWNFLARE and PFLAG_NOSPAWNFADE;
introduce PFLAG_NOSPAWNEFFECTS which disables both (it's just the two
values OR'd together)
simplify vampiric vapor bullet spawning effect
* Remove spawn fade-in from super-fast stage5 fairy projectiles (limiters)
* lower particle density in v.vapor in minimal mode
* graze effect tweaks
* fix text shortening, tweak replay menu layout
* stupid debug spam
* revisit grazing effects again
* dumb debug spam again
* improve boss attack timer
* overlay effect for boss deaths (similar to the player one)
* spice up spellcard declaration (HUD)
* don't spawn boss death overlay if fleed
* modify Exo2 font to use tabular figures
* adjust replay menu for the font change
* draw timer & power with standard font (phasing out the numbers font)
* WIP new HUD; random fixes/tweaks
* hud: move difficulty indicator
* hud: move debug stuff around
* preloads, mostly
* fix youmuA batching conflict
* shitty workaround for the shitty screenshake shit
* remove extraspell lag by stopping to draw stagebg sooner
which is possible because extra spells have a different spellcard_intro timing. Fun fact of the day: the duration of spellcard_intro is always ATTACK_START_DELAY_EXTRA even for normal spells!
* new stain particle
* i disabled background rendering…
* "batch" marisa_b masterspark draws
* remove these once a new atlas is generated
* make toe quick again
* hopefully fix all occurences of changed stain and ScaleFade behavior
* tweaking reimu_a and toe boson launch effects
* make lhc fast again
* softer involnerability effect
* fix stage 1 snow on the water bug (and improve performance)
translated the time to the future a bit because it only seemed to be an issue for small time values
* remove unnecessary spawnflare from toe
* tone down extra spell start effect
* experimental ReimuB gap shader optimization
* fix python3 shebangs
* generate simple blur shaders w/ hardcoded kernels
* New loading screen
* lasers: fix incorrect draw hook registration
* add webp support for atlas generator
* Use ImageMagick for atlas composition (adds 16-bit support)
* Atlas maintenance
* make the vampiric vapor bullets less prone to invisibility
* Revert a few particles to the quadratic fade curve
* experimental baryon effect
* improve baryon sprites
* disable the baryon effect on minimal postprocessing setting
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
* 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)