Commit graph

13 commits

Author SHA1 Message Date
Andrei Alexeyev
622fd1e48b
build: stop vendoring cglm
* Remove cglm from submodules
* Add cglm to list of dependencies
* Prefer system version of cglm, with a wrap fallback (as with other
  dependencies)
2021-04-19 00:50:20 +03:00
Andrei Alexeyev
f5b4477f0d
build: add libzstd subproject 2021-03-27 18:29:56 +02:00
Andrei Alexeyev
b0856ce07d
Switch audio assets to Opus (#167)
* Switch BGMs to Opus

* Switch SFX to Opus; use floating-point mixing

* opus sfx: support resampling via SDL_AudioStream

* bump SDL2 version requirement to 2.0.6

2.0.5 doesn't have the SDL_AudioStream API, and is ancient anyway.
2019-05-11 09:46:26 +03:00
Andrei Alexeyev
84cba0224c
Switch to official SPIRV-Cross C API instead of crossc 2019-04-07 04:47:55 +03:00
Andrei Alexeyev
96631afbbc
add shaderc wrap fallback 2019-03-22 07:30:35 +02:00
Andrei Alexeyev
9c003f0ff8
add sdl2_mixer/ogg/vorbis fallback wraps 2019-03-19 03:01:09 +02:00
Andrei Alexeyev
9d260f59ba
add sdl2 wrap fallback 2019-03-18 08:05:10 +02:00
Andrei Alexeyev
4a4c174285
add libwebpdecoder wrap fallback 2019-03-17 22:58:15 +02:00
Andrei Alexeyev
24866d89df
add freetype wrap fallback 2019-03-17 21:05:32 +02:00
Andrei Alexeyev
aeae3ca534
add libpng wrap fallback; fix subprojects .gitignore 2019-03-17 20:02:45 +02:00
Andrei Alexeyev
571d058b52
add zlib wrap fallback; point libzip wrap to a versioned branch 2019-03-17 19:01:17 +02:00
Andrei Alexeyev
4443c3358b
Add libzip wrap fallback 2019-03-17 07:06:47 +02:00
Andrei Alexeyev
2414474c89
OpenGL ES 3.0 rendering backend (#148)
* 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
2018-10-02 01:36:10 +03:00