#Rosy

24912 messages ยท Page 25 of 25 (latest)

pseudo dock
#

haha

#

You're allowed

#

It's funny, but Redout has been on my Steam wishlist for years (I don't even remember where/how I heard about it, but it was long before I knew about this GP discord). When you started playing it I got kind of interested and thought maybe I should buy it and try it out after all. But now you're moving on again so my procrastination paid off in the end ๐Ÿ™‚

cloud rivet
#

it's a fun game, it's a bit challenging and it's repetitive

#

it's easy to get bored with it

#

it's a very beautiful game

#

I actually prefer the first redout to the sequel, both in terms of controls and maps

#

and it's much prettier

#

redout2 is a worse game somehow

cloud rivet
#

so nice

astral hinge
#

gigabarrier between everything in a stream

solid grove
#

the only way to fly

cloud rivet
#

you can opt into manual sync if you want it, it's not the default

#

and then you can use cuda events

#

there are also cuda graphs

#

working on the magnifier was fun, I like kernels

astral hinge
#

the magnifier in my app is made with ImGui::Image and adjusting the texcoords to be only a small part of the screen

cloud rivet
#

I am going to look into writing an imgui backend for CUDA as nano suggested, then maybe I can supply a CUDA texture object to imgui in that way too

#

for my magnifier I simply overwrite the memory with contents of other parts of the memory. it is actually a trivial kernel

#

I think it might be less work to write an imgui backend for CUDA than for me to write my own image viewer with all the controls and ui you get from imgui

#

and I don't have like a renderdoc to look at images either

#

so the need is greater

#

I don't mind investing into a CUDA project long term I am having a lot of fun and am not interested in using other graphics APIs anymore, for now

astral hinge
#

making an imgui backend is a good idea imo

cloud rivet
#

I'm nearly done with the hard constraints chapter, this weekend I'll write particle collision solvers. it won't look very believable since there's no orientation yet. Then I still have the motion zoom and now the imgui backend side quests. At some point I want to add lights and reflections. I want the surface of my skimmer to be reflective

#

I want to add some dark interiors where lights would look cool too

#

another project idea I have, that is not this game is an offline OptiX renderer just going through the PBR book chapter by chapter and implementing stuff I will learn about, sort of how I am doing it with this physics book

cloud rivet
#

I kind of already have gameplay

#

it's not for the feint of heart to watch that

#

it is already fun though

#

I am much better also when I am not recording

#

this weekend I'll finally have collisions so that'll be more accurate

#

I am going to set up a nice obstacle course

astral hinge
#

that camera is so cinematic

cloud rivet
#

I love it so much, I am not going to remove it

#

I will have a way to cycle different cameras

vivid barn
brisk chasm
#

all it needs is collision testing against those big cubicles, and then have the ship bounce back in an elastic fashion with a cool boing-like sound and then ready to ship, i would buy

vivid barn
brisk chasm
#

:i knew youd say that.mng:

cloud rivet
#

The only windows specific code I have I think is the external vulkan memory. Which is easy to fix

#

And some paths

cloud rivet
cloud rivet
#

I was thinking I would add skimmer health, and if you collide enough and lose all your health I replace the skimmer model with a bunch of meshes that fall apart based on the collision normal & velocity

#

and those meshes would be recognizable as parts that were part of the skimmer

#

I don't want the skimmer to be multiple meshes though

vivid barn
#

it's time to implement vertex animations then

#

or bony deformations if you plan to anime more stuff

#

animate

cloud rivet
#

I can iterate on it, just having something happen that's not a lot of work is a good first step

vivid barn
#

then vertex animations

solid grove
#

for the item barrels in my game I hide the barrel model and use a particle system for the fragments

brisk chasm
#

destructible obstacles, i wouldnt mind that

wraith urchin
cloud rivet
wraith urchin
#

Do you intend to keep the blocky aesthetic? I think you should

silk pier
#

(I love the 'not blocky' smoke particle system thing)

cloud rivet
#

I kind of accidentally happened into it, I just wanted some scenery and had cubes, so I put more cubes in there and transformed them

#

I will keep them I think

wraith urchin
#

Yeah the smoke is cool too

#

you should have more of it

cloud rivet
#

it was a lot of smoke, but the vehicle got fast

#

I think the particles should get some of the vehicle's speed

wraith urchin
#

