#Foundation - My adventure through Graphics Programming

3685 messages ยท Page 4 of 4 (latest)

merry laurel
#

I want to finally correctly handle opaque, masked and transparent materials

#

My renderer is gpu driven so handling this stuff is annoying

vernal blade
#

seems like you have backface culling on for the bushes?

merry laurel
#

yeah I do

vernal blade
#

they look a little too sparse

merry laurel
pale vortex
#

is this with srgb fixup on? it looks so dark

#

or is the ambient light a dark gray?

merry laurel
#

yeah I have some very bad lighting code kekkedsadge

#

this is without the lighting

merry laurel
# merry laurel My renderer is gpu driven so handling this stuff is annoying

It took me a while of thinking to arrive to somewhat good solution.
I have to track how many opaque, masked and transparent meshes and meshlets to create buffers
All meshlet instances live in the same buffer but the buffer divided to three parts. Where each part corresponds to each material type.
For the culling and rendering I header which has the the correct pointers to store the data and offset of the part.

#

Also I am forcing masked and transparent to be hw rasterized.

merry laurel
#

@supple cliff Is it safe to use master branch right now?

supple cliff
#

if you are a little sus on it take the commit of 3.1

merry laurel
#

hmm. I wanted to add VK_KHR_maintenance8 but it seems that nvidia drivers just dont have it. For some god forsaken reason. Even tho there are reports on gpuinfo and I downgraded my drivers

#

So it is the uglier second option

supple cliff
#

i also want to add it

#

it somehow takes ages to fully arrive

merry laurel
#

I wanted it because you are not allowed to write into D32 image. I hoped that R32 -> D32 copy from maintenance8 would work but nvidia doesnt have it...

#

So the last option is fragment shader and manually writing the depth...

supple cliff
#

yea same

supple cliff
#

master should be fine tho

#

tido runs etc

#

and it has the latest syntax

merry laurel
#

๐Ÿซก

supple cliff
#

new syntax is not documented yet but its much simpler

#

i can post the gist here

#

inline tasks are now the default. Taskheads can be used in inline tasks. There is also a new name for them, just daxa::Task.

#

examples:


DAXA_DECL_COMPUTE_TASK_HEAD(SomeTaskHead)
DAXA_TH_BUFFER(READ, buf)
DAXA_TH_IMAGE(READ_WRITE, img)
DAXA_DECL_TASK_END

void callback(daxa::TaskInterface, daxa::TaskBufferView cmd_buf, int cool_data)
{
  ...
}

...

int cool_data = 123;

auto task = daxa::Task::Compute("Name")
    .uses_head<SomeTaskHead::Info>()          // adds task head to task, adds head attachments to task
    .head_views({                             // fills task head attachment views
      .buf = buf_view0,
      .img = img_view0,
    })
    .indirect_cmd.reads(cmd_buf_view)         // adds new inline attachment for cmd_buf_view
    .executes(callback, cmd_buf, cool_data);  // adds callback and copies all the parameters for callback
merry laurel
#

Interesting. I am quite happy with the current syntax ๐Ÿ˜„

supple cliff
#

yea its just that this unifies some code in the background

#

makes future additions easier also

#

you can still do all the other builder inline task things like before:

auto task = daxa::Task::Compute("OtherName")
  .writes(buf)
  .samples(img)
  .executes([=](daxa::TaskInterface ti) {...});
#

old style retained tasks also still work:

SomeTaskHead::Task{
  .views = {
      .buf = buf_view0,
      .img = img_view0,
  },
  .cool_data = 123,
};
#

@merry laurel how old daxa are you on btw ? ๐Ÿ™‚ cause the syntax changed a lot lot recently

#

the super old syntax for inline tasks is now deprecated. It will still work but ill remove it end of year in favor of the new builder tasks

merry laurel
#

I running on version from May 4th

#

not that old

supple cliff
# supple cliff examples: ```c++ DAXA_DECL_COMPUTE_TASK_HEAD(SomeTaskHead) DAXA_TH_BUFFER(READ...

oh btw you can also use heads as a pure data transfer tool now without the access in the head:

DAXA_DECL_COMPUTE_TASK_HEAD(SomeTaskHead)
DAXA_TH_BUFFER(NONE, buf)
DAXA_TH_IMAGE(NONE, img)
DAXA_DECL_TASK_END

void callback(daxa::TaskInterface, daxa::TaskBufferView cmd_buf, int cool_data)
{
  ...
}

...

int cool_data = 123;

auto task = daxa::Task::Compute("Name")
    .uses_head<SomeTaskHead::Info>()          
    .reads({.buf = buf_view})                 // sets access for attachment here, instead of in the head
    .writes({.img = img_view})                // sets access for attachment here, instead of in the head
    .indirect_cmd.reads(cmd_buf_view)         
    .executes(callback, cmd_buf, cool_data); 
#

gabe and saky wanted this

merry laurel
#

thats nice

#

that would be useful for me today ๐Ÿ˜„

