#Lit Engine - Legacy (raylib) & Reboot (glfw)
2581 messages · Page 3 of 3 (latest)
For C++ you could have a look at cflat(basically c++11 used by a AAA German studio) : https://github.com/arturocepeda/Cflat
They use it in Unreal and in their last released game.
seems interesting
I read the readme in the diagonal but does it allow to make changes to the code with minimal compilation?
Yes, I hot reloaded the code without recompiling the engine. It's basically interpreted c++. You can then compile parts of it if you want so as to not have a heap of interpreted code.
this is awesome
Their interpreter is not geared towards high performance but performs well in general.
and when the file is no longer being edited can it be fully compiled or does it still get "interpreted"?
It's not perfect BTW, but is good for scripting. It's not a one to one to c++ but Arturo is really active and fixes things quite often.
Yes you can compile it when you don't need to have it interpreted. It's gonna be your responsibility though. There are defines that you can use to differentiate but that's about it.
I will definitely take a look into it. thank you!
np ! Btw, great work on Lit. Been lurking for a long time and you've been making great progress. It's really looking promising.
If you have any questions on either luau or cflat you can ask me for pointer's. There's also q3vm for C scripting but sadly that's C89, working on fixing that personally.
ok. school also restarted this week and it's exam year so I don't know if I can work on Lit that much before the summer break
Yeah, np. I do things when I have time too. That's the way life goes I guess 😛Have a good semester.
thank you
lua is faster than python
have you tried angelscript?
it's really similar to C++
but if you want compiled C++, oh boy
yes but mojo can come in handy
wait
why couldn't you just ship something like g++ on windows
w64devkit is relatively small
i will provide both c++ and python/Lua support, but I haven't started working on c++ scripting yet because I like to work on it closer to the release after all the features are implemented. I will research what is the best approach for c++ and I haven't ruled anything out just yet. My main concerns are Lit Engine compatibility, compilation time/performance (I don't want to wait 10 seconds to reload a script after I change a variable) and out of the box cross-platform support.
@wintry spear if you make a simple enough interface for the engine for scripting, I'm pretty sure I'd be able to port BQN. it'd be very cool.
Since not a lot of people use BQN, I'll likely just make a fork of your project with BQN, and update it to your master branch from time to time.
Ofcourse noone use barbecque
You are supposed to eat it
yes, though seems some of the symbols aren't in your font since there are some rectangle characters there. I think your font is missing ⁼ and ⋄
you'd get the bqn keyboard layout
eating is a form of using :)
usually the pun with BQN is calling it bacon.
this language's syntax looks so weird. is it like Haskell?
in some ways sure. in some ways not. it isn't a pure functional language, and is focused on multidimensional arrays which haskell isn't. BQN also doesn't have lazy stuff, so you can't have infinite lists for example.
naw 💀
not the functional programming
why not? :o
i dont like it
why not? and if there's no reason, what lang did you use while learning functional programming?
(I'm assuming you not liking it means you've tried it, though i could be assuming wrong)
haskell
ah, BQN's isn't pure, and pure functional programming is way more restrictive.
pure means you can't mutate variables, and BQN allows you to mutate variables.
overrated fp
why?
do you mean overrated pure fp? like, are you thinking of fp being the same as pure fp?
yes
ok, cool
i cant even think about what to do with this knowledge
assuming you mean knowledge of using functional languages, well, you use the knowledge when you use a functional language
¯_(ツ)_/¯
well, uh, that's subjective. Maybe. I haven't used haskell enough tbh to say for myself.
I guess BQN got me hooked better than haskell. I did try haskell before learning BQN but I didn't keep using haskell but i did keep using BQN.
ohk
bqn is so weird yet interesting
it did feel very out-of-line compared to other langs, but i've gotten used to it. When you get used to something, it gets a lot less weird, so i don't think it's weird anymore.
Off topic: I'm making an experimental Operating System in C.
this has a "fake" filesystem because it only stores the files in memory and not in the disk
at first it seems wierd to use python for a game engine
but actually all games made by net ease games using their NeoX engine are made with python
such as creative destruction
identity v
many other game engines do to such as panda3d
cool
I was learning OS Dev for making armv5 Os for keypad phones (embedded RTOS), but i just got frustrated by os dev and started learning Emulation instead
https://litengine.org should be 30-50% faster
Lit is a new open-source 3D engine to make your imagination take a breath. Learn more in here!
I do not believe lit can be used as a verb, as it is on the web page.
Lit your ideas with Lit Engine
thanks for the review, I'll check up on that. I'll submit an update by the weekend.
It also doesn't have to be literal 🤣
I will review it with some people in marketing and web design to see what they'll think before making a decision. but if a decision to change the text is made it will only be implemented on the weekend
Cool
Scrolling down the site, I notice multiple potential language issues:
Why did we made Lit Engine?
Should be make. It should be noted that it is uncommon to speak from a we side in the type of professional enterprise-esque marketing you are doing.
To make your imagination breath.
This might hold some meaning in another language, but it is not idiomatic in English.
Write code from the editor and never worry about performance, as our Auto LOD system lifts you. Create stunning cross-platform visuals quickly.
I have never heard a tool lift somebody in a poetical sense.
Download the latest version and follow our Manual to start your journey with Lit Engine.
Manual should not be capitalised as it is not a proper noun.
Breathe would probably fit. It still sounds weird but better
Auto LOD could do the "heavy lifting for you" 🤷♂️
or just "supports" instead of "lifts"
your website has some "performance" issues on Samsung S23. not a big deal but still I wanted to inform you tho
Lol I just tried it. It hurts
ok, I will profile and debug it. seems to be some drawing issues with css
yeah, me too
the update is under deployment with changes to some of those sentences.
the website is more optimized too so it should be quicker. I will test it on my phone when it is deployed.
awesome :)
the website doesn't seem to lag on my end, but some js animations take around 400ms to play
i would love to do that aswell
ive got a keypad phone with armv5
i wanted to emulate the cpu to run the firmware
but hell no it would take years
🤣
I had an hour and a half to work on the material editor and the results look promising
normal map intensity: 0.57 vs 0.9
this happens when I try running the engine or the exported game on windows, could you include the dlls in the download or statically link the libraries?
hi. The in development version uses static libraries to fix this issue. The website version is an older version which doesn't have it. It is recommended to compile from source until a new version is uploaded
I've optimized the rendering system with several improvements. Benchmarks were run locally, so results may vary across systems.
Each test was conducted with all apps closed except VS Code. The CPU frequency was capped at 2GHz, and benchmarks ran for ~20 seconds with a PBR example, recording the average FPS.
Performance Gains:
-- Baseline: 550 FPS
1 Auto-Exposure fully GPU-driven (no CPU usage): +400 FPS
2 Reduced GLSL temp variables & computations: +30 FPS
3 Texture compression: +80 FPS
-- Total Improvement: 550 → 1060 FPS
System Specs:
-- CPU: 11th Gen Intel i7-11370H (8) @ 4.8GHz
-- GPU: NVIDIA GeForce GTX 1650 Mobile / Max-Q
Bottlenecks Fixed:
-- High VRAM consumption (textures)
-- Shader branching
-- Unnecessary synchronization between the GPU and the CPU, stalling the render pipeline
Next Steps:
-- Further memory optimizations
-- Reduce shader branching
The github commit will be submitted shortly.
After finishing the optimizations I will work on the build system as many users have been having difficulties with it.
Can you explain what you did for texture compression?
Ah I see it in the commit. Dxt1
yeah
1070FPS after some small memory optimizations.
1090 FPS after some more intense texture compression
I will now start working on the build system. Many users had trouble downloading the repository, especially on unstable networks. I'm now decreasing .git size from 4GB to hopefully less than 2GB and checking submodules settings
Just a tip, try to measure performance in ms/frame instead of FPS as FPS is a surprisingly bad performance metric
A jump from 500 to 1000 FPS is much less than 2 FPS to 4 FPS
Linux build system fix coming soon
Linux build system for Debian based distributions is now updated and fixed. For other non-Debian/Ubuntu distributions install/install.sh may need to tweaks. This file is responsible for installing some dependencies (such as g++, python3.12, some libraries, etc.) I ask those who use one of the following package managers yum, dnf or pacman to try and build Lit Engine. If any issues arise, the most likely issue to blame is missing libraries that weren't downloaded and installed from the script.
if any issues are found feel free to ping me
I will start working on the Windows build system probably in the summer
Due to some poor design choices, I was including source files instead of just headers, which didn't allow the compiler and linker to do some proper optimizations. In this commit, I mostly reviewed all include directives so that I only include header files. Now source files are compiled in separate. https://github.com/luis605/Lit-Engine/commit/1eeb3b2d3dec3eca392f51f49db49eff4270cc66
I also removed some unnecessary directories which contain many files, that's why I have -27k lines removed.
CI is now implemented
Whatever you have been doing... Everyone needs to understand what amount of work and dedication is involved. I do little games (still @ the try stage), and even that feels like it is something to me. To do an entire Gengine is immense. Kudos. Great work.
Thanks! Even small projects take effort, so keep at it.
Are these AAA graphics?
That looks like stable diffusion to me
idkw but gnome's screen cast is laggy. Here's a small update. Now the police (aka. small cube) follows you when you're near.
Scripts can talk to each other via the event system. When the police entity gets near the player, the player goes flying.
real
Hey everyone!
I'm working on the Material Shader Generator for Lit Engine - the goal is to make it really intuitive and powerful, with node-based Master Materials and customizable Child Materials. I'm at the point where I need to figure out how to best structure materials in the engine, and I’d love your input.
Here are a few things I’m trying to decide:
-> Where and how should Master Materials be stored?
Should they be saved as files (e.g., .mat templates), embedded in scenes, or how?
-> How should inheritance be handled?
What's the best way to link a Child Material to its Master Material, and override values without duplicating the whole node graph?
-> How would you imagine creating a Child Material?
Would it feel better to "instantiate" it from some kind of menu? Or maybe via a right-click option? Or maybe in a new window just for materials, similar to Objects List? What way feels more intuitive? (I'm accepting other ideas too)
-> What kind of UI would be most intuitive?
Should selecting a Master Material happen via a dropdown in the entity inspector? Or something more visual like a drag-and-drop system or preview list? What should the behavior be?
If you've used Unreal’s Material Instances, Unity's Shader Graph, or anything similar — I'd love to hear how you'd approach it or what you liked/didn’t like about those systems. Thanks a ton!
Should Master Materials be named Material Blueprint?
Material Blueprint Extension: .matblueprint
Child Material Extension: .mat
Materials are saved in project/Materials/
Inheritance:
A Child Material or just Material is a lightweight wrapper referencing a Material Blueprint + override table (no node graph copy).
Example of Child Material:
{
"blueprint": "project/Materials/Metal.matblueprint",
"overrides": {
"var1": "#FF0000",
"var2": 0.2
}
}
How do Create a Child Material?
Right-click in Material Blueprint -> "Create Child Material" in the asset explorer.
Materials and Blueprints can only be created inside project/Materials which can't be deleted.
Example of the Desired Workflow:
- Open
project/Materials/in the assets explorer. - Right-click -> "Create Blueprint Material"
- When the blueprint file is selected a new window appears to create the blueprint using nodes. There will be prefabs to choose from.
- Material is automatically saved.
- Right-click "Blueprint Material" -> "Create Child Material"
- Drag Child Material to the entity object in Scene Editor, Objects List, or Entity Inspector
- Edit the values and regenerate the shader in realtime.
Do you agree with this workflow? Are there any issues? Do you think this approach is intuitive?
Do you agree with this material blueprint json design?
{
"name": "Metal",
"graph": {
"nodes": [
{
"id": "1",
"type": "TextureSample",
"position": [100, 200]
},
{
"id": "2",
"type": "Multiply",
"position": [300, 200]
},
{
"id": "3",
"type": "BaseColorOutput",
"position": [500, 200]
}
],
"connections": [
{ "from": "1", "fromSlot": "RGB", "to": "2", "toSlot": "A" },
{ "from": "2", "fromSlot": "Result", "to": "3", "toSlot": "Color" }
]
}
}
C++ scripting is required for this engine?
python scripting is already implemented and it will be enhanced. C++ is also expected to be implemented in this version.
I think a uuid would be better than incrementing strings for IDs
How would it handle multiple input? Or outputs?
currently you can only use multiple outputs, such as a Slider being used in many nodes
since we convert the graph into a tree, each node behaves separately
however, there aren't multiple inputs now because the tree wouldn't work
Work in progress!
Key changes:
-> Implemented UUIDs (Universally Unique Identifiers) for all material nodes
-> Separated materials into Blueprints and Children
-> All materials and nodes are now stored using hash maps
-> Added save/load support for both Blueprints and Children
-> The Node Editor is now a dedicated window
-> The Inspector now exclusively inspects Child Materials
Note: Materials are not currently usable. This commit still requires much more work.
Testing Material Inspector with a new UI choice
what do you think of this table like structure?
The UI is just a prototype and it is not finished. What do you think I can improve in it?
Materials are now usable!
However, there are some limitations:
-> Changes made to a blueprint at runtime will not take effect until the engine is restarted.
-> Materials do not compile automatically on load; manual compilation is required.
-> When a material is compiled, it currently updates the global shader for all entities—meaning the material is applied globally rather than per-entity.
After fixing these limitations, the feature will be manually tested, optimized and reviewed.
I've been working a bit on the website over the last 2 hours. Here are some sneak peeks.
What do you think?
Pretty cool! Do the articles open to their own pages?
each blog page is a separate html page
All of the limitations are now addressed. I will start reviewing the feature.
Materials are reviewed. You can try or review the changes yourself on GitHub.
irradiance + vignette effect
https://litengine.org/blog/ update is live.
no examples yet?
I will make some templates after
Good news. Irradiance is almost working. Now the values (all faces of the irradiance cubemap) are consistence (aka. the faces have low frequency/are blurry) but they are not in the correct position.
I will review it later. As far as I know, bright skybox faces have the correct irradiance values however those that have medium luminosity appear darker than they should
Here are some extra screenshots
Good night. I rewrote most of the PBR shader to produce more realistic and optimized results, with a more readable structure. There's also a BRDF look-up table (LUT) which removes some expensive computations from the PBR shader.
Additionally, a fallback lighting model was implemented and is active for all shader fragments that are 100+ units away from the camera. layouts were also implemented for in/out vars, making the shader's assembly analyzable in renderdoc.
These changes made the whole project render a frame in less than a ms, making the PBR shader bottleneck negligible for simple scenes with few materials.
chromatic aberration
No noise now. SSAO isn't appearing for nearby geometry and there are still many visual artifacts
Simple SSGI (I still have to reduce noise and reimplement AO) but color bleeding is working.
the noise is generated from monte carlo's approach.
I will research importance sampling and other algorithms to fix it.
You could also consider using denoising libraries
yes, but they don't actually fix the issue, they just hide it.
The fact that I'm sampling too many rays is a problem both in terms of performance and visual fidelity
This was running at 50 FPS haha
I'm looking into other implementations like Lumen and getting ideas from them. I can do caching, importance sampling, Hi-Z, cones, etc.
Temporal denoisers which are the algorithms AAA studios use add visual artifacts which is not ideal
hey. I'm exploring a very fast, O(1) per-pixel GI technique that avoids loops in the pixel shader, temporal accumulation (so no ghosting artifacts), and probe volumes, while still supporting fully dynamic scenes. The goal is to get some decent indirect lighting effects like color bleeding and directional ambiance at very high frame rates, even on less powerful hardware.
The Core Idea: Tiled Spherical Harmonics GI
I will first divide the screen into a grid of tiles (say, 32x32 pixels each).
-> Per-Tile "Light Bake" (Compute Shader):
-> For each tile on the screen, we run a quick compute shader.
-> Inside this shader, for each tile, we shoot a very small, fixed number of "mini-rays" (such as, 8-16) from a few sample points within that tile.
-> These "mini-rays" do a simple screen-space check: they basically peek at the depth buffer once or twice to see if they hit anything nearby. If they hit something, they grab its color; otherwise, they might grab a skybox color or irradiance color.
-> All the light information gathered by these mini-rays for a tile is then compressed into a small set of numbers called Spherical Harmonics (SH) coefficients (just 9 floats for 2nd-order SH).
-> This whole process is very cheap because we're only doing a few dozen of these mini-traces per tile, not per pixel.
-> Per-Pixel Lighting (Fragment Shader):
-> Now, when we render each pixel on the screen:
-> It figures out which tile it belongs to.
-> It fetches the 9 SH coefficients for that tile (just 2-3 quick texture lookups).
-> It uses its own surface normal to "evaluate" the SH. This means it consults the SH "light probe" to see how much light it should receive from different directions based on its orientation. This is just a few math operations (9 dot products).
-> This indirect light is then tinted by the pixel's albedo and added to the direct lighting.
Why is this cool?
Fast Pixels: The per-pixel cost is constant and tiny – a couple of texture fetches and a few multiplies/adds. No loops, no complex ray marching in the pixel shader.
Low Memory: We only need to store the SH coefficients for each tile, which is a very small texture.
No Ghosting/Temporal Issues: Everything is calculated fresh each frame.
Dynamic Scenes: Works perfectly with moving objects and lights because the SH bake happens every frame using the current scene's G-Buffer.
Effects: Can provide low-frequency color bleeding and a nice directional ambient term.
Potential Challenges/Trade-offs:
Blockiness: Since all pixels in a tile use the same SH data, there can be visible seams at tile edges. This can be mitigated by interpolating SH data from neighboring tiles (adds a bit to pixel cost but still very fast).
Low-Frequency Detail: SH (especially 2nd order) can only capture smooth, general lighting. Don't expect super sharp indirect shadows from this alone. It's more about broad ambiance and color wash.
"Mini-Ray" Quality: The realism of the GI depends on how well those few "mini-rays" in the compute shader capture the surrounding light.
I'm planning to implement this and see how it turns out. It seems like a promising way to get some GI goodness without breaking the performance bank! Wish me luck! 😅
I'm moving into phase 1: Compute shader.
-> Compute shader: Receives all the correct normal values. Generates a pixelated (tiled) texture with the normal of each pixel - debug/test.
Now I will try to compute the final texture of this stage.
It's dark (I think it is supposed to be dark) but here is the result. A wall that's green and blue
There were several improvements. I'm currently using 11 textures (9 coeffs, color tex and normal tex), which are exceeding the max number of textures I can use, so I will be packing textures together. And for some reason, not all coeffs are being passed into the gpu frag shader. However, I believe that after fixing those issues the algorithm should produce some realistic results.
These are some of the coeffs that were generated for each frame.
yes, but I couldn't get any GI effect besides artifacts
I did git reset --hard but there's a copy of some files somewhere. I can try and give it another try
wow impressive project since 2 years ago nice 👍🏻 👀
maybe some day raytraced audio....
it's on the feature's list
thanks
What is your opinion on current game engines? What problems do they have that you don't like?
Hi. I have national exams in the near future so I'm temporarily uninstalling discord
This is way too relatable
also, I wonder if you could take inspiration from blender's Evee renderer, since it's pretty fast and maybe suitable for games?
Hi. Since it's Friday I decided to reopen discord. I also decided to take an hour to redesign the World Inspector. What do you think?
yeah. 2 more weeks of studying and then I'm done with it
I will take a look into it after the exam
UI looks great!
Finished UI. I will push it to the repo and get back to studying.
This is probably the comment that inspired the default UI theme of the engine. 😅
Alright, I ended my exams! Let's get to work.
Plan: Since I'm a bit tired of working on the graphical side of the app (UI and Rendering), I'll be focusing on the scripting.
I will start working on the entity logic.
Features to implement: Finding all entities with set name. Find entity by id, improve entity creation, add child and remove child
What other features do you think the entity logic script must have?
You can already modify the entity transforms, name, flags and physics
Here is an example code using the functions added to the engine:
MOVE_SPEED = 30.0
CHILD_ENTITY_NAME = "b"
def _manage_children(action_func):
print(f"Finding entities named '{CHILD_ENTITY_NAME}' to {action_func.__name__}...")
for child in filterEntitiesByName(CHILD_ENTITY_NAME):
action_func(child)
def update():
x_axis = IsKeyDown(Key.D) - IsKeyDown(Key.A)
z_axis = IsKeyDown(Key.W) - IsKeyDown(Key.S)
move_direction = Vector3(x_axis, 0, z_axis)
entity.position = entity.position + move_direction * MOVE_SPEED * time.dt
if IsKeyPressed(Key.SPACE):
_manage_children(entity.addChild)
if IsKeyPressed(Key.R):
_manage_children(entity.removeChild)
if IsKeyPressed(Key.N):
print(f"Creating a new entity named '{CHILD_ENTITY_NAME}'...")
Entity(name=CHILD_ENTITY_NAME)
Previously, entities list was directly exposed to the engine via a py::cast - which was immutable and could create segfaults under certain conditions. Instead a new function was added that would return a python list with all entities every time it is called.
Since all entities are stored in a c++ container, if it gets resized (via allocation or deallocation), the references of all Entities could change. Since the keyword "entity" - script's entity - was exposed as py::cast(this), if the container resized, entity would return a null pointer or an invalid address, causing a segfault. To solve this, a new class called EntityHandle was created. It stores the entity's id and contains a function called get that will retrieve, in average scenario O(1), the entity.
Besides those main changes, more functions were created and exposed via pybind's API.
I am trying to build the source code from main branch. when I do the build dependencies.sh I get an error. pls help
Don't worry about build_dependencies
I'm currently exploring a new build system and I moved all dependencies compilation to the cmake side
They will get compiled when you call cmake .. && make
ahh nice
Let me know if it compiles
Also, from what I'm seeing I'm not sure if the git submodules were cloned. Is Include/squish empty?
hmm I think so.
Alright, to clone all the submodules you can run this git command: git submodule update --init --recursive --depth 1
This should shallow clone all the submodules
hmm weird. maybe have to clone the main again ?
This means that those directories are not empty, it's possible that it's just a .git folder that is not listed in ls.
You can either remove the .git directory from those submodules and retry the command, or reclone the engine using the command git clone --recurse-submodules --shallow-submodules -j2 https://github.com/luis605/Lit-Engine
ls
were the submodules cloned?
ya ok I see the steps work
alright. if the engine fails to compile let me know
damn hmm
Alright, raylib failed to compile. I'm using an older version of raylib so the newest may be failing. Let me review it and I'll get back to you.
oh ok thanks
Alright, raylib compiled on my machine and the raylib error is a warning on my machine
I see, so this error will take a while to fix?
no, not at all. There must be some flag I can pass to force the compiler to ignore those issues.
oh I see, thats good
I'm just searching cmake's docs and g++'s help thing to try an find the correct command.
Alright, edit Cmake's line 146 to this:
CUSTOM_CFLAGS+=-DSUPPORT_FILEFORMAT_BMP\ -DSUPPORT_FILEFORMAT_TGA\ -DSUPPORT_FILEFORMAT_JPG\ -DSUPPORT_FILEFORMAT_PSD\ -DSUPPORT_FILEFORMAT_HDR\ -DSUPPORT_FILEFORMAT_PIC\ -DSUPPORT_FILEFORMAT_KTX\ -DSUPPORT_FILEFORMAT_ASTC\ -DSUPPORT_FILEFORMAT_PKM\ -DSUPPORT_FILEFORMAT_PVR\ -DSUPPORT_FILEFORMAT_SVG\ -Wno-error
After editing the line, run cmake .. && make -j4
PS: I edited the line to force the compiler to ignore all possible errors. If you pasted the old line, please update to the new one
@bleak bough
oh which file to edit? I am a noob
mkdir build && cd build && cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. && make -j4
hmm .. not working. maybe because I am use zsh kitty
You ran cmake in the wrong dir. You need to remove CMakeCache.txt cmake_install.cmake and all the other cmake related files from LitEngine/ with the exception of CmakeLists.txt
and then run the cmake in the correct dir (build/)
ahh I see, I am dumb
i don't think so. Do u work with cmake with frequency?
is it compiling?
i think so
good
damn
if it is successful, I will update the readme and that line in the cmake in a new commit
ls
?
hmm you mean in a cmake log file, where would that be ?
no, in the terminal. after you run make and before the end of the execution.
hmm make[2]: *** No rule to make target 'Include/raylib/src/libraylib.a', needed by 'LitEngine'. Stop.
make[1]: *** [CMakeFiles/Makefile2:161: CMakeFiles/LitEngine.dir/all] Error 2
make: *** [Makefile:136: all] Error 2 . not sure error 2?
can you show me what your current directory is and the complete log (in the terminal) of make?
hmm ya I am cmaking in the lit-engine dir. maybe I have to reclone because I don't see anything in build dir
can you jump into Help VC?
ahh to share screen sure
yea
Let me just download discord desktop to enter
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5
-Wno-error=incompatible-pointer-types
(LitEngine:143794): Gtk-WARNING **: 15:27:46.724: gtk_disable_setlocale() must be called before gtk_init()
/usr/include/c++/15.1.1/bits/stl_vector.h:1263: constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator [with _Tp = RenderTexture; _Alloc = std::allocator<RenderTexture>; reference = RenderTexture&; size_type = long unsigned int]: Assertion '__n < this->size()' failed.
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_BUILD_TYPE=Debug
make debug
rlSetUniformSampler(0, downsampledTextures[downsampledTextures.size() - 1].texture.id);
incredible! how much time did you spend on this?
I started developing the engine about two and a half years ago but I didn't develop it full time because of school, so if I had to remove the months I didn't work on it I would probably say 1 year and a half to around 2 years.
Alright, the gizmo is half complete. Scale and Translation Gizmos are fully working. I sill have to reimplement the rotation gizmo, re-add grid snapping and child parenting too.
what ui is that is it custom made or
wait and how does the raw unstyled one look like can you send a photo
because im pretty sure i saw that raw imgui gui in gta 6 leaks and though "this is so cool looking i wonder what gui it is" and i kept searrching for it but no results
yeah, imgui raw style is a dark blue + black color (a bit ugly in my opinion)
idk tho i tried putting imgui into my protype engine and it just throws a bunch of errors at me what do i do to stop imgui from screaming at me
yes
Alright, so rlImGuiSetup does not have any arguments, remove the true statement. Since my rlImGui header contains the boolean, I suppose that you are using an outdated version of rlImGui or a more recent version of that. SetCameraMode is an obsolete function from raylib that does no longer exist - use UpdateCamera(&camera, CAMERA_FREE)
So, I would check the rlimgui version, then look at the header file and see the API. What are the correct function names and arguments?
wait
It's possible that it was updated
a@DESKTOP-M6PSRVE MINGW64 /c/Users/a/Desktop/raylib-5.5_win64_mingw-w64
$ g++ main.c ui.c rlImGui.cpp imgui.cpp imgui_draw.cpp imgui_widgets.cpp imgui_tables.cpp imgui_demo.cpp -Iinclude -Llib -lraylib -lglfw3 -lopengl32 -lgdi32 -lwinmm -std=c++17 -O2 -o game8.exe
main.c: In function 'int main()':
main.c:20:17: error: too many arguments to function 'void rlImGuiSetup()'
20 | rlImGuiSetup(true);
| ~~~~^
In file included from main.c:10:
rlImGui.h:12:6: note: declared here
12 | void rlImGuiSetup(void);
| ^
main.c:30:5: error: 'SetCameraMode' was not declared in this scope; did you mean 'CameraMode'?
30 | SetCameraMode(camera, CAMERA_FREE);
| ^~~~~~~~~~~~~
| CameraMode
main.c:42:21: error: too few arguments to function 'void UpdateCamera(Camera*, int)'
42 | UpdateCamera(&camera);
| ~~~~~~~^
In file included from main.c:3:
include/raylib.h:1233:12: note: declared here
1233 | RLAPI void UpdateCamera(Camera *camera, int mode); // Update camera position for select
ed mode
| ^
main.c:48:9: error: 'rlImGuiBegin' was not declared in this scope; did you mean 'rlImGuiSetup'?
48 | rlImGuiBegin();
| ^~~~~~~~~~~~
| rlImGuiSetup
main.c:52:9: error: 'rlImGuiEnd' was not declared in this scope; did you mean 'rlImGuiRender'?
52 | rlImGuiEnd();
| ^~~~~~~~~~
| rlImGuiRender
a@DESKTOP-M6PSRVE MINGW64 /c/Users/a/Desktop/raylib-5.5_win64_mingw-w64
$
this is the output
What is the header? Send it as a file so that it doesn't fill up the whole chat.
this is basically the source code
but there is more files
that are from imgui
i never used imgui and chatgpt helped me make this
your header file is outdated
https://github.com/raylib-extras/rlImGui/blob/main/rlImGui.h
https://github.com/raylib-extras/rlImGui/blob/main/rlImGui.cpp
https://github.com/raylib-extras/rlImGui/blob/main/rlImGuiColors.h
https://github.com/raylib-extras/rlImGui/blob/main/imgui_impl_raylib.h
[if you need any other files, clone them from this repo]
A Raylib integration with DearImGui. Contribute to raylib-extras/rlImGui development by creating an account on GitHub.
A Raylib integration with DearImGui. Contribute to raylib-extras/rlImGui development by creating an account on GitHub.
A Raylib integration with DearImGui. Contribute to raylib-extras/rlImGui development by creating an account on GitHub.
this is the master mind:
https://chatgpt.com/share/686c50ad-7bf0-800c-b114-cb4299c9f0a2
The gizmo was rewritten. You can check this issue for more information: https://github.com/luis605/Lit-Engine/issues/52. I'm just waiting for the CI pipeline to finish before closing the issue.
I will finish the material system next.
I need your help designing a better experience for Lit Engine's material system. It uses Material Blueprints for reusable logic and Shader Materials as instances where you set the actual textures and values. Which of these management options do you prefer?
Option 1: A dedicated editor showing Shader Materials as live previews nested under their parent Blueprint.
Option 2: Integrate both into the main asset browser, using different icons to tell them apart.
Option 3: A database-style window where you can sort and filter all materials by their parent Blueprint.
Let me know which option you like best, or if you have a completely different idea!
Feel free to ping me if you have any questions.
Please cast your vote. 2 days left.
I think it's difficult to conceptualise precisely how these options would impact usage.
What option should I choose?
7
7
2
Option 2
Website preview.
Yes, I wrote a markdown file to help organize this feature and make it easier to visualize the final product.
This is the order of the feature development:
-> Node Editor (polish and finish)
-> Child Table (finish and polish)
-> Save Load (finish and polish)
-> JSON Files and asset explorer workflow (finish and polish)
-> Icons
-> Drag and Drop (finish and polish)
-> No compilation and compilation (finish and polish)
where i can test that engine?
the engine is available on GitHub https://github.com/luis605/Lit-Engine
thx
cant upload with include dlls?, i need download all missing files
you don't need to download any shared libraries
the app uses static libraries, not dlls
3 errors
game exporter has not been review since the last release because it would have to be updated on every core engine change
it is not expected to work
What do you think of this design?
too too big
i would put the code editor in a separate tab
i wouldnt bother with a code editor at all, just let people code in their own ide
an editor is a whole project of its own, youre better off spending time on the actual engine
thats prolly a better idea
they are all tabs but seamlessly connected. Performance and Code Editors are 2 separated tabs
should Ireduce the scale of everything?
i would replace the code editor and performance with a file manager
make both code editor and performance accessible through like a menu bar at the top
Alright, I will do both designs and I will let you know
The 2 designs
I already had the design for the file explorer but I don't know if I should merge the Asset Explorer with the File Explorer
whats the difference?
In the designs or the explorers?
explorers
One should only have assets and be easier to preview, almost no information about the file so that the thumbnail can use the most amount of space. The other one should have more data but be harder to preview because you can't just see the images or models or materials in the thumbnail.
Now that I think about it, the explorers could be merged and there could be a button to toggle between them.
List vs Grid thing
Alright, I did the toggle thing. What do you think?
i think it works perfect
Those are some great improvements!
Alright, once the pending features are implemented, I will move to the design changes.
this is not the engine, yet. they are just a sketch I made in tailwindcss that are the design goals.
I was wondering that haha. But yeah its definitely a better and unique design
thanks
everything but the current design is better ig haha
I just don't know if ImGui allows for some of the tricks I used. Or at least without running at 10fps
ts was created by ai?
it looks like chatgpt
I'm scratching the old material editor idea as it was too complex for the user. I'm moving to a layered based material editor, like Photoshop.
A material is made with a substrate and multiple layers (layers are like coatings). You start with a base layer, like the fundamental brick or wood of an object. On top of that, you can add more layers like paint then dust and then moss. The main feature of this material system is that these layers aren't just static images. They react to their environment, making a game feel alive. The dust layer might automatically accumulate more in shady corners, or the moss might grow thicker in more occluded areas. When there is rain the brick layer will instantly look wet
This is done with a set of rules. A painter option will allow the user to paint an area that will react to something. For example, you can paint some area with cracks on your model and when the object is close to water, moss will grow out of it.
I think this model, once done, will be easier for the user to understand and use and it isn't something that is used in other engines so it would be a strong feature of the engine
The UI and architecture is built (meaning that the UI is functional, responsive and context aware. I also added Save and Load). I will now build the material graph and implement a new generative shader code which will take some days. With this steps I should have a material and shader functional in a couple of days, maybe a week.
The main change is that this material isn't just a singular substrate material but many materials on layers: https://youtu.be/-SAk33SCVcE?si=YneNmrHVK_xbmgyD&t=126
During its keynote session at GDC 2023, Epic Games shared the first look at Unreal Engine 5.2. Among other new things, the update will bring a new Substrate material system and a bunch of amazing procedural tools. Check these amazing graphics that look like real life!
00:00 Unreal Engine 5.2 Tech Demo GDC 2023
06:23 Sizzle Reel Unreal Engine 5
...
more customisability makes it better! also, the font scaling could be changed in the settings by the user right? the design has definitely improved
It can yes
I'm very late to the party but i only learned about your engine now,
firstly, amazing work ! you have been putting so much effort into it !
Secondly the new UI design looks amazing !
The new design UI is not yet implemented. Its just a concept.
need to give some force from time to time.. 🙂
Youre right. Im in a break for almost a month now
it's sad, but if you need it, take it.. would hate to see you burnout or something..
Small update. When there is rain, the dirt (cube) gets wetter.
You can choose between various presets for materials. You can add various materials as layers (like photoshop). You can compile the material into a shader, add rules to the material and change the environment variables that affect the rules.
Next, I will implement masks/decals, rule painter so that only the painted part of the model gets the effect of a specific layer, mix the generated shader with the PBR pipeline and probes.
neat 🥳
Has the Lit Engine development started to die?
I might be misinterpreting the commits but honestly i really want this project to become more stable
Are you willing to use it for a project and report bugs/issues/suggestions to the author?
I'm feeling demotivated to work on the project and I'm getting bored of coding in general
The lack of PR, issues and suggestions also doesn't help
So at the end of the day my question "Am I doing this for what?". If it is for learning, I have already accomplished it. If it is for a community, what community?
I integrated the material with the pbr shader. The material responds to the environment as expected. When humidity is greater than 0.5, the layer moss appears.
Hey Lixt ! You are using rlmgui for the editor of Lit Engine no ?
yes, imgui with the rlImGui backend
oki, in that case i wanted to ask how have you created this sweet custom titlebar for Lit engine ?
it looks georgeous and i have no idea how you made it 😅
you remove the borders of the raylib window and use imgui to draw a rectangle with all your elements
you create an undecorated window like this:
SetConfigFlags(FLAG_WINDOW_UNDECORATED);
InitWindow(windowWidth, windowHeight, "My Window");
and then, you can use ImGui::BeginMainMenuBar() to create the area for the top bar where you draw your elements
but if you want to look at the source code, you can check the menu bar implementation in Engine/Editor/MenuBar/MenuBar.cpp line 209
yeah i know how to do that 🙂 i'll look at the imgui part 🙂
also i tried building the engine from source today using msvc.. it does not work.. i meant it build succesfuly, but apparently it fails to load a font on launch.. and i cant quiet find where the path is located.. i'm slowly trying to find from the entry point..
the assets path are relative to the executable location
oh.. i get it..
i need to copy the asset folder next to the build i guess
so if your assets are in assets/ and your executable is in build/, you would need to do: ../assets/fonta.tff
there is no post-build step yet, i guess
you can just set the executable working dir to ../
so that the executable is in build/ but it thinks it is in ../
Building a community means marketing the product. I think the main issue you have is that you are "marketing" in a "channel" that most users are either, students or bootstrapers(make from scratch). To aim for the type of users you probably want, it's probably better to do reddit post's or find communities that don't want to start from scratch. Also, one of my main gripe's(personally) is the lack of projects(medium to big) showcasing the engine. How can we know that it can be used for that ? Have you battle tested it ? The question you need to answer is: "why would my potential user invest time to learn this engine in opposition to others, what's the selling point ?". Is it faster ? Is it simpler ? If the selling point is simply, "made with raylib" I think it's hard to view it as valuable. BTW, this project is really interesting, just spit balling the "marketing" or value proposition.
You say on your website that it's easy to use, how ? Have you made gamejam games with ease and fast ? What of the engine makes it more easy to use versus others. Usually, I think it's better to show not tell.
I like the initiative on this (I popped out of nowhere, I know). I think a selling point for a game engine is clear documentation and avoiding API breaking as much as possible when you update or add new features. People like myself are interested in this kind of stability.
I see your point. There are still a lot of features and work to do in this current release and the amount of work is creating friction to me. Should I market the product in a way to create a community that wants to contribute to the development of the engine or as a product for release and use?
Another thing, polished but less features are better than more buggy features that people will most likely drop to roll their own. That's something a lot of people hate on Unity - bloated with a lot of stuff like having 3 ways of doing the same thing and community made solutions are often better but you'll still have to pack your game with that bloat.
That's one of the design goals. Many features increase the learning curve which goes against one of the problems I'm trying to solve.
Having a minimal yet powerful engine.
I feel you should aim for a niche and focus the features for that niche. What "engine" users do you want to target ? Which one has less demands and get's asked a lot of $ by their current engine provider ?
I feel supporting multiple scripting runtimes is a rabbithole you shouldn't support(if you try to focus) but enable the eventual community handle it. Basically, making it easy for others to implement it.
I'm thinking of compiling python to get a similar performance to C++. This would make the python bottleneck smaller because it calls C++ engine functions and the python logic is also compiled
Who are you aiming to convince with python ? B3D users ? Godot user's ? What's the payoff of optimizing with python versus others.
indie devs up to AA studios, but I think supporting both languages is good for all preferences
I just don't know if having 2 languages will create a problem for beginners
Be more precise, who do you see having pain with their current offering ? What is their current pain and how does lit solve it ? BTW, if you would like that I stop, just tell me, trying to help but I maybe annoying also 😅
no, not at all
The current pain: Bloated interfaces, slow development, too many features too learn, horrible performance (aka. unreal), unintuitiveness, big learning curves
How lit solves them: Minimal interfaces, less features (if you need a feature that is not built in you can install a plugin), minimal codebase makes the engine faster and allows for faster development (no waiting 6 seconds for a unity script to compile, for example), focus on intuitivity
Current engine issues: Half complete features, not polished, missing critical features
Yes and yes and oh my God you are so right.
People seem to like Defold but I don't find it powerful. Unity is a total mess of unfinished features. Truth to be told, I can't believe so many people enjoyed using it - leading me to the conclusion that it was the only accessible option for indies at the time and gained momentum. When it comes to Unreal I don't think there's any small developer team that can compete with their improvements but at the same time I heard Unreal Engine 5 is much harder to optimize than Unreal Engine 4 and not all games need RT and fancy graphics. Godot seems the only good choice lately for indies. But I think lately it started to lose focus. Lacks direction and Godot 4 is still reported to have a buggy editor. IMO, the editor should be an editor, it should never ever hide paths or data flow (for example, inbuilt signals are a bad big no no idea - when I use Godot I prefer to connect signals via code).
so true
Ok, the main issues I see is, you need to show these. Never do we see the plugin system in action, maybe a gif with a visual example could be good(e.g. a plugin that easily enables terrain creation). Also, C# is way more popular with the type of users your aiming for and with AOT compiled C# it completely removes the optimising burden on you.
i do agree for signals in godot, at first i was like "this is awesome to integrate the text editor in the engine editor like this !
then i realised it was not linking via script and i was like "oh.. this is bad" i love editor linking for signals.. it's just that it should automate linking via script on_ready or something..
While it's cool having an internal code editor, you can easily remove that burden also because it's a rabbit hole and most users like using their own editor
i dont agree. i love godot in-engine code editor, and i love the way it is integrated with the rest of the editor (node path drag and drop.. etc..)
oh you changed..
having an code editor in the engine's editor is good because it reduces the need to change windows every time you want to change something. But it also does not change the fact that you can use an external editor if you want
It just makes the workflow easier for some people
I agree it can be a good feature, but Lixt is alone here, the more he focuses on things his specific user base would like, the better, imo.
he dont need to update it.. just to keep it.. even if it's unstable, just dont show it by default..
it's a win-win, if people dont care about it, dont need to work on it
My main point is that it's a costly feature.
if they think it's important.. then that could be a priority feature
no, it's just an ImGui plugin with some modifications
it's curently functional.. he dont need to work on it..
i just see no point in removing his work
Ok, if it's a plugin, in that case, maybe make it community based. When you have a code editor, users will expect, linting, debugging, easy editing, macros, etc.
that's also a good idea. Like a default plugin that you can enable, maybe
The features that are a pain for me to work on are the material system, GI, and the plugin system
The plugin system is probably the most valuable since it should add easy extension of the engine.
Who is the material system for ? What do you want to achieve with it ?
and they are a pain because they have many smaller features that are difficult and time consuming. The material system will have to detect luminosity on each point in an optimized way, generate shaders (which is done), and do lots of different other things. The GI will just be diffuse lighting because specular is really expensive and requires raytracing but it's a lot of GPU shaders and CPU-GPU operations and the plugin system will have to connect to every component of the engine (including runtime) in a way that doesn't allow hackers to exploit it.
The material system is one of the selling points. Basically, when you want to create a detailed material in Unity or Unreal you have to create a material by using nodes and create your math operations. The idea for this material editor is to have a photoshop like system. You have a material library with many types of materials and you can add layers to your objects in an environment-responsive way. For example, when it is raining, clothes and rocks become darker, if you're driving a car in the middle of the desert then you car must become dusty, if the humidity is high and the light is dim you may want to add moss to a tree
This allows everyone to create AAA quality materials with ease and speed
Yes. Godot's internal editor is a plus compared to Unity for which you have to open VSC. It's just ... not cool IMO to alt+tab always.
But Godot's editor should be that, only an editor, it shouldn't be responsible for game logic or linking stuff in the project. Personally, having config files for nodes or the overall project would've been cool. I mean, they probably exist somewhere but it'd been cool if those were exposed.
yeah i get what you mean.. as i said, i like the interactivity with the godot editor, like signals and node path drag'ndrop but it should only be a form of "code generation" (like linking your signal by code on_ready automaticaly) not for other purposes..
Material system:
-> Editor
-> Generator
-> Rules
-> Library
-> LOD
Priorities by each sub-system:
Editor:
- 10/10 Functional UI (done)
- 1/10 Looks
Generator:
- 10/10 Code snippet generation (done)
- 10/10 Code injection (done)
- 4/10 Multiple shaders for LOD
Rules:
- 10/10 Update material appearance via global environment variable (done)
- 9/10 Mask
Library:
- 10/10 Multiple sample material layers (done)
- 8/10 Support for custom shader logic
- 7/10 Support for custom layer types
LOD:
- 2/10 Choose the correct shader based on distance or importance
What to do, in order of importance:
Mask -> Support for custom shader logic -> Support for custom layer types -> Multiple shaders for LOD -> Choose the correct shader for LOD based on specific criterias -> Looks
A roadmap for the subsystem for material
yeay 🥳
I think using python for game dev is a good idea, even if some others disagree. And yes, compiling will probably reduce the bottleneck and improve performance in the long run. I've tried compiling python code before so I can tell you a few options:
- PyPy: basically a different implementation/runtime for python, uses JIT, newer python versions are slowly adding performance improvement features from pypy to cpython (I think). Does not compile to machine code but still faster than python.
- Numba: should improve the performance of numerical operations by compiling them. Supports numpy but probably won't speedup graphics lib calls.
- Cython: Compiles python to C or C++ (configurable). Add static typing (with pythonic type hinting or c-like typing in python/pyx files) and cython will compile it into optimized C/C++ code. The generated code and shared library still uses Python.h but still much faster, approaching speed of C. Seamless interoperability with C and C++, should reduce the pain of moving between C++ and python.
bonus mention:
Codon (by exaloop) is a different programming language but it also markets itself as a high performance implementation of a subset of python (most features, not all, are available). It can apparently compile and optimize for both CPU and GPU bound tasks.
there's also mojo but meh, it's designed for ai
so Cython is the best option?
Personally i don't like python, but i don't mind it as a scripting language the moment it is not murdering performances..
if using Cython, does it mean there will be support for C++ scripting "out of the box" since as i understand it, it compiles to native C++ code, that you will need to load as dll's or something, so you will some sort of scripting system for C++ for it to work?
(I don't really know i'm throwing that here) 😅
maybe, I still have to research but it is possible that it can mame C++ prototyping faster
Why not lua? 😉
he already have python working, so idk if it will be worth.. also there is already so much engines packing lua.. idk..
there is already so much engines packing lua
That's not a reason to skip it 🤔
If anything that's a reason to consider it
If anyone wants to code in lua, they can add a plugin. Lua can have simple syntax but it lacks many features and it's a pain to implement in C++ because of the lack many data structures.
The only advantage I see in using Lua instead of Python might be performance, but it can quickly be discarded when you compile python to machine code
angel script is good option and is like c++
if Cython can translate python into c++, then I will use Cflat because it should be compatible out of the box
yeah Its can and cpython is good
Im feeling unmotivated to work on Lit Engine. I will take a pause (probably some months) to focus on other projects and school and then I may restart development later.
ofc, if you want to contribute you can try, test, add features and improve the codebase and if you send a PR I will review it and probably merge it
to allow this, I will merge the unfinished changes of the material editor to the main branch.
I pushed the new incomplete material editor implementation in case you want to take a look
[PAUSED] Lit Engine - A High-Level Game Engine Prototype
are you stoped engine dev
Yes. I'm feeling frustrated for working on the project so the best thing right now is to pause for some months or years until I feel like working on it again. The engine is a lot of work and I'm feeling exhausted.
@wintry spear you have made great accomplishments and learned a lot in the process! don't feel frustrated! just take your time to relax and try other projects! 👍🙂
thank you ray ❤️
wow
For some reason all of the videos in this thread look like that for me on mobile:
your device probably doesnt support the encoding in discord. its common to see that
damn
me too
Hi. I've been thinking for a while and I came to the conclusion that I will end this project. I have learned a lot with Lit during the past 3 years and I concluded that while this has been a great opportunity for me, the project is not scalable.
I did many design errors during the development such as mixing the engine and the editor and I'm pretty sure that with my current knowledge I could build a better engine in less than 3 months.
I want to thank everyone and each of you for the support you've given me during the last few years as it really gave me motivation, allowing me to continue working on the engine/editor and self-improving for so long.
[NO FUTURE DEVELOPMENT] Lit Engine - A High-Level Game Engine Prototype
If, in the future, I build a new engine, I will probably call it Lit because I already bought a domain and a website.
But I'm not sure if I will advertise it here because I want to dive a bit into vulkan and low-level programming, which raylib is not entirely built for.
I have started experimenting with something and the new repository is https://github.com/luis605/Lit-Engine. The old repo (the raylib one) was renamed but still accessible at https://github.com/luis605/Lit-Engine-old.
Thank you @lost jolt for developing such an amazing framework ❤️
Thanks! Glad raylib helped you in your journey! 👍😄
still, please keep a little update or something ! i want to follow where this goes 🙂
Alright, I'll do of ray doesn't mind
sure! feel free!
I want to have great versatility and performance so I am using AAA-inspired techniques to automatically batch or instance meshes together, and to skip meshes via frustum culling and occlusion culling. I also plan to support automatic LOD in this renderer. This is all done on the GPU for maximum performance. This makes it very easy for developers to use the engine because they don't need to handle any of this. Everything is done automatically with minimal overhead.
Going a bit more in depth, the renderer, instead of using deep object trees, it stores all scene data (like positions, meshes, and materials) in flat arrays, so the CPU and GPU can process them quickly without having issues like branching, random memory accesses or cache misses. When loading models for the first time, they’re converted into a GPU-ready format for faster loading later, then on the following disk loads, I can just dump the data on the system memory without pre processing. Each frame, the CPU first updates all object positions matrixes (the slowest part of the algorithm), if needed, using a simple, ordered list. Then the GPU handles most of the heavy work. it figures out which solid objects are visible and draws them in large groups (batches or instances) for speed, and then it processes transparent ones like glass by sorting and drawing them in the right order. The plan is split into versions that gradually add features, starting from a single rendered object, then adding animation, lighting, shadows, post-processing effects, and eventually a complete render engine. The first design of the renderer is present in here: https://github.com/luis605/Lit-Engine/blob/main/src/Engine/Render/DESIGN.md
I'm currently implementing the V0.2 of the renderer.
I think transparency is working correctly. I'm rendering 50k objects with great performance
The main bottleneck would be transparency sorting and maybe transform updates for the moving objects.
50% of all objects are transparent which means the GPU would have to sort 25k objects each frame. 50% of all objects are also dynamic, which means I would also have to do matrix operations for 25k moving objects.
Lit Engine - Legacy (raylib) & Reboot (glfw)
Here is a small video and a picture of the rendering engine. I did many optimizations including triple buffering and moving the transform computation to the gpu. I'm currently drawing 50k objects using around 6-11ms when not recording and 9-15ms when recording. At 500k objects, I spend around 40ms (39,9ms from the opaque draw - painting) per frame which is a bit too much but the performance does not change when updating the transform of all objects which indicates the matrix computation from updating the transforms does not impact the renderer and it can possibly scale to millions of moving entities. I'm confident that after implementing occlusion culling, z-pre pass and other techniques to minimize overdraw, I can get stable 200 FPS with a dynamic scene with over a million meshes.
Also, CPU usage, as expected, is near 0.
Idk why but I'm using intel's integrated graphics card instead of nvidia's for rendering. is there a way to force wayland to use nvidia's for my app on ubuntu?
WOW, is this using differed or forward rendering ?
forward
Looks amazing!
man.. there is a world in which i steal your engine rendering code for a personal project XD, it looks awesome
something wrong is not right
ahaha sure is
Does this game engine support DirectX10.1 (or below) and OpenGL 3.3 (or below) ?
It's not really a pain to implement in C++ in my opinion, you could go with a modified LuaJIT and implement that as your game engine's coding language
Wait your engine supports plugins, and people can make a custom programming language for your engine as a plugin?
im moving the renderer of the new engine to diligent and it supports Vulkan, OpenGL4, DX11 and DX12.
Well my computer only supports up to opengl 3.3, i dont think it will work with DirectX 11 or OpenGL 4
However your engine looks great
Has potential
plugins were only in the old engine. the new engine is just a renderer
Oh
But what do you mean by just a renderer?
Can you still make games in it
for the old engine I used raylib and it suited me well to learn the basics quick. You can make simple games in the old engine but they won't scale, they will be buggy, and the engine was hard to maintain due to poor (beginner) design choices.
so I started building one from scratch
and for now it's just a high performance renderer
Well that's just kind of normal
i assume you have switched to just C++ with OpenGL or DirectX
basically, draw objects to the screen
like most game engines
millions of them
Yeah i know, but a renderer that uses DirectX or OpenGL (preestablished graphics renderers) not a custom one?
opengl and others are just apis to communicate with thr gpu. if i built one myself most gpus wouldn't support it and it would be not ideal.
Oh okay
whats your plan with lit engine in the big 2026?
nothing, development stopped
can i help
no
can i add you
no
dude, you harassed, stalked and threatened me, so I would prefer you didn't contact me. You are already blocked, please go away.
Hey man, how is it going?
Last time I checked was 2 years ago?
And im so happy for seeing it still active
its not. i stopped it permanently in november
Oh, what happened?
Oh man, that sucks. But if this is the best choice for you, I’m still really happy to see how far it’s come!
I spent 4 years in this project and its time to move on into something more meaningful
Yeah true, if you dont have a specific goal then it's going to eat your time