#Foundation - My adventure through Graphics Programming
3685 messages ยท Page 4 of 4 (latest)
seems like you have backface culling on for the bushes?
yeah I do
they look a little too sparse
much better thank you 
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.
@supple cliff Is it safe to use master branch right now?
if you are a little sus on it take the commit of 3.1
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
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...
yea same
๐ซก
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
Interesting. I am quite happy with the current syntax ๐
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
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
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
its in already ๐ฎ
but its a little buggy in the sense that it will try to insert some illegal barriers
I wonder if the SW raster would benefit
its super easy to use
before you start doing that ill make a last syntax change to it today
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
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
I know I had to change the code
submitted changes
๐ซก
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
Now animated models with meshlets 
now its correct
god I hate blend functions
damn i gotta add transparencies to tido
slap wboit on it 
but I was thinking about "linked list" or sorted transparency using vis index
i think i wanna try visindex and sorting
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
that is true
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
no no no. I reuse the same mesh buffer automatically but with different transform
I am on that indirect mega drawcall train
oh ofc
idk i wouldnt call that instancing hmm
instancing is an overloaded poop work
yeah...
for animations i would scratch allocate space for verts every frame and make temporary meshes into those
thats my idea
cool
yea its always poopy
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
@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
i cant remember
maybe it has something to do with the transform hierarchy
have you tweaked params related to blending alpha, depth, etc?
yeah
This should be rotating cube 
Found the suspect. I have to do this...
yay I just made flecs explode
morph targets are next but with twist skinning in compute
I am fixing so many bugs in my asset pipeline 
why ?
the problem is group bounding spheres
I can calculate the bounding spheres for each meshlet but the group sphere is more complex
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 
Also the the registration for my college and the classes just opened 
yooo do you work at epic too 
lol
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 
why do you need group bounding spheres
are you culling hierachically if thats the right word
or is this related to the lod hierarchy or both
Exactly
It's possible to do it but I just dont want to
I see
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
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:
- mesh geometry struct that houses all the data about the mesh on the gpu
- animated mesh struct that has pointers to the previously mentioned struct but also pointers to its own memory for skinned vertices, etc...
- 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
- skin the vertices using morph targets and skin matrices
- calculate bounding box for each meshlet but also bounding sphere using ritters algorithm
This stuff is not really interesting but after this plumbing is done then I can have some bounding boxes changing the size and position 
part 1. and 3. are done it longer than I would liked to. Tomorrow I will tackle the rest
Only thing I have to figure out how I will send weights and skin matrices to the gpu
I hate Qt so much ๐ญ
I might start using vkCmdUpdateBuffer because I getting tired of spamming stagging buffer for every small thing
i wanna add it to daxas command recorder
For now I will cope with staging buffers
oh it can read from host, no need for update buffers on it
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
thats nice ๐
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 
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
I will be so happy when this animation stuff is behind me
My head hurts just by thinking about it
it was a bigger pain than I could imagine
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 
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
gltf is causing me some major headaches. I will have to classify if the animation is either for entity, joint or morph targets
skinning in compute?
why not a vertex shader? Is it related to culling
Yep
I have to recalculate the bounds
Also I don't have to skin the vertices everytime I render the mesh
ah yeah thats smart
do you streamline anything else like that for multiview? i imagine you could do world transforms in compute
Nope because that would be too much memory
fair
shadowmaps considered harmful
too bad I am going to do virtual shadow mapping 
just RT
This is skinned mesh. Quite a nice plane
Looks like I am in some chicken and egg problem this so fun 
I added all the necessary code and it's broken....
This is going to be more annoying than I thought
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
word
if it makes you feel any better i spent several months diagnosing and fixing a single animation bug
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
do what you're doing for one instance but two or more times 
Why dont you add animated models into your renderer also 
so you can suffer with me
@small osprey 
Hmm. I will stash the code and focus on some refactoring and clean up
Would be more beneficial for me
This is me at work. Had been compiling for 4 hours
you need a 5995wx 
I gave a task to the IT department to dig out something more powerful
They are essentially paying me for scrolling
Sounds too specific. Is it what you have in epic games? 
yeah they sent one over on friday 
so i've been setting up my dev environment again today
the clone just finished 
Damn jealous
I am running on Intel xeon from 2014
It has only 4 threads 
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
Yeah there isn't any incremental configuration of the cmake project
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.
wtf
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. ๐ ๐ซ
ah yeah its weird
lmk what you end up doing
It won't be anything special 
I am doing some refactoring to my whole codebase
while listening to this banger:
https://www.youtube.com/watch?v=SETnK2ny1R0
Provided to YouTube by The Orchard Enterprises
Refactor ยท Espen Sande Larsen
Refactor
โ 2019 Espen Sande Larsen
Released on: 2019-01-17
Producer: Espen Sande Larsen
Auto-generated by YouTube.
I am moving some code around so its little bit more readable. Tomorrow I will continue with animations hopefully
banger
We must learn to embrace chaos and use it as fuel for our growth - your coworkers
In no way I am rewriting that mess
They don't pay me enough to deal with that headache
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
we have some poor mans AO going on
took longer that I would like because I forgot I had normals in world space 
Tomorrow light culling rabbit hole begins
thats pretty
Why do you say that? Looks like pretty clean AO
It looks really clean but I am doing 26 samples...
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
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 
what's a transparent object?
Just a mesh with transparency
what's that 
i don't even support alpha cutouts
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...
First one for opaque and masked is going to be usual min and max depth but second one is min depth and near plane
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
hmmm
lucid unlike every other approach isnt a approximation
Transparency rendering is problematic and can be considered an open problem in real-time graphics. There are many different algorithms currently available, but handling complex scenes and achieving accurate, glitch-free results is still costly.
This paper describes LucidRaster: a software rasterizer running on a GPU which allows for efficient ...
Yeah I am not implementing it. I will cope with my WBOIT for now
finally
tiled light culling working now hook it to shading and also cull spot lights
what does light culling do?
tell you what gbuffer pixels are affected by lights
so you can only eval them for those pixels
ofc, what you should be doing is restir with light trees 
nah just stick to directional lights
i dont think ive made a point light in over 3 years
Yes, I am planning to have ground truth PT but I don't have required math knowledge yet
Also I figure out the way to do tiled light culling for transparent meshes
you do
i wrote my first PT when i was 15 or something
didn't know shit
but it worked