It kind of reminds me of the smoke & dust in Traction Point (unvestigate's game)

cloud rivet
#

I hope uninvestigate doesn't mind the inspiration ๐Ÿ˜…

wraith urchin
#

Did you play the traction point demo?

cloud rivet
#

no I haven't

#

I deleted steam

#

oh this PC still has steam

#

oh right I want to test redout

cloud rivet
#

working on a ray AABB intersection test, which feels kind of dumb, since I have optix, but I'm going to get the whole physics system working as in the book, understand it, and then move stuff to the GPU

#

including launching optix rays for collision detection

pseudo dock
#

You're going to do physics on the GPU?

cloud rivet
#

idk

#

we'll see

#

it just feels weird to do ray intersection tests

#

also

#

I wouldn't have to transfer all the transforms to the gpu every frame from the host

solid grove
#

finally, a gpu-only game

pseudo dock
#

It'll be exciting to see what you come up with

cloud rivet
#

I mean it is a CUDA application

pseudo dock
#

Every time you miss passing through the arch the game could say "nope!"

cloud rivet
#

it's gonna cause damage, and the big ol nope is going to be the vehicle falls apart into pieces

pseudo dock
#

And then big red letters could appear on screen:
YOU TRIED

astral hinge
#

if you get run over by another car, then it says
YOU TIRED

cloud rivet
#

weird to refer to myself as YOU but yes I could taunt myself

#

I am already pretty hard on myself so it would be on brand

astral hinge
#

use an llm to generate random context-dependent inspirational quotes instead

cloud rivet
#

I don't use llm for stuff like that tbh

#

I stay pretty focused

#

I use claude to debug issues and work through ideas & problems, but I write my own code

silk pier
cloud rivet
#

idk

#

definitely don't need any QSFP ports

#

oh those are for connecting other sparks

#

it's just for AI stuff

#

weird

#

wish they made a graphics version of that thing

cloud rivet
#

I have some collisions detection now, now I need to write the resolver

#

just showing collisions in a ui and it looks right, some of the big structures intersect with each other and that's reflected in this

#

they have infinite mass though so the resolve will be a noop

#

I should skip infinite mass collision checks

#

lol

#

I've just added colliders to the structures, I will add the small cubes and floor tiles also though once I get resolve working with the structures

#

the skimmer has a collider too of course

cloud rivet
#

just like nvidia made hardware with their OS and a graphics setup

#

instead of an AI setup

vivid barn
#

it's not "their OS" it's ubuntu and they packed it with a bunch of stuff to ease people with no previous experience into """ai"""

#

anyway you could get dgx spark but not use their distro on it

cloud rivet
#

it's not great for graphics I think

vivid barn
#

yes it isn't

#

the perf of that box is comparable to strix halo puter I have

#

I would've gone with dgx spark if it cost closer to 2 kโ‚ฌ tbh

#

which is the amount I got my strix halo box for

cloud rivet
#

what do you use the strix halo box for

vivid barn
#

for general puting

#

I enjoy decently fast gpu perf while not needing to worry about running out of vram

#

I recently tried to import gigachungus scene into blender in hopes of rendering it (for fun value, not for anything practical) but that went kinda nowhereburger at usd import stage

#

ig I could try some of these degenerative ai things out

cloud rivet
#

the spark has LPDDR instead of GDDR memory is what I saw, and just a single hdmi port

vivid barn
#

it doesn't matter whether it's LPDDR or GDDR

#

well I mean

#

what matters is the G/s number

#

and yes the G/s number is just a "mere" 256

#

while proper current GDDR setups usually get 448+

#

on strix halo in particular per CU bw is less than on steam deck

#

256/40 vs 88/8 (iirc)

#

but on the other hand on gddr hw the moment you run out of vram your perf falls off the cliff to much lower number than 256 G/s

#

good luck doing that on this puter

cloud rivet
#

oh I see

vivid barn
#

anyway I was told you wouldn't be able to get this amount of memory with gddr

#

because there's simply no gddr with this density

#

and also G/s number isn't everything

#

I guess it does matter if you're doing ai slop

cloud rivet
#

hrmm maybe I take another look at it

vivid barn
#

or if you're benchmarking memcpy

cloud rivet
#

I'm not doing any ai stuff, what would that even be

vivid barn
cloud rivet
#

it's pretty pricey

vivid barn
#

4 kโ‚ฌ for a puter you can't even run windows games at good perf on

#

(the cpu cores are arm so it would be going through e.g. fex)

cloud rivet
#

hrm

#

it has 86_64

vivid barn
#

no

#

20-core Arm processor (10 Cortex-X925 + 10 Cortex-A725)

cloud rivet
#

oh

#

I was looking at the OS docs

vivid barn
#

guh

cloud rivet
#

lol

vivid barn
#

anyway no dgx spark has 20 arm cores

cloud rivet
#

20-core Arm processor (10 Cortex-X925 + 10 Cortex-A725)

#

oh that's what you pasted

vivid barn
#

so idk

#

even at 2 kโ‚ฌ, for me it wouldn't offer enough to pick over strix halo

cloud rivet
#

let me look at a strix

vivid barn
#

there's multiple puters with strix halo

#

it's the cheapest

cloud rivet
#

that's amd

vivid barn
#

yes

#

dgx spark is a direct competitor of devices with this soc

#

anyway I wouldn't drop 4 kโ‚ฌ on spark

#

if you are really stuck with nv I would rather get a gigachungus nv dgpu

cloud rivet
#

yeah

#

I will search for " gigachungus nv dgpu"

cloud rivet
#

ok I think I understand the resolver

#

I need to calculate and set separating velocities between two colliders
I need to resolve penetration between two colliders by directly setting their positions to remove the penetration

#

both involve the masses of the objects, an infinite mass object is not moved

#

in the latter the direction of movement is the contact normal, in the former it involves the velocity of the collider

#

in order to avoid oscillation of two colliders contacting each other at rest, calculate the separating velocity via considering the velocity and acceleration only in the direction of the contact normal

#

and then contact resolution order is going to be just iterating over all contacts, finding the greatest sparating velocity, processing it, and then continue iterating for N, or until there's nothing left to do, revisiting previously visited contacts even

#

ok

cloud rivet
#

I really want that dumb spark thing

#

anyway

#

back to code

cloud rivet
brisk chasm
#

exactly what i had in mind โค๏ธ

cloud rivet
#

need to fix the hover so that it hovers on the tops of things too, not just the ground

brisk chasm
#

perhaps you could add a jump of sorts so that you could hop over smaller obschtekkles

cloud rivet
#

yes

brisk chasm
#

neat little test world too

cloud rivet
#

this is all still particle physics, rigid body is next

cloud rivet
#

this was really hard, I had a lot of difficult bugs

brisk chasm
#

best kind of bugs ๐Ÿ›

cloud rivet
#

I'm going to have to add aabb trees, this is going through all colliders every frame. I tried adding a 10000 of them and my frame time was like 200ms

brisk chasm
#

what a 10000 of aabbs does to a mf(majestique fromage (please ignore that french people always reverse the order of words... see nato vs otan))'s engine

cloud rivet
#

I am going to add the optix motion blur as nano suggested to the projectile actually while I also give it a collider

#

I am going to make shooting that thing more interesting

#

Right now it just does nothing

vivid barn
#

hmm

#

ok it might be easier to add to just a single object

#

can you mix non-motion and motion instances within a motion AS?

cloud rivet
#

I think I can nest instances

#

So I could just do that by having things with motion blur be in a sibling ias

#

It makes instance index math more complex

#

So I may start using instance ids

#

Or I can just put everything in a motion blur instance and enable the blur for a subset

#

Getting data structures correct is going to be important soon. I will need more sophisticated acceleration structures on the optix side and add aabbs on the host and I will have to be able to move things around quickly

#

Maybe like a b-tree that maps to IASs or something

#

I will worry about this later

vivid barn
#

I'm not sure you can

#

yeah I'm pretty sure when building IAS/TLAS you can only have instances be various GAS/BLASes

#

can't have another IAS as an instance

#

in optix 9 you can do some tricks where you run traversal but don't invoke closest hit

#

so perhaps as a kind of hack, hopefully a quick one, you could do two traversals and invoke closest hit for the closer one

#

that sounds horrible though

cloud rivet
#

you can absolutely nest instances misinfo

#

sorry

#

you can nest transform traversables

#

and geometry acceleration structures

#

you can't nest IAS's

#

you are correct

#

hrmm

#

but I think transform traversables are app here

#

In this case, a static transform pointing at the geometry acceleration structure can be used for the
object-to-world transformation and the instance transform pointing to the motion transform
has an identity matrix as transformation.

#

ok this is going to be fun

#

I also still need to compact my accelerations structures and I should denoise

#

I have a little bit of noise, but it's not very noticeable

#

just saw nano mention that in their thread and realized I can use optix for it so I want to try that

#

I just parrot things other people do

#

needs rigid bodies for the orientation torque change

brisk chasm
#

now you add a fluid sim and let the schmoke interfer with the cubes, slowing them down because the schmoke has density etc, jk. this is cool

cloud rivet
#

I was considering adding colliders to the smoke particles it would be really slow right now

#

if I do it on the gpu I could do it I think

#

or idk maybe the b tree will be able to make it fast

brisk chasm
#

hehe

cloud rivet
#

I think I want to maybe simulate a little bit of a wind with them though so when I go back through them that changes their trajectory so maybe I add a single collision check for each one with just the vehicle

#

and it would just be a sphere check, which is way simpler than an aabb ray

cloud rivet
#

yeah so next up, motion blurred projectile with cool physics, and some camera improvements. after that I want to scale the collision to tens of thousands of particles via a b tree or something, and then I go back to the book

#

if I buy that nvidia spark maybe it will cure me of my trypophobia with its weird aesthetic

#

like if I have to look at it every day, face my fears

#

don't see a bunch of weird bugs coming out or eyes looking around at me

#

shudders

#

I should use bluenoise to spread out my particles so they don't end up in that line

astral hinge
#

you could try an LDS like a hammersley sequence if you don't want to sample a texture on the CPU

shut hornet
#

Halton sequence is also nice, blue noise just looks uninteresting

#

at least for stuff like particles or foliage, looking totally random is undesirable

cloud rivet
#

thanks I'll take a look

#

looks like Halton sequence is a type of LDS

#

I'll try that, seems really simple

shut hornet
#

they are related, not sure if the same thing tbh

cloud rivet
#

Halton sequence is in the LDS article on wikipedia fwiw gpAkkoShrug idk

#

I don't know anything

#

anyway, that's what I'm going to try rn

shut hornet
#

killer domain name, btw

cloud rivet
#

apparently I have read this already it was in my browser history but I don't remember reading it

#

it was the same with LDS, I went to put it in my notes and found I had put it in my notes already

#

I think maybe I'm time skipping or something

#

probably the lack of sleep explains all this

#

it was even the most recent thing I had put in my notes

shut hornet
#

it happens to me all the time. even worse, I'm researching something, and then the answer is actually something I posted 3 years ago, and have no recollection

cloud rivet
#

leads to cool patterns

cloud rivet
#

ooh

#

halton sequence works really well

#

thanks ya'll!

#

glad to get rid of that ugly line

#

nice

#

so much better

cloud rivet
#

I'm going to move AGX tone mapping to a kernel out from the ray gen

#

and leave the buffer HDR until then

cloud rivet
#
Original HDR โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
      โ”‚                                           โ”‚
      โ–ผ                                           โ–ผ
 Downsample โ†’ Down โ†’ Down โ†’ Down โ†’ Down      [keep sharp]
                                    โ”‚             โ”‚
                              Blur+Upsample       โ”‚
                                    โ”‚             โ”‚
                              Blur+Upsample       โ”‚
                                    โ”‚             โ”‚
                                   ...            โ”‚
                                    โ”‚             โ”‚
                                    โ–ผ             โ”‚
                              Bloom buffer        โ”‚
                                    โ”‚             โ”‚
                                    โ””โ”€โ”€โ–บ ADD โ—„โ”€โ”€โ”€โ”€โ”˜
                                          โ”‚
                                          โ–ผ
                                       Final
#

then I get a bloom

#

I want the skimmer's projectile to glow is why I am doing this now

#

at the end of this I want the projectile:

  1. have physics where it bounces
  2. glow
  3. have motion blur
shut hornet
# cloud rivet from the slides on https://www.iryoku.com/next-generation-post-processing-in-cal...

@brisk dagger did a whole blog post on this, but I had better luck with that call of duty paper: https://www.froyok.fr/blog/2021-12-ue4-custom-bloom/

I wanted to see if I could modify the unreal engine bloom effect following my article on making custom lens-flare. This is because the default one can sometimes look disapointing and doesn't always be...

cloud rivet
#

thing I need to remember:

  • threadIdx = where am I within my block
  • blockIdx = which block am I in
  • blockDim = how big is each block
  • gridDim = how many blocks total
  i32 x = threadIdx.x + blockIdx.x * blockDim.x; 
  i32 y = threadIdx.y + blockIdx.y * blockDim.y;

I totally got this all mixed up when I worked on my magnifier, but it's actually really simple. And if I want I can use gridDim for when I want to break up per block work

cloud rivet
#

working with CUDA kernels is fun

#

this is much improved, I can easily switch tone mappers host side and I don't have to send all that data with the launch

#

I'll work on the down and up sampling tomorrow

brisk dagger
cloud rivet
#

thank you!

cloud rivet
#

haven't done a loc check in in a while

cloud rivet
#

that triangle was over gamma-corrected ๐Ÿ˜…

wraith urchin
#

Is it? it looks ok to me

#

How are you converting to sRGB?

#

or are you?

cloud rivet
#

the background should have been blue

wraith urchin
#

oh

#

cause the triangle looks right

cloud rivet
#

this is what it looks like after I fixed srgb

wraith urchin
#

nah that doesn't look right

cloud rivet
#

yeah

#

the background and imgui are correct

wraith urchin
#

it should be white in the middle

cloud rivet
#

the triangle itself needed to be gamma corrected in my application code

#

but I don't do that anymore, I use a tone mapper

wraith urchin
#

hmmm

cloud rivet
cloud rivet
#

so I looked

#

I am using the full AGX curve

#

which is intended to go directly to displays

#

there's an AGX tone curve, which would still need to be gamma corrected

#

I am not using that

#

so everything I am rendering now is gamma corrected

#

what I am not actually doing which is incorrect is I need to convert srgb textures to linear space before tone mapping

#

I need to set the srgb value on the CUDA texture object

#

an eazy change to make

#

it will sample linear colors from srgb textures if I enable that

#

I should have a name for this project so it has three initials thinkeyes

#

PS could mean anything but a lot of people on this server know what ASO and SRS means

brisk chasm
#

RCR

cloud rivet
#

well the name of the project is pixel storm

brisk chasm
#

PXS ๐Ÿ˜›

cloud rivet
#

PXS it is

cloud rivet
#

before I made my own physics I never enjoyed bumping into walls so much

brisk chasm
#

hehe

#

literally ๐Ÿ™‚

cloud rivet
#

for research I have been bumping into walls irl

brisk chasm
#

reading in books while walking inside the house?

cloud rivet
#

or at least that's how I can now explain why I do that, "sorry physics engine research meant to do that"

cloud rivet
brisk chasm
#

yeah hence the bumping into walls irl

cloud rivet
#

hey, I'm doing science here

brisk chasm
#

hehe

shut hornet
#

totally not safe, just a 1-time stunt

cloud rivet
#

It has arrived just in time for me to have nothing to use it for

#

the display and mouse don't arrive until the 9th

#

maybe it's good for AI inference

solid grove
#

it is if you hook up an external GPU for it

#

you get a low-wattage server to run your GPU on

#

if you add multiplayer to your game, you could use the pi as a game server

tight torrent
cloud rivet
#

well

#

it uses a broadcom GPU

#

and my engine has a CUDA dependency ๐Ÿ˜…

#

but the NVIDIA spark is ARM

#

so probably in the cards

fiery crow
cloud rivet
#

I'm sorry :<

#

I don't think I could build this thing via a graphics API

#

I mean someone can, but probably not me

fiery crow
cloud rivet
#

oh interesting

fiery crow
#

So if I need to do some silly renders in blender I just need to go to 3.6

shut hornet
#

also, we are up to Blender 5.0

fiery crow
#

I mean I'm on debian stable

#

gpAkkoShrug if puter works no need to update

cloud rivet
#

stability is very nice

fiery crow
#

I only use the gpu driver backport

#

frOK wine if I need some winslop exe to run and steam for uma musume and sven coop

cloud rivet
#

started stubbing out a new kernel for the downsampler, which comes before toning, it just writes thread id / window dimensions to color, but it's interesting to see the x y gradient with a full AGX curve tone map

#

I was hoping spending the day working on this, but I just started, because I spent all day on fixing another collisions bug

#

my collisions are very nice though, I did a lot of edge testing

#

hrm I have some random win32 code because it was easier than asking SDL to do this

  u32 window_width = GetSystemMetrics(SM_CXMAXIMIZED);
  u32 window_height = GetSystemMetrics(SM_CYMAXIMIZED);
shut hornet
cloud rivet
#

imagine a "stable" version of windows, it only got security updates and nothing else, no more features, it was just in maintenance mode...it would be the most popular version of windows ever

#

available CUDA memory operations are interesting

cloud rivet
#

ok got the kernel writing to the mip dimensions

#

now just need to implement the down sample

#

and then the up sample

#

and then do the add

#

I can up sample on the bottom half of this buffer

#

then I can view both the up and down sample stuff

#

when debugging

cloud rivet
#

ok got the up sample and the downsamples placed, time to uh filter or something

cloud rivet
#
a 1 shifted 4x4 box, so like this:

a)
x x x x x x x
x + x + x x x
x x o x x x x
x + x + x x x
x x x x x x x
x x x x x x x