supple cliff
#

this makes it very convenient to add heads to existing inline tasks

#

there will come more builder functions like uses_queue() and waits_on() for sheduling

merry laurel
#

oh nice

#

cant wait for the async compute to drop

supple cliff
#

its in already ๐Ÿ˜ฎ

#

but its a little buggy in the sense that it will try to insert some illegal barriers

merry laurel
#

I wonder if the SW raster would benefit

supple cliff
#

its super easy to use

#

before you start doing that ill make a last syntax change to it today

merry laurel
#

I will touch in a month

#

I am currently trying to get transparency going on and then next rabbithole is animated models with meshlets

#

First time configuring normal raster pipeline in very long time

#

I didnt missed it at all

#

my beloved compute shader

supple cliff
#

oh yea

#

there are new create infos with a 2 suffix now ๐Ÿ˜„

#

they are nicer to use, less nesting

#

also saner default setting in pipeline manager

merry laurel
#

I know I had to change the code

supple cliff
#

submitted changes

merry laurel
#

๐Ÿซก

merry laurel
#

After fighting my asset manager. I have managed to track down my issue. I only updated materials that had textures but these cubes dont have any so it broke...
Now figure out how do you blend correctly ๐Ÿ˜ญ

#

Okay I am getting close to the desired result

merry laurel
#

Now animated models with meshlets froge_love

merry laurel
#

god I hate blend functions

supple cliff
#

damn i gotta add transparencies to tido

merry laurel
#

but I was thinking about "linked list" or sorted transparency using vis index

supple cliff
#

i think i wanna try visindex and sorting

merry laurel
#

yeah thats on TODO list

#

Next is animated models. Thats going to be interesting

#

I have to do skinning on gpu to calculate bounding boxes and spheres for culling

supple cliff
#

that is true

merry laurel
#

Also I will have to some shenanigans with memory. Currently my renderer automatically instances meshes but with animated ones you cant do that because the animation state could be different.

#

I will have to create "fake" meshes that will share non skinned vertices and also they have their own skinned vertices.

#

I am not particularly excited about that

supple cliff
#

like instanced draw calls?

#

so 2013 :p

#

single ultra indirect mega drawcall >>>

merry laurel
#

I am on that indirect mega drawcall train

supple cliff
#

oh ofc

#

idk i wouldnt call that instancing hmm

#

instancing is an overloaded poop work

merry laurel
#

yeah...

supple cliff
#

for animations i would scratch allocate space for verts every frame and make temporary meshes into those

merry laurel
#

thats my idea

supple cliff
#

cool

supple cliff
merry laurel
#

I have also my own model format so it gets painful to add something. To add just simple base color factor I had to modify code on 5 different places

#

But the loading times are really nice

merry laurel
#

@proud marten Got a question about animations in gltf. Their stupid joint to node mapping does serve anything because it looks like to me that it is utterly useless

#

The more I look at it the more I hate it

proud marten
#

maybe it has something to do with the transform hierarchy

devout niche
merry laurel
#

Found the suspect. I have to do this...

#

yay I just made flecs explode

merry laurel
#

simple animations are working now

merry laurel
#

morph targets are next but with twist skinning in compute

merry laurel
#

After more thinking I will have to disable nanite lods for animated models

merry laurel
#

I am fixing so many bugs in my asset pipeline kekkedsadge

merry laurel
#

I can calculate the bounding spheres for each meshlet but the group sphere is more complex

merry laurel
#

Started that mentioned job. The company and people are amazing. Only pain is trying to build the work project and oh boy its second day and we havent been able to build it. Even with the help of 3 people bleakekw

#

Also the the registration for my college and the classes just opened froge_love

small osprey
#

lol

merry laurel
#

I work for Chyron

#

I am working on some software they acquired some years ago and the buildsystem is fucking mess. Basically one few people know it and want to rip it out and kill with fire. They cant do it because its quite a effort and nobody wants to do it bleakekw

proud marten
#

are you culling hierachically if thats the right word

#

or is this related to the lod hierarchy or both

merry laurel
#

It's possible to do it but I just dont want to

proud marten
#

I see

merry laurel
#

Hmm this asset manager thing eh... It's not fun. Asset manager does a lot of stuff that it shouldn't but for now it will suffice. I want to get these stupid animations working then I will rewrite this part of code. And finally manage removing meshes at runtime

#

As a reward I will do ViSM

merry laurel
#

Just one more tab

#

Finally got some free time to work on this

#

Its not much after full time work and freelance gig

#

Next thing to do is going to be annoying as hell.
For each animated mesh I need to create:

  1. mesh geometry struct that houses all the data about the mesh on the gpu
  2. animated mesh struct that has pointers to the previously mentioned struct but also pointers to its own memory for skinned vertices, etc...
  3. render mesh struct where each pointer points to a mesh geometry struct or a animated mesh struct data
#

this mess is also on the cpu side

#

after that I can do gpu side where I will have to two passes with compute shaders

