#GPU Zen 3: Virtual Shadow Maps

1 messages · Page 4 of 1

sweet nimbus
#

yeah it's just supposed to show scale I guess

#

bistro is where actual detail is

hazy steppe
#

im super proud to know you guys 🙂

sweet nimbus
#

hmm

#

are these pics fair if I use TAA in both of them

wooden jolt
#

as long as we mention TAA is fine

sweet nimbus
#

ok

#

idk how they pack figures next to each other in tex so I'm just gonna combine them in paint.net

wooden jolt
#

we can leave formatting and beautification for last methinks

sweet nimbus
#

huh, that terrain has slightly more vertices than bistro

#

4.1 million vs 3.9 million

wooden jolt
#

@mystic lark [sampling], should we mention both "inserting a new allocation on page fault when sampling" and "mark visible pages in a predefined radius instead of marking only a single page"?

mystic lark
#

Uhhh the new allocation on page fault imo makes no sense

#

It will flicker no?

#

Mark in a radius should be good I think

wooden jolt
#

unless you mark those allocations to not be freed somehow, yes

mystic lark
#

Yeah, then I'd just avoid it

wooden jolt
#

ight

mystic lark
#

And maybe say that we have a coarse page set as we were saying in tido with Jaker

#

And we can use that as a fallback when we get a page fault

wooden jolt
#

epic, aight

#

I'm scared to change what jaker already wrote

mystic lark
#

You can just add it below and I'll merge it in if you dont want to change stuff

vestal snow
acoustic bobcat
#

I didn't have time to read it again btw

#

I'll take a look when you get feedback from the real editor

mystic lark
#

I just awoke, I kinda fell asleep right as I got back home

#

but I see no notes from the editor so far

sweet nimbus
#

They have a lot to go through so I'm not surprised it's taking them a while

sweet nimbus
#

looking through the articles, I don't think this review period has actually started for any of them. However, there is are some very thorough review comments from a few weeks ago and earlier

acoustic bobcat
#

Yours included? I can do another editing pass tomorrow if it's still not been commented on

sweet nimbus
#

yeah nothing yet. everything is in limbo lmao

acoustic bobcat
#

It takes a while

#

I remember once being assigned to edit 200 pages of a 1000 page manual bleakekw took me like a month to get through

#

Very draining process compared to editing just 10 pages or something

sweet nimbus
#

even editing just 10 pages is pain, but I suppose it doesn't help that I'm also helping write it and we're on a tight deadline

acoustic bobcat
#

Normally you have each author go through it separately and write comments which always takes like a month because people forget or whatever so it gets hammered out over a longer period of time

sweet nimbus
#

we were sorta doing that at a hyper pace. like 16 hour periods where we do a full editing pass + some writing

#

but the dust has kinda settled even though the conclusion isn't completely done and we're still in limbo nervous

sweet nimbus
sweet nimbus
#

huh that 1993 paper (Hierarchical Z-buffer visibility) really does seem like the origin of hi-z culling

#

but the version we use, being gpu-driven, is certainly a newer thing that derives from it

#

and their version has some weird quirks

While the basic Z-pyramid test can reject a substantial number
of polygons, it suffers from a similar difficulty to the basic octree
method. Because of the structure of the pyramid regions, a small
polygon covering the center of the image will be compared to the
Z value at the coarsest level of the pyramid. While the test is still
accurate in this case, it is not particularly powerful

mystic lark
#

Uhhh hmmm I kinda just looked up hiz culling, saw paper with 1k citations and assumed that's it

sweet nimbus
#

yeah idk it's probably fine

prime ice
#

they are dummy and dont sample a 2x2 quad, which solves the issue

sweet nimbus
#

I wrote a little in the results section and added a pic to the beginning. We still need a table with a benchmark for the passes

#

the table should just show how long each pass of VSM took in a specific scene

mystic lark
#

Do we do a fly through and average the time?

#

It also heavily depends on the sun angle

sweet nimbus
#

I was thinking of an nsight capture because you don't have per-pass metrics in your renderer yet

mystic lark
#

I will add today

#

Should take like an hour

sweet nimbus
#

ok

#

something like this except with just one GPU (taken from GI-1.0 paper)

#

I was thinking of doing table for a static scene, then the same scene but with caching disabled to show the difference

#

a flythrough would be ideal but idk how hard it would be for you to do. I guess you can just do it by hand

mystic lark
#

I can hack in camera following a predefined path (I have that in another project) and we can then benchmark on multiple gpus

sweet nimbus
#

and ofc a flythrough would require those metrics and some way to average them (which tbf is easy with an exponential weighted average)

#

we don't need multiple GPUs

#

just one will get the point across, which is that it's cheap to render

mystic lark
#

Okay, well the path will be good regardless

#

So that we get consistent results for caching and no caching

sweet nimbus
#

if you want to add the perf counters and camera path in engine, that fine, but I think those are not strictly necessary to get the data we need

#

I just want to be sure that we can complete this

mystic lark
#

Yea, perf counters I'll definitely add, camera path probably not then

#

For caching the counters are needed imo

#

Because the perf jumps up and down a lot with caching

sweet nimbus
#

I was only ever considering using nsight, not looking at the entire frame time

mystic lark
#

0.12ms - 1.2ms

#

We need to average to see the actual perf impact imo

sweet nimbus
#

ye

mystic lark
#

Which would be hard to do with nsight

sweet nimbus
#

nsight can actually capture and average multiple frames

mystic lark
#

Okay nevermind I'm just skill issued then

#

I'll look into it

sweet nimbus
#

before you launch your app, you set it to capture multiple frames

#

then you check the "aggregate frames" box in the timeline after capturing

#

btw I do not find the "batch 10 task 0" prefix very useful in this

mystic lark
#

One issue I've had with that is the capture actually freezes the frame making the frame delta time spike up and teleport the camera bleakekw

sweet nimbus
#

yeah it won't be useful unless the camera is stationary

mystic lark
sweet nimbus
#

there is

mystic lark
#

It's DAXA thingy I can talk to Patrick about that

sweet nimbus
#

it gets cut off unless I zoom in a lot

#

I don't care about that stuff as the user 😄

#

(and also the source language)

mystic lark
sweet nimbus
#

yeah

mystic lark
#

But once you move the perf will obv drop

sweet nimbus
#

that's why I suggested testing without caching as well

#

but a path with averaged numbers would be ideal

mystic lark
sweet nimbus
#

my suggestion is to move the "slang" and "batch N task M" stuff to the suffix so it doesn't impede what I care about

mystic lark
#

We should make it a task graph option to disable/enable the prefix

sweet nimbus
#

or just make it a suffix

mystic lark
#

The slang draw is the actual name of the task I believe

sweet nimbus
#

ah lol

mystic lark
#

So slang prefix is app side

#

Or maybe the name of the pipeline

#

But those are good points, well change it

sweet nimbus
#

yeah it says pipeline name on the bar with the slang stuff

prime ice
#

yea suffix might be better

mystic lark
#

