#Foundation - My adventure through Graphics Programming

1 messages ยท Page 3 of 1

paper ore
#

i think jaker was able to extract the hotel

merry laurel
#

I have some HW to export it in reasonable time

north helm
#

i tried to multithread my texture loading using std::async so unlimited threads

#

it bombed my ram

paper ore
#

i have a 5950x, 64gb ram

#

blender was pretty much doing nothing the whole time

merry laurel
#

I will make from my renderer glorified blender

#

I looked into usd format for importing it and it really sucks

#

The API reminds you of obj

north helm
#

average caldera github repo

merry laurel
#

I cant imagine python choking on caldera

paper ore
#

we need sean to make fastusd

#

or someone else on the server

#

its a "good first issue" ๐Ÿ˜„

merry laurel
#

In the mean time until final exam. I will be writing the blog and making from this project a "game engine". So some material editing, ecs, scripting, etc..

#

But wont be working on rendering

#

Past few days I have been updating all dependecies to be up to date

paper ore
#

glEngine 1.0, check

merry laurel
#

And wanted to add live++ but sadly of missing pbd I am not able to hot reload my files since every translation unit is using those libraries without pbds

north helm
#

what is that ?

paper ore
#

i doubt you need livepp for the engine

merry laurel
#

For dev its nice

paper ore
#

a hot reload mechanism for cpipi

merry laurel
#

Its nice to have at least

paper ore
#

it also costs quite a bit of money

north helm
#

huh

merry laurel
#

major pain is imgui/UI

north helm
#

i dont understang the point, what does it releads ?

merry laurel
#

it patches your c++ code into executable

north helm
#

this is some sort of c++ scripting ?

merry laurel
#

so you change text in imgui::text and you will see it change in real time

merry laurel
#

but for whole program

north helm
#

OOOOHHH

paper ore
merry laurel
#

I am rn on 30 day trial

#

But I will get my free licence ๐Ÿ˜ˆ

north helm
merry laurel
paper ore
north helm
#

i have it now

#

looks funny

merry laurel
#

And about the blog about my nanite thingy. First I will write it in english to get input from you frogs and then translate it to czech to give to my hs

merry laurel
paper ore
#

ah i didnt see that

north helm
merry laurel
#

no you get it google translated

north helm
#

๐Ÿ˜”

#

is your thing more advanced than jglrxavpok's blog ?

merry laurel
#

hmmm, same-ish level or more

#

But I will yap about it more

north helm
#

have u tried nanite rt ?

merry laurel
#

I have async loading and texture and mesh streaming

merry laurel
#

I not doing any rendering until then

north helm
#

cant wait to read your thing

merry laurel
#

I will do some small amount to be gltf compliant

paper ore
#

all you nanite guys should write one comprehensive guide on nanite, for the graphics programming blorg

merry laurel
#

I have to do one

north helm
#

lets get you invited to siggraph

merry laurel
#

to graduate XD

merry laurel
#

Acerola was given 4090 for free from Nvidia

north helm
#

you presenting nanite with your brother screaming behin you ๐Ÿ’€

merry laurel
north helm
#

oh lets go

merry laurel
#

I have studio microphone

#

With the new setup

merry laurel
#

Other than that we should have same-ish impl

#

Also not to forget lpotrick for fancy geometry pipeline and hiz generation. LVSTRI for being first frog working on nanite

paper ore
#

exactly

#

i dont want android device level fragmentation

merry laurel
small osprey
merry laurel
#

through indirection like a queue which has indices to a some buffer?

#

or pointers?

small osprey
#

i store instance, meshlet byte offset pair

#

so it loads the instance data and then offsets the mesh data pointer with the meshlet byte offset

#

only three indirections agonyfrog

#

id -> queue -> instance -> meshlet

merry laurel
#

I directly get the instance

small osprey
#

how

merry laurel
#

I write out instances into a buffer and in rendering just shrimple index to it to get it back

#

payload.index is group id

#

@small osprey are you here? ๐Ÿ˜„

small osprey
#

where does the payload come from

merry laurel
#

task shader

#

but you could think of it as group index

#

nothing special

small osprey
#

i think we do the same thing?

#

your MeshletData is what i store in my queues

merry laurel
#

heh then I missunderstood your code

#

Its quite hard to read

small osprey
#

idk myshrelf how it works anymore

merry laurel
#

I dont wonder why

small osprey
#

it's basically

let ptr = queue.get(tid);
let instance = push.instances[ptr.instance];
let meshlet = instance.mesh[ptr.meshlet];
#

where mesh and instances are ptrs

#

oh and queue

merry laurel
#

I do

let instance push.instances[tid];
let mesh = push.meshes[instance.mesh_index];
let meshlet = mesh.meshlet[instance.meshlet_index];
#

I immediately get the instance without getting the index/ptr from queue

#

So I dont wait for the index then instance and then other data

#

I get the instance and then I load other data

small osprey
#

what's push.instances

#

equivalent to my queue?

merry laurel
#

nope

#

thats your instances

small osprey
#

my instances stores transform, mesh pointer, and etc

merry laurel
#

yep same

small osprey
#

what's your mesh then

merry laurel
small osprey
#

is push.instances a ptr to MeshletData

merry laurel
#

yes

small osprey
#

so we do the same thing lol

#

my Instance stores the transform data and mesh data in it

merry laurel
#

then whats the queue thing

small osprey
#

the queue stores (instance id, meshlet id)

#

two u32s

merry laurel
#

stupidly confused

small osprey
#

lol

#

i store

struct NodePointer {
    u32 instance;
    u32 node_offset;
}

in my queue

#
struct Instance<U : Uniformity = Uniform> {
    Transform transform;
    Transform last_updated_transform;
    Aabb aabb;
    u64 update_frame;
    u8* mesh;
    Vertex* raw_mesh;
    Material<U>* material;
    u32 raw_vertex_count;
    u32 raw_tri_count;
}

and this is my instance

merry laurel
#

So my mesh is your instance, node pointer is my meshlet data

#

Sort of

small osprey
#

yea

merry laurel
#

So confusing

#

Everybody does it differently me, you, jasmine, lvstri and lpotrick

small osprey
#

lol

#

yup

merry laurel
#

honestly I will go around the code base rename stuff

#

because MeshletData sounds stupid also

#

should be MeshletInstanceData

#

Rest should be fine

merry laurel
#

