Commit Graph

53 Commits

Author SHA1 Message Date
Sylvain PILLOT b8b9064e9b azrp_line() with clipping added 2023-05-10 07:58:20 +02:00
Sylvain PILLOT 5907c27706 [WIP] adding clipping into azur line shader 2023-05-09 22:49:25 +02:00
Sylvain PILLOT 0d014a542a added a working line shader 2023-05-07 16:08:29 +02:00
Sylvain PILLOT 8b5ff08fb0 added line Shader 2023-05-03 22:37:23 +02:00
Sylvain PILLOT 2fb3d98e5a Corrected on small typo 2023-01-21 08:06:34 +01:00
Lephenixnoir 81b1cc1083
azur: double buffer space for command data
Now that it's in the main RAM we don't have to limit it as much.
2023-01-20 22:39:06 +01:00
Lephenixnoir e86a95f6d6
azrp: update image shader to use dwindow settings 2022-11-19 17:47:21 +01:00
Lephenixnoir ec74a983b3
libnum: add unary vector operators 2022-08-30 13:14:21 +02:00
Lephenixnoir cd95fad8d0
libnum: add basic vector types 2022-08-20 22:23:56 +02:00
Lephenixnoir b62e026fa5
azrp: clean up the prototype triangle shader in C 2022-08-20 20:57:46 +02:00
Lephenixnoir 4ee1537084
azrp: improve the triangle shader (speedup x1.2)
It's quite optimized now.
2022-08-20 20:56:48 +02:00
Lephenixnoir 8448467cd4
azrp: bump command limit to 1024
It used to be 256 due to XYRAM limits but it's easy to hit.
2022-08-20 20:54:52 +02:00
Lephenixnoir cc66d3a520
azrp: faster triangle shader in assembler (speedup ≈ ×2) 2022-08-20 14:59:48 +02:00
Lephenixnoir 8badb9f9cc
azrp: add very basic triangle shader 2022-08-20 11:49:21 +02:00
Lephenixnoir 5ccd674795
meta: build system for fxSDK 2.9 with sysroot 2022-08-20 11:48:42 +02:00
Lephenixnoir 1d8851cbf5
libnum: add experimental string representation
Currently only has hand-picked tests and very rough code, but it's a
start. In the future, I want to have better tests, more
options like printf's %e/%f/%g, and more versatile methods.
2022-08-07 11:32:57 +02:00
Lephenixnoir ec1593d4f8
libnum: add floor/ceil/frac functions, and int limits 2022-08-04 10:18:28 +01:00
Lephenixnoir 10cf9951a0
libnum: rename the namespace [num] -> [libnum]
The first name would make `num` on its own ambiguous when using the
namespace.
2022-08-01 23:01:35 +01:00
Lephenixnoir 4238d5853f
libnum: add performance tests for num32 2022-07-24 00:21:56 +01:00
Lephenixnoir 708ba1b017
libnum: unit tests, perf tests for num16, double limits
* Add a unit testing framework in libnum/test/. Assertions are checked
  against sparse sets of input values (a couple thousands for each
  type), distributed fractally.
* Add performance tests for num16.
* Fix an overly ambitious substitution of /256 by >>8 in num16::mul,
  which would give some incorrect results for negative results.
* Also fix an incorrect sign extension in the num16->num32 conversion.
* Express comparison-with-int operators in terms of the integer even
  though some versions are faster when expressed in terms of the fixed-
  point value. This is because the integer is frequently known at
  compile-time.
* Add minDouble and maxDouble static members to each num type to
  programmatically supply the bounds of the type.
2022-07-24 00:05:41 +01:00
Lephenixnoir 967eb034f4
libnum: num8 optimizations 2022-07-20 00:50:58 +01:00
Lephenixnoir e90abaaabc
libnum: add tests for how optimized compiled assembly code is
This change adds tests for libnum (run with `make -C build-x tests`)
that compile example programs with g++ and evaluate how optimized the
assembly code is. This is done by checking user-provided specifications
of what instructions should and shouldn't be used against the compiled
assembler.
2022-07-19 23:18:01 +01:00
Lephenixnoir d77c7fef78
libnum: add num8/num16 comparisons with integers and some tests 2022-07-19 23:12:23 +01:00
Lephenixnoir d75ef1b2e9
libnum: use C++20 concepts 2022-07-19 23:11:29 +01:00
Lephenixnoir 7de30b80e7
azur: update r61524_start_frame() to match gint 2.8.1 2022-07-18 23:10:43 +01:00
Lephenixnoir c74e8fcf13
azur: restructure to adhere to a more consistent C++ style 2022-07-18 23:02:13 +01:00
Lephenixnoir 2e63daa59a
meta: new build system (and emscripten fullscreen)
* Update the build system to support intermediate installs (instead of
  exposing CMake targets that were only usable from within the main
  CMakeLists.txt).
