Commit graph

36 commits

Author SHA1 Message Date
PeachyPeach
4671f09f79
G_CULL_INVERT_EXT; Vec2 functions; bug fixes (#985) 2025-10-21 18:56:35 +02:00
djoslin0
82ca45eeb6
Lighting engine improvements (#870)
* Lighting engine improvements

Now objects will be affected by the lighting engine. This is
accomplished by passing the renderer the object's model matrix
(uncombined with the view or projection). You can now setup the
lighting engine mode to affect all shaded surfaces, lighting can
be affected by surface normals, and you can control what type of
tone mapping is applied.

added le_set_mode(mode)
    By default we retain the previous behavior.

    When set to LE_MODE_AFFECT_ALL_SHADED the lighting engine will
    affect every shaded material.

    This way we don't have to recompile every object and level that
    we want shaded with special coop-specific commands

added le_get_mode()

added le_set_tone_mapping(toneMapping)
    Tone mapping is what happens when a color value exceeds its 0-255
    range.

    By default we retain the current tone mapping (called
    LE_TONE_MAPPING_TOTAL_WEIGHTED).

    LE_TONE_MAPPING_WEIGHTED is now accessible, it was the tone
    mapping that was previously left out of the compile through ifdefs.

    LE_TONE_MAPPING_CLAMP is just simple additive with a clamp at a
    color value of 255.

    LE_TONE_MAPPING_REINHARD is reinhard tone mapping
    (vout = (vin + 1) / vin).

added le_set_light_use_surface_normals(id, useSurfaceNormals)
    By default lights retain their previous behavior (of ignoring
    surface normals).

    When enabled lights cast on one side of the object will not
    appear on the other side of the object.

    It is kind of like backface culling, but for lights.

added le_calculate_lighting_color_with_normal(pos, normal, outColor, lightIntensityScalar)
    It's just like le_calculate_lighting_color(), but you can pass
    in normals now.

* Removed normal calculation from vertex colored surfaces - they don't have normals

* Use packed normals correctly

* made LE_MODE_AFFECT_ALL_SHADED the default

* made useSurfaceNormals the default for lights

* Set ambient color, performed le_is_enabled() checks

The ambient color was black, which is why everything was dark by default.
If we set ambient to white then people will never see the effects of their
lights unless they set ambient to a lower value. So I added checks for
if a light has ever been added. The alternative would be to have something
like le_set_enabled()

* Rewrite how we obtain the model matrix - invert the camera

* run autogen

* Change default tonemapper to weighted, make setting ambient enable LE, fix null deref

* Address Peachy's comments

---------

Co-authored-by: MysterD <myster@d>
2025-06-29 17:46:35 +02:00
PeachyPeach
c79d59d8ec
Fix vec3f bugs (#837) 2025-06-05 19:44:09 +10:00
PeachyPeach
69e129805e
More math improvements (#820)
* More math improvements

* more math functions

* stack check

* added error message when trying to modify read-only table; fix gSmluaConstants printed to console
2025-05-29 02:52:31 +02:00
PeachyPeach
8db6356754
Improving math functions (#813)
* Improving math functions

* Isaac review
2025-05-21 23:50:49 +02:00
Prince Frizzy
02c9a4146b
More Optimizations (#792)
* Initial work on optimizations.

* Requested Changes Part 1

* Requested Changes Part 2

* Requested Changes Part 3

* Requested Changes Part 4

* Requested Changes Part 5

* Requested Changes Part 6

* Update deprecated.lua

---------

Co-authored-by: PeachyPeach <72323920+PeachyPeachSM64@users.noreply.github.com>
2025-05-16 20:27:49 -04:00
John S
096a5f8dbd
Fix the (0,0) edge case in the atan2s offset lookup table (#576) 2024-12-19 20:15:16 -05:00
Isaac0-dev
96dc4da358 fix min max and sqr macros again 2024-11-27 23:50:56 +10:00
John S
2cf1d03ed5
Optimization of mtxf_lookat() (#377)
* Update mtxf_lookat

* Make new mtxf_lookat a little easier to read and add mario specific types

* fix the declaration for mtx[3][3]

* Added negative sign
2024-10-24 07:17:29 +10:00
John S
b712d4b6a3
Fix the branch bloat found in the atan2s and atan2_lookup functions (#375)
* Fix branch bloat in atan2s and atan2_lookup

* Fix unecessary inline on lookup
2024-10-18 16:47:00 +10:00
John S
3dd9226bc9
Update math_util.c and math_util.h to support autodoc with trig functions (inline instead of macros) and add new functions to smlua_math_utils (#359)
* Update math_util.c and math_util.h to move toward inlining functions instead of macros for autodoc. Expose some misc functions useful to lua

* Fix formatting

* Fix math_util.c formatting

* Fix formatting for smlua_math_utils.c

* Fix formatting smlua_functions.c

* Fix type redundancy in _Generic macros

* Add checks for including the highly optimized builtin compiler functions for GCC/Clang

* Add compiler checking for absx() to add in the highly optimized GCC/Clang builtins

* Fix repeated use of float built-ins for non floating point numbers

* Fix grammar mistake

* Fix functions to use camelCase as requested.

* Fixed the use of a custom sqrt approximation as modern procs have a built in FSQRT instruction that is faster.

---------

Co-authored-by: js <js@cartbara.columbus.rr.com>
2024-10-18 12:20:36 +10:00
MysterD
2083242b66 Fixed several crashes and errors found in static analysis 2023-05-15 01:15:20 -07:00
MysterD
cc1ec3e81f Prevented hundreds of additional crashes from the Mod API 2023-05-11 20:33:21 -07:00
MysterD
f82f5149f4 Disable accurate interpolation on 32 bit 2023-05-04 01:29:08 -07:00
Prince Frizzy
913f41f6ae
Add some more functions for use in LUA, And expose others. (#129)
* Add some functions, and restore one.
2022-08-05 22:17:05 -07:00
MysterD
7b7e2245aa Fix collision bugs setting now allows for non-axis-aligned walls to be correct 2022-06-01 01:00:00 -07:00
MysterD
c15f8bfef0 Bettercam improvements: no longer sways when close to geo, no longer zooms if player partially visible 2022-05-25 17:47:34 -07:00
Altiami
c8a70f2d50
New render frame interpolation via transformation matrix de-/construction (#98)
This method of interpolation aims to correctly interpolate the render
transformation matrices as best as possible without doing an entirely
new render pass. This is accomplished by deconstructing the matrices
into its composition of transformations, interpolating those simpler
transformations individually, and then reconstructing the
transformation matrix with the interpolated transformations.
2022-05-21 21:46:41 -07:00
Agent X
6466fbe457
camera_freeze, camera_unfreeze, djui_hud_get_mouse_x, djui_hud_get_mouse_y, set_override_fov, set_override_near, set_override_far (#74) 2022-04-30 17:36:38 -07:00
Prince Frizzy
54a6135cb9
Cleanup Deluxe (#45) 2022-03-29 20:45:56 -07:00
MysterD
c60f9f3e46 Prevent crash in anim_spline_poll 2022-02-27 01:05:36 -08:00
MysterD
69fb69dfce Fix bugs/warnings from static analysis 2022-02-20 20:04:25 -08:00
Prince Frizzy
32b0c91935
Fixes for Refresh 12 2022-02-19 01:39:38 -05:00
MysterD
f73c841bfe Fixed crash in init_shadow() 2022-02-14 18:28:01 -08:00
MysterD
fecba91c5e Rewrite the core of network area timer (yet again) 2021-08-10 18:29:49 -07:00
MysterD
f5df807a0c Additional synchronization fixes for end cutscene. 2020-09-26 12:07:43 -07:00
n64
4a448cf10d merge refresh 10 2020-06-20 02:49:59 +03:00
uncletrunks
ab23b8907b putting out fires 2020-05-14 21:50:10 -05:00
uncletrunks
70ca0af987 adds cylindrical billboarding, enables it for trees. 2020-05-14 20:31:52 -05:00
Jan200101
be340547c4
port analog camera code to the master codebase 2020-05-08 13:41:35 +02:00
n64
9a801cb96d refresh 6 2020-02-03 00:51:26 -05:00
n64
9273f38df1 refresh 5 2020-01-03 10:38:57 -05:00
n64
04732af90b refresh 4 2019-12-01 21:52:53 -05:00
n64
a7c423cb43 Refresh 3 2019-11-03 14:36:27 -05:00
n64
1ef98ec785 Refresh 1 2019-09-01 15:50:50 -04:00
n64
89e8690857 init2 2019-08-25 00:46:40 -04:00