anyway eepy time. My sleep schedule in shambles. Yesterday 4.5h sleep hopefully today 6h of sleep

#

With actual work/job I would have more free time than school

small osprey
#

me when i ignore both school and work to write renderer froge_love

merry laurel
merry laurel
merry laurel
#

I worked 9-5 at summer

paper ore
#

yeah, as a kid

merry laurel
#

I am adult KEKW

#

Worked as programmer

paper ore
#

you young whippersnappers have a bit more energy then us old farts

merry laurel
#

then yeah

paper ore
#

you will be tired after your 9-5 soon ๐Ÿ˜„

merry laurel
#

I would rather be stuck in meeting 9-5 than in school bleakekw

paper ore
#

that will change too ๐Ÿ˜›

merry laurel
#

I guess that will change, I will complain but I will have money

paper ore
#

true

#

thats the only upside

merry laurel
#

with school 8 hours of bs, study after school for week and get nothing

small osprey
#

yeah that works, thanks froge_love

merry laurel
#

nice

#

I stole it year ago here

small osprey
#

lol

merry laurel
#

only thing the textures are 1k

#

but that wont kill you?

#

at least I think they are 1k

summer sigil
summer sigil
#

Ok I've though bvh stuff over

#

Conclusion: bvh nodes need to be the meshlet groups we use for simplification. But, the list of meshlets they contain need to be the newly created meshlets post simplification.

#

So you have 8 meshlets. You group them, and get error = 0.2. then you split into 4 new meshlets.

#

Your bvh node is the 4 new meshlets with an error of 0.2, and an initial parent error of infinity

#

And then when you build the next group out of the 4 new meshlets, you simplify again and get error = 0.4

#

And so the node's parent error becomes 0.4

#

Although hmm, each new meshlets could be put in a different group, which leads to different parent errors

#

So uhh maybe it needs to be the max of the new groups?

#

I'm lost again ahhhh

#

Group 8 meshlets, simplify into 4 with error 0.1

#

Group 4 meshlets into 2 groups of 2 each, with errors of 0.2 and 0.3

#

So you want 3 bvh nodes, but what happens to the parent error of the first group, hmm

summer sigil
#

I guess to specify the problem, groups have multiple different parents, which means multiple parent errors.

#

And I guess you just use the max? Idk

#

I guess for the bvh it doesn't particularly matter, you'll eventually get down to individual meshlets and test self error anyways

#

Oh wait, I see

#

8 meshlets simplify into 4

#

8 meshlets are the parents

#

And the 4 are the leaves

#

So parent error here refers to just the simplification error when going from 8 -> 4

#

Maybe?

#

Nanite slides are a little vague ugh

small osprey
#

BVH nodes are built from these groups as the leaves

summer sigil
#

I think that all makes sense

small osprey
#

lol

summer sigil
#

I'm trying to remember which I call parents

#

Ok yeah parents are more simplified

small osprey
#

correct

summer sigil
#

So an unsimplified group stores the patent error, i.e. simplification error it used to make new meshlets

#

Cool, this shouldn't be hard to implement then

small osprey
#

yeah then you just yeet that into a normal BVH that also stores the max of parent error

#

and you're done

summer sigil
#

Idk why I had it so tangled up, this seems easy and sensible

#

Yeah

small osprey
#

oh and merged lod bounds

summer sigil
#

Yep yep

small osprey
#

they probably did something super complex idk

#

I just did the most straightforward thing and it seemed to work

summer sigil
#

No it makes sense to me

#

Once I get this setup then it's runtime part

#

I'm praying 10+ dependent dispatches aren't super slow

small osprey
#

they're fine

#

atleast on ada

summer sigil
#

Cpu binding validation might get rough on wgpu, we'll see

small osprey
#

I only spend about 0.6 ms on culling a million lucies

summer sigil
#

I might have to use 1-2 buffers and just swap between them using push constants to avoid rebinding

small osprey
#

yeah I use 3 buffers total

#

read, write, and late pass

small osprey
#

yup

#

and about 2000x the geometric complexity KEKW

#

28 trillion tris vs about 2 billion

merry laurel
small osprey
#

how many tris is a bistro

merry laurel
#

3.3m

small osprey
#

oh

#

only?

merry laurel
#

but I think a lot more meshlets are visible than your lucy scene

#

leaves are so bad

small osprey
#

oh yeah for sure

merry laurel
small osprey
#

leaves suck

merry laurel
#

My bad 2.8m

#

I have 1 sponza there also

small osprey
#

lol

#

sponza is also similar right

merry laurel
#

the old one

#

not intel one

small osprey
#

oh

#

that's like 3 trognles

merry laurel
#

thats 300k

#

I thinkl

small osprey
#

import intel sponza now

#

or deccer will appear in your walls

merry laurel
merry laurel
#

When I look upwards angle on my scene of 125 bistros and 1 poor crytek sponza. It around 2.2 million meshlets

#

being rendered KEKW

small osprey
#

wtf

merry laurel
#

So removed the indirection in rendering gave me 0.4ms

small osprey
#

that's a lot

merry laurel
#

yeah whole scene 11.2m meshlets

#

Its a lot

small osprey
#

your culling might be cooked

merry laurel
#

I dont think so

small osprey
#

there's no reason to be rendering 2.2 * 128 million tringles

merry laurel
#

2.2m * 64

small osprey
#

still

#

even at 8k that's too much

summer sigil
merry laurel
#

I had a index list of visible meshlets produced by culling shader

#

then I used that index to get the meshlet instance data

summer sigil
#

Ah yes

merry laurel
#

Culling looks to be working fine

#

Argument could be made about hiz

#

but Idk I want to go crazy about as lpotrick to sample 3-4 grid

#

to cull

#

I didnt make any optimization in ways of subgroup/wave intrics, or playing with threadgroup size yet

paper ore
summer sigil
#

@small osprey one more question, do you build the BVH as you go, or at the end?

#

Like do I keep my existing DAG code where I store parent error and lod bounds and take the max etc, and then build the BVH at the end, or?

small osprey
#

i generate a Vec<MeshletGroup> for every lod level and generate the lod-bvh from that every simplify loop

#

and then merge them at the end

#

you still have to store parent error and lod bounds (in the group) and then max them in the BVH build

summer sigil
#

ugh ok

merry laurel
merry laurel
#

only simdjson to fight

#

a lot of changes

paper ore
#

you are one of those people who have a project folder on the desktop ๐Ÿ™‚

