#Rosy
24912 messages ยท Page 25 of 25 (latest)
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 ๐
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
gigabarrier between everything in a stream
the only way to fly
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
the magnifier in my app is made with ImGui::Image and adjusting the texcoords to be only a small part of the screen
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
making an imgui backend is a good idea imo
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
I kind of already have gameplay
I practice going through this arch
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
that camera is so cinematic
I love it so much, I am not going to remove it
I will have a way to cycle different cameras
where motion blur
lunix build when ๐
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
run it in wine
:i knew youd say that.mng:
The only windows specific code I have I think is the external vulkan memory. Which is easy to fix
And some paths
Going to work on it
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
it's time to implement vertex animations then
or bony deformations if you plan to anime more stuff
animate
I can iterate on it, just having something happen that's not a lot of work is a good first step
then vertex animations
for the item barrels in my game I hide the barrel model and use a particle system for the fragments
destructible obstacles, i wouldnt mind that
This looks amazing
thank you 
Do you intend to keep the blocky aesthetic? I think you should
(I love the 'not blocky' smoke particle system thing)
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
it was a lot of smoke, but the vehicle got fast
I think the particles should get some of the vehicle's speed
It kind of reminds me of the smoke & dust in Traction Point (unvestigate's game)
yes I was thinking of Traction Point when I worked on it
I hope uninvestigate doesn't mind the inspiration ๐
Did you play the traction point demo?
no I haven't
I deleted steam
oh this PC still has steam
oh right I want to test redout
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
You're going to do physics on the GPU?
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
finally, a gpu-only game
It'll be exciting to see what you come up with
I mean it is a CUDA application
Every time you miss passing through the arch the game could say "nope!"
it's gonna cause damage, and the big ol nope is going to be the vehicle falls apart into pieces
And then big red letters could appear on screen:
YOU TRIED
if you get run over by another car, then it says
YOU TIRED
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
use an llm to generate random context-dependent inspirational quotes instead
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
pod racing
DGX Spark Hardware Overview
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
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
wym?
just like nvidia made hardware with their OS and a graphics setup
instead of an AI setup
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
it's not great for graphics I think
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
what do you use the strix halo box for
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
the spark has LPDDR instead of GDDR memory is what I saw, and just a single hdmi port
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
oh I see
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
hrmm maybe I take another look at it
or if you're benchmarking memcpy
I'm not doing any ai stuff, what would that even be
idk dgx spark is kinda a tough offer
it's pretty pricey
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)
guh
lol
anyway no dgx spark has 20 arm cores
let me look at a strix
that's amd
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
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
exactly what i had in mind โค๏ธ
need to fix the hover so that it hovers on the tops of things too, not just the ground
perhaps you could add a jump of sorts so that you could hop over smaller obschtekkles
yes
neat little test world too
this is all still particle physics, rigid body is next
thank you
this was really hard, I had a lot of difficult bugs
best kind of bugs ๐
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
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
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
just add it to everything tbh ๐ธ
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?
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
guh?
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
you can absolutely nest instances 
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
I like how I can get all the cubes to collide with each other, it's a bit jumpy though
needs rigid bodies for the orientation torque change
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
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
hehe
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
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
you could try an LDS like a hammersley sequence if you don't want to sample a texture on the CPU
Halton sequence is also nice, blue noise just looks uninteresting
at least for stuff like particles or foliage, looking totally random is undesirable
thanks I'll take a look
looks like Halton sequence is a type of LDS
I'll try that, seems really simple
they are related, not sure if the same thing tbh
Halton sequence is in the LDS article on wikipedia fwiw
idk
I don't know anything
anyway, that's what I'm going to try rn
this is a good example of the difference https://psychopath.io/post/2014_06_28_low_discrepancy_sequences
killer domain name, btw
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
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
ooh
halton sequence works really well
thanks ya'll!
glad to get rid of that ugly line
nice
so much better
I'm going to move AGX tone mapping to a kernel out from the ray gen
and leave the buffer HDR until then
Original HDR โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โผ โผ
Downsample โ Down โ Down โ Down โ Down [keep sharp]
โ โ
Blur+Upsample โ
โ โ
Blur+Upsample โ
โ โ
... โ
โ โ
โผ โ
Bloom buffer โ
โ โ
โโโโบ ADD โโโโโโ
โ
โผ
Final
from the slides on https://www.iryoku.com/next-generation-post-processing-in-call-of-duty-advanced-warfare/
Homepage of Jorge Jimenez A.K.A. IRYOKU. Studio Head and President of Technology of Striking Distance Studios Spain. The Callisto Protocol. CallofDuty. Game Developer. Gamer at heart.
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:
- have physics where it bounces
- glow
- have motion blur
@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/
thing I need to remember:
threadIdx= where am I within my blockblockIdx= which block am I inblockDim= how big is each blockgridDim= 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
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
I also have a repo with a working example: https://github.com/Froyok/Bloom
thank you!
haven't done a loc check in in a while
Exactly one month since first trongle #1323084490997895198 message
that triangle was over gamma-corrected ๐
the background should have been blue
this is what it looks like after I fixed srgb
nah that doesn't look right
it should be white in the middle
the triangle itself needed to be gamma corrected in my application code
but I don't do that anymore, I use a tone mapper
hmmm
this was misinfo, the render was over gamma-corrected
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 
PS could mean anything but a lot of people on this server know what ASO and SRS means
RCR
well the name of the project is pixel storm
PXS ๐
PXS it is
before I made my own physics I never enjoyed bumping into walls so much
for research I have been bumping into walls irl
reading in books while walking inside the house?
or at least that's how I can now explain why I do that, "sorry physics engine research meant to do that"
I can't read and walk, I would die
yeah hence the bumping into walls irl
hey, I'm doing science here
hehe
back in the day, I wore AR glasses on the street and went to work in NYC (walked to the train station, took the train, etc) while watching an anime
totally not safe, just a 1-time stunt
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
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
quick google search says 4-bit 1b quantized models can get 11-12 tok/s
Rosy for arm when?
well
it uses a broadcom GPU
and my engine has a CUDA dependency ๐
but the NVIDIA spark is ARM
so probably in the cards
ow, I wanted to test it but i only have a vega 56
I'm sorry :<
I don't think I could build this thing via a graphics API
I mean someone can, but probably not me
Maybe I can try with zluda
oh interesting
I don't think it would work however https://github.com/vosen/ZLUDA/issues/151
I mean, blender stopped to support all the vega architecture in 4.0 because they didn't found a way to fix it
So if I need to do some silly renders in blender I just need to go to 3.6
AMD still sell Vega chips (at least on IGPU)
also, we are up to Blender 5.0
I never update unless it's very necessary
I mean I'm on debian stable
if puter works no need to update
stability is very nice
I only use the gpu driver backport
wine if I need some winslop exe to run and steam for uma musume and sven coop
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);
true, it's nothing but problems
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
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
ok got the up sample and the downsamples placed, time to uh filter or something
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
are you implementing cod:aw bloom?
ya
btw I think you need parens on the last line here
ok that's without any filtering or blurring
ok let me up sample from that, then I blur the down sample
ok up sampling without any blurring or adding up to mip 1o working
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
probably need yet another mip level
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
cool look ya
Yup
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
optix motion AS lets you actually sample over time
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
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
it is
this one is good
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
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
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
yes that was the idea
my thinking has become very blender-brained lately tbh
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
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
i mean zluda exists
so
cuda runs on lunix too
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
make it linux-exclusive
forego cudaMallocManaged........
switch to the ordinary system malloc.......................
that's a nice feature for sure
Wait does this game only work on nvidia gpus?
bjorn is doing stuff with cuda so yeah
yes it only works on NVIDIA gpus
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
I always find some way to disappoint Jake with my decisions 
it's just a meme game for meme gpus
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
i will come come back soon 
!remindme 48h
my benchmark for success is how many people I can disappoint because they thought they could play my game
worst choice of an sbc tbqh
gpu wise
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
there's a lot of false
haha yes......
yes it can you just need a gpu :)
can you connect an external GPU
the pi 5 has i think a pcie 3x2 link, and things exist to turn it into a full size pcie x16 link
oh
and nvidia has arm64 linux drivers iirc
Shop Micro Center Holiday Deals: https://micro.center/e787eb
Check out Micro Center's Other Top Deals: https://micro.center/315b05
Shop Micro Center Bundles: https://micro.center/f7b037
Visit Micro Center News: https://micro.center/9b77f2
Can a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?
Of cours...
jeff geerling runs 2 gpus (pcie 3x1 link for each)
or it might be a pcie 3x4 link for a nvme thing they have, so it might be pcie 3x2 for each
that's garbage
lemme watch the vid
I bet the setup is non-functional
it works for everything not gaming
well
he tests video encoding with jellyfin and running ai models and they work
I mean it's not going to work for cuda either
why
I'll have to check but the hw likely doesn't implement the features necessary to have cached|coherent mappings for one
hrmmm
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?
for llms and such llama.cpp has a vulkan backend if cuda doesnt work
I forgor if bjorn is interested in running ai slop or his game
yes I was joking
I color pixels
nvidia provides arm64 userspace (closed source) drivers for their cards
I think you're missing the point
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
hrm
on these socs there's no such hw features
yeah the video is not really selling it
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)
external gpus hrm
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
maybe not this thing, but maybe another thing will work
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
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
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
I have a RTX 3070
yes
my laptop is RTX 3060
hrm
everything in life is optional 
yes
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
sweet!! looks great
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)
thank you, it looks pretty horrible still at most angles, that was just a nice one
noice
a little over done maybe, I kind of like the intensity at 0.1
yeah the whole render has a nice soft feel now
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
where motion blur
This has come along quite nicely.
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
very cool indeed
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
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
challenge: implement a camera that makes the loop look cool without making the user feel sick
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
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
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
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
@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
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
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
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.
gn
Nice
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
@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
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 : )
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
cuda wuda didnt
that's the neat part, cudon't
I am gonna get the motion blur and sphere physics in this weekend so thereโs at least a rocket league game mechanic in so thereโs something to do and then share a zip
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
this raspberry pi is good for making me appreciate a real computer
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
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
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
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
raspberry pi is a real computer
can I try and run your app on it? it has Opengl ES 3 I think
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
probably. i did some webgl stuff on a raspberry pi 3 long time ago
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
you can. minisforum has ones that are decent hardware for cheap
the best part is they're all x86 so binary compatibility is a breeze
I dont think so, do you mean arduino?
ok sphere physics and then I'm back to reading
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
oh yeah, absolutely, that's been going on for a while now
I should see how expensive motion blur would be on the smoke
I think it would look pretty cool
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
yeah looks good
Yes thank you for the guidance
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
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.
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
it's always off by 1 hrmm
thank you! going to work sphere physics now I want something fun to do, probably you pick it up and get bored in like two seconds
I think it's fixed
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;
call of duty bloom ?
yeah
nice
i think i had this too
i think i had to add (0.5, 0.5) when sampling
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
there is a secret opengl article about this bloom idk why they dont swap it with the current one https://learnopengl.com/Guest-Articles/2022/Phys.-Based-Bloom
Learn OpenGL . com provides good and clear modern 3.3+ OpenGL tutorials with clear examples. A great resource to learn modern OpenGL aimed at beginners.
lol that article has the images from the CoD slides
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
i found the guest articles to be of variable quality, but that one does work
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
good skill to practice
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
have fun ๐
took me a bit of time to figure out an angle at which I could hit these cubes
going to try and add rocket league ball tomorrow
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
what is the format of your cuda surface
or do you just do plain bytes
I forget every tiem
a linear pixel buffer, but I write it to a VK_FORMAT_R32G32B32A32_SFLOAT
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
anyway
they're not going anywhere they can't remove them
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
yeah my smoke is very bright
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
I kind of wanted them to glow so that it when it is dark they are lights
like lasers
well yes they should glow
only balls of energy
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
oh that's a cool idea
in team deathmatch the hue could be just the team color and in ffa each player gets their own hue or something
a multiplayer game that requires nvidia gpus
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
if people were willing to pay for it
I'd write shader code for money
you would be able to rewrite it in godot in 3 hours
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
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
go away
disappear into oblivion
Bevy, Rust, Graphics, etc
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
jms is on the server too if you want to speak to them about it ( @ Jasmine with the anime pfp )
Happy to chat. Almost all of it is still a WIP - there's various aspects I have either in PRs, or experiments I'm working on.
My pfp is actually the Rust Zulip server's former icon. I have no idea where they got it from though ๐
thank you! I'm going to keep following and try to learn
ah i never actually looked closer hehe, too much detail in it in that smol pic
it's from rustconf 2022 https://2022.rustconf.com/
Oh nice, ty lol
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
way better than that crab
I have to fix the camera so it can look around
also that last ball went to the moon or something
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
added some more control over camera and a speed boost
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
looks like actual gameplay
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
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.
yep, that's what i've been doing. haven't finished anything, but having a blast
yeah
this is the way
you've been making steady progress though
since before even the GP video
thanks, yeah. it's a lot of fun, but I also realized the stuff i was messing around with 20 years ago was probably good enough to release
like you want things to be perfect, but they are never perfect
I'm going to close this thread. I may open another one
