Commit graph

733 commits

Author SHA1 Message Date
EmeraldLockdown
f01c589b5c Update default shaders 2026-07-03 01:07:16 -05:00
EmeraldLockdown
963b9131d9 Finish documentation 2026-07-03 00:02:52 -05:00
EmeraldLockdown
4477fd7c4f Make frame pass viewport system much simpler, fixup scaling with viewports 2026-07-02 17:22:47 -05:00
EmeraldLockdown
ae3de517da Stricter sanitization, fix default lua shader 2026-07-02 16:32:46 -05:00
EmeraldLockdown
0297041d86 Update default lua shader 2026-07-02 16:24:12 -05:00
EmeraldLockdown
2fa69bf576 Add some lua functions for render api, add legacy func to render api, make opengl versions < 4.5 legacy GL 2026-07-02 16:17:56 -05:00
EmeraldLockdown
0f7e7d7744 Fix culling in metal, do a hotfix on flickering in metal 2026-07-01 13:20:47 -05:00
EmeraldLockdown
100b0fd27e Make text input not bind on init
still doesnt fix the issue im having with macos and text tho :(
2026-07-01 10:14:30 -05:00
EmeraldLoc
4ca5c3ca97 Write out some of the dev progress in shaders.md (terrible place to write) 2026-07-01 09:40:38 -05:00
EmeraldLoc
79661cd3cd Tidy up multipass shaders
There is a doulbe free bug somewhere here but need to move to macos for debugging
2026-06-30 08:22:40 -05:00
EmeraldLoc
b272a5421a Update default shader, update some constant names to not be rubbish 2026-06-20 17:23:16 -05:00
EmeraldLoc
02dd40020b Add frame passes to dx11, more uniform changes and fixes, parser fixes, autogen changes 2026-06-18 21:08:03 -05:00
EmeraldLoc
0f4fa7a664 Before the great reckoning 2026-05-25 22:15:55 -05:00
EmeraldLoc
6471135e39 Ton of changes, SPIRV, bunch of stuff 2026-05-15 19:26:37 -05:00
EmeraldLockdown
6fdb6a2f6b Merge remote-tracking branch 'origin/dev' into shaders 2026-05-13 07:56:47 -05:00
EmeraldLockdown
14eabd5798 Weewoo 2026-05-12 21:44:18 -05:00
EmeraldLockdown
7b1a6c0d21 More changes 2026-05-11 16:39:44 -05:00
Agent X
19a429dbe5
Add built-in preset screen shader effects configurable through Lua (#1217)
* C++ lighting engine

Runs better using my new system for storing and iterating through lights.

I removed the lighting ctx profiler because after I've realized its very inaccurate and was probably programmed incorrectly from the start. Although I remember it working fine before and not constantly showing 20 ms or higher when I'm in an extremely simple level with extremely simple lights and the FPS is way too high for it to be taking 20 ms.

* Whoops

* Make some optimizations

* Fix small bug with LE inside graphics vertex function

I also brought back the lighting profiler because it's better than nothing.

* Some optimizations

* Cache active lights and 4 lights per vertex limit

Less branching and less iterating with the limit

* Screen shader effects for Lua [OpenGL]

Hue, saturation, brightness, contrast, exposure, dithering, posterization

Global = usually an object in the world
Non global = usually a screen element

Also:
* Changed skyboxes to use environment color instead of vertex color, visually identical
* Changed hud head texture to be non global
* changed power meter to be non global
* changed sparkles to be global
* changed some BBH vertex types to global

OpenGL renderer supported only for now.

* Add default values and better function names

Also fixed sizes in reset function

* Add scanlines effect

* Add global enabled function

* Fix some default values

* Hopefully fix white sparkles

* Whoops

* Address review

* Update function names

* Fix shader crash

* Address reviews
2026-05-11 15:59:48 -04:00
EmeraldLockdown
1f7519f68d Multipass shaders 2026-05-11 12:08:13 -05:00
PeachyPeach
07c229afdc
Fix rendering issues with held objects (#1221)
Some checks failed
Build coop / build-linux (push) Has been cancelled
Build coop / build-steamos (push) Has been cancelled
Build coop / build-windows-opengl (push) Has been cancelled
Build coop / build-windows-directx (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled
Add a way to save and load a gfx state in display lists.
Its primary purpose is to save the gfx state before rendering a held object, then restore it later.
It fixes the issue where Mario had opaque legs with the vanish and metal caps when holding an object.
2026-05-06 07:10:59 +10:00
EmeraldLockdown
82a3afcc0f
Add HOOK_ON_PLAY_MODE_UPDATE and HOOK_BEFORE_PLAY_MODE_UPDATE (#1160)
* Add playmode hooks

* Add hook to docs, fix some crashes semi-related

* Rename that func
2026-05-04 21:01:01 -04:00
DorfDork
f688416483
Scale bone anim support (#1215)
* Scale bone anim support

Code changes provided by ExcellentGamer. Supports model anims which modify scale.

* Peachy code changes by ExcellentGamer

* Autogen constants

* changed vc3f_set to vec3f_copy
2026-05-05 00:15:00 +02:00
jayden
5dabcaa313
Add audio_stream_get/set_volume_channel (#1205)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
Allows modders to play audio streams on channels other than level background music.
4 constants have been added for this purpose:
- `MOD_AUDIO_CHANNEL_MASTER` - sound is only affected by master volume
- `MOD_AUDIO_CHANNEL_MUSIC` - sound is affected by music volume, same as previous behaviour
- `MOD_AUDIO_CHANNEL_SFX` - sound is affected by sfx volume, same as sample behaviour
- `MOD_AUDIO_CHANNEL_ENV` - sound is affected by env volume 
This was done instead of using the existing `SEQ_PLAYER_*` constants to avoid confusion and because there isn't a `NONE`/`MASTER` option.

Additionally, sets the default to `MOD_AUDIO_CHANNEL_MUSIC` as to not break compatibility.

```lua
audio_stream_set_volume_channel(stream, MOD_AUDIO_CHANNEL_SFX) -- wow its just like a sample
audio_stream_get_volume_channel(stream) -- returns MOD_AUDIO_CHANNEL_SFX (its actually 2)
```
2026-05-03 17:59:11 +10:00
djoslin0
e88bd178fc
Refactor collision surface systems and add the ability to add/remove/move surfaces (#1143)
- Add `smlua_collision_add_surface`, `_move_surface`, `_delete_surface` Lua APIs
- Add `remove_static_object_collision` to fully free a SOC and its surfaces
- Split surface pools into separate static, SOC, and dynamic pools
- Replace index-based SOC tracking with unique ID counter (`sSOCIdCounter`)
- Invalidate Lua CObjects for recycled surfaces on pool clear
- Expose `SURFACE_POOL_STATIC/DYNAMIC/SOC` constants to Lua
- Add `growing_array_swap_and_pop` and `growing_array_swap_and_pop_index` to memory utils

Co-authored-by: MysterD <myster@d>
2026-05-02 14:58:46 -04:00
EmeraldLockdown
6e454f1d81 Merge remote-tracking branch 'origin/dev' into shaders 2026-05-01 21:56:58 -05:00
EmeraldLockdown
37f4b2e550
Expose gHudDisplay (#1158)
* Expose `gHudDisplay`

* Fix that
2026-05-01 22:25:06 -04:00
Cooliokid956
1d9de02af1
CObject Properties (#1068)
* CObject Properties

- Added property members to CObjects via `PROPERTY` macro
`PROPERTY(name, get, set)`
  - `name`: property name
  - `get`: `fun(self): value`
  - `set`: `fun(self, value)`
- Prettified `LuaObjectField` struct with unions for function/property value types
- Added properties to `struct ModAudio`
  - `position`
  - `looping`
  - `frequency`
  - `volume`
    - NOTE: only work with streams- the audio reform will come later

* Define array size only when necessary

- new `__pairs` metamethod for `CObject`s, cycles through all of an object's fields, in alphabetical order
- stray semicolon!
2026-05-01 22:12:51 -04:00
Squishy
0d95dfde11
Add independent X and Y scaling to text rendering functions (#1182)
* djui scale cool awesome

* fix autogen

* stop unnecessary yellow underlines

* Fix accidental bind removal
2026-05-01 21:17:44 -04:00
Emeraldsniper
0e2ba340fc
Control the Lighting Engine with le_set_enabled in real time (#1193)
* Control the Lighting Engine with le_disable and le_enable in real time

(FORK REDO FOR PR)

* I hate it when I typo

* Control the Lighting Engine in real time with le_set_active (new change)

* Changed to le_set_enabled to be better in line with functions
2026-05-01 21:15:09 -04:00
Blockyyy
793196d581
add stayInLevelAfterStar constants (#1210)
Some checks failed
Build coop / build-linux (push) Has been cancelled
Build coop / build-steamos (push) Has been cancelled
Build coop / build-windows-opengl (push) Has been cancelled
Build coop / build-windows-directx (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled
2026-04-30 12:24:57 +10:00
EmeraldLockdown
820c8c0d1c
minor doc update 2026-04-24 19:40:17 -05:00
EmeraldLockdown
e0857a03f3
Minor doc changes, include images of shader working now 2026-04-24 19:19:42 -05:00
EmeraldLockdown
ee8225c4fa Get it working again, update default lua shaders 2026-04-24 19:05:18 -05:00
EmeraldLockdown
98c9870980 Merge remote-tracking branch 'origin/dev' into shaders 2026-04-24 17:46:11 -05:00
EmeraldLockdown
0193cfdede Merge remote-tracking branch 'origin/dev' into shaders 2026-04-24 17:44:55 -05:00
EmeraldLockdown
6510f3928c
Fix cutscenes, syncing issues, and more (Yoshi!) (#1109)
* Fixes

* Lots more changes

* Yoshi :D

* Remove some unecessary changes

* Oops

* Remove temp code

* Revert changes made to king bobomb, will be handled in #1196

* copied from main not dev, oops

* Address review and do a minor improvement

* Nuke that
2026-04-21 23:37:30 -04:00
EmeraldLockdown
7e10a3bb13
Add in C documentation (#1176)
* Add in C documentation

* update readme

* Remove unecessary spacing
2026-04-21 21:35:01 -04:00
jayden
45bc3062be
Fix get_texture_info and add HOOK_ON_DYNOS_PACKS_TOGGLED (#1181)
* respect overridden textures

* add HOOK_ON_DYNOS_CHANGED

* document HOOK_ON_DYNOS_CHANGED

* HOOK_ON_DYNOS_CHANGED -> HOOK_ON_DYNOS_PACK_TOGGLED

* Apply suggestions from code review

Co-authored-by: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com>

* Update data/dynos_mgr_tex.cpp

Co-authored-by: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com>

* add missing include

* add pack name and enabled

---------

Co-authored-by: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com>
2026-04-21 21:22:18 -04:00
jayden
21dd1ce81d
Add mod_fs_file_set_compression (#1187)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
* add compression level to modfs files

* document modfs compression

* correction in modfs guide

* undo text mode write check

* compression level use s32 instead of int

* fix missing s32
2026-04-10 23:25:58 +02:00
PeachyPeach
24c5a226ed
Fix mod storage load/save number (#1169)
Some checks failed
Build coop / build-linux (push) Has been cancelled
Build coop / build-steamos (push) Has been cancelled
Build coop / build-windows-opengl (push) Has been cancelled
Build coop / build-windows-directx (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled
- Fix `mod_storage_load/save_number` incorrect behavior. These functions should now be used only with numbers, not integers (see next point). The `mod_storage_load_number` can still load integer values from existing mod storage files.
- Add `mod_storage_load/save_integer` for integer values.
- Expand the range of savable values to `double` (64-bit float) and `long long` (64-bit integer) for respectively `number` and `integer` mod storage functions.
- Fix an obscure bug with `smlua_to_integer` that truncated very high integer values due to an implicit cast to double, causing floating-point imprecision issues. Thanks @yoshiweegee for the explanation.
2026-04-05 10:56:53 +10:00
PeachyPeach
de25c5437b
Make djui_hud_measure_text compute text height (#1177)
- Change `djui_hud_measure_text` to return both text width and height
  - New syntax is: `local width, height = djui_hud_measure_text(text)`
  - Old syntax still works, but only returns `width`
- Fix incorrect char height for some fonts
- Fix nametags interpolation using the wrong scale
2026-04-05 10:00:03 +10:00
PeachyPeach
8afe062be1
Fix nametags color and rendering order (#1150)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
* Fix nametags color and rendering order

* make growing_array_init reuse array and buffer if they were already allocated

* use prim color for text color

* isaac review

* update text color descriptions

* small optimization
2026-04-04 09:37:16 +10:00
EmeraldLockdown
cb515ac764 Add booleans to uniform set list 2026-04-01 14:39:53 -05:00
EmeraldLockdown
ac91a0a379 Add in documentation 2026-03-31 21:24:35 -05:00
EmeraldLockdown
ed3cdeae10 Shaders 2026-03-31 21:20:37 -05:00
ThePlayerRolo
7ec6c77e1c
Implement smlua_audio_utils_allocate_sequence() (#891)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
2026-03-20 08:14:24 +10:00
EmeraldLockdown
8735cf96ad
Add get_mod_files (#1091)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
* Add `get_mod_files`

* Dont allocate memory, use the stack

* Implement peachy's suggestion

* Actually allow optional to wrok
2026-03-15 21:49:01 +01:00
djoslin0
2c367b556d
Add surface collision Lua hooks (#1139)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
* Add surface collision Lua hooks

- Add 6 new hooks:
    HOOK_ON_FIND_WALL_COLLISION,
    HOOK_ON_FIND_CEIL,
    HOOK_ON_FIND_FLOOR,
    HOOK_ON_FIND_WATER_LEVEL,
    HOOK_ON_FIND_POISON_GAS_LEVEL,
    HOOK_ON_FIND_SURFACE_ON_RAY

- Hooks expose current result values and allow overriding collision outputs from Lua

* Remove unnecessary branches

---------

Co-authored-by: MysterD <myster@d>
2026-03-15 14:04:36 +01:00
PeachyPeach
3b53952767
DJUI Text improvements and bug fixes (#1131)
- Drastically improve and optimize display list usage for text
- Add text alignment with and without interpolation, and color codes, new lines and tabs are now handled properly
- Restored alpha color code (`#RGBA` or `#RRGGBBAA`) for `djui_print_text` functions (regular DJUI text allows alpha color codes, but ignores the alpha component)
- Add constants for common text alignment and rotation pivot values
- Fix interpolation issues with all `djui_hud` elements
- A few autogen fixes (missing `number` type for constants, missing return values for some functions)
- Fix recolorable hud font offsets on `e`, `i` and `o` letters
2026-03-11 08:38:24 +10:00
Blockyyy
f6f5434dda
set_sound_bank_override (#1046)
Some checks failed
Build coop / build-linux (push) Has been cancelled
Build coop / build-steamos (push) Has been cancelled
Build coop / build-windows-opengl (push) Has been cancelled
Build coop / build-windows-directx (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled
2026-02-20 10:34:25 +10:00