merry laurel
#

yeah

#

its based

#

rn I have like 14 KEKW

#

why is simdjson such pain

#

fastgltf also

paper ore
#

@upbeat ether lukas said fastgltf sucks

merry laurel
#

snitching huh

paper ore
#

: >

merry laurel
#

there is cmake shenanigans going on

#

simdjson is refusing to be linked with functionadmin

upbeat ether
#

skill issue

merry laurel
#

I think the vcpkg I'd refusing to use the port

merry laurel
#

It's working

proud marten
#

hot

merry laurel
#

Gotta appreciate windows being terrible for not killing processes which eat all of ram, refuses to be closed and lagging whole desktop to the point where task manager says not responding

merry laurel
#

@north helm Update on small city. It causes device loss KEKW

north helm
#

๐Ÿ˜ณ

merry laurel
#

I fixed all issues but no clue what is going on gpu

merry laurel
#

this is such cope KEKW

paper ore
#

requires another lib to get rid of that ๐Ÿ™‚

#

whatever comes after ECS

merry laurel
#

No idea why flecs behaves like this it moves only half of the bistro

merry laurel
#

Fixed but still hate it

#

Finally fixed my terrible cpu perf

paper ore
#

what did you do? replaced entt with flecs?

merry laurel
#

I had a dirty flag as a bool inside the component. Now its a "component" or flecs flag and I request only those entites which have it

paper ore
#

ah

merry laurel
#

It was painful to change it

#

I hit some weird UB

paper ore
#

you mean it hit you ๐Ÿ™‚

paper ore
#

Star Trek 7 ๐Ÿ™‚

merry laurel
#

I love this shit code to make it work

paper ore
#

replace is not working?

merry laurel
#

this is flecs entity being used there and somehow doing this makes it work normally

paper ore
#

ah, sneaky

merry laurel
#

This forces query to not be stupid

small osprey
#

maybe you should try to fix the actual UB bleaker_kekw

merry laurel
#

not gonna happen

merry laurel
#

Working on ms paint clone for school

paper ore
#

it almost looks alright

#

the buttons could do with some margin

#

4px

merry laurel
#

UI was interesting to do... File menu is shrimple but About and Exit buttons werent. You have to create label and bind a action to it and override the graphics of the menu in order to make it work because simple menu.setOnAction isnt working KEKW

#

zoom feature is even worse

#

I removed it because its inherently broken because you dont have access to the image data KEKW

paper ore
#

jabafx?

merry laurel
#

yeah...

paper ore
#

their naming of things is very weird

#

it is what it is

merry laurel
merry laurel
#

Also inteljs maven packaging was broken. I had write some maven stuff to make it work

paper ore
#

: D

merry laurel
#

Also this is team project of 4 people bleakekw feature branches are zip files sent to me and I had to stitch it up. I hope college isnt like this

#

I have college entrance exams in 10 days

paper ore
#

man

#

why is this still happening

#

ah just ordinary skool

merry laurel
#

yeah the best one in the region KEKW

#

teacher for this subject is showing us how to brew our own beer while we are "working" project for 4 months "very diligently"

merry laurel
#

Also did invidia just dropped raytracing for meshlets

north helm
#

is that a sort of vulkan extension ?

merry laurel
#

rn listening to some talk and looks like NV API has to be used ๐Ÿ’€

#

so it wont come for some time

north helm
merry laurel
#

โ–บ Watch the FULL Video Here: https://youtu.be/HLxVskv2zs0
โ–บ Support us on Patreon! https://bit.ly/3jEGjvx
โ–บ Digital Foundry YouTube: https://youtube.com/digitalfoundry
โ–บ Digital Foundry Merch: https://store.digitalfoundry.net
โ–บ Digital Foundry at Eurogamer: https://eurogamer.net/digitalfoundry
โ–บ Follow on Twitter: https://twitter.com/digitalfoun...

โ–ถ Play video
#

I love it wont be dx12 and then after 4 years it comes to vk

north helm
#

mega geom will come to vulkan you said ?

merry laurel
#

maybe

#

6 million objects

north helm
#

what is that model ?

merry laurel
#

intel dropped new one

north helm
#

oh

#

Jungle Ruins ?

merry laurel
#

yes

north helm
#

usd ๐Ÿ˜”

#

you are exporting it to gltf ?

merry laurel
#

trying to

#

it runs like 1 frame per minute

#

because blender sucks ass

north helm
#

lets use an online converter x)

merry laurel
#

its 4GB

#

it will choke on it real fast

#

giving up

north helm
#

test nanite performance on it

small osprey
merry laurel
small osprey
#

shader execution reordering

merry laurel
#

thats shader thing but this is api thing

small osprey
#

yeah but it needs a SPV extension

merry laurel
#

I think it will take much longer

small osprey
#

and a vk extension i think

merry laurel
#

we will see

small osprey
#

i wonder if this is just displacement micromaps

#

the API just does tri <-> micromap conversion

merry laurel
#

I think it's something more

summer sigil
summer sigil
#

Or some other form of encoding topology

#

And remember there's a big CPU cost to bvh builds as well

summer sigil
#

I don't know what the api will actually be though, they're not entirely clear how it works

small osprey
#

we can only wait froge_sad

summer sigil
#

Oh, so it's an NV extension still, neat though.

#

Well I guess it wouldn't have made sense if it were a khr extension given it's 1 vendor only

small osprey
#

yeah

summer sigil
#

Reallllly hoping mega geometry gets pushed to directx/vk

small osprey
#

NV is apparently trying to get into mainline dx

#

so it should come as a VK_EXT soonโ„ข๏ธ

summer sigil
#

Where did you see that?

#

I only saw that DX is upstreaming neural shaders (which are also neat,but much more niche due to training costs)

supple cliff
summer sigil
#

The bvh rebuilds part yeah, but it can't be displacement maps

#

You can't encode arbitrary geometry

#

See the nanite slides

supple cliff
#

do they have a technical overvciew for it already

supple cliff
summer sigil
#

They did show a straw hat with gaps between the straw, you can't encode that with displacement

#

So I don't think it's displacement maps

summer sigil
supple cliff
#

hmm that video made it looks a lot like heightfield ish tech imo. The base geo was detailed enough to capture all bending and convaveness i think

#

ill rewatch it

summer sigil
#

Look at the part specifically where they zoom in on the man's hat

small osprey
summer sigil
#