b)
x x x x x x x
x x x + x + x
x x x x o x x
x x x + x + x
x x x x x x x
x x x x x x x

c)
x x x x x x x
x x x x x x x
x x x + x + x
x x x x o x x
x x x + x + x
x x x x x x x

d)
x x x x x x x
x x x x x x x
x + x + x x x
x x o x x x x
x + x + x x x
x x x x x x x

0 = 0.5
+ = 0.125

a = 0.5 + 0.125 + 0.125 + 0.125 + 0.125 = 1
b = 0.5 + 0.125 + 0.125 + 0.125 + 0.125 = 1
c = 0.5 + 0.125 + 0.125 + 0.125 + 0.125 = 1
d = 0.5 + 0.125 + 0.125 + 0.125 + 0.125 = 1

for example for a:

a = rgba_center * 0.5f + rgba_tl * 0.125 + rgba_tr * 0.125 + rgba_br * 0.125 + rgba_bl * 0.125
same for b, c, d

final downsampled pixel = (a + b + c + d) /4.f
#

let me start by just getting the center color

astral hinge
#

are you implementing cod:aw bloom?

cloud rivet
#

ya

astral hinge
#

it's very nice bloom

#

I've implemented this before if you need help

astral hinge
cloud rivet
#

thank you ๐Ÿธ