* Finish the emscripten build and add detailed instructions in
  README.md.
* Get rid of runtime GLSL files by embedding them into a C file. This
  solves the annoying problem of where to install them and how to find
  them at runtime.
* Provide FindAzur.cmake to access the library. At the moment the module
  still needs to be found which requires a set(CMAKE_MODULE_PATH) in
  user applications. I consider this an acceptable compromise.
* Automatically go soft-fullscreen in the emscripten application.
2022-06-05 14:08:49 +01:00
Lephenixnoir 019cf416fa
meta: move submodules to 3rdparty/ (still internal)
This properly separates the libraries developed here from the (now
clearly) third-part software that we build at the same time.

There is still no install script for these libraries, they are only
usable from the main CMakeLists.txt. This will change soon.
2022-06-02 21:28:00 +01:00
Lephenixnoir e2e73c4934
meta: updated build system with gint install, README 2022-06-02 21:18:58 +01:00
Lephenixnoir bf5db2a0f0
libnum: initial commit 2022-06-02 21:18:28 +01:00
Lephenixnoir b0ca2a87a5
meta: pull dependencies 2022-05-28 12:44:14 +01:00
Lephe e63b1eb3c4
azur: update to new gint 2.8 image format 2022-05-27 20:55:45 +01:00
Lephe 8ac9ac747a
azur: image shader with dynamic effects, and 16-row fragment 2022-05-27 20:55:44 +01:00
Lephe e124719de3
azur: share command data between fragments (with updates) 2022-05-27 20:55:44 +01:00
Lephe 911cc8e5ac
azur: documentation and optimization on rendering 2022-05-27 20:55:44 +01:00
Lephe c5cdb2b885
azur: rename tex2d shader to image 2022-05-27 20:55:44 +01:00
Lephe 52a66402aa
azur: bugfixes and support for P4_RGB565 (3.5 c/p) 2022-05-27 20:55:44 +01:00
Lephe c16b1a85c6
azur: implement support for P4_RGB565A (P4) 2022-05-27 20:55:44 +01:00
Lephe ddff9f6d6b
azur: replace P8 with P8_RGB565A (4.5 c/p), P8_RGB565 (3 c/p)
The code for P8 failed in some non-transparent cases and I'll admit I
could not be bothered to fix it when the superiors formats were already
designed and promised a significant boost.
2022-05-27 20:55:44 +01:00
Lephe 18ee037693
azur: support for P8 in tex2d (5.5 cycles/pixel) 2022-05-27 20:55:44 +01:00
Lephe e10f8fabac
azur: filter out internal events used to wake up the main loop 2022-05-27 20:55:44 +01:00
Lephe 0d96c46613
meta: use the docking branch of ImGui 2022-05-27 20:55:43 +01:00
Lephe 5d65459c41
meta: update ImGui, make GL3W as external module 2022-05-27 20:55:34 +01:00
Lephe 0c8efcd635
azur: RGB565A in tex2d (still 4c/p) 2022-05-27 20:55:33 +01:00
Lephe 0fec6da1c4
azur: progress on tex2d as bopti, custom command sorter 2022-05-27 20:55:33 +01:00
Lephe 33e6a44578
azur: add shader uniforms, clear shader, super-scaling 2022-05-27 20:55:33 +01:00
Lephe 0005249f71
azur: implement all parity cases of the tex2d shader 2022-05-27 20:55:33 +01:00
Lephe 507fee11e3
azur: (minor) 2022-05-27 20:55:33 +01:00
Lephe 028d927b6d
meta: add GLM as a submodule 2022-05-27 20:55:33 +01:00
Lephe 31da1c0998
meta: build system for Dear ImGui + GL3W + FreeType2
* Add build instructions for Dear ImGui that build the SDL +
  OpenGL 3 / OpenGL ES 2 backend.
* Use Dear ImGui's bundled GL3W as a loader (including in azur itself,
  which has not been using a loader until now).
* Properly select headers for OpenGL ES 2.0 (with the VAO extension) and
  attributes for WebGL; clear up OpenGL 4 error codes.
* If FreeType2 is available through pkg-config, or if empscripten is
  used (since it has a FreeType port), use FreeType to render fonts in
  Dear ImGui for much-appreciated hinting quality.

Minor changes:
* Add window title to azur_init().
* Use emscripten's infinite loop simulation to make sure everything
  stays in the same thread. This is needed for Dear ImGui to work.
2022-05-27 20:55:24 +01:00