I don't want to RTIOW path tracer ๐ญ
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
mine was pbrt based lol
understand how
it's super shrimple
the book explains it but isn't amazing with it
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
just multiply the probabilities of whatever paths you take
and an integral is the area under a curve
and a derivative is the slope of the curve
thats pretty much what I know 
genuinely all you need to know
idk about that 
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
The math is pretty easy if you stick to diffuse-only
It's litterly just monte carlo
Which is just "sum(f(x) / p(x)) / number of samples"
p(x) is just "probability x happened"
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
Light culling hooked up to shading. The gains are really nice 4ms -> 0.06ms
Finished flat bitset for the tiles indices. The cost went down by 32x 
Today I am going to add bloom and do some cleanup
Also I have been playing battlefield 6. Its quite fun
sounds good
Whoever programmed the file explorer needs to burn in the hell
let me guess, are you still waiting for it to finish listing all the files in a directory that contains lots of files? 
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
FilePilot 
I tried to install it but company did something that prevent it to be downloaded. I will work around it tomorrow
or not because how annoying it is to add...
Itโs a known issue that FilePilot is flagged as a false match
Unfortunate tbh
The author bought a cert and everything
He recently gave a talk about File Pilot at the Better Software Conference https://www.youtube.com/watch?v=bUOOaXf9qIM
I wish I could change every file explorer dialog to be File Pilot :(
seen every talk 
oh so you already know about it
I paid the $200 for the perma license, it is a great app
yeah I did quite enjoyed it on company time
well
I think it is actually educational
so
I don't think that's a waste of company time
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 
are you working in something related to graphics programming?
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
Youโre the hero they need
more like sacrificial lamb 
You might want to expand 2.5d bitmask for u64. This will help more for lights that have small radius.
sparkly
its working? ๐
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

- 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
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?
You could pull spdlog if that's an option, you can configure it to log into file and console
The library had its own logger but it just didnt work in the particular piece of code for some unknown reason
Logger writes a log file but for some reason it refused to do so in a particular piece of code
Most of the code is behind interfaces and those have __declspec(uuid(...)) and when I create a com pointer it grabs implementation from the registered dll with that uuid
One day later.
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
I want to go DDGI and RTGI route
I cant wait that their system is going to crash so many times
i thought rc could be supplementary to ddgi
they are kind of a hack from what I read
The battle is over and I won. I could claim all seminar groups that I wanted before the system crashed
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 
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
I like trains
me too but 17 hours compared to 1.5 hours with plane ๐ญ
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
I'm a big person
also the noise doesnt bother me because I am deaf ๐
same here
I always hit my head on the plane door....
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
yeah tin can in 30K doesnt sound right 
you are deaf?
I see
but I have implant that allows me to hear "normally"
oh I'm glad about that
yes. I am glad to my parents that fought doctors without them I wouldnt talk normally or even hear
I hate VLC player so much. Why it behaves differently depending on the video. It deserves a spot in the hell
thats why its a good thing the newer windows media player supports barely any file types
yeah ditched VLC
I use https://mpv.io/ instead
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
This is related to the product that I am working on at work. It's 
I found some interesting UB
I think not actually
I'm not really gonna trust american numbers on rail lol
dude american rail is from the 1880s or something
and no one uses it
it's irrelevant 
โ๏ธ

I'm open to stats, but just... relevant ones 
fair
I have died zero times on trains or planes so they're 100% safe
so far anyway
then you are legally required to accept my data
how many of the train deaths in the US are bill clinton drug traficking coverups though
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
you are taking risk by existing
some people definitely risk more by existing than by using any kind of transportation yea
sitting in a plane is safer than walking to the grocery store
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
real btw
Go back to daxa triangle 
Use my or lpotricks code that is up to date
Who the hell decided that we have to learn haskell in college 
why wouldn't you
well its mandatory in the first semester 
It is going to filter out a lot of people
I am somehow alive and survived first semester. Sadly second semester starts in about 4 weeks 
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) 
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.
I did
Just HWRT with simple pipeline to test it
I wanted it mainly for shadows since my rendering is already stupidly fast
yeah shadows are the gateway drug
then I get addicted and wanted to use it for everything
Yeah. I do enjoy the struggle that raster comes in
making it fast
did the whole nanite thing 
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
mesh shaders are used for less than 10% of the geometry of the screen
everything else is SW raster in compute
oh
only masked and transparent objects are forced to go through mesh shaders
why aren't using the graphics pipeline? why is it a software raster?
because I am faster than graphics pipeline 
the triangles are small enough that rendering then in graphics pipeline is slower than SW raster in compute
hrmmm, I am thinking of doing software raster in cuda
you can steal my code but its limited with size of the triangle
oh you were talking about just the nanite
yeah my project for high school thesis 
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?
I will just fork it ๐
And then open PRs. So I will just push through
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
I got pissed off by slang. Its unbelievable how bad it is
its normal. Mesh shaders cant really reach over 40 ish percent occupancy
on nvidia
fuck me
nvidia heavily keeps the sms open for pixel work
so no hope?
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
with 40% they should already be very fast
vertex shaders also dont go much higher but they also just run slower
goddamit
in tido bistro rasterizes in 180us with twopass and everything at 1440p on a 4080
because if they would be at 80% I would be happy but they are like at max 40%
just sleeping
why is that
occupancy is not all anywauy
50% is already enough most of the time
esp on nvidia
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
As long it works on my GPU I dont care. I dont AMD in high regard. Did you encounter some big problems in vcc?
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
gob did something with storage images
yes since then
it was easy to do, I just had to learn LLVM IR first
and how the whole architecture thing was
I will try to make stuff work and I need to get some TODO list from devsh
there was like a month where all I did was vcc stuff and I decided I rather not make vcc my full time hobby
then I went back to slang and I hated it so much I gave up and now I write CUDA
based
vcc is going to be a side project for now just try slowely push it to the finish line
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
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
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.
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
A lot of people are staring my project
. 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.
host image extension is quite nice
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
crunchy textures brought you by ray tracing 
i should use raycones lol
tho i dont have anything that needs them really yet
pgi would still benefit from it
path tracing mode would really benefit instead of the hard coded derivatives 
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
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
so many message boxes that it throws really dark shadow 
lmao
RT shadows are sooo nice
๐ฅ
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.
interestiing
Knock yourself out. The implementation is meh the code could be bit better. You can try it out on tido. If you spot some bug I would appreciate it.
https://github.com/lukasino1214/Daxa/commit/1962a3f92fed5b2db81987559191a9435a54877e
I implemented it as a implicit feature where it will prefer using the descriptor heap when available
I think it should be a full replacement
thats the plan but for now as I am trying to implement it so I left it as a option. Are you fine with cutting out the support. From what I know only nvidia has the extension?
Just checked gpu info there isnt a singe mention of AMD gpu in sight
2 line change 
nice
Do you want to add it to daxa this week or we wait?
nonono i ll have to wait
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
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
having your impl is the best reference I could ask for ๐
yea
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
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 ๐
AMD released new drivers? ๐
https://vulkan.gpuinfo.org/listdevicescoverage.php?extension=VK_EXT_descriptor_heap&platform=all
is an amd driver update rare?
amd is amd...
their sw department is...
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. 
@merry laurel did you use the new debug ui yet?
I added it but didnt really play with it yet.
I was debugging that dangling pointer thing
I havent used renderdoc like a year
same
printf go brrr
indeed
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
oh boy the difference is just insane
I am talking about the alpha tested textures such as leaves on the trees
should work easily with new taskgraph
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
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
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. 
Also managed to move my code to gpu driven again.
never again
wdym?
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.
Yikes
13ms -> 4.6ms
This is without SW raster
For my next trick I will need to enable some features and a extension?

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
this looks awesome, I'm glad youre taking your time
the difference between gtao with visibility masks and SSAO is interesting
i feel that so much
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
Or not because I got derailed because I found GP job 10 minutes from my house. I am currently bikeshedding my CV and READMEs
The fun begins
you made a debugger before the actual feature? oh ye of little faith
Let me cope with this. VSM really needs debugging because the whole thing is mess ๐ฅ
Yeah, I'm just pulling your leg. People here use VSM as a synonym for hell
what do you mean by not much worth the effort?
I am hoping to cache RT shadows
I mean that regular cascades sms will do
As in, you want to raytrace the pages?
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
At least do some approximation like PCSS
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
@merry laurel could you share your article again please ?