#

thanks fixed

cloud rivet
#

ok let me up sample from that, then I blur the down sample

cloud rivet
#

ok now add this to the pixels times an intensifier

#

then I can add the bilinear filtering blur stuff

#

I should add another mip

#

later

#

well

#

5 mips

cloud rivet
#

I'll work on the bilinear filtering tomorrow

#

it's really weird how my smoke seems to not get blocky, but when the smoke goes away in that same shot the blockiness returns

#

the bloom doesn't seem to contribute hardly anything around some of the smoke

#

I think it's because they're much darker than the rest of everything

#

and the pixel being sampled on the smoke ends up being nothing

#

yeah it's the shade I think

#

it's being sampled

#

gonna add another mip level after I get the bloom for sure though

#

looks interesting

#

I like my colors

shut hornet
#

cool look ya

hushed creek
#

Yup

cloud rivet
#

thx, maybe I have some bloom soon

#

The cod slides also have motion blur

#

Maybe I do a low res launch exclude the skimmer

#

And do motion blur that way

#

Instead of OptiX

#

Idk

#

The Optix motion blur seems good for short lived particles idk

#

I will try optix first

vivid barn
#

that's very powerful

#

post process motion blurs are cope

#

an example where post process motion blurs fall apart is e.g.

#

basically the short version is that your frames are samples of scene in time