Do you want to put an image of the nsight capture into the article?

#

Or just the values in a table

sweet nimbus
#

just in a table

#

but if you do the benchmark with in-app counters then you can skip the nsight thing

mystic lark
#

Benchmarks will be done after you wake up

#

(if you don't wake up earlier than in 5 hours bleakekw )

sweet nimbus
#

well I do have a meeting in 5 hours so

mystic lark
#

Fug

#

Welp

sweet nimbus
#

maybe potrick can help you

mystic lark
#

He is in Poland

#

I believe

sweet nimbus
#

I am in poland, but without the la

prime ice
#

nice

sweet nimbus
#

we still need people to review changes in the article btw. there's so much green

#

I cleared some just now, but 1. a bunch of edits are written by me and I want at least one other person to see them; and 2. I'm about to sleep

#

@wooden jolt do you think you can find some time to review edits in the article

wooden jolt
#

yes

mystic lark
#

I'm forced to wait for irl shit

wooden jolt
#

I'll be home soon™️

sweet nimbus
#

alright cool

wooden jolt
#

ETA 30 mins or something

mystic lark
#

So will work late again

sweet nimbus
#

no need to actually write much (though that would also be appreciated lol). just make sure things are sane

mystic lark
#

I went through the entire article on my phone. I accepted the changes and made some minor corrections. The later sections (sampling and conclusion) still need a bit of cooking, I'll work on them once back on PC

#

Someone still needs to review the sections I added, they are still pretty rough and require rewording and polishing (I can also do that if no one does it before I get back)

vestal snow
#

Unless you have an idea for it already and plan to upload

mystic lark
#

Tido now has timings

sweet nimbus
#

Shortly after I said that hehe

vestal snow
#

Awesome

#

I’ll delete the picture thing I uploaded yesterday

mystic lark
#

okay so caching matters a lot lol

#

left no caching right caching

#

Is this enough for you Jaker, or how do you imagine the benchmarking process to go?

#

(I pushed so you should also be able to benchmark yourself if you want)

sweet nimbus
#

yeah that's perfect

wooden jolt
#

we could do fancy shit by writing the timestamps to a CSV file and making a graph out of it

sweet nimbus
#

csvprofile my beloved

hazy steppe
#

the chance to make afps a concrete term too

mystic lark
#

I can also cook up some graph if desired, but I think it's bikeshed?

sweet nimbus
#

graphs would be cool but I don't think are necessary

#

also imo they would be more useful if you had a fixed camera flight path

mystic lark
#

okay, I'll focus on text for now

#

Btw, when fixing the sampling phase text I started to think

#

when sampling for PCF for example, wouldn't it be better to just figure out the cascade index directly by the same heuristic we use for the main pixel, instead of attempting to "blindly" look into the same page + page in clip above + page in clip below?

sweet nimbus
#

maybe, but doing that N times per pixel could get pretty expensive

#

I haven't tried it though

mystic lark
#

uh hmmm

#

yeah

#

I think we can combine it actually, attempt to look into the same page (we can trivially determine if the sample still lies in the same page) and if it crosses to another page, we can use the heuristic

sweet nimbus
#

I actually forgot that my impl blindly looks up and down one level lol

mystic lark
#

I saw that in LVSTRIs, I don't know if yours does that too 🕵️‍♂️

sweet nimbus
#

mine does 😎

prime ice
mystic lark
#

I added timestamps into Tido vsm pass

#

and I think I already have an idea on how to integrate these into TaskGraph

prime ice
#

nice

#

god mode

mystic lark
#

Page faults also occur when sampling the VSM for shadows in participating media and translucent objects. - do we know how to fix traslucent objects?

#

run the marking pass without translucents, and then while drawing every translucent pixel?

sweet nimbus
#

coarse pages or the thingy where page faults create allocation requests

prime ice
#

oh hod

#

cant you simply run the mask code within trandlucent pixel shader?

mystic lark
#

yeah that is what I'm suggesting

sweet nimbus
#

I think that's also the second idea I wrote if I understood right

#

unless you mean drawing translucent stuff an extra time just to mark pages

mystic lark
#

aha, I assumed you meant while sampling the shadows (IE the same issue occuring during PCF) not while drawing

sweet nimbus
#

well translucent stuff would be forward so it would be both, no?

#

unless you are doing dithered transparency

mystic lark
#

I don't follow

sweet nimbus
#

translucent/transparent geo would be drawn in a forward rendering pass in which shadows would be applied

#

i.e. they wouldn't be deferred as you seem to imply

mystic lark
#

oh I see, yeah in that case I'd just draw them twice

sweet nimbus
#

JS said that he does the allocate-if-page-fault thing for that and volumetrics

#

idk how bad the artifacts are, but I bet it's pretty easy to implement

mystic lark
#

yeah no, that will be simple to do

#

maybe the TAA can eat it away

#

(shame that there is no TAA yet in tido)

mystic lark
#

I rewrote and expanded the Sampling section, so it is ready for a review from someone else

sweet nimbus
#

mboit?

mystic lark
#

I assume Patrick means moment transparency

sweet nimbus
#

that's the same thing as mboit, just from some different people

#

apparently they were researched independently in parallel

mystic lark
#

ah I didn't know that is also a term for it

#

we probably should add some images into the sampling phase to break up the wall of text we have rn

wooden jolt
#

I think I'm having some trouble understanding a sentence

mystic lark
#

send

wooden jolt
#

Then one of three actions is taken, depending on the state of the page stored in the page table. If the page has not yet been allocated, its coordinates are added to the buffer storing allocation requests for this frame. If the page is already allocated, but not yet marked as visited, we mark it as visited this frame. Lastly, if the page is allocated \textit{and} marked as visible, we do nothing. in the marking visible pages section

#

why exactly is the allocation state of the page relevant here thonk

#

is it caching related

mystic lark
#

well yeah, if the page is already allocated from one of the previous frames you do not want to allocate it again

#

you only want to allocate the pages that are not yet backed by the physical memory (the ones that became visible this frame)

wooden jolt
#

yeah but this is the the marking visible pages section no?

#

unless I'm misunderstanding

mystic lark
#

sus name yeah

#

it should be called something different

#

uhhh

wooden jolt
#

in my impl marking visible pages is a shrimple unconditional imageStore

#

the allocation comes later

mystic lark
#

how do you know which pages to allocate?

acoustic bobcat
#

It's pages that were active last frame that are being discussed here right

mystic lark
#

they could have been active any frame in the past, not just the last frame

#

but yeah

#

maybe the pass should be called something like classify pages?

wooden jolt
mystic lark
wooden jolt
#

it should be noted that the virtual page table and active page table are different entities in my thing

#

but I suppose it doesn't matter what I do

#

if you say it's fine then you get an frogapprove

mystic lark
#

maybe the diagram will make it more clear

wooden jolt
#

ye so you access the virtual page table immediately during the visible page marking

#

which makes sense tbh

mystic lark
#

In my impl I don't free the pages unless the memory pool is full and new pages request allocation

#

so what I do in the first pass is mark all pages that are visible this frame (so I don't free them later) and store all pages that are visible but not yet allocated (cached)

wooden jolt
#

ye this is fine

#

I was biased

mystic lark
#

I see, so confusion cleared?

wooden jolt
#

yes

mystic lark
#

hmm maybe I should reword this part to make it clearer?

#

what do you think made you confused?

wooden jolt
#

the diagram is good as well so we confirmed that it works KEKW

mystic lark
#

BTW we really should unify the naming, sometimes we use visited and sometimes visible

wooden jolt
#

I think we could mention "VPT" instead of page table generic here

mystic lark
#

I suggest visible as it is more in lines of what actually happens

wooden jolt
#

ye visible is better imo as well

mystic lark
#

@vestal snow this change (visited -> visible) should also be reflected in the diagram/s 🙏

vestal snow
wooden jolt
#

one more nitpick

#

should we really mention implementation details such as mesh shaders in the HPB culling section?

#

I personally think it's fine the way it's written

mystic lark
#

Uh oh yeah good point, I was also thinking about that and I'm not sure

#

Perhaps I go way into detail about the mapping and such

#

And simply saying "we use meshlets and mesh shaders" would suffice?

wooden jolt
#

the reason I nitpicked about this is because in other papers you would usually see impl details in the "Our Results" section or something like that

#

so this is definitely not wrong per se, just probably uhh misplaced a bit?

wooden jolt
#

"In our implementation [...] we performed HPB culling against meshlet bounding boxes, giving us good culling granularity [...]"

mystic lark
#

Good idea, yeah, we can also move the section where we describe our selected vsm resolutions and stuff down into the results section

wooden jolt
#

sampling is gud btw

#

imma try to fix the yellowy thingies

mystic lark
#

What do you think about removing the split into bookkeeping, drawing and sampling all together and instead just having the individual steps?

#

I feel like the split is a bit disproportional in content as is rn

#

Especially if we remove the implementation details from the drawing

#

It will become quite plain compared to the bookkeeping part

wooden jolt
#

wym disproportional?

#

too much/little text between sections?

mystic lark
#

Yeah

wooden jolt
#

hmm

mystic lark
#

Not between but in the sections themselves

#

Look how long the bookkeeping part is

#

And how long the drawing part will be

wooden jolt
#

inherent flaw of VSM: it's all bookkeeping KEKW

#

I think the split is useful personally even if the content is very disproportional

#

@sweet nimbus what do you think

vestal snow
#

I have a question

#

In the heuristic we mention the frustum side length of the first cascade. Is it true that the first cascade side length determines all other side lengths in the Tido impl?

#

like second one is 2* first side length, second is double again, etc.

mystic lark
#

yep

vestal snow
#

ok cool

#

diagrams should be updated
perspective/projection one was deleted since Jaker's replaces it
cascade heuristic diagram is still in the review section at the end

mystic lark
#

I'll take a peeksie at it later today/early tomorrow

sweet nimbus
sweet nimbus
mystic lark
#

Okay, let's leave it as is

sweet nimbus
#

Hmm maybe removing it would be fine lol

#

How many sub-steps are there in the bookkeeping section anyway

mystic lark
#

5

#

So we would instead make it 7 steps where one would be culling and drawing and the other would be sampling

sweet nimbus
#

Hmm maybe we keep it then

#

If there were like 2 substeps then it would be more obvious to merge them

mystic lark
#

I didn't mean to merge the sub steps

#

I meant to make drawing and sampling sub steps themselves

#

But it is probably bikeshed

sweet nimbus
#

Yeah that's what I meant but wasn't clear in my wording

vestal snow
#

Should we have some kind of showcase of a few scenes with really nice shadows to put at the very start

#

I just realized our first image is of artifacting shadows lol

sweet nimbus
#

lmao I had that thought too. I think it would be a good idea

mystic lark
#

Here is our article - let us start with the artifacts

sweet nimbus
#

the picture of projective aliasing is with default vsm settings in my renderer too poisondartkekw

#

I mean we can just be clear about that in the results: "vsm does not fully solve projective aliasing" etc.

#

there are some nice pics in the results section already fwiw

mystic lark
#

In reviews I've always been told to use assertive language in papers so "VSM is a flawless technique solving all issues other shadowing techniques struggle with"

wooden jolt
#

btw VSM does not prevent you from using perspective skewing so you could advertise it with LiPSM or TSM

mystic lark
#

I already feel kind of weird talking about sampling for participating media and translucent objects when none of us implemented either

wooden jolt
#

but then pages are non uniform

vestal snow
#

participating media like volumetrics?

sweet nimbus
vestal snow
#

let me upload the VSM volumetrics test v1

#

VSM + Volumetrics + TAA

mystic lark
sweet nimbus
wooden jolt
#

I'm half joking

sweet nimbus
wooden jolt
#

mathematically VSM + LiPSM is possible

#

but this is bikeshed

#

it could go into the future work section

mystic lark
#

I should be able to implement it in Tido till may or whatever the deadline is

#

Eh probably not transparent objects

#

These will probably take more work to integrate with the rest of the pipeline

sweet nimbus
#

yeah just leave it in future work. you already have enough on your plate as it is

mystic lark
#

True dat

vestal snow
#

Is it allowed for us to mention certain things and just make it clear that we aren't bundling it in the example code, but either talk about what we tried or what UE does for it?

mystic lark
#

I don't think we should talk about what UE does

vestal snow
#

Ok, what about things we tried but aren't bundling?

mystic lark
#

If one of us tried it I think we can say that

vestal snow
#

such as volumetrics and the depth culling test you guys did

mystic lark
#

Ideally we should bundle everything we talk about with the example (Tido)

#

There is some time to implement stuff still at least from what I understood

#

But I'd avoid speculating about stuff we are not sure will work

#

Or just leave it to the future work section and Jaker said

vestal snow
#

Alright that makes sense to me
My volumetrics test is still kind of in a meme state so idk if I will be able to try and contribute it to Tido before the deadline

mystic lark
#

Do you use the same approach described in the sampling section of the article?

#

Actually I really should sleep now, I'll be back tomorrow

vestal snow
#

I read through it and I think my example code is using pretty much the same steps

mystic lark
#

Alright, then we at least know it should work

#

Btw are you doing the "project frustum" part or are you requesting pages to be allocated when you encounter them missing while sampling?

mystic lark
#

Btw funny observation, caching perf is 4-5 times better as long as you don't move very close to the surface

sweet nimbus
#

ah yes I need to test that

mystic lark
#

I mean it makes sense as when I fly close to the surface pretty much everything cached gets cleared and invalidated each frame, but id still expect mainly drawing a single cascade to be faster than 1400us

sweet nimbus
#

nsight would probably tell you something

mystic lark
#

But maybe the atomic min contention is going ham

mystic lark
sweet nimbus
#

we don't need to root cause it atm

mystic lark
#

True

wooden jolt
#

have you seen the mesh for the trees and bushes in bistro

mystic lark
#

I feel like the vsm journey is me and LVSTRI being like "mhmmmm what iff" and Jaker standing with a ruler above us and slapping our fingers "No! Not needed, write the article" KEKW

wooden jolt
#

it's all self intersecting quads bleakekw

mystic lark
#

Yeah I'm leaning closer and closer to not caching the lower cascades at all

sweet nimbus
#

btw I don't see the caching artifacts anymore

#

I think I triggered it just by enabling caching and moving around while close to a surface

#

but ye it's good now

sweet nimbus
mystic lark
#

Yep, this is all hypothetical

#

It just feels bad, as our impl could have been so much better/tried out many more thingies

sweet nimbus
#

perfection is the enemy of good enough

#

we did what we could, given the circumstances

sweet nimbus
#

I accepted a bunch of edits and made a few of my own. it seems like the list just keeps getting longer bleakekw

mystic lark
#

There is still a bunch written by me that needs to be reviewed though

sweet nimbus
#

made some adjustments
it's joever

vestal snow
#

Hmm I’m reading unreal’s docs and the volumetrics test almost definitely will need more time than we have. I found this: “In a future release, a more elegant solution would be where some of these effects can be marked for localized pages directly in advance rather than the current, overly conservative coarse pages being used.”

#

Seems like they’re still experimenting and want to move away from having to mark coarse pages?

sweet nimbus
#

@mystic lark do you mean for this to say "light frustum", then "cascade frustum"?

As the light frustum moves to follow the main camera, new pages, previously located on the edge just outside of the cascade frustum, might need to be drawn.

#

I think it should be "light frustum" both times

mystic lark
#

Yes, cascades frustum for both

sweet nimbus
#

went through the stuff in the drawing phase

#

now someone just needs to review the sampling phase

#

Shit I forgot. Someone should copy the contents of the article to the actual book just in case. We've made quite a few changes since then

prime ice
#

how many pages do you have now

#

is there a link i can read?

mystic lark
#

Currently is 17 pages

sweet nimbus
#

Just dm me your email

acoustic bobcat
#

Have you guys gotten any editor feedback yet?

mystic lark
#

Nothing in the offical document so far

sweet nimbus
#

@prime ice have you read the article yet?

prime ice
#

no

hazy steppe
#

(wpotrick knows what this is about, just in case anyone is wondering wtf that is :D) @prime ice go read it.

mystic lark
sweet nimbus
#

@mystic lark there is a part of the sampling section that I might rewrite

#

there is a paragraph about participating media and another for translucent stuff, but really they suffer from the same problem

#

the solution of drawing translucent stuff twice can still be mentioned

mystic lark
#

I initialy had them as a single paragraph and then I rewrote it to be two

#

but you can definitely merge it

sweet nimbus
#

I will try, inshallah

mystic lark
#

I need to be bullied into writing the final section

#

I'm procrastinating on it so hard

sweet nimbus
#

you don't have to write it

#

your only task atm is collecting them 🅱️erf numbers

mystic lark
#

ok, that sounds better

sweet nimbus
#

readers will only care about having a rough idea about the perf of VSM or any other technique

sweet nimbus
mystic lark
#

yeah either that or we rely on JS implementing them

sweet nimbus
#

lol ok then I'll move it to the future work for now

mystic lark
sweet nimbus
#

I know they work, but they don't exist in your impl (the demo we are shipping)

mystic lark
#

ye(t)

sweet nimbus
#

we have theoretically about a week to prepare the demo

mystic lark
#

A weeek????

#

uhhhhh

sweet nimbus
mystic lark
#

well

#

okay

sweet nimbus
#

is that too little time?

mystic lark
#

nah it's fine

#

just gotta get to it

sweet nimbus
#

the main things is getting a tiny benchmark (which you seem to almost have) for a table and the invalidation for moving objects

vestal snow
#

Did you guys hack in the moving objects invalidation to the demo?

mystic lark
#

It's in the workings

#

Should be ready tomorrow

vestal snow
#

Nice that’s awesome

sweet nimbus
#

!remindme 10 hours finish the conclusion

lost jayBOT
#

Alright gpgpu, I'll remind you about finish the conclusion in 10 hours. ID: 67610154

sweet nimbus
#

I need to be whipped into shape

hazy steppe
sweet nimbus
#

I got too distracted with the vsmisms in my own renderer

hazy steppe
#

!remindme 9.5 hours whip jaker back onto track

lost jayBOT
#

Alright deccer, I'll remind you about whip jaker back onto track in 9 hours and 30 minutes. ID: 67610452

hazy steppe
#

dogjiffalternativeversion.gif comes to mind

mystic lark
#

!remindme 10 hours write dynamic object invalidation mask

lost jayBOT
#

Alright m_saky, I'll remind you about write dynamic object invalidation mask in 10 hours. ID: 67610485

sweet nimbus
#

That was for myself

hazy steppe
#

doggos' eyes are the best

prime ice
#

lol

sweet nimbus
#

we need some pictures of nice, c r i s p shadows for the VSM article header still

#

or not lmao. I'm not too opposed to having the first pictures be commonly-encountered shadow mapping artifacts

sweet nimbus
#

I wrote some more stuff at the end of the article

sweet nimbus
#

except it's "where's the benchmark"

hazy steppe
#

when it doe be?

#

24th?

sweet nimbus
#

I dunno, the timelines are all wack now 😭

hazy steppe
#

@wooden jolt @prime ice @mystic lark @vestal snow

mystic lark
#

Oh uhhh I thought the ones I sent were all you needed

#

The two screenshots with timestamps that is

#

And then I forgor

#

What exactly is required of me?

#

I'll do it first thing tomorrow, sorry for my recent inactivity, uni is taking it's toll

hazy steppe
#

just checking because the conversation all of a sudden stopped here

#

and there was no "ALL STUFF SENT, REVIEWT, WE GOOD"

mystic lark
#

I've still been checking the main article each day - no reviews yet ☹️

hazy steppe
#

ah its wolfgangs turn now?

mystic lark
#

Since it's our first (and only bleakekw ) feedback it's kinda important for us

mystic lark
mystic lark
#

I've been mainly fixing Tido bugs over the evenings, so that it doesn't crash on every second user action

#

And is actually presentable

prime ice
#

the crashes are the spice

mystic lark
#

Half of the bugs were yours mister Bingus

#

And I'm not even taking into account that you tried to gaslight me into adding some arcane swapchain extension to fix them

hazy steppe
#

just say a word, ill ban potti for incompetency

#

kissing teeth

mystic lark
#

It's fine, he is a slow learner, but he does learn

#

(ily Patrick don't hurt me please)

sweet nimbus
#

when did you send that

prime ice
mystic lark
prime ice
#

hte day saky leaves me is when i end my minecraft world

sweet nimbus
#

@hazy steppe can you pin so I don't forget again kekkedsadge
#1168692074447642664 message

mystic lark
prime ice
#

dont push me like that

#

you know that wont happen

mystic lark
#

Hehehe yeah I know

prime ice
#

i have a broken word quota to achieve

mystic lark
#

Parsing your sentences has been a worthy investment of my skill points

#

Btw Jaker it should be noted that the "mark required pages pass" heavily depends on the page size (128x128) in those measurements

#

It almost doubles when making pages smaller

#

Not sure if it's relevant, but just so that you know

sweet nimbus
#

damn maybe we should do benchmarks for a few more vsm/page size combinations

#

small/large page and small/large vsm maybe (so just four total)?

mystic lark
#

okay, I can do that

#

!remindme 12 hours MEASURE VSM LAZY frog_whip

lost jayBOT
#

Alright m_saky, I'll remind you about MEASURE VSM LAZY frog_whip in 12 hours. ID: 67661631

sweet nimbus
#

sorry for bothering you when you already did the original benchmark

mystic lark
#

oh no worries at all, I'm glad I can help

hazy steppe
sweet nimbus
#

I think we need to merge all the pre-draw passes lol

#

for now I will just sum them but it will be somewhat incorrect

#

perfect fit

#

whoops here's context

#

I'm not sure what the debug passes are exactly

#

In my thing the debug visualizations are just in the shading pass

mystic lark
#

They can be omitted I don't actually know why I even timed them

#

They just generate an image for imgui

sweet nimbus
#

Ah lol

#

I'll split the bookkeeping a little then

mystic lark
#

Should I also include sampling measurements

sweet nimbus
#

Wdym

mystic lark
#

As in filtering etc

#

Measure the pass that does the shadow lookup during shading

sweet nimbus
#

Do you have filtering

mystic lark
#

I have pcf

sweet nimbus
#

Are you doing the radius marking thing

mystic lark
#

Crappy one but that shouldn't matter

sweet nimbus
#

How does it affect perf

mystic lark
#

So cascade chosen by heuristic, one above and one below

#

Uh 8 samples is like 0.6ms in 1440p I think

#

16 samples with super sampling were around 4-5ms though

#

But that's an extreme case

sweet nimbus
#

my friend suggested using a stacked bar graph instead of a boring table

sweet nimbus
#

trying to make this look good is cancer. maybe that's why no one else does it

prime ice
#

those are pretty numbers

#

there should be some testing for the sampling perf as well

sweet nimbus
#

yeah we discussed it

#

I'm just trying to make it look presentable

humble shadow
sweet nimbus
#

ye

#

that is obvious

sweet nimbus
#

I am looking at other papers and some of them don't have conclusions (they just end on results + limitations + future work)

#

the 1-sentence conclusion I wrote sucks so I just commented it out for now

#

anywayyyyyyy Someone™️ should review what I have at the end currently

#

I need fresh eyes on that part because I've been looking at it for too long and my neuron has calcified

sweet nimbus
wooden jolt
#

as you wish boss

sweet nimbus
#

basically I'd just like for you to pls review the text in Results and thereafter

  • is it missing any important information?
  • is there unnecessary information (I'm afraid much of the future work might be)?
  • basic editing concerns like poorly-worded sentences, misspellings, etc.
#

I've lost the ability to tell what it needs

#

My watchful gaze will fall upon the white sheets once more tomorrow

wooden jolt
#

@sweet nimbus I reviewed the new sections btw, they look good but I think we should at least mention HZB culling right?

#

I managed to implement it (unoptimally) and it works wonders

#

what saky explained is probably how to correctly do it

#

or 🅱️erhaps we just shove all of that and performance optimizations into the future work & improvements section

vestal snow
#

What’s the font we’re using? I’ll switch the diagrams to use it today if we know it

#

Hopefully we get some Wolfgang comments soon

sweet nimbus
#

I think Peter will be reviewing our section

mystic lark
#

Okay I'm 95% there, I improved the timing collection and everything, but I am super tired, is it a big issue if I give the timings tomorrow?

sweet nimbus
#

Nope it's fine

sweet nimbus
#

@wooden jolt I didn't look at your feedback yet, but did you have anything to mention about the section with one sentence (local lights) KEKW

wooden jolt
#

oh yeah

#

local lights kekkedsadge

mystic lark
#

I've been thinking about local lights, does Unreal really doo VSMs for them too?

sweet nimbus
#

huh kekkedsadge

mystic lark
#

sorry

#

haha

sweet nimbus
#

idk what to say though

mystic lark
#

Feels like a horrible idea to do VSM for local lights

#

don't you want to mainly cache these and agressively downsample?

sweet nimbus
#

UE5 does VSM for local lights

mystic lark
#

how wtf

sweet nimbus
#

the clipmaps behave differently

mystic lark
#

it's just a mip map no?

sweet nimbus
#

ye

#

so it's a dynamic resolution system for local lights essentially

#

but it still uses 99% of the vsm logic

mystic lark
#

but still, you draw the scene additional 6 * 3(active visible mip range) per local point light

sweet nimbus
#

yes but you get sick culling

#

also you only need to do it for lights within view

mystic lark
#

I guess hiz culling will be hyper good if you store occluders per local light

#

hmmm

sweet nimbus
#

I don't think you need hiz for local lights, just cull against a cube "frustum"

wooden jolt
#

you really just cull against a cube yeah

mystic lark
#

oh because local lights have a range

wooden jolt
#

and they also cull the VSMs themselves for local lights

mystic lark
#

I'm stupit

wooden jolt
#

they have a feedback pass where they just cull local lights that are not in view or do not contribute to the lighting

#

(or if adding more local lights would go overbudget)

sweet nimbus
#

hmm I'll just add that local lights are feasible with VSMs, but we "chose" not to implement them for simplicity

wooden jolt
#

ye just mentioning is fine

#

VSM are a great fit for local lights for the same reasons they're a good fit for directional lights

#

but can't implement them because, you know 🕐

vestal snow
#

Latin Modern is a similar one you can download to use with diagram tools etc.

mystic lark
#

okay here are the measurements

#

I always included only changes from the original two measurements

#

so for example changing page size from 128x128 -> 64x64 changed no values when I was not caching and only changed the bookkeeping when I was caching

#

For sampling the "no search" means that I only attempt to sample the current pixel page and don't try to go one cascade below and above on page miss

sweet nimbus
#

Berfect

sweet nimbus
#

for practical purposes, I think I will just use the mean numbers in this even though they don't paint a perfect picture

#

I do want to show how vsm/page/sample counts vary the perf though

#

so I'll probably make three tables

#

or one big table

#

or two medium and one small smart

#

@wooden jolt can you elaborate on the comment you made on the optimization section? What do you mean by compute

#

I meant to have asked this yesterday but I forgor

wooden jolt
#

I mean compute-based software raster

#

it's kind of a key point in VSM to make it quicc

sweet nimbus
#

ah

#

have we tried it though

#

it seems like a good optimization in theory at least

wooden jolt
#

it's all theory sadly

#

but you can logically draw that conclusion pretty easily

#

bound by PROP -> remove PROP from the equation -> enjoy speedup

sweet nimbus
#

but who's to say that whatever we make will be faster than PROP kekkedsadge

wooden jolt
#

by the same argument that primitive culling in compute is faster than fixed function culling

sweet nimbus
#

it's not faster in mine bleakekw

wooden jolt
#

zeux benchmarked it

#

lemme find ze article

sweet nimbus
wooden jolt
wooden jolt
sweet nimbus
#

certainly we can beat the hardware in some cases

wooden jolt
#

but ye either way we really shouldn't try to state this as fact

#

and only just in theory

sweet nimbus
#

game theory

mystic lark
#

oh damn this reminds me

#

there is no backface culling in Tido yet

#

uhhhhhhhhhhhhhhhhhh

#

I'll have to fix that tomorrow

hazy steppe
#

i fixed the thread's initial emojis btw 🙂

mystic lark
#

What are unreal guys cooking

#

Why is the tile smaller towards the shadow edge, rather than when closer to the camera

wooden jolt
#

forbidden witchcraft

#

really though wtf KEKW

#

they're probably using the shadow mask to find edges and create frustum dynamically?

#

it's probably the best solution to projective aliasing isn't it

#

there's a million different ways I can see this dynamic frustum partitioning failing tho

#

perhaps some kind of feedback to figure out how "full" the frustum is and the ratio between the expected size and the maximum size for said frustum

#

and why am I pondering this when it's 3AM

wooden jolt
#

how does that make sense? do they have multiple clip N projection matrices?

#

that's nuts though

mystic lark
#

Yeah I have no clue, or maybe they can afford a per page projection matrix, uhh I don't understand

#

Will need more pondering on the background threads, hopefully they come up with something while I eep

wooden jolt
#

I have run out of background threads

#

can you spare some kekkedsadge

#

I need to invest in more brain wrinkles

mystic lark
#

I'm freeing 30% of shared neuron power

#

May it serve you well

sweet nimbus
mystic lark
#

Keep the enemy close, I like it

sweet nimbus
#

Or I can take a video for you lol

mystic lark
#

Nono it's fine haha, I will download

#

They also do some magic with SMRT where they dynamically determine their ray count or smth

#

More food for the neuron ig

sweet nimbus
#

I guess you can use some heuristic to tell if you're on an edge and to therefore allocate more rays

#

I think the final fantasy shadow paper discussed something kinda like that maybe

#

Actually I think that was just doing the shadow test, then seeing if the light needed to be shaded if the occlusion was less than 100%

vestal snow
#

this is giving me intrusive thoughts doubts about our whole strategy

#

actually I feel better now

sweet nimbus
#

it seems like they are a little smarter about clipmap selection- note how the boundaries are square

#

compared to this

#

some of the texels here overlap two valid pages, but choose the less detailed one from the heuristic

#

it barely matters, but yeah

prime ice
#

magic

prime ice
#

maybe qadtree lodding

sweet nimbus
#

they probably just have slighter smarter math

#

or they just check 1 page down

sweet nimbus
#

I'm sure you're aware

#

just the draw and bookkeeping for some stuff on the right

sweet nimbus
#

I didn't want to make it three tables. I'm taking suggestions on how to make it look better

mystic lark
#

Das why I didn't copy them over again

sweet nimbus
#

ye I understand that

mystic lark
#

Ah this is what you mean

#

Okay I'll remeasure for these three setups you have

#

And fill in the values

sweet nimbus
#

btw didn't you add some optimizations that improve these numbers

mystic lark
#

Yeah exactly

#

Just the draw was affected though

#

But ye, I'll modify the table once I have the values again

sweet nimbus
#

I think I won't include the "sampling with search" results because we didn't discuss that

#

hmm

#

does anyone (not saky because he's a busy boi) want to take some pics of the various vsm debugging features in timberdoodle for the appendix

#

I also think we should each read the entire article again this weekend as a final pass to make sure things are good

#

then I will email the editor for our section and ask what's up with the timeline

sweet nimbus
#

ah and I guess the sampling numbers are for 4k, 128x128 pages?

mystic lark
#

Ye but it doesn't affect perf at all (the resolution or the page size)

#

Hmm but the page size should affect it

#

Uhh hmm

sweet nimbus
#

If it didn't affect perf then I'll mention it

mystic lark
#

I'll remeasure again

sweet nimbus
#

I hope it doesn't take too much time

#

I tell designated people at work to do perf testing like this and it usually takes them a while to complete it

prime ice
#

saky is an amd eployee confirmed

mystic lark
#

All good, I'll get to it this evening (after I do dynamic objects)

#

My perf testing is not super rigorous, I mainly use the timestamps + sparse nsight captures to validate

#

Hope that's enough

sweet nimbus
#

perfectly fine

#

nsight is overkill imo unless your timestamps don't capture something

#

we just need to give the reader a rough idea of perf

mystic lark
#

Nsight is more of a sanity check thing

#

To catch bugs in my perf measure code (if there are some)

prime ice
#

the trick is to exclude barriers in the timestamps so the oerf looks better

mystic lark
#

I probably also should wrap each task with a full barrier to get the true exec time

#

(only for perf measurements ofc)

prime ice
#

yea

vestal snow
#

I think saky mentioned he has new build steps posted unless I made that up

sweet nimbus
#

You might need to copy something into the cmakelists.txt to make it fetch vcpkg

mystic lark
#

oh I forgot about that sorryy

sweet nimbus
#

I remember building it for me was roughly:

  1. Copy vcpkg lines into cmakelists.txt
  2. Generate a VS solution or open the root directory in VS
  3. Build
  4. Run the exe from the root directory
mystic lark
#

adding it in a bit

sweet nimbus
#

JS might be able to do it with my crappy instructions if he's familiar with cmake

mystic lark
#

yeye I'll just add the vcpkg thingy into the Cmake

sweet nimbus
#

Well, with the vcpkg stuff

mystic lark
#

automatic download of vcpgk is now in, so all you need should be cmake and ninja

vestal snow
#

Awesome

#

Thanks guys I’ll give it a try soon

vestal snow
#

I've run into a few issues. I might have to continue tomorrow

#

it seems like the mirrors vcpkg is trying to use I can't access and I'm not too sure why

mystic lark
#

I'll need an error or something to go off of

vestal snow
#

I wasn’t able to work on this yesterday. I’ll post error info in #1166523139468034068

sweet nimbus
#

I'll stop spamming it with my stuff too

hazy steppe
prime ice
#

guys i have an idea

#

i think i can speed the vsms up a lot

#

maybe im dellusional

wooden jolt
#

shoot

prime ice
#

i ll make my own early z

wooden jolt
#

transient Z buffer is cope btw

#

you know what would be very helpful

#

some sort of function to feed the rasterizer stage that transforms output coords

#

which basically does this:

#
physicalMemoryCoord = f(primitiveCoord.xyz)```
#

and physicalMemoryCoord becomes gl_FragCoord

mystic lark
#

visbuffer for directional VSM I want

#

64bit unreal style

wooden jolt
#

there was someone who did visbuffer shadows

#

idk who though

prime ice
#

tear note

#

but it didnt work out well

#

tear rt'd the tris from the shadow visbuffer

sweet nimbus
#

Correct hybrid ray traced shadows require a linked list of primitives per texel

prime ice
#

but its holey

sweet nimbus
#

And you need conservative raster

hazy steppe
#

just another rabbithole

wooden jolt
#

what hw could we ask for to make hybrid raytraced shadows faster

#

(i.e not using a per pixel linked list bleakekw)

wooden jolt
#

figure out per pixel linked lists
rip 🅱️erf
give up because there's actually no way for optimization bleakekw

sweet nimbus
hazy steppe
#

short like this?

acoustic bobcat
#

Just allocate like 20 framebuffers

#

Boom, no linked list necessary

wooden jolt
#

VK_FORMAT_R32_UINT_ARRAY_10000

sweet nimbus
#

@mystic lark I can't remember if you got those new benchmarks

mystic lark
#

Ah I forgot

#

I'll try to get them today (have some urgent uni work I need to do first)

sweet nimbus
#

ah

#

I could do the benchmarks instead actually

#

but I need the ball bistro scene

sweet nimbus
#

downloading

mystic lark
#

btw patrick was testing something and apparently if you run it through nsight you get much more consistent results

#

also discord and other electron apps cause random spikes in the frame times bleakekw nothing major, just letting you know

sweet nimbus
#

I just need ruff numbers

mystic lark
#

what I did to measure was

  1. hit Stop Gathering and reset timings in Render Statistics
  2. hit Use preset camera and press I to override the keyframe in Shader debug menu
  3. maunally set 0th keyframe and 0.0 keyframe progress in Shader debug menu
  4. hit start gathering and press I at the same time to start the gather and start moving the camera
  5. hit stop gathering once the loop is complete (8th keyframe 1.0 keyframe progress)
#

its a bit cope, but I am really pressed for time unfortunately ☹️

#

(also make sure to pull latest Tido I made some small changes)

sweet nimbus
#

it's all good. it doesn't need to be perfect 😄

#

I pulled, dw

mystic lark
#

perfect, thank you for doing it instead of me

sweet nimbus
#

I'm just trying to figure out why it's not loading the model (probably my working directory being fooked)

#

and now I'm trying to figure out how to use the VS debugger but have it set the right working dir

mystic lark
#

I'm a bit confused, so it loads the model now?

sweet nimbus
#
  1. after I pulled, the application would instantly close when running it
  2. I'm trying to use the debugger now, which I previously wasn't because it would set the wrong working directory (so the assets would load)
  3. I'm trying to set the correct working directory for the debugger so I can use it
mystic lark
#

Try to run it from the command line so that you get error message

#

Ah I know why

sweet nimbus
#

I did, the error message is nothing bleakekw

mystic lark
#

I try to load the wrong file I think

sweet nimbus
#

I think I know why

#

it's crashing when dereferencing the ball

#

because the file didn't load

mystic lark
#

This should be uncommented

sweet nimbus
#

ah

#

yeah I was fiddling with this stuff

#

I typed it myself and had
std::filesystem::path const DEFAULT_HARDCODED_FILE = "bistro_fix_ball_compressed\\bistro_c.gltf";

mystic lark
#

Meant to answer to the message above ups

sweet nimbus
#

yay I can debug it now

mystic lark
#

Good good

sweet nimbus
#

and no more random device lost after I updated drivers and restarted pc

vestal snow
#

Very nice, that’s a cool demo

sweet nimbus
#

I should give saky a raise

hazy steppe
#

it would be cooler with a certain cube model : > (not really)

sweet nimbus
#

hmm why is there no deccer cubes emoji or sticker

mystic lark
wooden jolt
#

very round

sweet nimbus
wooden jolt
#

it do be

#

saky is magical

mystic lark
#

I needed that because I had a bug

#

so I had to have something to reason about what I'm seeing

sweet nimbus
#

📸 yep, that's going into the appendix (it's a good debug view)

wooden jolt
#

we need a debug view ranking btw

#

I like the projected overdraw the most

#

(because it gives me nightmares)

mystic lark
#

btw there is a bug in my heuristic somewhere that I've not yet had time to fix

#

you can see it when you have visualize clip levels on

#

sometimes (for some reason) the shade opaque pass requests pages that have no been allocated by the mark required pages pass

sweet nimbus
#

that doesn't seem too bad tbh

mystic lark
#

better image

sweet nimbus
mystic lark
#

the search during sampling makes it go away

sweet nimbus
#

actually it might be a caching thing

wooden jolt
#

jaker it's 3am

mystic lark
#

how low is the sun?

sweet nimbus
#

80.5

#

but with my changes

mystic lark
#

ah

#

uh

#

yeah that I have no idea about

sweet nimbus
#

ALSO I might've moved the sun a tiny bit by accident which would cause the cache to be wrong

#

actually nah it looks obvoiusly wrong when I do that

mystic lark
#

I need a checklist

sweet nimbus
#

it's hard enough to trigger my bug that it doesn't really matter tbh

mystic lark
#

I think it might be my unprojection from depth to world as I don't account for the near plane there

#

actually no, that is not it

#

eh idk, I'll solve it later bleakekw

sweet nimbus
#

it's no biggie fr

wooden jolt
#

it's time to rest soldier

sweet nimbus
#

I think tido is basically shippable for the demo

#

well maybe the cache invalidation when sun moves but eh

mystic lark
#

I have some Java profiling that needs to be done

sweet nimbus
#

java?

mystic lark
#

uni garbage

#

knocking at my door

#

due till tomorrow midnight

#

and tomorrow I'm not here half the day

wooden jolt
#

I am so happy I did all the java related exams (DB and UI)

#

it's in the top 3 worst exams

sweet nimbus
#

I don't think I can PR my function without making a new fork and going through a bunch of ceremony

#

it would be simpler if you copied this
#1166523139468034068 message

mystic lark
#

okay

#

I can also ask Patrick (I assume he will have no issue with that) and give you access

sweet nimbus
#

that would work too

#

this will be my contribution to tido, then I'll keel over and die as my life's work is complete

wooden jolt
#

lol

#

lmao even

mystic lark
#

'tis but the beginning of a great journey

wooden jolt
#

you won't die so easily

#

I will drag you all into nanite one way or the other

#

or maybe GI

#

hmm so many things to bikeshed

sweet nimbus
#

if you make a nanite library then I'll happily use it

#

GI is something I want to try though. the weeds of geometry processing do not interest me as much

wooden jolt
#

I'm very interested in surfel GI

#

but you can't escape tracing rays

#

I am so sad

sweet nimbus
#

I need to start with shrimpler stuff first

#

like getting the vk version of frogfood working

#

after this article

wooden jolt
#

when's the deadline btw

sweet nimbus
#

idk at this point bleakekw

wooden jolt
#

tomorrow's lectures are cancelled because uni exploded so I'll do some reviewing I guess

#

also I have to get tido working

sweet nimbus
#

yesterday was when we were supposed to submit the code

#

three weeks ago is when the draft review period was supposed to start

#

I'm gonna email our contact later tonight and ask what's up

mystic lark
#

we have not received any review which is kinda sus

vestal snow
sweet nimbus
#

I'm guessing the deadlines are a bit more... "flexible" than they initially seemed

vestal snow
#

also fyi: I think my hardware is too old for Tido. Would anyone else be able to take screenshots of the debug stuff?
I have another GPU laying around but it apparently also doesnt support mesh shaders froge_bleak

sweet nimbus
#

Can do 🫡

#

What's your GPU?

vestal snow
#

in this machine it's a gtx 1060, and in another one it's an rx 5700

sweet nimbus
#

I see

#

Mesh shaders aren't supported until RDNA 2 (6000 series) and idk about nvidia

vestal snow
#

nvidia it looks like their 16 series did

#

but 10 series no

sweet nimbus
#

So turing+

vestal snow
#

yeah

#

apparently apple supports them, but trying to get things running on mac may be cursed

#

I might still try lol

mystic lark
ruby trellis
#

for M1 and M2 its emulated in compute and might not actually be faster than normal vertex shaders

vestal snow
#

I managed to get it to compile on M1. It doesn't run (symbol missing - maybe arch mismatch somewhere), but it compiles

vestal snow
#

I think M3 is also getting raytracing hardware

sweet nimbus
#

are these good enough for the appendix? I plan on having two more pics of other debug stuff

#

if no one says anything in the next 30 seconds it will be added

mystic lark
ruby trellis
#

the apis for which have existed since M1, but both things are emulated in compute on M1 and M2

#

no idea about performance numbers on M3 though, but I do have one

sweet nimbus
#

hmm, what if I were to capture a debug view from my engine and disguise it as saky's cooking

#

delightfully devilish I must say

#

(I just want a pic of the overdraw view)

wooden jolt
#

smart

mystic lark
#

Overdraw view?

#

(Just add it to Tido hehehe)

wooden jolt
#

#1128020727380054046 message

#

this beauty

sweet nimbus
#

comment within the next 5 picoseconds if you don't like this

#

hmm maybe the colors need to be hotter

wooden jolt
mystic lark
#

Ohhhhh this is the shadow overdraw

#

Ohhh I need this

#

@prime ice add it

vestal snow
mystic lark
#

Pleeeasee 🥹 🙏

wooden jolt
#

it's just an imageAtomicAdd to VSM physmem sized image smart

sweet nimbus
mystic lark
wooden jolt
#

ok I add it

sweet nimbus
#

I wonder why there is overdraw on triangle edges

wooden jolt
#

hmm you mean overdraw from helper invocations?

sweet nimbus
#

it can't be helpers because those don't participate in any output

#

here you can see overdraw even though it's one triangle thick (you can see near plane clipping at the bottom)

mystic lark
# wooden jolt ok I add it

If you are serious follow my example in vsm_state to create the image, then cull_and_draw_pages task head in vsm.inl will need to be modified and the call itself too and finally the fragment shader of cull and draw pagesv(both opaque and transparent)

#

It should actually not be that hard to add, daxa makes stuff very easy

#

You don't need to cope with the special views I do for the memory block

wooden jolt
#

gotcha

mystic lark
#

Regardless we can use Jakers pretty views and I'll try to work on Tido a bit more tomorrow to finish up the remaining bits

sweet nimbus
#

perfect fit

wooden jolt
sweet nimbus
#

I decided against having an explainer saying why debug visualizations are good and just kept it at two figures

humble shadow
sweet nimbus
#

the text may need some light editing, but I'll let someone else deal with that didnotread

#

all the article needs is for me to do those damn benchies (aaaaand perhaps one more light editing pass)

#

given the current pace of things, it seems I am fine to put them off until tomorrow froge_yeehaw

humble shadow
#

So did you folks get any feedback on the article ?

mystic lark
#

I can do them if they are only required till tomorrow

#

(the timings)

sweet nimbus
#

nah you've had a disproportionate amount of stuff on your plate lately, let me take some load off

#

I also think you deserve to have the first author name since you did the most writing and contributed the whole-ass demo hehe

prime ice
#

i added a single comment to the article btw

prime ice
#

ill add debug views as my next task

hazy steppe
#

man this is so cool what you guys made 🙂

vestal snow
#

Yeah good job everyone! It turned out really nice

#

will we have a place in the article where we can add something like "special thanks to" for anyone who helped read/comment?

sweet nimbus
#

We can have an acknowledgements section

sweet nimbus
wooden jolt
#

I think we already do mention this no?

#

either way yes

sweet nimbus
#

we do not

#

I'll just add a sentence

#

fug idk how to cite presentations like this bleakekw

#

eh whatever I'll try

#

you guys can clean up my mess frognant

#

ok I hate how all the info about VSM is packed into two slides in this presentation

#

128k VSM thonk

#

how do they render all pages at once

wooden jolt
sweet nimbus
#

are they doing sw raster

wooden jolt
#

uhh idk

#

it's not mentioned anywhere at least

sweet nimbus
#

idk how the vsm could be so big and they draw all the pages at once

#

unless they only draw a small portion of it at a time

#

idk how to even mention this now

wooden jolt
#

someone with a shitter account could probably send a msg to seb?

sweet nimbus
#

I don't

wooden jolt
#

it's way too ambiguous ye

mystic lark
#

The only issue with this is how do you rasterize it

#

At 128k resolution lmao

sweet nimbus
#

sw raster is one way KEKW

#

the other way is that you are only seeing a tiny part of the shadow map at a time

#

so you just draw a box around it

mystic lark
#

I guess you could construct per page projection also

#

But that seems nightmarishly slow

wooden jolt
#

you'd need one drawlist per page

mystic lark
#

Yeah

wooden jolt
#

which is bonkers KEKW

sweet nimbus
#

most importantly, how do we relate this to our article?

#

"virtual shadow mapping has been explored before, ...?"

mystic lark
#

Yeah exactly

sweet nimbus
#

that is unsatisfactory imo

#

what were the lessons of the previous exploration of vsm

#

(I mean obviously we didn't use them as we just learned of this thing but yeah)

mystic lark
#

Well the issue is we have no idea what they do in the presentation

#

I'd tie it with the unreal citation

#

But eh idk, the presentation information is extremely unsatisfactory

sweet nimbus
#

just enough to say that they did it first bleakekw

#

I think it may also be worth mentioning the other virtual texturing stuff that has been explored somewhere around that part too

#

I have to eep now but I'll think about it

mystic lark
#

Is it okay to just dm Sebastian?

sweet nimbus
#

Of course

#

But I nominate someone else to do it

wooden jolt
#

does he have any other contacts that are not social media

#

maybe email?

sweet nimbus
#

Does he have a website

mystic lark
wooden jolt
#

twittershitter™️

sweet nimbus
#

There was a thing you could do, like putting .patch at the end of a commit url on GitHub to see the raw commit info

mystic lark
#

Their page sizes increase

sweet nimbus