#
  1. skin the vertices using morph targets and skin matrices
  2. calculate bounding box for each meshlet but also bounding sphere using ritters algorithm
merry laurel
merry laurel
#

Only thing I have to figure out how I will send weights and skin matrices to the gpu

merry laurel
#

I hate Qt so much ๐Ÿ˜ญ

merry laurel
#

I might start using vkCmdUpdateBuffer because I getting tired of spamming stagging buffer for every small thing

supple cliff
#

i wanna add it to daxas command recorder

merry laurel
#

๐Ÿ‘€

#

would be nice with the memcpy to the image extension that you just added

supple cliff
#

meanwhile you can use daxa::RingBuffer also

#

very easy to use

merry laurel
#

For now I will cope with staging buffers

supple cliff
merry laurel
#

I have just finished cpu code for this animated meshlet stuff

#

now gpu bleaker_kekw

supple cliff
#

its just creating it + calling reuse_memory_after_pending_submits once end of frame

#

then you can call allocate to get a section into this ring buffer, the return value gives offset and pointers to the memory

merry laurel
#

thats nice ๐Ÿ‘€

merry laurel
#

We have big success. This meshes vertices and bounding box and sphere are computed on the gpu

#

Tomorrow I will add the animation logic and then we should have animated cube with morph targets froge_love

#

I am currently cheating a bit with the bounding sphere. I am calculating it using the AABB instead of Ritter's algorithm

#

such a shame that nvidia doesnt have VK_EXT_shader_atomic_float2

#

I have to resort to some bs

merry laurel
#

I will be so happy when this animation stuff is behind me

#

My head hurts just by thinking about it

merry laurel
#

but it works

#

the trick that I had to use to make it work was

#

We have working morph targets

#

The AABB is updated from the compute shader froge_love

#

Next thing is consult the spec how I should handle normals and uvs with morph targets

#

Then skinned meshes

#

After that some bugs that I am aware of but ignored so I can see the stuff actually works

merry laurel
#

gltf is causing me some major headaches. I will have to classify if the animation is either for entity, joint or morph targets

proud marten
#

why not a vertex shader? Is it related to culling

merry laurel
#

I have to recalculate the bounds

#

Also I don't have to skin the vertices everytime I render the mesh

proud marten
#

do you streamline anything else like that for multiview? i imagine you could do world transforms in compute

merry laurel
proud marten
#

fair

small osprey
#

shadowmaps considered harmful

merry laurel
#

too bad I am going to do virtual shadow mapping froge_evil

small osprey
#

just RT

merry laurel
#

This is skinned mesh. Quite a nice plane

#

Looks like I am in some chicken and egg problem this so fun bleaker_kekw

merry laurel
#

I added all the necessary code and it's broken....

#

This is going to be more annoying than I thought

small osprey
merry laurel
#

I am going to git stash all the code and will do the cpu side a bit better

merry laurel
#

My whole gpu driven rendering pipeline caused me less headache than this bullshit. I have been stuck on this for 15 days.

#

Virtual shadow mapping is going to be a bliss for me. I will be so happy to get rid of this anurysm inducing bullshit from my TODO list

proud marten
#

if it makes you feel any better i spent several months diagnosing and fixing a single animation bug

merry laurel
#

problem isnt the correctly handling the animations both on the gpu and cpu.

#

GPU is the easier one because its straight forward but the CPU is a bit trickier because how gltf choose to do things

#

My pain in the but is just book keeping the data

#

one instance is alright

#

problem becomes what if there are two or more instances

small osprey
#

do what you're doing for one instance but two or more times heee

merry laurel
#

Why dont you add animated models into your renderer also heee

#

so you can suffer with me

#

@small osprey froge_evil

small osprey
#

nahhhhhhh

merry laurel
#

Hmm. I will stash the code and focus on some refactoring and clean up

#

Would be more beneficial for me

merry laurel
#

This is me at work. Had been compiling for 4 hours

small osprey
#

you need a 5995wx froge_love

merry laurel
#

I gave a task to the IT department to dig out something more powerful

#

They are essentially paying me for scrolling

merry laurel
small osprey
#

yeah they sent one over on friday KEKW

#

so i've been setting up my dev environment again today

#

the clone just finished froge_love

merry laurel
#

Damn jealous

#

I am running on Intel xeon from 2014

#

It has only 4 threads KEKW

#

My friend who does frontend was given a better computer than me who deals with abandoned project in C++ with 50+ dependencies

#

Configuration failed. 2 hours of compiling went down the drain

small osprey
#

ouch

#

no incremental?

merry laurel
#

There is a cmake framework that is over engineered and nobody knows it and for some reason it forces clean rebuilds for configuration

#

Spent 3 days debugging it with cmake debugger but it's utter mess so we left it be.

small osprey
#

wtf

merry laurel
#

I didn't mention it took a week to figure out how to build this thing

#

