36 Commits

Author SHA1 Message Date
Luke Street 531b8f7d92 WIP: Add aurora::gx::dl::optimize 2026-06-12 12:19:41 -06:00
Luke Street 2d64481e71 Evict dynamic palette textures in evict_copy_texture 2026-06-07 23:41:44 -06:00
Ahmad Abdallah 2c1e8ed840 Fix GX_NRM_NBT and GX_NRM_NBT3 vertex attribute handling (#181)
* Fix GX_NRM_NBT and GX_NRM_NBT3 vertex attribute handling

* Fix GX_NRM_NBT3 indexing, add GX_TG_BINRM/GX_TG_TANGENT support

* Add GX_TG_BUMP emboss bump mapping support
2026-06-03 20:52:26 -06:00
SuperDude88 7ba0d010cc Implement GX2SetPolygonOffset
Co-authored-by: Lurs <2795933+Lurs@users.noreply.github.com>

Co-authored-by: Luke Street <luke@street.dev>
2026-05-30 10:25:07 -06:00
Luke Street c214a67adf Runtime texture replacement API 2026-05-30 10:01:40 -06:00
Luke Street ac72f79d1d Adjust sampler and LOD bias logic for texture replacements 2026-05-29 18:00:20 -06:00
SrBananaMan 932c89a2f8 Add method to enable/disable textures and reload once changed. (#195) 2026-05-17 09:05:35 -04:00
Irastris d10368e2b3 Always display mips and use Linear filter mode on texture replacements (#192) 2026-05-15 16:03:27 -04:00
Pieter-Jan Briers f7f3d52cfc Texture loading fixes (#170)
* Implement PNG & arb texture replacements

Fixes #119

For arb textures it's just making sure the file parsing can handle them. Idk if we need to do something special for it.

* Allow non-mipmapped textures to be replaced by mipmapped textures

Some of Henriko's textures (like the cuttable grass) rely on this.

The mipmap bool is no longer part of the runtime key.

* Make texture name the texture replacement key

Might as well? Helped me debug some stuff

* Oops that broke it bad

* libpng instead of spng

* I did it again

* Update libpng fetch

* Add zlib fetch

* Forgot to set the hash

* Add zlib redirect

* Add INCLUDE_DIR(S) to redirect

* Prefer shared for libpng

* Set CMAKE_FIND_PACKAGE_TARGETS_GLOBAL

---------

Co-authored-by: Luke Street <luke@street.dev>
2026-05-12 20:32:43 -06:00
Luke Street 9413f24f65 Stop caching ShaderModules and rely on Dawn cache 2026-05-09 09:45:13 -06:00
Luke Street 4cd8d2f009 Refactor viewport fit handling; use game viewport for RmlUi 2026-05-05 23:13:31 -06:00
doop bd544aa949 Truncate instead of flooring in calculate_inner_box (#157) 2026-05-05 18:57:50 -06:00
doop 518747aa86 Map logical viewport/scissor to same region (#155) 2026-05-04 23:34:41 -06:00
Luke Street a6a3d3a65a Add GXDestroyCopyTex function (#141) 2026-04-26 14:01:24 -06:00
Luke Street c4c5b3f4af Fix texture cache leak with immediate GXDestroyTexObj 2026-04-21 14:13:13 -06:00
Luke Street 5d420c9f73 Arbitrary mipmap detection & texture cleanup (#131) 2026-04-20 20:33:14 -06:00
Luke Street c05e7aace1 Viewport scaling rework & IR configuration (#127)
This is a breaking change: `GXSetViewport`, `GXSetScissor`, `GXSetTexCopySrc`, `GXSetTexCopyDst` now accept logical coords relative to the `VIConfigure` EFB size.

`GXSetViewportRender` and `GXSetScissorRender` are used to override the scaled viewport/scissor from the logical coords.
2026-04-18 14:10:32 -06:00
Luke Street bf46df6ba7 Simplify bind groups & improve caching 2026-04-12 18:55:35 -06:00
Luke Street ac3611e518 Improve resolve_sampled_textures performance considerably & add more traces 2026-04-12 15:35:28 -06:00
Luke Street e39f8c6f72 Handle GX_MAX_ANISOTROPY explicitly 2026-04-10 01:10:21 -06:00
Luke Street d15064a757 Use GXTexObj size as logical size for indtex 2026-04-09 18:32:52 -06:00
Luke Street b1bf531884 FIFOify texture binding (#109)
* FIFOify texture binding

* Use __cntlzw helper

* Some cleanup

* Fix texture eviction & cleanup
2026-04-09 00:14:00 -06:00
Pieter-Jan Briers 50fda393a1 GX optimizations (#107)
* handle_draw optimization

1. cache vtxSize
2. remove heap allocation from draw call merging index buffer
3. move things that aren't on the "draw call merging hot path" out to other functions, to reduce stack frame size of handle_draw (it was previously using __chkstk)

* Make ByteBuffer expand exponentially

Fix half a second of startup time being just that.

* Babysit the compiler's inlining decisions

* Merged draw call idxBuf now a global static

* GXFlush() doesn't write NOPs to FIFO

I'm sure this made sense on actual hardware

* Don't bind unused textures/samplers

* Remove C++ RAII types from build_bind_groups

Most of this function's code was fucking with WebGPU AddRef and ReleaseRef. Seriously.

* More refs in common.hpp

* Index buffer in handle_draw_unmerged now not dynamically allocated for small draws

* Fix gx_test_stubs.cpp

* Some cleanup & renaming

---------

Co-authored-by: Luke Street <luke@street.dev>
2026-04-08 19:51:06 -06:00
Pieter-Jan Briers 212d01769d Tracy integration (#106)
* Sprinkle Tracy all over the project

* Move Tracy FetchContent to extern file, disable Tracy by default

* Use older CMake syntax for setting cache variables

* Fix test compile

* Rename ALIGN macro to AURORA_ALIGN

Needed because it conflicts with a macro in Apple's SDK headers on my macbook, and Tracy is now pulling in that header.
2026-04-08 19:19:58 -06:00
Luke Street 33ec54347d Add offscreen rendering support & GXSetTexCopyDst (#89)
* Add offscreen rendering support & GXSetTexCopyDst

* Try to fix alignment for MSVC
2026-04-02 23:01:14 -06:00