#Iris - A Journey through OpenGL and beyond to learn Graphics

1 messages Β· Page 16 of 1

wheat haven
#

ah that makes sense, I forgot that was a toggle

#

(also rendering all the CSMs onto a single image is interesting, I wonder if that's better than layered)

wispy spear
#

hehe i saw that in acerola's latest video today too

#

perfect tringlemeshlets πŸ˜„

#

black overlay is the input mesh

wheat haven
#

tringles made of tringles made of tringles made of...

wicked notch
#

it's the ideal case for a clusterizer as well

primal shadow
#

@wicked notch how do you do hierchal culling? Can you just spawn 1 thread per meshlet (for a flat list of all meshlets for all LOD levels) and then just early-out if the meshlet is the wrong LOD?

#

Or should I look into how nanite does persistent queue schenanigans

wicked notch
#

that's classified info

#

jk, I don't yet do any runtime nanite culling or lod selection

#

I was planning to go straight for a persistent threads approach

primal shadow
#

Mhm ok

wicked notch
#

ight 2/4 exams

#

god help me with the last two

wispy spear
#

🀞

frank sail
#

inshallah

wicked notch
#

jaker I did not wake up to news

#

did you forgor

frank sail
#

I got stuck in traffic

#

um

#

all day

wicked notch
#

damn

frank sail
#

!remindme 14 hours aaa

vivid boughBOT
#

Alright gpgpu, I'll remind you about aaa in 14 hours. ID: 64927986

wispy spear
#

Keenans videos are so cool, but i dont understand any of it

#

watching all of his stuff since i sent you the intrinsic tringleations thingy

#

mathematicans are crazy people

#

manifolds and whatnot : >

wicked notch
#

real

#

I've subscribed to that channel

#

wtf does unity's GetComponent even refer to

#

how do I draw 3 vertices

#

I want to draw a tringle

wispy spear
wicked notch
#

I have no clue

#

I am inside a C# script

#

when I do GetComponent<Something>() where am I getting the component from

wispy spear
#

scripts are like components itself

wheat haven
#

the object the script is running on

wispy spear
#

from the object the script is attached to

wheat haven
#

scripts are components on objects too πŸ˜„

wicked notch
#

the script is currently nowhere

wheat haven
#

then it doesn't run

wicked notch
#

I guess I have to put it on the camera if I want it to draw a fullscreen triangle?

wispy spear
#

perhaps, ye

#

iirc unity has builtins for drawing a full screen tringle

wicked notch
wheat haven
#

why what

wicked notch
#

it be printing (object)

#
Debug.Log("test");```This should be valid usage?
#

I looked at docs

wheat haven
#

what about the part where it says "test"

wicked notch
#

I tunnel visioned hard

#

I literally couldn't see it KEKW

#

ok now I gotta draw the tringle

wispy spear
#

why the unity excursion though?

#

did i miss something?

#

or is that for skewl?

wicked notch
#

all the ECS talk in #engine-dev reminded me that I should be building an engine

#

and so I thought of doing a little espionage mission on Unity

wispy spear
#

ah

wicked notch
#

Unreal is too bloated and clamplicated and frankly ugly KEKW

wispy spear
#

: D

#

Project Ü

wheat haven
#

unreal's ECS also feels weird to me

wispy spear
#

BBK's post in wip about sharpgltf (also what i use btw) reminds me that i need to do all those things he does too, but atm im completely sucked dry when it comes to any GP, 0 motivation

wicked notch
#

man engines are conchfusing tho

#

wtf is this shit

#

do gamedevs have to go through this

wispy spear
#

"game devs"

wheat haven
#

I honestly don't know how AAA studios deal with this stuff

#

I should look it up one day

wicked notch
#

how do I get a specific component

#
Shader "Unlit/RayTraceShader"
{
    Properties
    {
    }

    SubShader
    {
        Cull Off ZWrite Off ZTest Off

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            float2 vert(uint vertexIndex : SV_VertexID)
            {
                return float2();
            }

            fixed4 frag(float2 i_uv) : SV_Target
            {
                return fixed4(0.0);
            }
            ENDCG
        }
    }
}
``` How did any human on this planet think this was good
glass sphinx
#

lmao

#

i hate reading unity shaders

#

wait is this even unity

wicked notch
#

yeah

#

this is absolute dogshit

#

and I already trimmed all the useless shit that was in there

#

there was some kind of fog calculation in there

#

why would you put that in a default "unlit" shader

glass sphinx
#

within shaders

wicked notch
#

yeah those are good

#

maybe in a slightly more structured way though

glass sphinx
#

but the rest

#

is uuuh

#

unity is very special

#

no bindless loser engine

wicked notch
#

I am on a quest

glass sphinx
#

cod engine would be 100% bindless if we didnt have low spec popoo device support

wicked notch
#

I will make a purely bindless engine

#

cod powered by daxa when

glass sphinx
#

im always shilling daxaisms internally

#

when we ditch non bindless hw i will do crazy overtime to rip out non bindless

#

(I hope my boss reads this so hes inclined to ditch that hw)

wicked notch
#

motivated

#

holy shit

#

_MainTexture("Texture", 2D) = "white" {}

glass sphinx
#

yea its ultra sad

wicked notch
#

this is painful

glass sphinx
#

their binding model is worse then OpenGL

#

btw thats one of the biggest ups of custom in house engines

#

you can just break anything at any time, move forward

#

this way you dont get stuck with garbage like unity and unreal

#

tho unreal is better at this i guess

wicked notch
#

how do I even use this shader I made

#

I can't add it as a component

wispy spear
#

GetComponent<TypeOfComponent>()

wicked notch
#

we did it

#

creating a shader to draw UVs has never been more complicated

#

I could've done this 50 times over in Retina

twin musk
#

the slightly nicer way to do it is to make a .cginc file and write your actual shader code in there, then include that in the shader file with defines and such

wicked notch
#

Properties {} and SubShader {} piss me off so much though

twin musk
#

lol they're quite reasonable though

#

properties is nice because you basically get uniforms exposed in the inspector which you can tweak and set per material along with markup to show stuff like range sliders and set default textures

#

subshaders are a bit less relevant now though, they used to be so you could have different shaders for different platforms/quality settings/gpu support but now that's generally just controlled with shader features and such

wicked notch
#

maybe properties could be used as a sort of push constant

wheat haven
#

I mean they kind of are

#

properties is basically uniforms, push constants, and descriptors rolled into one

wicked notch
#

I shall only allow push const

wheat haven
#

I mean it's also where you're going to get textures

twin musk
#

ye it all hides stuff behind your back, so on d3d11/12 it's cbuffers, vulkan/gl it's ubos, etc

#

i don't think they expose push constants or anything

#

they don't really care about vulkan on pc

wicked notch
#

yeah this is purely what I'm gonna do in my own thing

wheat haven
#

yeah I don't think you get the choice to use push constants

#

it's abstracted

wicked notch
#

you only get to send IDs to them shaders

#

too few IDs? make a buffer with more IDs (and pass it as an ID too KEKW)

#

I think this can be very nicely abstracted too

#

in the editor you can still just drag and drop the texture on the shader

#

now it's an ID though and the usage is much better on the shader side

wheat haven
#

unless I'm mistaken it's pretty similar here in unity

wicked notch
#

it is but you have to declare each thing

wheat haven
#

other than the fact you can't have a buffer of IDs

wicked notch
#

maybe declaring each thing is better? idk

wheat haven
#

idk if storage buffers exist at all in unity shaders πŸ€”

wicked notch
#

everything's pink now

#

glorious

twin musk
#

if you're targeting d3d12 I think you can even get it to just pass your hlsl to dxc

wicked notch
#

how can I run a script after another

#

actually nay, how can I run a script? kekkedsadge

#

like, without adding it to something (camera or anything)

wheat haven
#

you don't

#

scripts only exist on objects

wicked notch
#

is the screen an object

#

but that doesn't even make sense, I just want to run a shader on a texture

#

what "object" do I need here

#

ok I can create an empty game object I guess

#

I am so angry

#

why

#

if I change the material here

#

it doesn't apply here too

glass sphinx
#

unity bad

wicked notch
#

the tonemap pass also runs before the raytracing one after I explicitly specified execution order

#

this is so good

#

I should stop

#

before I show up at unity's HQ

distant lodge
#

commercial engines fill you with the motivation to NIH

#

that's their job

wheat haven
wicked notch
#

why not default to whatever the material component has set

wheat haven
#

you didn't show the material props in either of those, I dunno how that works

wicked notch
#

sorry I meant the script

wicked notch
#

I was then bamboozled by the fact that I have to configure the script one more time

wheat haven
#

if I understand it correctly, the configuration you do there should apply if the actual script doesn't set any of the properties

wheat haven
wicked notch
#

perchance

#

back to one of my other πŸ…±οΈroblems tho

#

if I have two scripts

#

I want to select only one of them in C# to set some properties

#

how do I do that

#

source in OnRenderImage god only knows what it refers to

wheat haven
#

I believe you can fetch scripts by the name of the class? e.g. GetComponent<MyScriptA>()

wicked notch
#

that do make sense

#

we did the thing

glass sphinx
#

@wicked notch does your triangle ids within the visbuffer have index meshlet draw + triangle index in 32 bits or is it 64 bit and also contains entity indey and mesh index?

primal shadow
#

Not LVSTRI, but mine has instanced meshlet ID + triangle index in 32 bits

wicked notch
#

the 64 bit version had depth too

frank sail
#

your code on gh does something that appears to be wrong so I'll just assume that the code in discord is the latest
return texelFetch(image, min(position, textureSize(image, 0)), 0).x;

wicked notch
#

there should be a minus 1 innit

#

oh yeah it's definitely wrong on gh bleakekw

frank sail
#

yuh clearly you knew at some point though lol

#

just making sure you didn't update it to the wrong thing KEKW

delicate rain
#

Ah yes the discord versioning system

frank sail
#

welp, frogfood is kinda broken in renderdoc but it appears that your change "works" lvstri

#

I say that because everything renders correctly with these
imageStore(hzb, destPosition, vec4(depth-1));
imageStore(hzb, destPosition, vec4(depth+1));

#

so I'm guessing culling is broken somehow

#

but the system for testing culling is also broken bleakekw

wicked notch
#

what does one do when the medic needs a medic

frank sail
#

ah it starts to break if I do depth+100

#

oh no depth+1 is broken, I'm just blind didnotread

wicked notch
#

ye I was about to say KEKW

#

depth+1 is very brokey

frank sail
#

anyways I guess issues will only show up if you have pixel-sized meshlets

#

my scenes aren't good enough for testing

#

I tried going really far away from new sponza and it seemed to render fine

#

but all the meshlets will have been really similar in depth still

#

I'm gonna schlep now, gn

wicked notch
#

more depth discrepancy shall be acquired

#

gn frog

glass sphinx
#

how do you size the meshlet instances buffer

wicked notch
#

it's the same size as all nodes in the scene

#

where node = gltf node

glass sphinx
#

uuh

#

isn't that too small

#

to clarify is it really just node count or the worst case count if you were to draw all meshlets of all entities

wicked notch
#

it's just the node count because I don't expect the scene to change right now

#

it's a read only buffer

glass sphinx
#

but a single node can have thousands of meshlets

#

if you have one node with a single mesh you can only draw a single meshlet

wicked notch
#

it's a weird and experimental (offset, count) system that I sort and search through

#

the old system was that you have many meshlet instances, typically more than meshlet count

glass sphinx
#

i dont understand

wispy spear
#

when lvstri says he needs to write exams... secretly helping opi in the shop

#

The popular pizzeria "Ivo a Trastevere" is located in Trastevere, Rome. Every day it is packed with locals and tourists. If you want to go there, I recommend you to go early on a weekday evening.
The pizza master there, Francesco, has been a pizzaiolo for 60 years! Enjoy watching them work energetically and happily.

πŸ• Ivo a Trastevere
πŸ“ Locatio...

β–Ά Play video
glass sphinx
wicked notch
#

yeah that's how I originally did it

#

I also reverted the changes so pretend I never said that KEKW

glass sphinx
#

what do you do now?

#

i simply have a may

#

max

#

if its exceeded meshlets get dropped

wheat haven
#

I also have a max, but I think if it exceeds that things just break horribly

wicked notch
#

I don't have a max but I should add one

wicked notch
#

back to unity fun

#

I have just now realized that the graphics.blit is wrong

#

again

#

it first takes the camera's image (RGBA16F) and then blits to a random RGBA8_UNORM image

#

then in the second pass, it goes from RGBA8_UNORM to RGBA8_UNORM, so I guess that's the default?

#

but if I specify a render texture myself, I get "No cameras rendering"

#

which is all very fun and intuitive

wispy spear
#

sorry for the constant ot talk but

#

i also picture LVSTRI whenever he talks, with the voice of Civvie

#

no idea why, but its what its

wicked notch
wicked notch
#

nope can't figure this out

#

am I this dumb

wispy spear
#

im not worried, the solution will come sooner or later πŸ™‚ usually after you schlepped

wicked notch
#

"use a second camera that draws nothing but renders to screen"

wheat haven
#

#justunitythings

wicked notch
#

it doesn't fucking work either

#

it's literally doing random draws
?????????????????

#

First it tonemaps, then it draws the main image, then it does it again to the main camera's temporary buffer then it draws nothing to the secondary camera, draws MORE nothingness to the secondary camera and copies this to the swapchain

#

I gotta send this capture

finite quartz
#

Why do you need to suffer with Unity ?

wicked notch
#

I'm trying to learn what a game engine actually is so that I can build my own

#

(I have never written a game in my life)

finite quartz
#

I see, then it's a good idea to look at Unity and then do the exact opposite

wicked notch
#

that is exactly my plan KEKW

finite quartz
#

carry on

wheat haven
#

I mean to be fair, if you're trying to see how Unity works, this is very much not a normal situation or how the engine is meant to be used

wicked notch
#

I'm looking at their public rendering API but yeah that's fair

#

at this point I think it's not fruitful to look any longer and just do my own thing to be honest..

#

this is beyond horrible

wispy spear
#

if i had money, and this was some cock fight, and lvstri was a cock πŸ˜„ id put my money on him, with all this gp nonsense he be doing

#

me petting my cock

wheat haven
#

the unfortunate part about looking at the existing game engines is that they have decades of cruft and backwards compatibility

wispy spear
#

ye

#

you even get that cruft in any handwoven engine

#

there is always some static/friend which has access to everything

#

when it started out as "this will be all modular" or whatever πŸ˜„

#

clean code and whatnot

wicked notch
#

very useful unity, thank you

wispy spear
#

it shows you how big they are : )