They also showed deformable objects (the dragon moving), so not exactly sure what they're doing

supple cliff
summer sigil
summer sigil
supple cliff
#

i assume green is base geo

#

that has enough info for all topology

summer sigil
#

Green is current geo no?

#

They're showing the wireframe of what you're viewing in assume

supple cliff
#

they said the green is the base geo that is then improved with mega geo

summer sigil
#

I could be totally interpreting this all wrong though, they don't really say

#

Oh I see

#

So, could be displacement maps then your right

#

But some kind of LOD'd displacement maps? Idk

small osprey
#

could also be opacity mm + displacement mm

supple cliff
#

so i think this is totally doable with heightfields translated to triangles. I kinda think this is what it is. Streaming the heightfield in and based on that construct triangles just in time for the hw to intersect

summer sigil
#

That's so boring if true :/

supple cliff
#

really cool for sure but only usable for extreme geo density really

small osprey
#

nanite ftw

summer sigil
#

But I'll take any kind of thing that lets you build bvhs cheaper

supple cliff
small osprey
#

you never know, it could just be nanite-handled-by-driver too

supple cliff
#

it will for sure make these ultra poly scenes much faster

#

similar to how omms make foliage way way faster

summer sigil
#

I was more hoping for meshlet based BVH partial rebuilds

small osprey
#

waiting for the day amd actually has useful new rt tech

summer sigil
supple cliff
#

ps5 has good rt now but no execution reorder ๐Ÿ˜ฆ

summer sigil
#

And RT compression stuff

small osprey
#

maybe they'll finally have hw tri intersection and full traversal in the new arch?

summer sigil
#

But nothing about partial rebuilds that they've published

small osprey
supple cliff
#

well no reorder at all, so any shading and recursion is a lot worse i think

summer sigil
#

Consoles you also get to prebuild your bvhs and just load from disk iirc

small osprey
#

well, SER is quite expensive so i doubt that

supple cliff
small osprey
#

or do you mean basic reorder

#

hey, you can do it on load on pc too

#

fill up appdata/temp froge_love

supple cliff
#

no i think no reorder at all

small osprey
#

even intel can do reorder can't they

supple cliff
#

but really strong tracing perf and hw for for at least stack operations

summer sigil
supple cliff
#

yea intel is full pwoer rt with all the things

summer sigil
#

Which, who would want it to do that :p

small osprey
#

that's a req for everyone

supple cliff
#

yea rt pipeline only

small osprey
#

there's no way ray query can reorder lol

summer sigil
#

That's what SER let's you do iirc, no?

small osprey
#

no

#

rt pipe only

summer sigil
#

You just specify a reorder hash key before calling trace rays i thhugh

small osprey
#

trace rays is an rt pipe call KEKW

supple cliff
#

ser makes it user controlled within rt pipelines. Instead of only letting driver reorder based on what shader executes you give the hw a key that it uses to reorder

small osprey
#

ray q is tracerayinline

small osprey
#

spilling everything to main mem and reloading etc

#

NV only uses it for very specific rays in the UE PT

supple cliff
#

inline traces are kinda unusable ish cause they are really slow on nv and intel compared to rt pipelines. Not sure why seems like it should be fast. I guess the hw can reserve more special space for hwrt in rt pipelines

small osprey
#

and all the manual compaction ofc

supple cliff
#

ofc doesnt matter anyway cause you need anyhit shaders

supple cliff
#

so tracing outside of rt pipelins will always suck mega

summer sigil
#

Guess I need to get wgpu to add rt pipelines then...

small osprey
#

my pathtracer halved frametimes or so when switching to rt pipe lol

#

or 60-70%

summer sigil
#

The shader binding table stuff is garbage though

#

I don't want to do that

supple cliff
#

forgderp3 you are doing something wrong my guy

supple cliff
#

it makes sense after a while tho

small osprey
#

maybe

supple cliff
#

hmm

small osprey
#

can't check now tho because my code doesn't build

#

i'm rewriting my asset system froge_love

supple cliff
#

king shit

small osprey
#

and rewriting my gpuscene

supple cliff
#

Still very intresting to see all the advancements in hwrt with all the extensions coming

#

just sad to see that nvidia does it all

#

and the others always play catchup

#

tho intel does really well. AMD i can honeslty just not understand

small osprey
#

amd is busy playing catchup so they can't work on new things

#

catch 22

#

with dlss 4 they're finally competing with dlss 2/3

supple cliff
#

making 50000 frames from 1

small osprey
#

those are the frames my brain generated because i needed lsd to be able look at fsr

supple cliff
#

i have bad eyes i dont need TAA i already have it

small osprey
#

i wear glasses that are always smudged up, i get free fxaa everywhere

merry laurel
#

Working on general features, I got mouse picking in and imguizmo that one was painful because I have reverse infinite perspetive matrix it rendered fine but when I tried to move it. It gave me just bunch of NaNs

small osprey
#

highlight time cutecatNE

merry laurel
#

Next weekend

#

I have 5 exams again this week agonyfrog

#

And the college entrance exams

small osprey
merry laurel
#

They said the second half of the school year will be relaxed

#

Like I am still waiting

#

I hope the one exam gets moved to be on tuesday and not tomorrow bleakekw

paper ore
#

just focus on school

#

graphics programming is not running away

merry laurel
#

thats why I said weekend because thats after the grades are locked so we can get report card. This weekend I only worked on those features. Spent 3 hours to add them and rest was school bleakekw

merry laurel
#

Exam was moved ๐Ÿฅณ

merry laurel
#

Exam and 11 hours long shift done. Now study for other exams. God I love this so much

north helm
#

Wake up ! New nanite raytracing extensions just dropped ๐Ÿฅต๐Ÿ—ฃ๏ธ

#

This is mega geometry for vulkan with cluster based acceleration structures (CLAS)

#

And there is a new type of TLAS called PLAS to handle huge Dynamic scenes

proud marten
#

Do you have shadow mapping yet

summer sigil
#

Me? Yes

merry laurel
#

Me? No

#

I am not touching graphics for some time

#

I have first round of college entrance exams after me

#

But other ones are waiting for me

proud marten
#

Oh I see

proud marten
summer sigil
#

Sure

proud marten
#

I'm just wondering how it's approached

#

Do you have any papers I could look at

summer sigil
#

The way nanite does it is that they pass in a list of multiple view textures at once

#