Currently I am adding some driver support and encountered some bug with handling interlaced video formats. So we will force only progressive but that simple change is failing a build somehow. ๐Ÿ™‚ ๐Ÿ”ซ

proud marten
#

lmk what you end up doing

merry laurel
merry laurel
#

I am doing some refactoring to my whole codebase

merry laurel
#

I am moving some code around so its little bit more readable. Tomorrow I will continue with animations hopefully

merry laurel
#

I just learnt the build system at work is not deterministic

pale vortex
#

We must learn to embrace chaos and use it as fuel for our growth - your coworkers

merry laurel
#

In no way I am rewriting that mess

#

They don't pay me enough to deal with that headache

merry laurel
#

Born to: Do rendering
Forced to: Rewrite cmake, fix CI and fix 20 years old code

#

I decided to put the animation on hold but do other stuff

#

Currently I am working on SSAO because I dont want to dabble in GTAO or RTAO yet

#

After that some light culling fun

merry laurel
#

we have some poor mans AO going on

#

took longer that I would like because I forgot I had normals in world space KEKW

#

Tomorrow light culling rabbit hole begins

proud marten
summer sigil
merry laurel
merry laurel
#

Transparent objects are biting me in the ass. How do I handle SSAO with them and also light culling

#

Clustered will work with them but tiled no way

merry laurel
#

First I will implement naive tiled then add zbin to it and then jump to clustered

#

And have option for tiled or clustered in renderer to choose from

#

I found some nice blog about clustered light culling where he uses hashes and scalarized it quite a lot

#

also claims that he lowered worst case from 3.1MB -> 164KB

#

I will have to email him to ask him about some details because the source is not open froge_sad

small osprey
#

what's a transparent object?

merry laurel
small osprey
#

what's that cutecatNE

small osprey
#

i don't even support alpha cutouts

merry laurel
#

I do...

#

It was painful to add

#

Just today some software raster supporting transparent meshes just dropped

#

I have an idea how to do tiled with transparent meshes but it is double the work

#

I wonder if there is some shortcut...

merry laurel
#

Or I just make the shaders for transparent meshes to iterate over all lights

#

So you look at piece of glass -300 fps right there

merry laurel
#

lucid unlike every other approach isnt a approximation

#

Yeah I am not implementing it. I will cope with my WBOIT for now

merry laurel
#

finally

#

tiled light culling working now hook it to shading and also cull spot lights

small osprey
#

yooo

#

have you considered going RT-only though cutecatNE

proud marten
small osprey
#

so you can only eval them for those pixels

#

ofc, what you should be doing is restir with light trees cutecatNE

proud marten
#

nah just stick to directional lights

#

i dont think ive made a point light in over 3 years

merry laurel
#

Also I figure out the way to do tiled light culling for transparent meshes

small osprey
#

i wrote my first PT when i was 15 or something

#

didn't know shit

#

but it worked

merry laurel
#

I want to understand the math behind MIS and PDFs

#

After the light culling things I want to do PBR so I can have some shiny things in my renderer finally

small osprey
#

mine was pbrt based lol

small osprey
#

it's super shrimple

#

the book explains it but isn't amazing with it

merry laurel
#

I understand some of it

#

But I have no clue how to derive pdf

#

Also I havent touched integrals and derivatives in my life. I will learn about them in 2nd semester if I am correct

#

Its just a thing that I dont want to touch yet

#

There is a lot of stuff that I can do before I touch PT

small osprey
#

and an integral is the area under a curve

#

and a derivative is the slope of the curve

merry laurel
small osprey
#

genuinely all you need to know

merry laurel
#

idk about that KEKW

#

Give me 6-8 months and will get to that

#

Anyway I have todo list of like 80 items to do

#

So I have enough of fun already

summer sigil
#

It's litterly just monte carlo

#

Which is just "sum(f(x) / p(x)) / number of samples"

summer sigil
#

So if you have 1000 lights and pick one (x) randomly

#

Then p(x) is just 1/1000

#

And since you divide things by p(x)

#

You end up just doing f(x) * 1000

merry laurel
merry laurel
#

Just added 2.5 culling to make it even better

merry laurel
#

Finished flat bitset for the tiles indices. The cost went down by 32x froge_love

#

Today I am going to add bloom and do some cleanup

#

Also I have been playing battlefield 6. Its quite fun

proud marten
#

sounds good

merry laurel
#

Whoever programmed the file explorer needs to burn in the hell

olive jolt
#

let me guess, are you still waiting for it to finish listing all the files in a directory that contains lots of files? KEKW

merry laurel
#

Also that

#

And tree view is flickering all over the place. So when I click on some folder by that time it will refresh and I will click on the wrong folder

#

Also it takes 70% of my CPU

merry laurel
#

I tried to install it but company did something that prevent it to be downloaded. I will work around it tomorrow

merry laurel
uncut fulcrum
#

Itโ€™s a known issue that FilePilot is flagged as a false match

#

Unfortunate tbh

#

The author bought a cert and everything

#