#

so if you have some motion that's very fast you'll get aliasing in time

#

e.g. think wheel that spins at >= 30 revolutions per second and you're capturing it on camera is sampling at 1/60 second intervals

#

clearly the resulting thing will be p aliased

#

i suppose you can do something with motion vectors idk

#

so maybe you can undersample and then actually recover the original signal with help of MVs somehow, under some circumstances

#

anyway you need that original signal if you're gonna blur it basically

#

so you can hopefully kinda see that when you sample motion you don't really suffer from this problem (you suffer from noise instead)

#

instead of measuring everything at multiples of 1/60 seconds (or whatever your screen hz is) you can very comfortably measure at any point within some interval

#

but I suppose motion AS is definitely harder to get going

#

because you need to define how scene looks at two points in time

cloud rivet
#

so an idea I had

#

is write a hit shader specifically for the vehicle

#

that shoots another ray in the same direction as the original, and then write tmax out as a parameter from that, as well as for all other rays, into a 1channel depth buffer

#

and then I have the full scene without my skimmer in it in 1D

#

and that might be useful for things

#

and I could write my vehicle into a second buffer

#

idk just thinking through ideas

#

could lead to interesting things I could do I don't know

#

another ideas is write an instance id to a buffer

#

an integer buffer

#

for outlines

#

idk

#

maybe this is all terrible

vivid barn
#

it is

vivid barn
#

more generally what big renderersโ„ข (and I mean offline ones) do is they have gbuffers

#

I suppose you can think of gbuffer as of "stuff from the primary surface" but also not really

#

anyway

cloud rivet
#

I am going to learn when I use optix motion blur for the projectile

#

and get a feel for how it works

#

I could keep a second set ias around for motion blur and use that whenever I go fast, that just takes up memory

vivid barn
#

so yes you'd do basically this

#

draw an integer buffer

#

only the primary surface would write there

#

then you apply a kernel that finds edges in this buffer basically

#

or w/e

cloud rivet
#

yes that was the idea

vivid barn
#

my thinking has become very blender-brained lately tbh

cloud rivet
#

I do this for painting in marmoset

#

you can paint/assign your materials with an "id" in maya

#

and then in marmoset toolbag I can do fancy material things for anything with that id

#

set emissive, materials, etc

#

for example any gold trimming material I can set an id on in maya

#

and then then marmoset will do the thing

#

so I think it's fairly standard, but that's in 3D, this is a 2D buffer in this case

cloud rivet
#

I really am building a CUDA graphics engine, with no hope of it ever working on other hardware, what a stupid idea lol

#

Itโ€™s fun though

#

Gonna keep going

#

It will be portable though, as in I will make it work on linux and any supported OptiX gpus

brisk chasm
#

cuda runs on lunix too

cloud rivet
#

the optix supported by zluda is ancient and my project will not work on it

#

yeah my project will run on linux, I just have to support the non win32 dynamic memory vulkan extension

#

and there's a place where I use a win32 api to get the max display dimensions

vivid barn
#

make it linux-exclusive

#

forego cudaMallocManaged........

#

switch to the ordinary system malloc.......................

cloud rivet
#

that's a nice feature for sure

wraith urchin
#

Wait does this game only work on nvidia gpus?

tight torrent
#

bjorn is doing stuff with cuda so yeah

cloud rivet
#

I am not using a graphics api

#

the whole thing is written in C++

#

when gob completes vcc I can migrate it to vulkan

#

I don't want to write glsl or hlsl or slang or any of that

cloud rivet
#

I always find some way to disappoint Jake with my decisions froge_sad

cloud rivet
#

it's just a meme game for meme gpus

brisk chasm
#

speaking of, @echo crystal when do oyu continue your project, just because you got a job now doesnt mean you can take a break from el projekto

echo crystal
cloud rivet
#

my benchmark for success is how many people I can disappoint because they thought they could play my game

cloud rivet
#

Due to raspberry pi I now have a linux

#

It also cannot run my game

vivid barn
#

gpu wise

cloud rivet
#

I know

#

I did a search for documentation for broadcom, specs anything

cloud rivet
#

yeah I read through that too, when someone was bringing it up in #vulkan that's when I was like wow a keyboard pc and got it

#

it may go back into the box

#

I make good decisions

vivid barn
#

haha yes......

cloud rivet
#

maybe I try a SDL_GPU triangle on it

#

oh

#

or OpenCL

tight torrent
cloud rivet
#

can you connect an external GPU

tight torrent
#

the pi 5 has i think a pcie 3x2 link, and things exist to turn it into a full size pcie x16 link

cloud rivet
#

oh

tight torrent
#

and nvidia has arm64 linux drivers iirc

cloud rivet
#

aha

#

unified memory here we come

tight torrent
#

jeff geerling runs 2 gpus (pcie 3x1 link for each)

cloud rivet
#

man

#

you might have saved me from buying a spork

tight torrent
#

or it might be a pcie 3x4 link for a nvme thing they have, so it might be pcie 3x2 for each

vivid barn
#

lemme watch the vid

#

I bet the setup is non-functional

tight torrent
cloud rivet
#

well

tight torrent
#

he tests video encoding with jellyfin and running ai models and they work

vivid barn
cloud rivet
#

why

vivid barn
#

I'll have to check but the hw likely doesn't implement the features necessary to have cached|coherent mappings for one

cloud rivet
#

hrmmm

vivid barn
#

and like idk the thing in the video was using nouveau

#

you're going to need openrm (nvidia's sourcedropped driver on github)

#

are you sure that's going to run on this hw?

tight torrent
vivid barn
cloud rivet
#

I'm not here for the ai though, I'm here for pixels

#

no I'm not into ai

vivid barn
#

yes I was joking

cloud rivet
#

I color pixels

tight torrent
vivid barn
#

I'm very well aware the whole stack can run on some arm64 systems

#