And then for culling, you basically have a list of (instance, view) tuples

#

And you can expand that into a list of (instance, view, cluster) ids

#

And then when you occlusion cull, rasterize, etc, you use the view id to index into the list of view textures and rasterize against that (remember nanite is using atomic R64uint textures for raster)

#

The reason you do this is that the overhead to do culling early, raster early, culling late, raster late is a lot of you do it per view

#

The overhead of spawning the passes themselves takes up a good amount of time

#

So instead you want to do single dispatches to handle every view at once, and avoid the overhead

#

1 camera + 4 CSM cascades is already 5 views, ignoring any point lights

#

Although nanite is supposed to be used with VSM, not CSM

#

Nanite also does screen space shadows to help fill in detail that shadow maps would otherwise miss

#

Anyways for me personally I think raster shadows are a complete dead end. I support them because bevy already has support for them so it was easy to add, but long term my plan is RT lighting

proud marten
summer sigil
#

Yes, basically

#

Although I don't really think of it like that

#

I have the concept of a "meshlet" which is the actual asset data

#

And then a "cluster" which is an instantiated copy of a meshlet

#

Where each cluster has an asscoiated instance data (transform), material, and view

#

And your passes just operate on giant flat lists of clusters

proud marten
#

with a per view output?

small osprey
#

another reason sw raster is much faster

merry laurel
#

Huh

supple cliff
#

raytracing nanite

merry laurel
#

gotta love the glVertex3f

paper ore
#

more like NaNite

small osprey
#

VK_ERROR_DEVICE_LOSTite

summer sigil
#

So fun fact clear_texture in wgpu is slow af for storage textures

merry laurel
#

this article is going to be super long bleaker_kekw

proud marten
merry laurel
merry laurel
#

my notebook has decided to kill itself. BIOS no longer sees windows and HDD might be dead bleaker_kekw

paper ore
#

check if it flipped to UEFI bios for some reason but your hdd was actually in legacy mode

#

that can hide bootloaders from the mobo boot

#

there is also something called CSM, perhaps you can enable that to allow non uefi boots

merry laurel
#

it doesnt appear nowhere in bios even previous linux installation. I managed to live boot linux and hdd just inst there at all

#

Its 7 year old machine so I happy it even survived for that long

paper ore
#

ah

#

live linux to the rescue ๐Ÿ™‚

merry laurel
#

I will try to get the data from the ssd and maybe hdd to but I doubt it. Then install linux for school. Hopefully in summer replace it for macbook for college and remote to my desktop

#

M1 costs with my nice discount 700 euro so might snatch it

paper ore
#

there might be good refurbished deals from apple directly

#

for m1, m2 and m3 even

merry laurel
#

hmmm

#

m3 air is 829 usd

#

refurbished

merry laurel
#

In a week I should have article/blog post ready for a review. Its going to be a long since its a thesis going into the details bleakekw

upbeat ether
#

it's extremely powerful

#

(unless youre doing VK on it ofc)

#

however for that if you have a m1/m2 just dual boot with asahi

merry laurel
#

I know the macbook is quite powerful but the reason for remote is to work on my vulkan stuff and some windows only sw that I will have to use for college for sure

spring sandal
#

or just not buy apple shit

merry laurel
#

I need something that survives for long

#

and not a brick

#

I am looking into small notebooks and m1 macbook is the cheapest option which is wild

upbeat ether
merry laurel
#

only painful thing will be getting used to the keyboard

#

also the os

spring sandal
upbeat ether
#

fair

devout niche
#

Guys, howโ€™s your experience with slang shader profiling using nsight? Does it work for you, I mean you can stop the warp, execute line by line, see active lanes, etc..

#

I tried combination of options but it still somehow lacks of debug information level(IL) as nsight says regardless of fat ass .spv(though i think compiling to spirv directly ruins everything maybe idk)

small osprey
#

shader debugging doesn't work, profiling does

devout niche
#

yeah in default gpu trace it works for me as well, but ah ew what a pity we still cant debug fully

merry laurel
#

looks like the HDD is alive but has amnesia bleaker_kekw

paper ore
#

live linux should see it too?

#

i never touch any windows tool to rescue any disk this never worked in the past hehe

merry laurel
paper ore
#

lsblk is not listing it?

#

any clues in dmesg?

#

linux (i mean any distro with that not the kernel itself) doesnt automatically mount drives per se

merry laurel
#

lsblk only sees ssd which survived and the flash disk

#

I havent tried dmesg

paper ore
#

weird

#

if windows can see it, then lunix should too

merry laurel
#

yeah my guess the partion table on the hdd was nuked somehow then no sw can figure it out

paper ore
#

what did you do?

merry laurel
#

nothing. I tried some sw but they cant even find the hdd in the first place

paper ore
#

no i mean what did you do with the drive ๐Ÿ™‚

merry laurel
#

nothing notebook was lying on the shelf, charged and booted, moved some data and then shutdown. After a hour I tried to boot it again and got sent to bios meaning it cannot boot into windows and was about it. So I took it out connected to my desktop an tried to do something with it and now its lying on the shelf

paper ore
#

strange

#

it could be a dead ssd too then

#

especially if it was some cheap noname one, they can degrade as usbsticks or sd cards

merry laurel
#

I just installed windows on that "dead" ssd KEKW

paper ore
#

put linux on it then ๐Ÿ™‚

merry laurel
#

we finally have our timetable for the final exams and its stretched over 3ish months to just keep you suffering. 7.4 - 6.6.

#

For now these 2 weeks for 2 college entrance exams

uncut fulcrum
#

good luck!

proud marten
#

Good luck pal

merry laurel
#

I just got results from first college exam. bleakekw I am in 64.24 percentile which should just barely get me to college. I fucked up critical thinking part of exam where I was in 25 percentile. After 65 minutes of math and english they make you read 15 A5 in 45 minutes and answer not simple questions. The texts are snippets from studies, laws, contracts, etc.. On bright side in math I was 91 percentile and english 87. Tomorrow I have the exact same exam and next week is different one which is only math and its made in the way that you cant finish it. Even completing half gets you in 70-80 percentile. For this college I need 45 percentile

merry laurel
#

I just found out there is one tiny detail to get into computer science you need have 75+ percentile in math from whole college so for me it means I have greater chance to get in

#

my friend wants to go to same college and computer science and he has 67 percentile in math and 74 percentile overall rip bleakekw

uncut fulcrum
#