#

1MB, 128KB, not bad

wicked notch
#

nah this is epic

#

me: pls don't clear it
unity: ok (he's clueless lmao)

#

I think I did figure out Unity's ridiculous logic when it comes to this

#

I am supposed to make empty objects that are children to some camera

distant lodge
#

hierarchy based association logic 😍

wicked notch
#

the last thing I have to figure out is how in god's name I am supposed to blit to the camera

#
private void OnRenderImage(RenderTexture _, RenderTexture __)
{
    Graphics.Blit(SourceTexture, (RenderTexture)null);
}``` mhm
#

super clear

wispy spear
#

yeah emptys are a thing

#

in any game engine

wicked notch
#

only if you want it

#

it could've been so easy to do Graphics.BlitToScreen(source)

wispy spear
#

yea

wicked notch
#

this is clear abuse of function overloading

wispy spear
#

or have the camera do it directly

wicked notch
#

now I get this

#

which is still pure insanity

#

but at least there's order within chaos

#
  1. RT shader
  2. Tonemap
  3. random draw number 1 for some reason
  4. random draw number 2
  5. random draw number 3 KEKW
  6. draw to swapchain
faint crane
#

Are these random draws at full size?

wicked notch
#

these are all fullscreen draws yea

faint crane
#

That's like the Unity equivalent to slowDownAndWasteMemory.

wicked notch
#

btw whatever the hell unity is doing with colorspaces, it's wrong

#

first is my current renderer, second is unity

wispy spear
#

it probably doesnt know that you output UVs πŸ˜›

wicked notch
#

but I am explicitly disabling automatic sRGB conversion

wispy spear
#

oh

wicked notch
#

maybe I need to disable it some more

wispy spear
wicked notch
#

hidden settings as usual

#

Note that the ability to turn off sRGB writes is not supported on all platforms (typically mobile "tile based" GPUs can not do it), so this is considered a "feature of last resort". Usually it is better to create RenderTextures with appropriate color space flag (linear vs sRGB) and not switch the conversions in the middle of rendering into it.

#

gee unity, I wonder why I'm using this "last resort" did you think about that?

#

who knows really

#

it couldn't be that your shit is completely broken

wicked notch
#

day 3 of unity, still getting unreasonably angry at this

#

renderdoc is just crashing now

#

so unity must be doing some megacursed shit

delicate rain
#

What is the quest you are pursuing with unity?

wicked notch
#

understanding how an engine works

#

and then doing the exact opposite of what unity does because it is truly the most unintuitive experience possible

delicate rain
#

Hmm hmm I see, it is good to know what not to do yeah

wicked notch
#

now I'm getting stuff that is wrong on my screen but correct in renderdoc KEKW

delicate rain
#

I usually have the opposite this is very sus

primal shadow
#

Try Bevy πŸ™‚

faint crane
wicked notch
#

does it even have an ECS based system, the espionage mission with unity was mainly about learning what the hell entities/components are

#

I have 3 goals:

  • Learning what an ECS is and how it's used in a real engine;
  • Learn what an engine actually is and how it enables devs to make games;
  • lose sanity
delicate rain
#

Reminds me that I still want to read game engine architecture

#

I really should get back into nightly reading

wicked notch
#

ah yeah

#

that too

#

I should also look at elias' engine as well

#

that'll come after the unity missionℒ️

delicate rain
#

What is Elias' engine?

primal shadow
wicked notch
#

I don't know rust

#

perhaps I could steal some concepts

primal shadow
#

That's fair. Bevy dosent require a ton of rust knowledge, but if you want to read the engine internals that might get tricky.

#

Lots of type magic in the ECS library itself, but using the ECS library sidesteps out the lifetime stuff that makes rust tricky to most people

#

Up to you, happy to help if you want to try it

wicked notch
#

I'm not interested in how to make an ECS (yet), I'll be using entt anyways

#

maybe I'll NIH one just because NIH is cool, but I won't use it KEKW

buoyant summit
#

ecs is really simple

#

you have columns which are components

#

you have rows which are entities

wicked notch
#

so it's just a graph?

buoyant summit
#

no

#

it's a table

wicked notch
#

it sounded like an adjacency matrix

#

oh fair enough

buoyant summit
#

the hard part for me was figuring what should be what component

#

but

#

in the end I use a hybrid

#

between ecs and something closer to what source did

#

so I'll not shill my solution

wicked notch
#

what's source's solution

#

if that's public

wicked notch
#

the more I use unity the less I want to use it

#

it's incredible

frank sail
#

but consider this: the more you use unity, the more you use it

wispy spear
#

the more you use it, the more better Ü engine we get

frank sail
#

Smiley face engine

wicked notch
#

I think I might just pivot and go read GEA

frank sail
#

It won't teach you how to make a unity clone btw

#

It provides insight on how one might implement various systems within an engine, but not how to glue them together

#

That glue is a massive 'missing' piece if you expect it to be like a tutorial

wicked notch
#

yeah I didn't expect it to be like a tutorial

#

the glue is something I gotta figure out myself by bikeshedding in #engine-dev

frank sail
#

It is a good book though, just watch out for the oldisms KEKW

#

elias found mentions of OGRE lmao

#

I think it was written before unity and unreal were viable options

wicked notch
#

I should be able to spot oldisms

wicked notch
#

so

#

Unity is absolute garbage but I'll try sticking with it for a while more

#

I also got digital GEA

#

finally, I'll try making something on my own

#

with zero rendering, just an ECS and GLFW

pale horizon
#

(And by stealing everything from my engjne KEKW)

wicked notch
#

real

pale horizon
#

My ECS is a meme, though
I don’t store anything contiguously

wicked notch
#

it's ok I won't bikeshed ECS

#

I just clone entt

pale horizon
#

Re-reading GEA was kinda disappointing to me. Like, it has good ideas and food for thought, but it’s too high level and glosses over many things
I now consider Game Coding Complete to be the best gamedev book

buoyant summit
#

but it might require overcommit/swap to be enabled froge

wicked notch
#

sure thanks a lot

buoyant summit
#

ye so generally it's like entt, but

#

component stores are just a normal array + bitset (with counter thingy to make iteration over sparse bitsets fast)

#

so entity id is (index, generation) pair

#

and index is right into the component store as is

#

no dense[whatever] stupid indirections

wicked notch
#

ah cool it's a sparse bitset

buoyant summit
#

it's not sparse

#

it's just fast to iterate over

#

it actually consumes MORE memory than a normal bitset

#

e.g. 100000-bit bitset would normally eat like 12.5 kiB, right

#

in my case it apparently consumes... 12.51 kiB

#

but yes

#

(these are paper numbers)

wicked notch
#

fair enough KEKW

buoyant summit
#

anyway

#

the important bit is that component stores are just literally T arr[big]

#

and are indexed using arr[entity id.index]

#

(and entity id is index, generation pair)

#

no extra indirections

#

so another thing is uh

#

I have a component that's basically "any" type

#

that's where e.g. my guns and players live

#

you iterate over entities with that component implementing some interface

#

and poke that interface

#

this isn't used by all things I want to express, just by guns and players and some other one-off logic stuff that doesn't really feel nice to make a dedicated component for

#

so components are then used for communication between systems

#

(e.g. velocity and other physics-related stuff, for communcation with physics, etc)

wicked notch
#

hmmm I see

#

is a bullet an entity too (with a velocity/position component)?

buoyant summit
#

yes

#

yes

#

well

#

no

#

I don't have bullets just yet

#

only rockets and grenades

#

and those are individual entities yes

#

for guns that fire bullets, I'm moving towards physical bullets and they'll be entities too

wicked notch
#

makes sense

wicked notch
#

CLion nova is kinda usable now

#

pog

frank sail
#

@wicked notch where are your shaders? I need to steal some macros KEKW

frank sail
#

πŸ™

#

one way you could slightly improve this is by putting the binding indices into a header that is shared by your C++ and GLSL code

#

but tbh you'll never change those so who cares KEKW

wicked notch
#

I'll do that in february

#

specifically on the 5th

frank sail
#

do your exams end on the 2nd or something

wicked notch
#

no it's the vulkanized talk KEKW

#

where shady shall be unveiled

frank sail
#

ah, then gob will finally allow you to use it πŸ™‚

wicked notch
#

next exam is on the 19th so I have a lot of time to procrastinate

frank sail
#

btw are you gonna be at vulkanized KEKW

wicked notch
#

no :(

frank sail
#

(I am not froge_sad)

#

understandable

#

we can still enjoy the many fruits of their labor

#

but no getting to meet some of the froges here

pale horizon
#

Frogalized when

frank sail
#

there will be one talk and it will be about vsm

pale horizon
#

No. The one talk will be "Soul vs soulless: you VILL accept it"

frank sail
#

I thought that was going to be in EDcon

#

A bunch of confused older men will show up to the talk

wispy spear
#

#general message

#

@wicked notch @frank sail @pale horizon @distant lodge

pale horizon
#

I'm too stoopid for Vulkan, though :((

wicked notch
#

you can benefit from shady too KEKW

distant lodge
#

no you just filter yourself from it and use everything worse instead

#

you could be using vulkan right now

pale horizon
wispy spear
#

i can make him unban you

pale horizon
#

"make" KEKW

wispy spear
#

i chose the word wisely

pale horizon
#

Nah, it's okay. He usually got extra mad at my takes, so now I can shitpost in peace

buoyant summit
wispy spear
#

must be an old video : )

#

only 4 billion people, or his people counter was an uint32_t only

buoyant summit
#

it's very old

distant lodge
#

non-Y2K compliant video

wispy spear
#

ah indeed 17 years

buoyant summit
#

it's old enough to drink

wicked notch
#

back to bikeshedding a bit of nanite

#

there's a hard LOD cutoff at some point for some reason

#

my guess is that the simplifier fails to do anything and therefore it just grabs the edges with the lowest error until you get to 128 triangles

#

(this is always about nonsensically disjoint meshes)

buoyant summit
#

just weld vertices together by yourself?

#

sufficiently close ones

wicked notch
#

unreal does that too but there's a smoother transition between glued vertices

#

I think that's good enough

wicked notch
#

ok nvm that's not good enough kekkedsadge

#

uvs are fucking with me hard

stoic surge
#

question about mesh hashing.Are you using it just to check if user tries to load same model twice or its for internal model meshes, so you dont need to parse same meshes twice?

wicked notch
#

I don't do any mesh hashing, maybe wrong thread?

#

I don't have an engine yet kekkedsadge

stoic surge
#

Not you in model.cpp?frog_think

#

mesh caching*

wicked notch
#

uhhhh

#

is this my code?

#

oh wait maybe this is the old Iris

#

this code is wrong btw KEKW

#

yeah try not to use anything from old iris

#

those were dark days of mine

stoic surge
#

this is the master branchbleakekw ,where is the "new one"?

#

im just curious,i wont use that of course

wicked notch
#

lots of wayy smarter guys in this discord you can take examples from

#

especially for model loading

stoic surge
wispy spear
#

wait until lvstri stumbles upon std::mdspan

frank sail
stoic surge
stoic surge
frank sail
wicked notch
#

mdspan feels like valarray all over again

stoic surge
#

somebody created a fork with a new level of abstraction?)

frank sail
#

no, it means you literally don't have to use them, or you only need one of them (e.g. the descriptor stuff)

#

dynamic rendering removes render passes and framebuffers

#

fences are superseded by timeline semaphores

#

descriptor stuff is greatly simplified by bindless

stoic surge
#

sounds good,but not convincing enough)

frank sail
#

hehe

wicked notch
#

vulkan will not solve uv mapping though

#

god fucking damnit are they annoying even for processing meshes, not only for artists kekkedsadge

frank sail
#

is that for nanite

wicked notch
#

yeah

frank sail
#

sounds difficult

wicked notch
#

spatially close vertices may have UVs that are the exact opposite of each other

frank sail
#

Maybe don't merge those vertices with some heuristic

wicked notch
#

adding connectivity triangles also sounds impossible because how do I figure out new uvs

wicked notch
#

and then the simplifier shits itself

#

imma see what UE does

frank sail
#

Maybe you could put this as a to-do and just average the uvs or something in the meantime

stoic surge
wicked notch
#

jaker has a cool scene representation

wispy spear
#

or if you prefer c# ... i know a guy

frank sail
stoic surge
wicked notch
#

oh wow KEKW

#

unreal straight up says "nope, fuck it I'm not doing this"

#

it doesn't even pass the foliage through the same pipeline

#

it's straight up missing

#

holy shit this is trippy KEKW

wispy spear
#

did you slap a UE skin onto unity?

#

or is this IrisÜ already?

wicked notch
#

I'm back to bikeshedding a bit of nanite

#

thankfully context switches in LVSTRIOS are cheap

wispy spear
#

ah oki

wicked notch
#

am I tripping or is damaged helmet a connected mesh

frank sail
wicked notch
#

the one in bistro is yes

#

but there are tree megascans that render just fine with nanoite

frank sail
#

o

wicked notch
#

probably because leaves in those trees are made up of 5 trillion triangles KEKW

frank sail
#

ok so it must be failing some heuristic to be nanite-ified, right

wicked notch
#

ye the heuristic is if glm::squared_distance(v0, v1) - glm::squared_distance(uv0, uv1) >= 999999999999999.0f then give_up();

#

anyways damaged helmet is disconnected

wispy spear
#

do the artists (need to) know that nanite is going to be used or was that one of the selling points that Ü will just deal with whatever the artists pastes into the scene the same way?

wicked notch
#

It Just Worksℒ️

  • Unreal
wispy spear
#

or does Ü have that god almighty meshifier so that anything goes

#

ah

wicked notch
wispy spear
#

: >

wheat haven
wispy spear
#

the thing to the thing

wicked notch
frank sail
#

yo

#

do you just use push constants to give shaders resource indices

wicked notch
#

I do be doing that

frank sail
#

but the problem is you only get, say, 32

#

that's not nearly enough for me kekkedsadge

wicked notch
#

make buffer

frank sail
#

that was my follow up

#

I guess filling the buffer is equally difficult as filling push constants

#

vkCmdUpdateBuffer my beloved

wicked notch
#

you can just memcpy too

#

also wtf are you doing that requires >32 resource ids kekkedsadge

frank sail
#

yo momma having lots of debug buffers

#

I already got trolled by opengl's limit (and that was per namespace, so more than 16 in practice), never again

frank sail
#

alright next question

buoyant summit
#

you wouldn't have more than 32 function arguments

frank sail
#

perchance

buoyant summit
#

push a pointer to a chungus thing instead

frank sail
#

alright that's reasonable

#

well that's what I was gonna do already lol

#

a pointer to a buffer with my 3000 arguments of allah

wicked notch
#

ye

frank sail
#

it do be

wicked notch
#

thing is the "private" API is supposed to be a little more clamplicated

#

but I got sidetracked by nanite

buoyant summit
#

wtf

#

u_accelerationStructureTable

#

??

wicked notch
#

ye like I said

buoyant summit
#

are you using AS descriptors 🀨

wicked notch
#

that code path is untested kekkedsadge

#

because it's not supposed to be like this

buoyant summit
#

ok ur aware that you can use AS bda instead

wicked notch
#

I'll change it soon

buoyant summit
#

right

wicked notch
#

yes

buoyant summit
#

ok cool

frank sail
#

yoink incoming

wicked notch
#

remember to use bda

#

I'll actually make one more additional change and do the paged staging buffer thingℒ️ that devsh has

frank sail
wicked notch
#

so that we can be freed from vkCmdUpdateBuffer

buoyant summit
#

cmdMemcpy

frank sail
#

I'm gonna do gigabytes of updates with vkCmdUpdateBuffer

buoyant summit
#

I hate cmdbuf memory management being magic tbh

#

give me BUFFER_USAGE_COMMAND_BOOFER

frank sail
#

I can't believe they call this a low-level api

buoyant summit
#

tbh vkCmdUpdateBuffer should just be removed froge

#

meme api

frank sail
#

I rely on it for my tringle kekkedsadge

wicked notch
#

think about it

buoyant summit
#

literally just memcpy bro

wicked notch
#

you wouldn't want glNamedBufferSubData in your pristine vulkan code would you

buoyant summit
#

vkCmdUpdateBuffer is not glNamedWhatever tho

#

it's literally jsut vkCmdCopyBuffer with storage inside cmdbuf

#

which is cringe because you can bloat your cmdbufs into oblivion and you can't shrink them or reuse that storage transparently and accurately

frank sail
#

pain, literally intractable amounts of management

buoyant summit
#

or yes rebar

frank sail
#

gordon frem

#

gordon oldman

buoyant summit
#

tbh what would really be nice is if we could do cached | coherent mappings of VRAM

wicked notch
#

that would be too good

#

memory that is fast to read from the host and on device

buoyant summit
#

so there would be penalty still

#

but yes it wouldn't be terribly slow to read on host at least

delicate rain
frank sail
#

I could do it smarter tbh, I'm just lazy and don't want to write more code

#

I mean better than tying it to the cmdbuf

#

for this case I'm updating the whole buffer (which contains a vec4 or two uint32s) every frame

delicate rain
#

Ah I see

wicked notch
#

the epic thing would be the paged staging allocator that devsh has

delicate rain
#

Is that really needed though, feel like it's just bikeshed

wicked notch
#

so make fixed staging buffer of 128MiB and allocate slices, then tie the lifetime of the slice to whatever you want and schedule a transfer

delicate rain
#

(don't let him know I said that)

wicked notch
frank sail
#

imagine trying to upload 65mb of object uniforms and devsh's uploader thingy said no

delicate rain
wicked notch
#

the magic is that it schedules multiple transfers if total_data >= 128MiB

wicked notch
buoyant summit
#

vkCmd stickies an error which you get at vkEndCommandBuffer

frank sail
#

hmm

buoyant summit
#

you just report + crash on any error

frank sail
#

that's a random fact

buoyant summit
#

anyway I now want cmdbufs with transparent memory management πŸ˜”

delicate rain
buoyant summit
#

so the driver calls my code to get more memery, and when cmdbuf stops being busy I can reuse all of that memery

wispy spear
#

i stopped counting all the "you can do x" when the context was vk 😦

#

because it means you can do x in 20 variations, and everyone tells you something different 😦

wicked notch
#

wym we always tell people to do bindless KEKW

glass sphinx
#

makes the binding circus ultra easy and simple

twin bough
wispy spear
#

yes, you 2 do

wicked notch
#

man why does youtube want me to procrastinate

wicked notch
#

oh it's based on Lumen

#

wtf

#

AMD basically improved on lumen (a lot)

#

it all comes back to sdfs though

#

unless I want to raytrace

#

(I don't)

wispy spear
#

i am getting this one recommended again as well : > https://www.youtube.com/watch?v=NoTUzzmxPo0

This talk presents an engine rendering pipeline for Activision games with particular focus on geometry pre-processing, merging and preparation stages for various rendering modes.

Part of SIGGRAPH 2021 Rendering Engine Architecture in Games course, for more about the course, see http://enginearchitecture.realtimerendering.com/2021_course/

There...

β–Ά Play video
#

for some reason i want to make f+, deferred and potentially vizbuffer renderer, render the same shit

#

and switch between them to show some numbers of how shit/good they are compared to the others

#

but someone stole my T and V to do anything grafics related atm : (

distant lodge
#

huh

primal shadow
wicked notch
#

but restir needs RT right?

#

also restir has a scary name

primal shadow
#

ReSTIR is deceptively easy imo. The hard part is denoising and the GPU scene mangement and everything else.

primal shadow
wicked notch
#

why are modern techniques all using some variation of radiance caching instead of restir then thonk

#

what are the drawbacks of restir

primal shadow
wicked notch
#

yeah I was just looking at the paper for GI-1.0 and they do ReSTIR too

#

what did you mean by "just doing restir" then

#

surely SSAO + SSGI + two level cache + ReSTIR is better than ReSTIR alone?

#

you have all these juicy heuristics you can throw at the problem

#

also, do you have anything on the jump flood algorithm for constructing SDFs

wispy spear
wicked notch
#

so K and U then KEKW

wispy spear
#

T and V πŸ˜›

#

U is a derivation something something

primal shadow
wicked notch
#

thank ❀️

primal shadow
# wicked notch surely SSAO + SSGI + two level cache + ReSTIR is better than ReSTIR alone?

ReSTIR DI = Direct lighting (what lights to sample from at a vertex)
ReSTIR GI = First bounce indirect lighting (what other vertices to sample from at a vertex, where you get the indirect lighting at that second vertex either through then tracing towards a light directly, or via a cache)
ReSTIR PT = Using ReSTIR GI to trace whole paths, where you perform ReSTIR GI at every single vertex in the path essentially

#

ReSTIR PT is very expensive, much easier to use ReSTIR GI + some kind of irradiance cache for multibounce

#

So the full path looks like this:

primal shadow
#

Camera -> GBuffer pixel (raster or RT) -> Primary vertex (vertex chosen via ReSTIR GI, irradiance taken from the cache at this vertex) -> Sample direct lighting at primary vertex / sample indirect lighting from other cache entries

#

iirc, I might've missed a vertex somewhere, but you get the idea

#

SSGI/AO is an option. You'll have to see if you want it or not.

#

There's also been some improvements using short-range SSAO to guide the ReSTIR spatial heuristics, in addition to using it for short range shadows ReSTIR misses

wicked notch
#

sdfs are actually not that scary

#

except for memory consumption but that's easily solved with streaming

#

64x64x64x2x4096 is 2GiB already bleakekw

#

where 4096 is number of loaded meshes

wispy spear
#

im ok with you targetting cards with 12gb of vram : )

wicked notch
#

yet again I threw myself into a rabbithole at 3am

#

why am I like this

wicked notch
#

just gonna reference this over here so I don't lose it

#

#questions message

wispy spear
wicked notch
#

https://www.youtube.com/watch?v=pr8HaIaZfpk
this one feels like potrick explicitly coerced his activision boys to upload this KEKW

Render graphs have become an established way of handling the complexities of synchronization, memory allocation and scheduling for modern rendering engines. In this talk we’ll cover our task graph renderer, paying particular attention to the design of the engineer facing APIs, as well as some of the backend implementation details that allow us t...

β–Ά Play video
glass sphinx
#

good talk

glass sphinx
#

i cant believe that so many unity postprocessing effects are literally jsut placing a rectangle in front of the camera to get the fragment shader invocations on the screen

#

WITH THE MVP MATRIX!!!!

#

what are they cooking

wispy spear
#

postprocessing effects

#

πŸ˜›

glass sphinx
#

i will make a unity shader that places suzane in front of the camera to do post processing

wicked notch
#

no amount of tech debt can make you write something like that

wispy spear
#

how do you make it the right way though?

wicked notch
#

you make a fullscreen triangle

#

that's it

wispy spear
#

ah lol

#

ofc you do, i didnt notice the quad πŸ˜„

wicked notch
#

that's not the only thing

#

they do MVP multiplication so it's basically a world space quad in front of the camera

#

and they use a tiny vertex buffer for it

#

it's so ridiculous

glass sphinx
#

yea they have a triangle/quad inside teh game world

#

just sitting in front of you

wispy spear
#

: O

#

le fuc

#

even i wouldnt do such a thing

twin bough
#

wtf

#

i wont do it either

wicked notch
#

my small brain can't comprehend (local to world) sdfs

wicked notch
#

I need the bounding box of every local sdf

#

transform it to world space

#

and then just store the sdf at the grid locations that result from the world transform

#

and also scale the distance function by the scaling factor of the model matrix

#

I would also need a cell size of scene_box.extent * 2 / grid_size (vec3)

#

but this feels wrong somehow

#

and also calculating the scene's bounding box isn't exactly trivial bleakekw

#

I guess I could do it on the GPU though

#

yeah it's just a classic parallel min/max reduction problem

#

I'm still wondering about jump flooding this

#

do I really need the sign

#
However, the global illumination algorithm can use other methods for ray casting as long as the method returns the hit point of a ray.```
wicked notch
#

deccer I need some intel

#

who can I pester for SDFisms

#

anyone who successfully implemented SDF shadows or GI?

wispy spear
#

hmm

#

sdf shadow... Tear mayhaps? i might mix him with someone else

#

but do you remember that scene of some postapocalyptic scene of some towers

#

with POM going

#

its either Tear or AllMight i think

#

they might be doing SDFisms too

#

otherwise, ask the question in questions and ill @ here the frogs for you

wicked notch
#

it's alright

#

I'll pester them myself after I tried this stuff

#

it's quite sad that there's so little info on SDFisms out there

wispy spear
#

boop me if you need to coerce people to react to your question

primal shadow
wicked notch
#

oh shit yeah

#

I forgor about that

#

perchance I'll check the capture

wispy spear
#

indeed

#

i believe there w as some conversation here about it, mayhaps thats what i remember πŸ˜„

primal shadow
#

There's two versions though. Check their GitHub, they have a completetlt new/different GI impl, that iirc is still sdf based?

#

Can't quite remember the details but I'd check their GitHub

frank sail
#

Godot's sdfgi looks like butt

#

#1128020727380054046 message

#

I made my first project with it to test the gi

wicked notch
#

ye

#

I be wondering

#

DDGI requires RT right?

frank sail
#

I'd say so

#

You need to do PT from each probe to get irradiance

#

Then you just interpolate between probes

wicked notch
#

damn

frank sail
#

Why damn

#

You only need like a few dozen rays per probe

wicked notch
#

oh

#

still damn but less

frank sail
#

The ray count can be adjusted, but overall it should be way lower than 1rpp

wicked notch
#

how do you trace with HWRT though thonk

#

BVH bounding boxes over the probes or something

frank sail
#

wut

#

You trace the actual scene from the probes

faint crane
#

You can still use SDFs or BVH for DDGI. Godot's is based on DDGI and even has Morgan's references.

wicked notch
frank sail
#

The probes are just sampled during the shading

wicked notch
#

makes sense

frank sail
#

Ye but for the RT you just trace the scene as usual

wicked notch
#

yeah so it's basically useless for me to accelerate the scene

frank sail
#

Think of the probes as an irradiance cache in world space

wicked notch
#

I still need sdfs kekkedsadge

faint crane
#

Yes, you can populate the probes however. Sampling them is completely separate except for the visibility term in DDGI IIRC (which can be moved to tracing or sampling). ReSTIR, whatever Godot does nowadays, etc.

#

I'm looking at implementing DDGI to prepare myself for #1142751596858593372 which I'm skill issuing at right now.

wicked notch
#

will you use SDFs

faint crane
#

I always start with SDFs and then my Cornell Box renderer graduates to a Sponza renderer.

wicked notch
#

how do you plan to merge multiple SDFs into one for tracing

faint crane
faint crane
#

SDFs are slow and hard to update.

wicked notch
wicked notch
#

yea I'm not even considering memory

#

at this point it may be less memory consuming to make a bvh over tringles kekkedsadge

wispy spear
#

you can call those "damns per sample" then, lvstri

faint crane
#

I want to see what Godot is doing since they moved to H-DDA or something, H I believe is hierarchal.

wicked notch
#

I really like ROMA and it feels nice and intuitive as well

#

but I can't figure out the tracing step

wispy spear
#

all these people who want this GI stuff on mobile... is weird

wicked notch
#

you basically just voxelize a mesh and build an "occupancy map" (that stores who knows what

#

wait I don't think you even need voxelization

faint crane
#

Someone explained it to me, but I didn't write it down. Will have to hunt them down again. briannaPls

wicked notch
#

please do

#

ROMA has a spatial resolution of 128^2 and a angular resolution of 8^2.

#

resolution is low so I assume it's just a bitmask of touched texels?

#

I'll just read the paper tonight

faint crane
#

Our brain cells combined.

wicked notch
#

link to the shared neuron mate

#

shit's about to get real

faint crane
#

It rounds to zero unfortunately. IQ is below room temperature.

wicked notch
#

I'm afraid we might be going negative kekkedsadge

wispy spear
#

i shall be standing on the negative side of 0 and keep you guys away from entering < 0 space

wide shadow
faint crane
#

What about computing SDFs via a BVH?

faint crane
#

I first misunderstood this as a single 2D slice.

#

Since that's what I naively see here.

wispy spear
wicked notch
primal shadow
wicked notch
#

btw jasmine, do you have some more detailed info on the "cache" part of radiance caching

#

is screen space cache just a texture?

#

what about world space cache?

primal shadow
#

In what context? Just radiance caches in general, or a specific technique/impl?

wicked notch
#

say lumen or GI-1.0

#

is what they use different from other radiance caches?

primal shadow
#

They have both several layers of caching. The screen probes (probes placed at world positions based on the screen's gbuffer pixels) are reprojected where possible between frames, so that's a form of a cache

#

And then there's additional world space caches. Lumen uses basically DDGI, so the same kind of kf probes as the screen cache, but higher resolution, sparser probes.

frank sail
#

It's probes all the way down

primal shadow
#

Lumen also uses a third cache in texture space, where they form "card" meshes that are basically flat surfaces projected onto a mesh, and they cache lighting in a texture set on that mesh as well

wicked notch
#

it's always just a 3d texture though innit

primal shadow
#

Gi-1.0 has the same screen probe cache as lumen basically, and then for their world space cache they use spatial hashing (a giant parallel friendly hashmap where you divide the world into hash cells)

primal shadow
#

Basically the idea of radiance caches is that path tracing is too expensive and very incoherent

#

So you usually have some form of world space cache that stores lighting at different parts of the world, and then you can ray trace from the screen and hit those points, and lookup the lighting without tracing further bounces

#

So for instance you do ReSTIR GI, and then at each ray hit, you ask the cache for the lighting rather than tracing N extra bounce rays

#

And you have an extra pass somewhere that goes over every active cache cell and traces rays to update the cell lighting, usually direct light sampling, and optionally sampling from other cache entries to approximate multibounce.

wicked notch
#

a cache miss just means you have to trace the ray though right?

primal shadow
#

No, it means you get 0 light from the cache, but then you mark the cell as active so it'll be updated next cache update pass

#

Well, that's one way of doing thinfs

#

Iirc kajiya does it a bit seperatly? Where they raytrace, note down the hit cells, have a second pass update the cells, and then a third pass read the results and continue from the first paas

#

So, that's also an option

wicked notch
#

huh

#

where can I see the original radiance cache idea

primal shadow
#

Idk what the original paper would be

wicked notch
#

I want some more details because some of it is going way over my head bleakekw

wicked notch
primal shadow
#

But recent renderers that use the idea:

  • Kajiya (clipmap)
  • Lumen (DDGI + texture space cards)
  • GI-1.0 (spatial hashing)
  • RTX DI (DDGI, neural net)
#

The GI-1.0 paper is a pretty good intro to the idea imo

#

Basically you start by building a path tracer

#

But then instead of recursive bounces, you read a cache entry for the first bounce hit and trace 0 extra bounce rays

#

And then you have a pass to update the cache entries

#

That's it. How you split up the cache, update it, etc is all up to you.

#

DDGI, clipmaps, and spatial hashing are all popular schemes

wicked notch
#

updating means tracing rays?

primal shadow
#

Updating meaning computing lighting at the cache entry, which yes usually involves tracing rays from the cache entry point

#

The traverse research blog post on their GI impl is basically what I'd recommend. The RTX DI+GI SDK has other tweaks that are slightly more advanced.

wicked notch
#

epic

#

thanksfrogeheart

primal shadow
#

Np. Happy to answer questions if you have more. I'm starting my (4th attempt) GI impl soon, just revamping my whole scene manager CPU-side code for setting up light buffers and textures and such first πŸ˜›

frank sail
#

Just use reflective shadow maps (with VSM of course frog_shrimple )

primal shadow
#

No don't do that, rasterized lighting is bad and cursed

cold sky
#

If you just want shadows

wicked notch
#

the goal is GI

#

but ye do send slides

#

all vulkanized talks are epicfrogeheart

#

also you piqued my interestKEKW

frank sail
#

@wicked notch when you have a chance, you should join the GPVM server. We are discussing meshlets in there and I need your help
#related-servers message

wicked notch
#

sure thing

wicked notch
#

so I read ROMA

#

but I can't figure out what the tracing gives me other than anyhit

#

ROMA only stores visibility info, where the hell do I get position info?

primal shadow
#

Almost done with my scene setup for RT

#

The last real task will be building the light buffer :/

wicked notch
#

aight that's enough research on SDFisms

#

it's time to context switch once more

#

this time, inspired by potrick, I'll be cooking up some heavy duty debug tools

wispy spear
#

what happened to your vsm thing from september in wip... where you renderethed powerplant

#

that looked good enough

delicate rain
#

The worm needs fresh food

wicked notch
#

I will revive soon

#

time is limited unfortunately

wicked notch
#

no I don't

#

I've been doing java

#

every time I write a try catch block, my sanity drops by one

wicked notch
#

it's currently at -
9223372036854775808

wispy spear
#

nooby java or full swing and spring boot bs?

wicked notch
#

javafx

#

but honestly

#

I was legit feeling dead inside

frank sail
#

I love exceptions

wicked notch
#

so I delegated all the UIisms to my mates

#

javafx was making me feel basically depressed

#

thank god this is the first and last time I have to ever write java in this shitty degree

#

I only have 4 exams left

frank sail
#

you will make it froge_love

wicked notch
#

it's been a long road but we're nearly home boys

#

~~let's not think about masters and doctorate degrees now bleakekw ~~

primal shadow
#

Hijacking your thread, this is Jasmine-dev now

#

To be fair, this is nearly identical to how it used to be in solari3 om the GPU side, except now lights are a flat list of sources for better sampling, and and cpu code is much saner.

wispy spear
#

javafx, my condolences

glass sphinx
#

are you sure?

wicked notch
#

I think, I tested extensively

glass sphinx
#

you need the boxes

wicked notch
glass sphinx
#

when downsampling mips get rounded down, how do you deal width the edges

#

youd have to sample 3 into 1 in these positions

wicked notch
#

I just retested, if I make the hzb be like the next power of two I can't see artifacts

#

my english just broke

glass sphinx
#

do you just rescale the texels in the first level?

#

based

wicked notch
#

I'm sure that by missing samples you get artifacts ye

#

it's just subtle

glass sphinx
#

yea i do

#

not subtle

#

massive

#

if you have teh wrong screen size it can ignore half the depth map

wicked notch
#

non PO2 is cancer bleakekw

wispy spear
#

first time seeing "non po2" in the wild lol, instead of "NPOT"

glass sphinx
#

a simple idea i had was to simply make it power of two in the first downsample

#

read 3x3 in first level, min it and then write to a po2 image

cold sky
#

For hiZ

#

Just pad with identity depth (farthest) around the outside till you hit POT

glass sphinx
#

that would make the image much larger

primal shadow
#

Whatever I did seemed to have worked for me

cold sky
glass sphinx
#

true

wispy spear
#

i think i grew a new braincell today

#

VRS is "just" a "better" "MSAA" a "MSAA++" if you will

glass sphinx
#

in cod we actually do vrs with MSAA

distant lodge
#

oh yeah I've heard about that, on consoles you have access to the underlying data in msaa textures

finite quartz
buoyant summit
#

there's fmask amd ext

#

but I think they've made significant changes there in rdna3+

wicked notch
#

man writing a thesis is boring

#

my supervisor didn't even let me know if the topic is good but I assume it is kekkedsadge

wispy spear
#

it better is : )

delicate rain
#

leak topic πŸ₯Έ

#

but yeah writing it is pain, I delayed it for super long and then had to push through it in like 2 weeks

wicked notch
#

I pray tomorrows exam goes smoothly

#

I have procrastinated extra hard this week bleakekw

wicked notch
#

alright

#

3/4

#

I am currently approaching 48 hours without sleeping

wispy spear
#

rest my little slimey friend

wicked notch
#

therefore I shall collapse on the bed

frank sail
delicate rain
#

Mister LVSTRI you have some experience with gltfpack right? Is there a way to make it not put primitives into one big mesh?

frank sail
#

it didn't do that for me frog_thinkk

#

do you mean it's combining primitives?

#

what scene are you trying?

delicate rain
#

yeah it creates few that are normal with like 4-5 primitives each and then like three giga meshes with like a 100 primitives each

wicked notch
#

yes

frank sail
#

hmm maybe it does do that for me but I don't care

wicked notch
#

man I should really put my gltfpack fork on github

delicate rain
#

this is bistro, imported as FBX and exported as gltf from blender

wicked notch
#

you can try the -km flag

delicate rain
#

ah the -kill me flag?