it's just that normally you have hw features so that you can map system memory (i.e. normal ram or whatever) to the gpu in such a way that both the cpu gets to keep caching for those mappings, and the programmer doesn't have to play the invalidation and flush game

cloud rivet
#

hrm

vivid barn
#

on these socs there's no such hw features

cloud rivet
#

yeah the video is not really selling it

vivid barn
#

neither in rpi nor in the fancier sbcs like e.g. rock 5b I have sitting on my table

#

without this hw features I guess like

#

well tbc things will work, clearly you can see nouveau chugging along on rpi with nv in that vid

#

but I'm not sure cuda will

#

(although it could)

cloud rivet
#

external gpus hrm

vivid barn
#

and even if it will work it's a matter of time until you run into some workload (like any random game out there) that wants to read back from buffer and it gets hit by measly 100 M/s of uncached loads

cloud rivet
#

maybe not this thing, but maybe another thing will work

vivid barn
#

external gpu setups are generally sad

#

I'd avoid

#

the cross pcie bw is very bad

#

to the point it does show up in workloads that aren't even normally sensitive to it like most games

cloud rivet
#

I was looking at chungus dgpus and they're not cheap in any configuration, the spark is actually about the same price though without all the graphics capabilities, which I don't know I care

vivid barn
#

wym all the graphics capabilities?

#

spark has 128 G feeding the gpu at 256 G/s that's a graphics capability

#

although it's expensive

#

have you considered just not buying any hw

#

you have laptop with fairly capable bit of hw already

#

so idk why you'd shell out for something like spark

#

unless you drool (like me) over chungus amounts of memory feeding reasonably fast gpu at reasonable speeds

cloud rivet
#

I have a RTX 3070

vivid barn
#

yes

cloud rivet
#

my laptop is RTX 3060

vivid barn
#

yes

#

still capable

#

so why would you want a spark or whatever

cloud rivet
#

hrm

vivid barn
#

just don't spend money

#

it's easy, just don't do anything

cloud rivet
#

great

#

sold

shut hornet
vivid barn
#

yes

cloud rivet
#

the down sample is still linear, but the up sample is now doing the 3x3 tent filter

#

pretty cool lol

#

now for the thirteen tap down filter

#

that's still with the linear down sampler, but looks neat

shut hornet
#

yeah, I end up doing bloom and dof at half res, with the mipmap trick it's fast enough to use in-game (not just cutscenes)

cloud rivet
#

thank you, it looks pretty horrible still at most angles, that was just a nice one

cloud rivet
astral hinge
#

noice

cloud rivet
#

a little over done maybe, I kind of like the intensity at 0.1

#

they sun was too bright

#

I had to cap it

#

if the center of the sun was visible it just looked like a box, this is with 6 mips

#

so I put a weighted luma cap on it

#

it's not as bright anymore , but it doesn't looks like box either

#

idk

#

looks cool

#

I think I need temporal accumulation

cloud rivet
#

ok motion blur is next

#

tomorrow

#

gn

vivid barn
#

where motion blur

astral hinge
vivid barn
#

Oh it's tomorrow tomorrow

#

Timezones smh

bronze tendon
#

This has come along quite nicely.

cloud rivet
#

thanks, yeah usually when I start a new project I just have a triangle for like two months while I work on all the render scaffolding, and I didn't have to any of that with this project as it doesn't use vulkan

#

I just malloc and call some functions and stuff works and there's are no image barriers, no descriptors, command buffers, push constant, pipeline objects, no large nested create info structs that I have to write

#

imagine just being able to malloc without a vk create buffer with the correct flags and the memory and you want to suballocate out of a very large memory block after looking up the memory properties and making sure you had just the right memory

brisk chasm
#

very cool indeed

cloud rivet
#

with CUDA I just get to have fun and write cool stuff and I never go "oh no I need to do vk stuff now", but unfortunately, it doesn't work on everyone's computer

#

however, having ranted, it does educate me how I should write vulkan scaffolding, so I can get to this point with vulkan

#

I've had a bunch of a-ha moments tbh

cloud rivet
#

after I add the projectile motion blur and give it physics I will go and read through the rigid body chapters so I can start working on ramps and a nice track

#

then I will start adding loops and cool track pathways throughout the map

#

I think I will have to add in an ingame track editing tool :<

#

I'll just use imgui gizmos

#

I'll actually try and do it all in houdini tbh

#

yeah

#

well the challenge there is connecting the physics engine with whatever it produces

#

idk

solid grove
#

challenge: implement a camera that makes the loop look cool without making the user feel sick

cloud rivet
#

I don't feel sick, (I got used to it) and I'm the only the user so โœ…

#

I don't want to spend a long time on this project. I want to make it have cool track to race around, add some enemies and a little bit of UI and sound and a game play mechanism where you can have an objective and a game ending

#

then I'm going back to my voxel game, but this time it will 100% be CUDA and OptiX

#

I'm going to like limit this project to another three months

#

and just be done even if I am not

#

oh you meant for the loop loop

#

yeah

#

idk!

#

I need a different camera for the loop

#

can't do that from a mile behind

#

I'll use a rod

solid grove
#

Mario Kart DS had a loop in rainbow road but because the camera was attached to the kart you didnโ€™t even notice you were on it unless you stopped in the middle and fell

#

And in Mario kart 8 you anti-gravity attach to the track which means you barely notice the changes

cloud rivet
#

I'll have a rod between the camera and the vehicle, well to be clear, an invisible cube will be attached to the skimmer with an invisible rod and the camera will be bound to it

#

with a spring to its center and with a lookat in the vehicle's orientation

#

yeah I haven't resolved how antigrav will work

cloud rivet
#

I think if I get to the point where I'm just having fun with what I'm doing I'll get over the need to share what I'm doing every other minute

#

and just be self-satisfied with what I'm doing

cloud rivet
#

this is what led me to think IAS could be nested

cloud rivet
#

@vivid barn ^^

#

I knew I had read this before

#

but when you said it wasn't possible I looked at another reference in the documentation that covered OptixTravesableHandle and it did not include IASs

#

so I can nest instances

cloud rivet
#

ok

#

right now I have a single IAS -> with a bunch of instances (each with with their own transform I update each frame for moving objects) that have a traversable handles for geometry acceleration structures

#