Good work, good luck on the upcoming tests also

merry laurel
#

I just witnessed how templates are slow to compile. My script engine takes 12s to compile

#

basically 50-70% of compile time

devout niche
proud marten
merry laurel
#

also you std::vector is templated ๐Ÿ˜›

proud marten
#

true

#

i just dont make my own very often

#

โ€œvery oftenโ€ implies I have a few times. i dont think i actually ever have (in practice)

merry laurel
#

So some good and bad news. I have pneumonia bleakekw
The doctor thought this was just cold so he prescribed me weak antibiotics. After the week I went for a check up he said it's okay but to be sure we're gonna do RTG. Next day after 3 hours in schools he told me to get out because I have pneumonia and also to buy stronger antibiotics.

#

On Saturday I have a college entrance exam marking the 3 exam while being on antibiotics.

pale vortex
#

do you get penicillin shots?

merry laurel
#

The pneumonia is chill. No temperature, no tiredness just coughing

merry laurel
pale vortex
#

you normally get penicillin shots for pneumonia

#

unless it's caused by fungi

#

but maybe there are fancier antibiotics now

merry laurel
#

No clue

pale vortex
#

well if you're feeling good then that's good

merry laurel
#

These are some strong ones. Only once a day and some rules to follow

#

At least I have time to study for the exam

#

This one is pure math which I excel at

#

So that's nice

#

The only thing to keep in mind is some stupid rules and tricks

merry laurel
#

Another college entrance exam done. This one I am feeling I did really well.

#

Also got a itch to make minecraft clone

paper ore
#

why not a star citizen clone?

merry laurel
paper ore
#