I wish I could change every file explorer dialog to be File Pilot :(

merry laurel
#

seen every talk KEKW

uncut fulcrum
#

oh so you already know about it

#

I paid the $200 for the perma license, it is a great app

merry laurel
#

yeah I did quite enjoyed it on company time

uncut fulcrum
#

well

#

I think it is actually educational

#

so

#

I don't think that's a waste of company time

merry laurel
#

well that day I was copying files(that took 10 hours) and porting some code

#

I am dealing with horrendous code base. My boss still havent managed to compile it KEKW

uncut fulcrum
#

are you working in something related to graphics programming?

merry laurel
#

sadly not but they have other projects

#

I am working on OBS like software but television networks

#

and I am trying to revive it from death

uncut fulcrum
#

Youโ€™re the hero they need

merry laurel
#

more like sacrificial lamb KEKW

devout niche
merry laurel
#

Currently working on PBR....

#

so many bugs

small osprey
#

sparkly

merry laurel
#

yeah...

#

diffuse part of bdrf is nice but specular one is.....

merry laurel
#

its working? ๐Ÿ‘€

merry laurel
#

Progress is stupidly slow. I played little bit with Jolt. Also I looked into my compile times if it could be little bit better. sol2 takes 10 seconds to compile for my renderer basically of half my whole compile time.
I am tired from my job. Dealing with with terrible codebase.

  • allocating 8 bytes fails so I crash inside std::map
  • just calling destructor crashes the program. It has nothing to do with the code inside the destructor
  • stuff gets magically loaded from dlls using uuids so I have to seach for them like for the ancient city of Atlantis when I crash inside that code
  • missing debug symbols and debugger completely gives up on debugging
  • logger not logging. Had to use OutputDebugStringW from win api bleakekw
  • string passed into a function as const has it contents changed even tho function does just a simple comparison with the string
  • specific hw pcie card refuses to work with the program but works fine with vendors program also the same card works in other machine with same drivers and my program just fine
  • vendors documentation being utter dogshit when I googled the issue I found only one result
  • std::filesystem functions crashing because they want to
uncut fulcrum
#

having to use OutputDebugString and not being able to log I think, I could be mistaken, is a requirement when the application is not a Console application, that is it has a WinMain entry point and not a main and in that case printf doesn't work, but you could log into a log file or have some other indirection?

#

what is this about uiuds and dlls?

spring sandal
#

You could pull spdlog if that's an option, you can configure it to log into file and console

merry laurel
merry laurel
merry laurel
merry laurel
#

I am working on some plumbing to get RT working. I would to have some RT shadows or something even more. I managed to shave off 100MB of VRAM by changing some stuff around

#

Tomorrow I am going into a battle for seminar groups for my college

proud marten
#

do radiance cascades

#

one probe per 10cm, consolidated near sufaces

merry laurel
#

I want to go DDGI and RTGI route

merry laurel
proud marten
merry laurel
merry laurel
merry laurel
#

This thread dying each week.
I was finally in college for some social event it was nice met a lot of people. I was suprised by that not many of them know to program. College is going to start next week...
Now I work part time but I have still some freelance web dev stuff where I am forced to do design bleakekw
Anyway something positive I managed to get rid of boost from codebase at work and I might be able to attend GPC.

#

I will have to take a plane because there is no way I am going to spend 17 hours in a train

uncut fulcrum
#

I like trains

merry laurel
uncut fulcrum
#

I hate flying so much

#

I think flying is actually safer than a train

merry laurel
#

I still will have to travel with train to get to main city that will take 3 hours...

#

I flew in plane at least 40x by now

#

its alright

uncut fulcrum
#

I'm a big person

merry laurel
#

also the noise doesnt bother me because I am deaf ๐Ÿ˜›

merry laurel
#

I always hit my head on the plane door....

uncut fulcrum
#

planes aren't noisy but sometimes they make a rumbling noise and my lizard brain doesn't like unexpected noises when 30K feet in the air

#

I know logically the planes are safe, but a part of me just doesn't want to be there

merry laurel
#

yeah tin can in 30K doesnt sound right KEKW

uncut fulcrum
#

you are deaf?

merry laurel
#

legally yes

#

less than 7%

uncut fulcrum
#

I see

merry laurel
#

but I have implant that allows me to hear "normally"

uncut fulcrum
#

oh I'm glad about that

merry laurel
#

yes. I am glad to my parents that fought doctors without them I wouldnt talk normally or even hear

merry laurel
#

I hate VLC player so much. Why it behaves differently depending on the video. It deserves a spot in the hell

proud marten
#

thats why its a good thing the newer windows media player supports barely any file types

uncut fulcrum
#

yeah ditched VLC

#

it lacks a lot of features and it's mostly keyboard shortcut driven that you have to learn

#

but it's really fast, that was my issue with VLC, just how slow it was

merry laurel
#

I found some interesting UB

small osprey
uncut fulcrum
#

this is a matter of fact, not opinion, and the numers are what they are

small osprey
#

I'm not really gonna trust american numbers on rail lol

uncut fulcrum
#

k

#

you can believe whatever you want I guess

small osprey
#

dude american rail is from the 1880s or something

#

and no one uses it

#

it's irrelevant KEKW

merry laurel
#

โ˜๏ธ

uncut fulcrum
small osprey
#

I'm open to stats, but just... relevant ones cutecatNE

uncut fulcrum
#

fair

#

I have died zero times on trains or planes so they're 100% safe

#

so far anyway

small osprey
#

lmao

#

I can't find shrimilar stats from the EU

uncut fulcrum
#

then you are legally required to accept my data

frigid breach
proud marten
uncut fulcrum
#

take a stance

frigid breach
#

just sharing the data i found ๐Ÿ˜‚

#

๐Ÿ˜ญ๐Ÿ˜ญ

uncut fulcrum
#

jk

#

dont' be sad sadcat

pale vortex
#

jesus bjorn, you made dodo sad, how could you

#

dodo is now sad

#

because of what you did

#

which was to make him sad

#

anyway let me see what the discussion was about

#

well when you think of trains in the US you think of spaghetti western movies and train robberies

#

when you think of trains in europe you think of the orient express

#

now as to which one is safer it's kind of irrelevant because the riskiest thing you can do is go outside your house have you seen how some people drive

#

anyway statistics are kinda silly, like ok only one event in 10.000.000 will result in you dying in a plane accident ok fine whatever

but is there a way to ensure that said event won't happen to you, there isn't

#

so why take unnecessary risk

small osprey
pale vortex
#

some people definitely risk more by existing than by using any kind of transportation yea

small osprey
#

sitting in a plane is safer than walking to the grocery store

pale vortex
#

yup that's what I said above

#

and sitting in a city is riskier than sitting in a village because of the air pollution affecting your health

merry laurel
#

Use my or lpotricks code that is up to date

merry laurel
#

Who the hell decided that we have to learn haskell in college bleakekw

small osprey
#

why wouldn't you

merry laurel
merry laurel
#

I am somehow alive and survived first semester. Sadly second semester starts in about 4 weeks bleakekw
Some subjects and exams were annoying but passed. Haskell was amazing especially the professor who is also the dean. Putting gen-Z memes into exams(67, skibidi) KEKW

Back to the project. I progressed a bit. I added ray tracing, fixed and and optimized bunch of stuff. Only thing that annoys me is mesh shaders where nsight tells 50% of threads do nothing.

The bad news is that I am rewritting the whole thing because I did bad design choice and retro actively fixing is more painful than just writing the code.

uncut fulcrum
#

Haskell can be fun

#

you added RT?

merry laurel
#

I did

uncut fulcrum
#

what kind?

#

like SBT and a full pipeline?

merry laurel
#

Just HWRT with simple pipeline to test it

#

I wanted it mainly for shadows since my rendering is already stupidly fast

uncut fulcrum
#

yeah shadows are the gateway drug

#

then I get addicted and wanted to use it for everything

merry laurel
#

Yeah. I do enjoy the struggle that raster comes in

#

making it fast

#

did the whole nanite thing KEKW

uncut fulcrum
#

wow

#

so like a mesh shader to draw the distant geometry that takes up just a few pixels nanite thing? I don't know a lot about it

#

that might have been nonsense

merry laurel
#

mesh shaders are used for less than 10% of the geometry of the screen

#

everything else is SW raster in compute

uncut fulcrum
#

oh

merry laurel
#

only masked and transparent objects are forced to go through mesh shaders

uncut fulcrum
#

why aren't using the graphics pipeline? why is it a software raster?

merry laurel
#

because I am faster than graphics pipeline KEKW

#

the triangles are small enough that rendering then in graphics pipeline is slower than SW raster in compute

uncut fulcrum
#

hrmmm, I am thinking of doing software raster in cuda

merry laurel
#

you can steal my code but its limited with size of the triangle

uncut fulcrum
#

oh you were talking about just the nanite

merry laurel
#

yeah my project for high school thesis KEKW

#

Only thing that I am missing is bvh culling

#

but thats just pain

#

also I wanted to talk about vcc. I am thinking about picking it up as side project and make it somewhat usable. I know you worked a bit on it? Do you have some pointers or just pray in gob?

uncut fulcrum
#

I have yet to see gob approve someone else's PR

#

fwiw

#

you might fork it

merry laurel
#

I will just fork it ๐Ÿ’€
And then open PRs. So I will just push through

uncut fulcrum
#

idk gob's attention to vcc is limited by his preference for working with students I think, but I can't read his mind

#

vcc is amazing however I really like it

#

I learned a lot from it

merry laurel
#

I got pissed off by slang. Its unbelievable how bad it is

supple cliff
#

on nvidia

merry laurel
#

fuck me

supple cliff
#

nvidia heavily keeps the sms open for pixel work

merry laurel
#

so no hope?

uncut fulcrum
#

it wasn't really usable for a full project, also I think drivers don't actually support all valid novel spirv based on all the crazy stuff slang is doing and running into

#

so you might get stuck

supple cliff
#

with 40% they should already be very fast

#

vertex shaders also dont go much higher but they also just run slower

merry laurel
#

goddamit

supple cliff
#

in tido bistro rasterizes in 180us with twopass and everything at 1440p on a 4080

merry laurel
#

because if they would be at 80% I would be happy but they are like at max 40%

#

just sleeping

uncut fulcrum
#

why is that

supple cliff
#

occupancy is not all anywauy

#

50% is already enough most of the time

#

esp on nvidia

merry laurel
#

I have my 6x6x6 bistro scene that renders quite fast but it is choking on masked materials

#

masked materials exlusively use mesh shaders

#

I was hoping that there is something that I can do

#

but with these news. I can go cry

#

I think I will have to add texture sampling into my raster code

uncut fulcrum
#

I just wrote a bilinear filter thing for my own handrolled cuda sampler

#

works idk

merry laurel
uncut fulcrum
#

yes

#

storage images didn't work

#

I had to roll that myself

#

RT pipeline stuff didn't work

#

like hit shaders etc

#

there's been some PRs it might work now

merry laurel
#

gob did something with storage images

uncut fulcrum
#

yes since then

#

it was easy to do, I just had to learn LLVM IR first

#

and how the whole architecture thing was

merry laurel
#

I will try to make stuff work and I need to get some TODO list from devsh

uncut fulcrum
#

there was like a month where all I did was vcc stuff and I decided I rather not make vcc my full time hobby

merry laurel
#

yeah I can see why KEKW

#

I watched it how you fought vcc but I dont remember all of it

uncut fulcrum
#

then I went back to slang and I hated it so much I gave up and now I write CUDA

merry laurel
#

based

#

vcc is going to be a side project for now just try slowely push it to the finish line

uncut fulcrum
#

I will subscribe to your updates on that as I would very much like a vcc that just works

#

I'll come back to vulkan

#

I think a lot of my kernel code would easily translate to vcc

#

like probably all of it, even the vector type is the same format

#

the optix stuff wouldn't

merry laurel
#

I cant promise much. I am bit scattered around 2 projects, work and college that wont be a thing for 4 weeks

#

I am helping out zilver for #1045842603372974080

#

but the rewrite of foundation can wait so I should have time for vcc

merry laurel
#

Bit of a progress. Stuff actually loads. I switched to using wuffs instead of stb. Enjoying the minimum 30% faster loading. Also found the meshoptimizer vertex fetch remap breaks on new sponza so that is lovely.

merry laurel
#

Stuff will be barebones for some time until I get the animation stuff working. Added multi threading few days ago so compiling pipelines and loading assets got faster. Today I was bikeshedding fast slot map implementation for my asset manager that needs to be index stable but still allow removing of the elements

merry laurel
#

A lot of people are staring my project frogeheart . I just decided to give up on animation. Its just too annoying but I will make preparations to comeback to it later.
I will continue with my rewrite. I am a lot of more happier that I can iterate much faster.

merry laurel
#

host image extension is quite nice

merry laurel
#

okay its not that nice

#

it is really convenient but for some reason it causes larger lag spikes than manually handling the upload with staging buffers

merry laurel
#

crunchy textures brought you by ray tracing KEKW

merry laurel
#

got it working together with masked materials

#

ray cones my beloved

supple cliff
#

i should use raycones lol

#

tho i dont have anything that needs them really yet

#

pgi would still benefit from it

merry laurel
#

I have still some bug in the code but it works on 99%.

#

I will mainly use AS for shadows and later GI but I wanted to get ray tracing working with everything for the first time

#

Next thing I want to add is lights with culling back

#

I would like to explore the idea of using rasterization for culling the lights

merry laurel
#

be me
arrive to office
join coffee chit chat
come to your desk
notebook doesn't turn on
go home
Just in a span of 30 minutes. I hope your day goes better than mine KEKW

merry laurel
#

so many message boxes that it throws really dark shadow KEKW

supple cliff
#

lmao

merry laurel
#

RT shadows are sooo nice

wanton thunder
#

๐Ÿ”ฅ

merry laurel
#

This might be interesting for you @supple cliff . I am playing around descriptor heaps in daxa. I am almost at the finish line but for some reason I have some bugs where images are blown up like srgb was applied twice and sampler addres mode is just broken.

supple cliff
#

interestiing

merry laurel
#

I implemented it as a implicit feature where it will prefer using the descriptor heap when available

supple cliff
#

I think it should be a full replacement

merry laurel
#

Just checked gpu info there isnt a singe mention of AMD gpu in sight

merry laurel
#

2 line change froge_bleak

supple cliff
#

nice

merry laurel
supple cliff
#

i have to test on amd

#

so we gotta wait for their drivers ๐Ÿ™‚

#

hm

#

i guess if its an implicit feature

#

it can go in earlier

#

but i have to read up on it first and do some tests before i can even review your code ๐Ÿ˜„

#

i have not played iwth desc heaps yet

#

I will look at it this weekend

#

but right now i am focussed on removing old shit from daxa so not much brain bandwidth left for new things

merry laurel
#

I will leave it in my fork but once the time comes around to implement it. It could be used as a reference.
I am not proud of that code tbh. Bunch of ifs and elses and I am not sure if I got everything right. There is basically zero references online

#

I could prepare version where it replaces the descriptor indexing but that is up to you

supple cliff
#

having your impl is the best reference I could ask for ๐Ÿ˜„

merry laurel
#

nice foot gun

#

had to also update slang because the code gen was just terrible

supple cliff
#

yea

merry laurel
#

if you are cleaning up the codebase. Is there any that could be done with enabling extensions/features and properties. Because it is god awful for first time seeing it. You to juggle around stuff in 3 different places

#

rest of the codebase is nice. Its been awhile since I was digging inside it to fix some stuff

supple cliff
#

the feature stuff is already the cleanest possible i think

#

there just is no way to untangle it further

#

i tried a bunch of times ๐Ÿ˜„

merry laurel
#

I could give it a shot

#

this part of vulkan is annoying I do agree

uncut fulcrum
#

is an amd driver update rare?

merry laurel
#

their sw department is...

merry laurel
#

Just removed gltf specific stuff from my code and hid it behind a thin abstraction. Experimented with ufbx but the api pales in comparison to fastgltf.
Also added texture compression so windows doesnt die when I play youtube video in background. froge_love

supple cliff
#

@merry laurel did you use the new debug ui yet?

merry laurel
#

I was debugging that dangling pointer thing

supple cliff
#

no more renderdoc

#

daxa build in debugging supreme

merry laurel
#

I havent used renderdoc like a year

supple cliff
#

same

merry laurel
#

printf go brrr

supple cliff
#

indeed

merry laurel
#

going to play with the ui when I will be adding the nanite rendering back

#

hopefully I can manage to get rasterization to work on both queues in parallel

merry laurel
#

oh boy the difference is just insane

#

I am talking about the alpha tested textures such as leaves on the trees

supple cliff
supple cliff
#

i will look if it makes sense for me to already integrate the desc heap while also having the old desc set code at the same time

merry laurel
#

amd just started supporting the heaps but it is really up to you to support it.

#

if you meaninfully abstract the functions then switching the underlying descriptor system is easy. In my implementation I had to do bunch of if statements because I didnt really want to change the code

merry laurel
#

Some news. Semester just started and it is way worse than previous one. Not because of the difficultly of the classes but its just total unorganised mess. bleakekw

#

Also managed to move my code to gpu driven again.

#

never again

proud marten
#

in what ways is it unorganized?

merry laurel
# proud marten in what ways is it unorganized?

each class is organised differently. Information is scattered or just straight up not there. We learned most stuff in the first lecture.
Recordings of the lectures are also just ๐Ÿคทโ€โ™‚๏ธ Thanks to the fact there is reconstruction of the half of our faculty that means we have lectures in other collages.

proud marten
#

Yikes

merry laurel
#

13ms -> 4.6ms

#

This is without SW raster

#

For my next trick I will need to enable some features and a extension?

proud marten
merry laurel
#

Currently doing some sidequests before diving into VSM. Got pissed off by trying to get sw raster working

#

some tonemapping and froyoks bloom. Next thing on my list will be GTAO with visibility masks

proud marten
#

this looks awesome, I'm glad youre taking your time

merry laurel
#

ssao + auto exposure

#

it is really nice to do these side quests.

merry laurel
#

the difference between gtao with visibility masks and SSAO is interesting

supple cliff
#

i feel that so much

merry laurel
#

got slug text rendering working

#

I did it as a treat after 2 days of hard work organising event for 500 people

#

next thing is virtual shadow maps

merry laurel
merry laurel
#

The fun begins

proud marten
#

you made a debugger before the actual feature? oh ye of little faith

merry laurel
proud marten
#

Yeah, I'm just pulling your leg. People here use VSM as a synonym for hell

vernal blade
#

They are very much not worth the effort

#

But fun project to do

merry laurel
#

I am hoping to cache RT shadows

vernal blade
#

I mean that regular cascades sms will do

vernal blade
merry laurel
#

yep

#

much less annoying then dealing with rasterization

vernal blade
#

Yes, that is smart

#

I should do that too

merry laurel
#

I tried doing soft shadows with RT shadows that I have currently and the perf went down really fast. So hoping the VSM will help me with that

vernal blade
#

Now I think you got it backwards

#

They cannot do that

merry laurel
#

At least do some approximation like PCSS

vernal blade
#

Well that you can do, but you cannot store "soft shadows" in vsms

#

You'd need the inverse of vsms

#

A sort of surface cache

north helm
#

@merry laurel could you share your article again please ?