for the projectile I will: IAS -> with an instance (with a identity matrix transform) that has a traversable handle to a motion transform with 2 key frames (which I will update very frame instead) -> with a child handle to the projectil's GAS

#

every frame I will look at the motion transform, take the transform matrix on the second key, and move it to the first, then I take the transform I get from my physics engine and put it on the second key

#

then for every frame, I do an optixLaunch, and in my ray gen shader where I currently call optixTrace just once per raygen, I will call it in a loop and give each optixTrace call a t value in the range from 0 to 1, accumulating colors simply by adding and then dividing the result by the number of traces

#

and then I get motion blur

#

and

#

I will also get AA from it

#

and depth of field if I wanted that

cloud rivet
#

I think I might need to denoise if I do this now

#

so I don't break my bloom?

#

no that would not be an issue

#

it's already a bit noisy with the blue noise

cloud rivet
#

I built an acceleration structure helper function and am finally compacting acceleration structures, I built a motion transform builder and cleaned up some memory allocation stuff. I figured out how I want to do all this I think I will have motion blur tomorrow.

hushed creek
#

Nice

cloud rivet
#

I donโ€™t have any game mechanics yet and I keep finding dumb new things to do

#

Like my spinning cubes, how much I can mess up the circle they form

#

The camera controls and skimmer speeds make it a challenge

#

Im about to add another. After motion blur I will add sphere collisions and I will drop some balls and have rocket league

cloud rivet
#

@brisk chasm do you dual boot into windows on your nvidia machine? I could try and make a zip file for you if you want to try. it needs a game controller

brisk chasm
#

not sure if its called dual boot, but i have windows and lunix on 2 separate physical disks which i can pick to boot from at bios boot menu

#

and i do have various xbox controllers : )

cloud rivet
#

I'll drop the executable and the working dir in there, I can add the src, but to build it you need a bunch of NVIDIA stuff installed

#

at the correct versions

brisk chasm
#

im ok if you just provide the binaries

#

cuda is like 20gb of shit

hushed creek
#

cuda more like cudont amirite

cloud rivet
#

cuda wuda didnt

shut hornet
cloud rivet
cloud rivet
#

leaving #vulkan has improved my mental well being

#

I haven't been in there for days now

#

still on the discord

#

I kind of wish they would notify when there's new vulkan sdk updates, maybe I need to add a role or something

#

no they dont announce them there

cloud rivet
#

this raspberry pi is good for making me appreciate a real computer

brisk chasm
#

perhaps you could write a program on the pi, which monitors lunarg website for sdk releases and sends you a ping on your iwatch ๐Ÿ™‚

#

or better, ping thomas every day asking whether new sdk was released today or not

cloud rivet
#

raspberry pi got bought by some company yeah? they're gonna close this thing down

#

they were a cool little shop that sold micro controllers for build kits to like turn LEDs on and off and maybe power a small servo

#

and now they're selling this thing as a little computer in a keyboard

#

with a display

#

and it's still the same underpowered thing that at best should have like 480p little display

#

as if it were a real computer

#

I mean it is kind of cool, maybe it's just my expectations that were incorrect

#

it feels like they market it as something it's not

spiral ice
#

I have a friend who use pi to self host DNS-level adguard. Can be pretty helpful to less tech savvy family members or iphone devices where no browsers seems to support ad blockers

cloud rivet
#

yeah that's a cool idea

#

there's definitely a use for it

#

I think this is something I could ssh into and run a little server on it

#

ok I have reset my expectations, and now I like it

#

but I still think this brand is toast

#

they should cally it a hobby desktop computer or something

#

Evie pointed out there was a news channel on the vulkan discord and I can just get notified for any messages in that channel, so that works!

#

no more missing out on vulkan updates

shut hornet
cloud rivet
bronze socket
#

you can get a real mini computer for less

#

I got a used intel nuc off ebay for like $40

#

and I use it for hobby server crap

shut hornet
bronze socket
#

and I think intel nuc is far from the only option anymore but idk the state of the minicomputer market, you can definitely get something neat you can just shove in a corner and run all your necessary stuff on

shut hornet
#

you can. minisforum has ones that are decent hardware for cheap

bronze socket
#

the best part is they're all x86 so binary compatibility is a breeze

cloud rivet
#

@vivid barn that's sampling blue noise as you suggested

tight torrent
cloud rivet
#

ohh that's right

#

it's blue noise

#

so interesting

cloud rivet
#

ok sphere physics and then I'm back to reading

bronze socket
#

wait arduino is shutting down wtf?

#

is that right?

cloud rivet
#

no

#

I was saying raspberry pi is mispresenting their brand and spoiling the fun and so I am speculating they're not going to be long for this world

bronze socket
#

oh yeah, absolutely, that's been going on for a while now

cloud rivet
#

I should see how expensive motion blur would be on the smoke

#

I think it would look pretty cool

cloud rivet
#

I think maybe my bloom has an off center issue

#

I think I know what it is

#

dims + blocks-1/blocks

#

I will fix

#

I need to sample from the center I am always sampling from the top left actually

cloud rivet
#

Yes thank you for the guidance

vivid barn
# cloud rivet motion blur

what you're doing for the projectile here is basically what I wanted to do for projectiles in my game-like thing so it's nice to see things working out

cloud rivet
#

I wouldn't have never have thought to do it. It also really has sort of given a more intuitive understanding of how noise can be valuable.

cloud rivet
#

ok I am trying to get a good shot of the offset issue, trying to capture the projectile is a bit hard

#

seems obvious here

#

the thirteen tap is a 6x6 box

#

so I just offset by a +3 distance in the x and y

#

I think

#

I already have a safe clamp sample utility function so should work

#

hrm

#

idk

cloud rivet
brisk chasm
#

Oblivion DLC is out already it looks like

#

these particles look really cool

cloud rivet
#

I think it's fixed

cloud rivet
#

fix feels hacky though, Jorge Jimenez may be insulted by how I perverted their perfect blur

  i32 offset_x = idx.x % 2 == 0 ? 1 : 0;
  i32 offset_y = idx.y % 2 == 0 ? 1 : 0;
  i32 sx = idx.x * 2 + offset_x;
  i32 sy = idx.y * 2 + offset_y;