: (

#

then we dont need the 1290348109809234820942840298432098234094820127839th minecraft clone

merry laurel
#

I see Caio fighting his tessellation thingy

#

But its on my list

paper ore
#

GTA 5 clone ๐Ÿ™‚

#

Witcher clone

#

DayZ/ArmA clone

merry laurel
#

I am torturing my gpu a little bit

#

64 chunk render distance

paper ore
#

so you are neck deep into this mc clone already

merry laurel
#

this took me 2 hours canibalizing my nanite project and watching a movie KEKW

merry laurel
#

I will be stuck home for another 6 days

#

so why not

paper ore
#

yeah

merry laurel
#

also I should be studying and preparing for high schools final exams bleakekw

paper ore
#

mc 1.24 level functionalities expected within the next 5hrs

merry laurel
#

I have to fix my VRAM usage, multithread it and do gpu driven rendering

#

frustum + lpotricks scanning visbuffer for culling

spring sandal
paper ore
#

fair

merry laurel
#

I hate multithreading so much and std::list

#

Also I am crashing on push back somehow

#

got some textures

upbeat bluff
#

i smell a voxel engine

merry laurel
merry laurel
#

no

#

triangle gang here

upbeat bluff
#

ye, that's what i mean

#

dont listen to those weird voxel rt people

#

rasterization is the way

north helm
#

cope

merry laurel
#

such bullshit

paper ore
#

that just means more time to code

merry laurel
#

sadly not

#

I have bunch of stuff to do

#

preparing for final exams for high school. I need to study how to write essays I really suck at them. Finish the article. Prepare for exams when I return to school and more

merry laurel
summer sigil
merry laurel
summer sigil
#

I'm also unlikely to touch clustering code atm anyways. It's at least good enough for now after my last PR, I need to focus on the hierchal culling.

#

I'm tempted to swap to nvidia's library though because they have the BVH building built in

#

And writing it by hand is making me give up :/

merry laurel
#

feeling same after gradiation I would to spend tiem making my renders beautiful and not just faster. I cheked the nvidias library I dont see bvh mentioned there at all

#

okay there is some hierarchy going on

#

but it doesnt look like to me as bvh

#

alright I am stupid this is bit confusing codebase there is some bvh

#

going to sleep

#

they seem to have persistent threads that is something that requires operation Strategic Transfer of Equipment to Alternate Location aka STEAL

merry laurel
#

priority admission to college for the win

#

In a week or two they should email me about it

#

Now focus to actually not fail on final exams

paper ore
#

?

#

why more final exams when you are in already?

#

or do you mean your actual current school final exams?

supple cliff
#

Congrats!! ๐ŸŽ‰

merry laurel
north helm
#

Gg

merry laurel
#

its going to be like this for 20 minutes

#

my cpu

#

linking failed...

merry laurel
#

I was forced to use vs generator instead of ninja bleakekw but it finally compiled

lilac iron
#

why are you building llvm ๐Ÿ˜ญ

merry laurel
#

evil plans

small osprey
#

llvm builds in like 10 min on my 7900x huh

#

with ninja

#

I should buy a 7950x3d for no reason at all froge_love

upbeat ether
#

no you shouldnt

#

theres a 9950X3D after all

small osprey
#

I do have 300 quid to spend on someone else's 7950x3d tho

#

especially because they're now spending 700 quid on a 9950x3d and want some of that money back

paper ore
#

or just wait till next winter

#

then use your old cpu to warm the house with compiling llvm

upbeat ether
#

write yourself a kernel that just does while (true) on all cores with no preemptive scheduler

merry laurel
#

What did I start in #bikeshed-๐Ÿ˜‡ ๐Ÿ˜ญ

supple cliff
#

damn

merry laurel
#

All I wanted to say was that Ubisoft either screwed up something or released buggy mess

#

Tomorrow morning I will have something to read at the doctor

#

I saw you saky

spring sandal
#

I know you are busy, but maybe you know how to solve this.
When building network in cisco with multiple vlans and dhcpv6 pools pcs pick up ALL domain names, regardless of vlan they belong to. Second image is ipconfig on any pc in any vlan.
Thanks in advancecutecatNE

merry laurel
spring sandal
#

Thanks anyway, I am deadbleakekw

merry laurel
#

I have been in trenches with NAT past few weeks

#

Also mail servers and more

spring sandal
#

Luckily this is my final stop(or at least I hope so)

merry laurel
#

we will continue for a month and then final exams ๐Ÿ’€

merry laurel
summer sigil
merry laurel
#

I am alive but dead inside. This week was extreme. I had the essay where I hope I did well. Also I had pre final exam from math to check if they will even let you do the final exams. Lastly bunch of other exams and presentations ๐Ÿ’€

#

Now I have 4 days of free time which I will spend on writing the thesis finally

spring sandal
#

Drop it here after defence

merry laurel
#

Its in czech bleakekw

#

But I have english one also

spring sandal
#

Google translate exists anyway

merry laurel
#

both are in half finished state

#

I feel really sorry for my opponent

small osprey
#

is your thesis nanite thesis

merry laurel
#

yes ๐Ÿ’€

small osprey
#

based

paper ore
small osprey
#

you're 4 years ahead of a lot of people KEKW

#

there's so many nanite bachelor's thesises

merry laurel
#

there was recent master thesis about nanite

small osprey
#

ain't no way ๐Ÿ’€

#

what's the sauce

merry laurel
#

written in rust but it doesnt have even 50% of my stuff

merry laurel
small osprey
#

damn they use rust-gpu

merry laurel
#

yeah he only done LODs and some culling.

small osprey
#

no bvh cull froge_sad

merry laurel
#

I need to still work on my lods

merry laurel
small osprey
#

i'm porting my bvh cull to bevy and losing my mind agonyfrog

merry laurel
#

My TODO list is like 80 items and I have still 2 months of stupid school bs

small osprey
#

i've managed to uncover shader compiler bugs outputting invalid spirv and my buffers randomly change from out under me

#

very fun would recommend frogapprove

merry laurel
#

I had my some share of those

#

nvidia mis compiling if statement and crashing the whole OS froge_love

small osprey
#

nvidia drivers are on a roll lately

merry laurel
#

indeed

small osprey
#

i pray that when i'm back home in 2 weeks they will have fixed the gpu crash recovery

merry laurel
#

they managed to fuck with lpotricks async stuff

small osprey
#

if breaking async compute and overlap is what it takes to recover from crashes, it's worth it

merry laurel
#

๐Ÿ˜”

small osprey
#

wtf is that

merry laurel
#

I ran out of t3 chat free messages for AI

small osprey
#

๐Ÿ’€

merry laurel
#

Its great for yapping bleakforg

pale vortex
merry laurel
#

๐Ÿ’€

#

Yesterday discords outage was quite funny. We were playing EFT when it happened. We had to switch to VOIP in the game itself. Problem with it is that other enemy players can hear you. Some russians heard us so we had some nice exchange of words and lead.

merry laurel
spring sandal
#

"Opponent"? I thought you just defend against jury of professors

paper ore
#

a teenager flex

merry laurel
#

still not done... I have 2 days to finish it so I can have physical that they need. I dont want it be printing it the day I need to submit it next week

#

this week I have only 2 school days but 4 exams so the my free time will be non existant ๐Ÿ’€

merry laurel
#

2 exams done and another 2 tomorrow.
I am at 62 pages. User guide to this nanite thesis is basically good luck with compiling and if you have bad HW then also good luck. Now to citing the sources bleakekw

spring sandal
#

Put some work in it, imma implement mine based on itheee

merry laurel
#

I am almost at the finish line

merry laurel
spring sandal
#

I am mostly interested in yapping(Ill get demotivated half-way into implementation)

merry laurel
#

ehhh

#

its quite abstract

merry laurel
#

It is done

#

63 pages, 9500 words, 20 sources(I mentioned frogs from here froge_love )

#

Tomorrow as a reward I will play tarkov until midnigh

frigid breach
#

congrats ๐ŸŽ‰

merry laurel
#

I forgor to put image of my program there ๐Ÿ’€
It should be fine tho

#

But damn boy he thicc

#

No forest was spared for this thesis

merry laurel
#

I love being in the vcs and chats were people are malding over the fact the thesis has to be submitted tomorrow

#

some people are just finishing their projects KEKW

proud marten
#

hows it going lukasino

merry laurel
#

Quite well. I just finished the written final exams so only one left are oral exams. Those will be in a month. Gotta study over 100+ A4 of stuff.

#

Also yesterday I had interview and they seem to like me. So I just hope they will have budget for me

proud marten
#

i see

merry laurel
#

Good news. I passed the written exams. Now only oral exams and defence of my thesis.
Also officially I have been excused from entrance exams for college so I will need to just sign up and I am in ๐Ÿ˜ˆ

#

The email from college had this image in there KEKW

supple cliff
#

lol

#

congrats!

merry laurel
#

I am back to kind of working on this project

#

I dont want to touch rendering for some time. So I am working on asset pipeline to make it much better code, perf and quality wise.

#

Also I want to add asset editor. Something similar to blender but wont shit the bed when you load 8GB model.

#

I want to add import for usd and fbx and export ability

#

so touching blender could be avoided

spring sandal
#

Usd is understandable, but why fbx if it's literally gltf?

merry laurel
#

because there are a lot of fbx models

#

thats the only reason why

#

I dont trust blender with fbx -> gltf

#

something will blow up in process

#

dealing with usd and fbx is going to be a lot of fun

spring sandal
#

save yourself some headache and don't support fbx

merry laurel
#

it will be the last that I will support KEKW

merry laurel
#

it will be simple stuff like change texture

#

tweak stuff

#

mainly I need some editor too see model and examine because I had some funsies with certain models

#

my current asset pipeline is just wing it and hope that 32 threads wont crash at the same time because some bogus that artist made

#

I had some case where albedo and emissive texture had same underlying image so when I tried to convert the image it exploded because I have different encoding schema for both

devout niche
merry laurel
devout niche
merry laurel
#

I will murder somebody

upbeat ether
#

please do ๐Ÿ™

merry laurel
#

I wish there would be tool that could find header from where this shit comes from

#

Its from the logging library

merry laurel
#

I am reading through gltf spec

#

I found out using sRGB format for base color texture is correct for RGB channels but A channel is linear so it will have incorrect alpha value

#

so you have to un-sRGB A channel or have UNORM format and sRGB the RGB channels

#

I avoided this bs with my own format that splits A channel into its own texture that is linear

upbeat ether
#

as our local gltf expert, no

#

The base color texture MUST contain 8-bit values encoded with the sRGB opto-electronic transfer function so RGB values MUST be decoded to real linear values before they are used for any computations.

#

the second part might suggest this is only RGB

#

though I only take that as an example

#

the first part says the entire texture must contain sRGB values, and doesn't differentiate between RGB or A

#

The base color texture. The first three components (RGB) MUST be encoded with the sRGB transfer function. They specify the base color of the material. If the fourth component (A) is present, it represents the linear alpha coverage of the material.
uh wait what

#

I would guess that is badly worded, given the first sentence I quoted

#

tbh it might be worth opening an issue about the wording on the second quote I sent

merry laurel
#

from what I understood

#

first paragraph that you queted says sRGB applies to RGB channels and leaves the A channel "not defined" but later defined by second paragraph

#

Okay I checked code of gltf viewer and they transform srgb to linear all channels

#

so eh.....

merry laurel
#

updating to new daxa

supple cliff
#

nice

proud marten
#

youre on daxa?

#

i wanna give it a try in my next project

devout niche
#

tbh daxa seems to be best abstraction over vulkan rn.
I looked the way bindless handled and was like "fuck, i need that too", i mean arrays of tlases, storage buffers, etc. so you kind of don't pass bda's into shaders but uint64_t id(id + version)

vernal blade
#

But also nothing stops you from not using ids and passing by bda anyways

devout niche
#

but how would you then define buffer as globallycoherent?

devout niche
vernal blade
devout niche
devout niche
supple cliff
#

there is a coherent texture access but not buffer

devout niche
supple cliff
#

no, im saying im not using a buffer for coherent access, i am using a coherent image

#

i had yo disable vmm, forgot the reason

#

i think its optional now

merry laurel
supple cliff
#

ah right

merry laurel
#

Defence of my thesis is in a week and oral exams another week after that. Its taking too long ๐Ÿ˜ญ
These day I am studying and working on my ui for fun after that. UI is surprisingly not easy thing

#

Got simple font rendering working with harfbuzz. I will switch later to vector based text rendering with mesh shaders. Also got nice flexbox algo working

merry laurel
#

Defence of my thesis successful got some interesting reactions. I wasnt worried about failing that. Only thing that sucked was being in the full suit in sultry weather agonyfrog

#

In 8 days I have oral exams back to back from various subjects

#

After that its finally over

merry laurel
#

Everytime youtube changes the layout I get anurysm

#

on my 27" QHD I can only see 12 recommended videos

#

and when I put window to be same size as the half of the screen. It just decides to display next video the same size as the video playing

north helm
#

thesis release when ?

merry laurel
north helm
#

imma wait for the en version ๐Ÿ˜…

merry laurel
#

ITS OVER

#

No more studying

#

Got straight As. Questions for oral exams were ciphers and hashing for programming, and the technical subject interupts and DMA. Also I had oral exam from czech and literature that was fine.

#

This arrived to my mailbox froge_love

north helm
vernal blade
north helm
#

Oh and that is his uni ?

vernal blade
#

no clue :D

upbeat ether
#

i've never looked at how an actual thesis looks like or what is involved before and after that so idk

frigid breach
upbeat ether
#

a thesis in high school thonk

merry laurel
merry laurel
#

All oral exams are back to back in one day with 10 minute pause.

#

I had 70 questions in total. The stuff that I prepared to study from is about 180 pages of stuff. The hardest thing about all this is just to remember all of it

upbeat ether
#

this stuff in high school is extremely interesting

merry laurel
upbeat ether
#

that's actually very cool

merry laurel
#

Damn I missed first day of REAC froge_sad

supple cliff
#

was very good

merry laurel
# supple cliff was very good

I was particullary excitent about meshlet rendering but also GI stuff. Sadly I will have to wait for the videos to be uploaded

supple cliff
#

i missed the last talk

summer sigil
#

Wait I thought it was tm?

#

Frick did I miss it

#

Gah what the heck

#

Is it a different discord than 2024?

supple cliff
#

should be the same

#

today are more talks

summer sigil
#

Smh I was looking at the siggraph discord this whole time, not the REAC discord ๐Ÿ˜…

merry laurel
#

@summer sigil I hope you are present for the REAC today

summer sigil
#

yep!

merry laurel
#

I am going for vacation to finally rest and then I can start working on the project again ๐Ÿ˜ˆ

merry laurel
#

I am coming back on Saturday. The first thing I would like to add is lights finally. Then finally handle masked and alpha blended materials. Alpha blended is going to be handled by WBOIT and Linked List OIT that should be bandwidth friendly froge_love. I would love to add animated models it's first time I will be doing it. The last best thing is going to be ViSM brainworm

proud marten
#

i can offer some help if youre loading animations from gltf

merry laurel
#

Finally made it home. Tomorrow, the bikeshedding can begin.

merry laurel
#

Lights are in but in somewhat hacked in. I dont want to touch any pbr stuff yet. So it will look like that...

#

I have to figure out the best way to manage the lights

#

Tomorrow the materials are next

merry laurel
#

Some silence here. I have gotten myself a job. Its web dev froge_bleak
Currently having a lot fun with server and client rendered pages looking different for some stupid reason

pale vortex
#

Haha enjoy

#

This is my 6th year and I think it'll be the last, 6 years of that is enough for a lifetime I say

merry laurel
#

I am doing some map stuff. All the libraries are so bad. I found some annoying bug

pale vortex
#

Mapbox?

merry laurel
#

I had to deal with topojson, weird projections and coordinates tomfoolery to get all the stuff nicely displayed

#

react simple maps

pale vortex
#

O shit react

#

What an awful and easy to mess up framework

merry laurel
#

what do you use?

#

dont say angular

#

that thing is worse

#

I dont really use react but nextjs ๐Ÿค“ โ˜๏ธ

pale vortex
#

I inherited a react project from others right now and it's riddled with bugs that I have to fix

#

It's really really awful and undebuggable

merry laurel
#

yeah

#

This makes me want to cry

#

its so bad

pale vortex
#

Try not to spend too much time in webdev especially since it's your (I assume) first job

#

Your brain will rot and you will become unhirable in other domains over time

#

Use the $$$ webdev pays to get your life in order maybe buy an apartment and pay it off

#

Then get out

merry laurel
#

This is my 4th programming job bleaker_kekw I already got large ammount of brain damage from one angular job

#

The DOM was so huge the horizontal slider appeared and you could scroll for some time bleaker_kekw

#

this is the only screenshot I have of it(not revealing anything) but OH BOY
My inspector was taking half the the screen so I could debug it ๐Ÿ˜ญ

merry laurel
small osprey
#

ensure the place uses perforce instead of git for maximum effectiveness

merry laurel
north helm
merry laurel
#

FINALLY MAN

#

This shouldnt take this much changes ๐Ÿ˜ญ

#

21 changed files, 4 new files

pale vortex
#

what did you do tho