Commit graph

34 commits

Author SHA1 Message Date
Andrei Alexeyev
9b3779ebb4
Some renderer refactoring (mostly API and GLES preparations) (#144)
* 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)
2018-09-14 10:37:20 +03:00
Andrei Alexeyev
6c1746e366
define an auxiliary textures interface for sprite/text shaders 2018-07-24 21:00:44 +03:00
Andrei Alexeyev
8490576810
Premultiplied alpha (#133)
* 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.
2018-07-23 20:07:59 +03:00
Andrei Alexeyev
322edd0dce
Text rendering rewrite and optimizations; some refactoring (#129)
* 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
2018-06-30 00:36:51 +03:00
Andrei Alexeyev
9356f263fd
integrate fonts into the resource system (preparing for text rendering rewrite) 2018-06-08 07:49:40 +03:00
Andrei Alexeyev
59cf8f6300
Rendering system rewrite, tons of refactoring, optimizations, and other cool stuff (#116) 2018-04-12 17:08:48 +03:00
Andrei Alexeyev
a9561d7baf
Sprites and texture atlases; upgrade most graphics to a higher resolution (optimized for 1600x1200) (#113) 2018-02-06 08:19:25 +02:00
Andrei Alexeyev
6da17d8b1d
get rid of Texture.truew/trueh; simplify some transformations 2018-01-29 10:35:35 +02:00
Andrei Alexeyev
513d613387
Consistent indentation: indent with tabs, align with spaces (#104)
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.
2018-01-12 20:26:07 +02:00
Andrei Alexeyev
485c9a8ed6
Happy New Year! 2018-01-04 19:14:31 +02:00
Andrei Alexeyev
e87c512597
more efficient text rendering (no PBOs) 2017-12-28 07:31:39 +02:00
Andrei Alexeyev
013a205a92
credits: bgm, updates, other improvements 2017-12-28 05:49:37 +02:00
Andrei Alexeyev
29acd5f58a meson: intel intrinsics, various improvements 2017-12-21 03:58:54 +01:00
Andrei Alexeyev
276759d0fd
aggressive caching of rendered text 2017-12-14 05:48:30 +02:00
Andrei Alexeyev
abbc62b49c
object pools 2017-12-13 21:08:23 +02:00
Andrei Alexeyev
ec0a2f277d
HUD improvements 2017-11-23 04:25:53 +02:00
Andrei Alexeyev
4bdfe5f408
dialogue text autowrapping, fpslimit off key, fixes 2017-10-23 13:10:40 +03:00
makise-homura
2b35177cb4 Removed excess and added missing newlines at end of files 2017-10-10 21:10:35 +03:00
laochailan
03a2426012
update to use #pragma once 2017-09-27 14:14:53 +02:00
Andrei "Akari" Alexeyev
7c9e54a71d
update copyright and credits 2017-09-12 04:28:15 +03:00
Andrei "Akari" Alexeyev
644757a65a
gamepad settings improvements
GUIDs are now used to identify devices. this allows reliable persistent
configuration on multi-gamepad systems.

changed the way the device listing in the options menu works. it's
inactive when the gamepad system is disabled, and dynamically updated
when it's enabled. as a result, the "bare" init state is now finally
gone. this should work with minimal or no changes when the hotplugging
events are properly handled.

the "enable gamepad support" toggle is now effective immediately. the
gamepad system is no longer restarted every time the user leaves the
gamepad menu, unless they have changed the device.
2017-08-28 14:56:43 +03:00
Andrei "Akari" Alexeyev
3f1119340e dynamic quality scaling for fonts
not sure if i'm actually doing it right. but seems to look okay, unless
i manually resize the window to something weird, then it can get blurry.
2017-04-16 01:00:43 +03:00
Andrei "Akari" Alexeyev
edf584b9f3 WIP rendering quality (resolution) settings.
Rewrote a lot of the stage drawing and FBO handling code. Introduced
some WTFs, hence the WIP.
2017-04-07 12:59:23 +03:00
Andrei "Akari" Alexeyev
b3032d3712 played/cleared stats for stages (and by extension, spells) 2017-04-06 03:58:57 +03:00
Andrei "Akari" Alexeyev
884c155193 initial support for arbitrary overlay text 2017-04-02 17:06:18 +03:00
laochailan
5073d6c50f increase font render buffer size 2017-03-29 11:37:39 +02:00
laochailan
b804f53a45 Font rendering speedup
We now use a single texture for all text rendering instead of
generating/freeing textures for every bit of text.
2017-03-28 16:52:53 +02:00
Andrei "Akari" Alexeyev
9a7a874783 Use the standard bool type instead of that stupid enum
Also removed all of the annoying trailing tabs/whitespaces
2017-02-11 05:56:47 +02:00
Andrei "Akari" Alexeyev
167e9e12f1 Initial migration to SDL2 (WIP) 2017-02-04 04:56:40 +02:00
Andrew "Akari" Alexeyew
779ff58684 Fixed all the () prototypes, changed to (void) 2012-08-10 23:08:51 +03:00
Andrew "Akari" Alexeyew
e2b8163447 Basic credits 2012-08-05 04:36:55 +03:00
Andrew "Akari" Alexeyew
a322371b5f Introduced playername option, fancied up the replayview menu, etc 2012-07-29 23:39:52 +03:00
laochailan
bd44c8b570 Marisa and difficulty menu 2011-06-24 12:35:03 +02:00
laochailan
3861a69d62 menus - the beginning
implemented:
[x] ingame menu
[x] main menu
[x] menus
[x] fancy fades
[x] structural earthquake
[ ] the rest of the main menu (difficulty/char select)
2011-06-13 18:48:36 +02:00
Renamed from src/font.h (Browse further)