echo crystal
#

call of duty bloom ?

cloud rivet
#

yeah

echo crystal
#

nice

echo crystal
#

i think i had to add (0.5, 0.5) when sampling

cloud rivet
#

oh I can't sample like that

#

it's all integers

#

I'm indexing directly into an array of colors

#

the whole thing is a linear sequence of 4 32 bit floats in memory

#

I think maybe what I did simulates it

echo crystal
brisk chasm
#

simple fix

#

make the uint32[] into a float[] xD

#

ill go back to fiddling with daxa

echo crystal
cloud rivet
#

The method that inspired this article was presented at ACM Siggraph in 2014 by Jorge Jimenez for Call of Duty: Advanced Warfare. The algorithm follows this recipe:

#

at least they give credit

shut hornet
cloud rivet
#

I might have saved some time had I read that post instead of worked just off the slides

#

I was trying to figure it all out just from the slides

echo crystal
cloud rivet
#

that code is missing a big piece though

#

it's missing the luma

#

oh it's not

#

RGBToLuminance

#

it's a bit different than mine

#

nice

#

yeah that would have saved me like hours

#

I need to clean my entire house today

#

so

#

I better go do that and then I can get to start adding sphere physics

brisk chasm
#

have fun ๐Ÿ™‚

cloud rivet
cloud rivet
#

going to try and add rocket league ball tomorrow

cloud rivet
vivid barn
#

disgusting

cloud rivet
#

I got a high bloom intensity set

#

I don't know what to set it at

#

everything glows

#

gonna add a big ball now

#

a few I think

#

we'll see how it goes

vivid barn
#

or do you just do plain bytes

#

I forget every tiem

cloud rivet
#

a linear pixel buffer, but I write it to a VK_FORMAT_R32G32B32A32_SFLOAT

vivid barn
#

I still think the deprecation of texture and surface objects was bs and aimed exclusively at people who were trying to use them as optimization of normal load/stores

cloud rivet
#

yes it just shares the memory with my float4 array

#

yes

vivid barn
#

anyway

cloud rivet
#

they're not going anywhere they can't remove them

vivid barn
#

well your sphere should be much brighter than the rest of the sphere

#

generally I think the way you wanna use bloom for the projectiles is to improve visibility

#

it's a bit hard to judge when the scene is rainbow vomit as opposed to something more chill

cloud rivet
#

yeah my smoke is very bright

vivid barn
#

but anyway imo the halo from the bloom shouldn't be "huge"

#

around projectiles

#

just something that improves visibility when a projectile is zipping very fast across the screen

cloud rivet
#

I kind of wanted them to glow so that it when it is dark they are lights

#

like lasers

vivid barn
#

well yes they should glow

cloud rivet
#

only balls of energy

vivid barn
#

you can also assigns players a hue and paint their projectiles according to the hue

#

so that it's possible to distinguish who fired what

cloud rivet
#

oh that's a cool idea

vivid barn
#

in team deathmatch the hue could be just the team color and in ffa each player gets their own hue or something

cloud rivet
#

a multiplayer game that requires nvidia gpus KEKW at some point maybe I migrate it back to vulkan

#

which would require rewriting the entire thing

#

projectile color is a cool idea

#

like NPCs could have different colors

#

you know if people actually wanted to play something I made enough to pay for it, I would create a kick starter to fund a vk rewrite

#

sure

hushed creek
#

if people were willing to pay for it

cloud rivet
#

I'd write shader code for money

hushed creek
#

you would be able to rewrite it in godot in 3 hours

cloud rivet
#

not for free though

#

does godot have RT

hushed creek
#

I'm sure someone somewhere did something to make it work but if you specify RT it's possible people won't want to pay for it

#

outside of this discord, RT means blurry images and shitty framerates

cloud rivet
#

nice

#

nothing to worry about then

#

I'm not building a path tracer

#

the bevy RT work that @maiden cobalt has done is demonstrating that RT does not actually mean blurry images and shitty framerates though

vivid barn
#

disappear into oblivion

cloud rivet
#

I think FIrefly was saying what others think, not what they think

#

I'm going to go through bevy and look at ReSTIR GI and all those things so I can have nice GI too

#

after physics

#

I add these balls and I'm done with particle physics for real, I can start on rigid body finally

brisk chasm
#

jms is on the server too if you want to speak to them about it ( @ Jasmine with the anime pfp )

maiden cobalt
maiden cobalt
cloud rivet
brisk chasm
maiden cobalt
#

Oh nice, ty lol

cloud rivet
#

looks like that was the mascot from 2019-2022, then in 23 there wasn't a rustconf and now the branding is the rust crab

#

was curious

cloud rivet
#

I have to fix the camera so it can look around

#

also that last ball went to the moon or something

cloud rivet
#

if I can make this camera good it would do a lot I think

#

also if that big ball lands on you you get sent into the earth

cloud rivet
#

you can go nuts if you want, just don't break

#

idk, it's kinda fun I guess

#

I did a lot in the last week. I kind of have a game already. I need a UI and sound. I want to work on rigid body next though. I have new perf issues too, I think when the balls are at rest they are not actually resting. so I should add tracy.

#

this project has gotten me excited about working on actual game again. I have bunch of game ideas suddenly

shut hornet
#

looks like actual gameplay

cloud rivet
#

thanks! feels like it too, and to me at least it's fun. the controls are a bit hard to learn

#

the camera and the vehicle controls are separate, and if the vehicle moves it will move the camera in a way you can only control by changing the vehicle's velocity

#

now you can break the vehicle zeroing out both the camera and vehicles velocity which feels very unnatural from a physics perspective, but somehow satisfying in a gameplay and visual way

#

being able to slow down time might be nice for this game

#

bullet time

#

maybe I do that

#

that'll feel even better than my hard break right now

#

would need some kind of visual effect I don't have the capabilities for, just something to think about

cloud rivet
#

I have kind of abandoned any kind of a plan and am just changing things that I think are fun to add at this point.

shut hornet
cloud rivet
#

yeah

#

this is the way

#

you've been making steady progress though

#

since before even the GP video

shut hornet
#

like you want things to be perfect, but they are never perfect

cloud rivet
#

I'm going to close this thread. I may open another one