#Rosy

1 messages · Page 19 of 1

astral hinge
#

btw you can get free audio with printf("\a");

tight torrent
#

You kinda look like Richard stallman

true moon
#

Not really lol

#

unless you just mean having a grey beard

#

Stallman wishes he had that jawline lol

cloud rivet
#

lol, I might trade it for his lisp skills

cloud rivet
#

well I read the intro to the book and I'm now a game engine physics expert, nice

#

I'm surprised the only required math you have to know for the book is basic trig

#

I'm going to keep going with my fake physics camera controls atm, but I think I should read that book front to cover and build a custom physics engine

#

while I read it

#

in my project idk

#

I'm going to keep going with the game

#

it starts with a particle physics thing, and i want particles at some point

pseudo dock
#

When I lurk in the Physics Programming discord server the people there throw around all sorts of terms that I don't understand and so it seems like physics in modern games are much more complicated. But, yeah, the math in that book which I guess is more representative of physics in games 20 years ago is pretty accessible.

cloud rivet
#

idk I don't think classical physics have changed in the last 20 years though

#

so should be fine

pseudo dock
#

🙂

#

The "particles" it starts with just means that there is a single position and no rotations. So that's enough for my ball and bricks game, for example. But I guess you need rotation for your skimmers.

cloud rivet
#

it's probably like strength training, the human body hasn't changed much in the last 10,000 years, so I'm not sure there's like modern techniques that will do anything better than just picking up a barbell like they did 60 years ago

#

hrm

astral hinge
#

they have invented better steroids in the last 60 years

cloud rivet
#

my game needs rotations, I already have rotations, but it's all fake fake

#

steroids don't do much, it's such a meme

#

your average joe taking steroids and going to the gym will never get close to what elite body builders look like before they took steroids

astral hinge
#

I don't endorse using steroids anyway

#

I was just memeing

cloud rivet
#

or explode or break into pieces or something

#

my camera actually doesn't need any physics anymore since I'm working on just putting it on a rail on the track

pseudo dock
#

I'm not sure that I completely agree with your premise. In the realm of graphics where I do know stuff the techniques have changed quite a bit over the last 20 years, and even though some of that change is just due to hardware getting faster so we that can afford to do stuff that we already knew how to do there is a lot of new techniques that have been discovered that make things better even though it doesn't fundamentally change the classic rendering equation from 1986.
I kind of imagine that physics is the same: It's not the fundamentals or the fundamental understanding that I predict has changed, but I bet there are lots of new techniques that have been figured out.

But, heh, it's hard enough for me to keep up with graphics so I'm just speculating.

cloud rivet
#

and I'll probably create the track such I get rid of those hard angles where the player's skimmer briefly disappears behind

#

that's fair

#

I kind of feel the same way about graphics techniques though in a lot of ways

#

ok with the exception of PBR I guess

pseudo dock
# cloud rivet maybe you want rotations if you want your bricks to ever fall

Yeah... I really wanted to try and do all the physics myself just so that I could get actual experience doing it once, and that was really fun (and really rewarding). But if I ever decided to do something more complicated I think I would just use Jolt. The brick game was just something I decided to do that was feasible as a simple thing but it's not really my dream game or anything, so I don't think I'll expand the physics much. (Well, with one exception: There are lots of animations I have with just constant velocity that I wish had acceleration so I will maybe revisit that one day, but for the actual simulation with collision detection and response I think what I have is probably good enough for me heh.)

cloud rivet
#

if I made a game that looks as nice games looked and felt like a game from 20 years ago, you know like Oblivion, Battlefield 3, etc I'd be stoked. although I realize that those had massive budgets and people working on them

pseudo dock
#

It's hard to believe, but it's actually approaching 20 years since I got my first job in the games industry (and doing graphics)! 👴
It's funny/sad reading people in this server talk about games from that time like they're ancient and I think "wait.... are they?" lol

cloud rivet
#

yeah

#

a coworker asked me not too long ago while talking about Nirvana if I ever heard of Soundgarden

pseudo dock
#

haha

cloud rivet
#

I was floored, like what, of course I have, they were all over the radio and MTV in...oh right, early 1990s

#

so you work in the industry?

#

you shipped some titles?

pseudo dock
#

I actually do again, as of 3 weeks ago! But I was out for about 10 years, although kind of adjacent.

cloud rivet
#

nice

#

I wonder what people who work on this for a living think about this server sometimes, although I know a number of people on here do work in it

pseudo dock
#

Oh, yeah. Umm, let's see:
Bolt, Toy Story 3, Cars 2, Disney Infinity 1, 2, and 3
(I worked for Disney at Avalanche Software, but after Disney shut us down I decided to try something else rather than stay when it was resurrected by Warner Bros)

cloud rivet
#

wow cool

#

those are movies or games?

pseudo dock
#

Games, based on the movies (except for Disney Infinity)

cloud rivet
#

was Toy Story 3 a long time ago?

#

15 years ago lol

pseudo dock
cloud rivet
#

damn, amazing

#

I have never given a talk about anything

pseudo dock
#

haha, never?

#

Do you not want to, or just never had the opportunity?

cloud rivet
#

what could I tell anyone they don't already know

#

I mentor jr engineers

#

I know enough to do that I guess

astral hinge
#

the curse is that things you already know seem obvious

cloud rivet
#

hrm my camera idea of following a rail on the track falls apart when the skimmer turns around and goes the wrong way now that I think about it

#

that's a problem with the physics too, there's collision problem when the vehicle goes reverse up an incline it goes through the track, because the math currently assumes a one way direction

#

it's dumb

#

I'll make it work in one direction and then fix it, it doesn't work at all right now

pseudo dock
#

Is your intent to allow the skimmer to go the wrong way and in reverse?

cloud rivet
#

I don't have any code preventing it from happening

#

hrm

pseudo dock
#

I guess I was wondering whether you would like to prevent it from happening but just don't have code yet to do that, or whether you ultimately would like to allow it

cloud rivet
#

you can go in reverse yes

#

well I think being able to go in reverse is ok in case you get stuck and need to do a turn about or something, and in that case I need to be able to handle it generally I think, even if I put some kind of block in place for traveling in the reverse direction

pseudo dock
#

Hmm, yeah, that makes sense

cloud rivet
#

I'm not going to worry about it right now though, since it is a bit of an edge case

#

but it's just highlighting how fake my physics are

#

well they are

pseudo dock
#

Doesn't matter if it works for the game and is fun 🙂

cloud rivet
#

true!

true moon
cloud rivet
#

it's pretty good

#

ok my first attempt at the on the rails camera will be just apply the player's forward velocity also to the camera, but the camera is just oriented by using the forward, up, and side vectors of the current track it's over, and it's just hovering over the current track by some scalar value up the track point's normal

solid grove
#

when you add lap checkpoints you'll know if the skimmer is going the wrong way

cloud rivet
#

yeah

solid grove
#

because the next checkpoint it hits will be smaller

cloud rivet
#

the track points all have curveu values which range from 0 to 1

#

they're generated by houdini

#

When the Curve U checkbox is on, create an attribute on the generated point(s) containing the fractional position (between 0 and 1) along the curve where the point was found. For example, if the point was extracted from one-third of the way along the curve, the node would set this attribute to 0.33 on the point. The default attribute name is curveu.

#

The main purpose of this node is to extract a ballistic projectile’s position at a given time. However, it can also be used to extract points from many curves in custom patterns for abstract effects.

#

houdini is so cool

#

I just think this isn't going to work, but I can't be paralyzed by not knowing what to do, so I just need to do something and figure out how to fix it if it is broken

#

this is like 4th or 5th attempt at a third party camera 😅

cloud rivet
#

the most important thing I need right now is a good look at method

#

I'm going to work on that this weekend

#

just a reliable here's the camera, here's the thing look at it

cloud rivet
#

I think I just need to do that in the camera's object space

dry apex
#

there's zgltf which i really recommend if you ever feel like dropping cgltf

dry apex
#

no i kinda abandoned mine because this one is a lot more feature complete

cloud rivet
#

oh ok

#

I'm currently fully NIH doing everything from scratch, but otherwise I might

dry apex
#

NIH?

cloud rivet
#

not invented here

dry apex
#

oh

cloud rivet
#

basically not using any dependencies for anything, outside of the OS and vulkan headers

#

and the compiler

#

which ships with the c stdlib

dry apex
#

real

#

i'd do the same honestly

cloud rivet
#

it's good to hear from you, are you working on anything?

dry apex
#

unfortunately im employed now lol

cloud rivet
#

rip

#

congrats though

dry apex
#

been working on a music player before though

#

ty ty

#

vulkan + clay + miniaudio

cloud rivet
#

ohh nice

#

I don't know what clay is but I know the other two

#

oh I know

#

that's the zig ui library?

dry apex
#

c ui library

cloud rivet
#

oh sweet

#

how's the zig c interop?

#

that changed recently?

dry apex
#

honestly i haven't tried using builtin translate-c yet

cloud rivet
#

are you writing C?

dry apex
#

no but last time i compiled this project i was on 0.15

solid grove
cloud rivet
#

what would be in the hierarchy though

#

there's the vehicle and...that's it

solid grove
#

my camera is made of 3 transforms

#

i can animate and position the pieces independently and the engine takes care of all the space translations

cloud rivet
#

yeah that makes sense

#

I'm having a fundamental math ignorance issue with this, that I just need to resolve once and for all, is part of the plan, like given two points find a way to orient one thing so it is pointing in the direction of the other

solid grove
#

my karts are also made of nested transforms as well. The kart itself is made of two (the rigid body and the car model), then the player doll is on top of that, and objects are attached to the player’s hands

cloud rivet
#

that makes sense

#

I just shouldn't be struggling with this problem, I am going to like do it with pen and paper if I have to

solid grove
#

when you drive into the TNT it makes itself a subject of the player doll’s head

cloud rivet
#

if I had things in the world I could parent that would make sense for me, it definitely makes sense for you

solid grove
cloud rivet
#

I know how to write a look at

#

it's just

#

something is not right

#

with my math, a bug or something, my coordinate space

#

I have looked at a couple of look at approaches, so I'm just going to try and build it from first principles

cloud rivet
#
C:\Users\Bjorn>clang --version
clang version 21.1.5
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin

updated clang, everything builds fine

#

hrm time to build my look at function

#

it'll accept my project's location type, a position of the thing to look at and return a quad and I should be able to have any object that has that location type orient itself to look at that position. I will set up a little debug UI for it first

solid grove
cloud rivet
#

no actually

#

I have written a couple of look ats and they all fail in the same way

#

so this is like attempt # 5 or something

#

but going to do it intentionally and with tooling

#

there must be something fucked about my coordinate space that I hadn't encountered yet since I haven't written any gltf scene loading code, just these basic meshes

#

although everything seems correct and I haven't written any weird coordinate/perspective code, my track looks correct, my camera moves around correctly

#

it's super weird

#

anyway I'm getting to the bottom of it

#

probably a math code bug

cloud rivet
#

I've somehow managed to crash renderdoc

wraith urchin
#

Classic

cloud rivet
#

just crashes on trying to load a capture

#

hrmmm

#

let me try nsight I guess

#

nsight is fine

#

must RT related

wraith urchin
#

I find Nsight alot more usable IMO

cloud rivet
#

than renderdoc? wow

wraith urchin
#

I dunno it just seems easier to find the event I'm looking for in Nsight

#

I only use renderdoc if I'm on AMD or Intel

cloud rivet
#

I find there anything like the mesh viewer in renderdoc in nsight?

wraith urchin
#

Nsight 100% has a mesh viewer, I use it all the time

tight torrent
#

PIX is the one i like the most for RT debugging, but thats dx12 only

wraith urchin
#

I will say renderdoc does let you look at the verts post-transform, which nsight does not

cloud rivet
#

yes that's what I want to look at right now

#

haha, I was looking for my cube I wanted to put at the origin and couldn't find it

#

it was hiding

#

apprently I have a bug where I applied my skimmer transform to all meshes

wraith urchin
#

Wait this game is using RT?

cloud rivet
#

just for shadows

wraith urchin
#

Ah

cloud rivet
#

I bet this is actually UB

#

and this is why renderdoc is crashing

#

btw ray tracing shadows took so much less effort and heartache than a CSM

#

and it looks better too

#

100% worth it

tight torrent
cloud rivet
#

first thing that vulkan has ever done for me that has made it almost worth using

solid grove
#

they become a little less simple when you want to support arbitrary materials. i'm still working through how I want to generate those

cloud rivet
#

yeah I was looking that up

#

basically bindless is the saving grace yes?

solid grove
#

yeah it seems like a requirement

#

the API gives you the user-defined ID, and then you have to use that to look up all the object data

cloud rivet
#

why do your shadows need materials?

solid grove
#

cutout transparency

#

or colored shadows

cloud rivet
#

I am going to actually add reflection and emmissive

#

yeah

#

I will need materials eventually

solid grove
#

cutout transparency was free with CSM

cloud rivet
#

I don't know of a need for cutout for me

solid grove
#

colored shadows wouldn't've been too difficult with CSM, just kind of inefficeint

cloud rivet
#

what's the thing you have that's transparent?

solid grove
#

glass

#

iron bars, the window in an oak door

cloud rivet
#

oh right

#

@solid grove renderdoc is working ok for you now?

solid grove
#

it works but it doesn't give me info about my ray tracing stuff so it's not that useful to me

cloud rivet
#

I'm doing something to crash it and I'm sure I have a bug somewhere since I a second mesh for the first time in this game

#

nfi what it is

solid grove
#

gpu-driven validation?

cloud rivet
#

what's that?

#

I don't have any VVLs

solid grove
#

if you're using vulkan you have to use validation

cloud rivet
#

yeah I use that

#

VVLs

#

I am not getting any validation errors

#

hrm

#

let me turn on verbose errors

#

nope, no validation errors

#

outside of the ones slang generates

solid grove
#

they changed the UI but there is a setting in vulkan configurator that lets you eanble gpu-driven validation, which adds extra code to your shaders to detect things like out-of-bounds memory access or use of unbound descriptors

cloud rivet
#

but those are slang bugs

solid grove
#

you can also try using Nvidia Aftermath if you have an nvidia gpu, it will tell you what shader caused the crash and what kind of crash it was

cloud rivet
#

nvidia doesn't crash, just renderdoc

#

I'll try aftermath

#

nvidia nsight graphics I mean

solid grove
#

eg this one tells me I have a nullptr dereference

cloud rivet
#

I'll try aftermath though

#

oh ok I'll try gpu validation I haven't heard of that before

#

nada

#

just the slang VVLs

#

which don't break anything and have been there since forever

solid grove
#

other option would be to compile a debug build of renderdoc and see what's causing it to crash

cloud rivet
#

I'm sure it's me and not renderdoc

#

I should go through my code

solid grove
#

but you'd get whatever exception or assertion is triggering in renderdoc

cloud rivet
#

I will try aftermath

solid grove
#

which could give you a clue about what you're doing

cloud rivet
#

true

cloud rivet
#

oh I just updated nsight to the 2025 version and it is much better

#

aha

#

it is RT

#

I just started commenting out code until it stopped crashing

#

going to just disable RT for renderdoc since it can't debug it anyways

cloud rivet
#

nice ezpz

#

now I have renderdoc support

#

and

#

I just have actual conditional RT now

#

hrm but I still use the rayquery in the shader

#

idk

#

whatever

#

renderdoc not wanting to be a RT debugger means it kinda doesn't want to be a graphics debugger

#

I'd have to have a non RT shader just to support renderdoc to make this work end to end

#

I don't get any VVLs for my RT stuff, and nsight works

tight torrent
#

It sorta does, it'll play back rt calls

#

Just not let you inspect them the same way as raster? Idk I've never used renderdoc with rt

cloud rivet
#

it just crashes renderdoc for me

#

all I did was add a second blas and instance

#

and now it crashes

#

works fine without renderdoc and in nsight

#

cool, multiple meshes now

#

oh I know

#

also figured out how to record just the game instead of my whole screen

#

man that was a lot of work just to add a cube

#

I made it easier to add any amount of meshes though

pseudo dock
cloud rivet
#

my characters are always coming out looking cute for some reason frogshrug I just made a box lol

#

I am trying really hard to stay focused on making progress on my goals and am resiting the urge to just write a full physics engine by following the book. I need to wait until I have some amount of something that looks like an actual game before I get side tracked into a rabbit hole that big

#

the big rabbit holes are the full physics engine and textures, and they're all months long projects

bronze socket
#

physics engines are high aneurysm risk

#

even dealing with out of the box ones, tbh

cloud rivet
#

the other big one is gltf

bronze socket
#

everything is so simple and straightforward and then it explodes

#

gltfs don't explode

cloud rivet
#

it's just a lot of work to NIH these

#

if I were to estimate, I could divide a year into quraters, the gltf and physics would take two (one each), and textures would take 2

#

I think textures would be more work because it's 3 formats I want and then the transcoding to basis

hushed creek
#

nooo dont write a gltf parser

cloud rivet
#

if I don't I can't have gltf

hushed creek
#

export from blender in a text file the data you need with a python script and then parse that

cloud rivet
#

I don't use blender

hushed creek
#

YOU WROTE YOUR OWN BLENDER TOO?????

cloud rivet
#

lol

hushed creek
#

truly peak NIH

cloud rivet
#

my point is more like, I use multiple tools

#

I don't know

#

I'm just going to write a gltf parser nbd

#

a slow json tokenizer isn't going to be hard imo

#

the hard thing here is the basis compression

#

that will work with vulkan drivers

echo crystal
#

how hard can it be

cloud rivet
#

well the spec is a tome

echo crystal
cloud rivet
#

by the time I get to it I'll have written a huffman decoder for png, jpg and exr so I'll have some compression experience

bronze socket
#

compression is never a good time

dry apex
#

is rosy open-source? i can't seem to find the repo

cloud rivet
#

it's not

dry apex
#

ic

cloud rivet
#

this isn't rosy either, this is a new project I started in june

astral hinge
#

it contains trade secrets

cloud rivet
#

rosy was C++

#

this is C

dry apex
#

oh

#

nice

cloud rivet
#

there's no trade secrets, it's just weird to open source something you don't want PRs for

#

idk, I don't mind sharing the code with anyone here

#

I just don't want it as a open source thing on github

broken fog
#

this isn't pq

dry apex
bronze socket
#

yeah on github I'm very selective about public stuff

broken fog
cloud rivet
#

well it's just I don't want any third party deps

broken fog
#

understandable and 🇬🇱

cloud rivet
#

same as that video jaker posted in #off-topic-🐸 the other day

broken fog
cloud rivet
#

same as jonathon blow and casey and etc, it's just less headaches in the long run, and then I have my own stuff and I don't have to worry about versions and all the dumb stuff that comes with dependencies

hushed creek
cloud rivet
#

I use a bunch of tools

#

not just maya

#

I just hate blender in particular

bronze socket
# broken fog why's that?

idk, when I put something in public on github I want it to be "atomic" and conceptually interesting, like a library or a program that does a distinct thing

broken fog
#

autodesk shill

#

i just dump all my shit on public gh lmao

bronze socket
#

my personal engine is not novel nor particularly interesting so it doesnt show anything except my preferences and opinions, not really worth showing off or getting feedback on

cloud rivet
#

same

#

why doesn't any server I am on have a "same" emoji

bronze socket
#

this is close enough to same

broken fog
broken fog
#

i mean they can be valuable as a kinda portfolio stuff

astral hinge
cloud rivet
#

deccer patented flag speak, and I respect IP

bronze socket
#

yeah I just mean my regular 3D rasterizing game engine, it's just mid

#

maybe I just spend too much time here to even think that lmao

astral hinge
#

ye

bronze socket
#

unironically have said "oh and a 3D rendering engine" as an afterthought during job interviews lmao

astral hinge
#

rotted

broken fog
#

but it's still the coolest thing i made

#

ok fair enough i wasted most of my time on webshit

astral hinge
#

people compare themselves against insane standards

bronze socket
#

I mean my day job is database stuff, furthest thing in the world from GP

echo crystal
#

why are u getting banned bluscreen

broken fog
#

you should ping him

astral hinge
#

we need more schizomaxxing self-declared programming gods here

bronze socket
#

if you're not interviewing for a graphics job it's kinda funny how hard it is to explain the significance of anything

echo crystal
hushed creek
astral hinge
#

my code's on github because I want the world to witness the work of a god

broken fog
bronze socket
#

"so yeah this is my text renderer but really I have to rewind back to the history of the kievan rus and the settling of novgorod"

brisk chasm
cloud rivet
#

if I were interviewing someone for an engineering position on my team and I knew they had made a 3D engine I would see that more as a we share similar interests, and I'm not sure how it would otherwise signal anything more, like it wouldn't be enough to overcome a poor performance on the technical panel

#

our technical panel isn't hard

bronze socket
#

I almost fumbled a basic question on database indexes then turned it tf around when the interviewer asked about my personal projects

bronze socket
#

dude's eyes legit lit up

#

don't even care if I don't get the job because I live for that

brisk chasm
cloud rivet
#

we ask a cache question and we ask a bulk action with real time updates on the ui question

#

no tricks

astral hinge
bronze socket
#

the trick is if the word "real time" sends you on a rant about guaranteed execution times, you lose

brisk chasm
#

ah funny, there was some weirdo saying something weird few hours ago lol about rust people being schizzo elitists

broken fog
bronze socket
#

yeah it's real time, it takes real time to execute

solid grove
#

2fps is real time for the offline world

broken fog
#

it's "interactive"

#

(0.1 fps)

#

why do you have a realtime kernel @brisk chasm

broken fog
#

i've straight up answered "no idea, i've never run into that before but here's how i'd go about looking into it" to that kind of question before and got the job

cloud rivet
#

I don't know a whole lot about ray tracing, but based on my experience with using maya's arnold I think production renderers just get rid of fireflies by taking more time to render a frame

broken fog
#

and also by not having a broken bsdf,,,,

#

or renderer,,

cloud rivet
#

yeah idk

broken fog
#

also fireflies don't really go away with accumulation, they just get worse

cloud rivet
#

I see fireflies in arnold results unless the frame takes like minutes to render

solid grove
#

firefly compensation is a whole thing

broken fog
#

it be hard

cloud rivet
#

I see

broken fog
#

the fundamental question is how do you find an outlier when you don't know the full distribution

cloud rivet
#

yeah nfi, if it's hard for you bluescreen probably impossible for most people tbfh lol

broken fog
#

and when you have high variance (eg caustics), valid samples look a loot like fireflies

broken fog
bronze socket
#

throw a NN at it and pray?

broken fog
#

i want to figure out the fireflies tho

#

had no time the last like 6 months all my energy just went to uni shit and now i'm kinda burnt out for a bit froge_sad

#

but man i want to fix the renderer so i can finally start working on cool shit like volumetrics and fancy integrators

#

path tracing is so much fun

cloud rivet
#

that sounds exciting

bronze socket
#

I got into path tracing but since I have no HWRT I just went on a month long bikeshed reading about stackless traversal and different BVH formats

#

all that to propogate RGB

cloud rivet
#

for some reason I don't get burned out by graphics programming, it does the opposite, it recharges me, I get burned out by everything else in my life and then I do this and I feel better

bronze socket
#

and then get bored and stop

broken fog
#

spent like 2 months bikeshedding bvh stuff

#

was fun though

solid grove
cloud rivet
broken fog
#

but gp is refreshing

bronze socket
broken fog
#

though kinda wish i was writing rust again instead of c++,,,

cloud rivet
#

I don't want to fix other peoples bugs

broken fog
#

time to riir ig froge_love

solid grove
cloud rivet
#

yeah that's fair

broken fog
#

makes reproducing bugs so much easier

solid grove
#

like right now I somehow have a null descriptor access despite binding all resources every frame

#

but it only happens sometimes

broken fog
#

i smell a race condition

solid grove
#

I left the program running for an hour and it didn’t happen. Restarted and it happened 30 seconds in

solid grove
#

sucks

bronze socket
#

oh yeah weird vulkan state issues are a nightmare

solid grove
#

I just get a crash from aftermath and that’s it

cloud rivet
#

how do you run aftermath?

#

just run it?

solid grove
#

you run the monitor program

cloud rivet
#

the thing that runs in the background?

bronze socket
#

graphics has some of the most frustrating debugging sometimes

solid grove
#

yes

#

then you crash your app and it’ll pop up a window to open the dump in nsight

cloud rivet
#

do you have to use it along with nsight?

#

I should read the docs

solid grove
#

the dump is in nsight format

cloud rivet
#

but how does it know to monitor your application?

#

do you use the sdk?

solid grove
#

It hooks the driver

#

There is an SDK but I don’t use it. The SDK isn’t that useful

solid grove
#

It’s mostly for integrating with your production crash tracing system

#

for uploading dumps to a server

cloud rivet
#

the renderdoc crash I have isn't my application crashing renderdoc, it's renderdoc trying to open the capture it made

bronze socket
#

been there

solid grove
#

It’s probably crashing during replay

cloud rivet
#

so I just disabled RT for renderdoc and gave up

bronze socket
#

iirc my particular one was having weird initialization settings for BDA

cloud rivet
#

I might have some UB though that's to blame, idk it's not causing a problem for nsight or running my app normally

solid grove
#

bindless is nigh impossible to debug. The tooling has not caught up

bronze socket
#

I think I requested it though the ext instead of 1.2 and didn't properly tell VMA to be consistent

#

I luckily haven't had much trouble with bindless, you could probably enable the null descriptor option and you might at least get a visual of where it's happening

solid grove
#

what is the null descriptor option?

bronze socket
#

one of the feature settings for bindless that makes null descriptors in your array valid, iirc it has a performance penalty so you don't want it, but you'll at least just get black samples instead of crashing

solid grove
#

interesting

bronze socket
#

in Features2 I think

solid grove
#

really wish it would capture info about the thread that caused the crash so I can debug it

#

but all you get is an address rounded to the nearest 4K

#

and the shader program

#

sometimes it gives you an IL reference in the shader but it’s pretty inaccurate

astral hinge
#

I write a null descriptor to the slot when freeing a descriptor

#

using the thingy domeboy linked

bronze socket
#

I don't use null descriptor but I think I use partially bound which is okay with things being null so long as you don't access them

cloud rivet
#

when freeing a descriptor thinkeyes

bronze socket
#

it's possible for my descriptor set to hold refs to dead images but its no big deal

astral hinge
cloud rivet
#

same

#

that's what I do too

#

but I never free them

bronze socket
#

you don't need nullDescriptor then so long as you have partially_bound_bit, faster too since you don't get the checking

#

for me "freeing" is just recycling the index so anotehr image can write into it

#

to keep the fragmenting down

cloud rivet
#

yes I have the same logic

#

I copied it from jaker's code

#

I just never free any

astral hinge
cloud rivet
#

ah

#

why do you create descriptors for buffers

bronze socket
#

busted

astral hinge
#

I mix bda and buffer descriptors at random

bronze socket
#

I actually do that too tbh, my transient descriptor set allocation is too convenient for mocking things up

#

usually I convert things to BDA closer to when I finalize them

astral hinge
#

I have a crash that's caused by using bda though

#

a crash in glslang when it tries compiling my shaders

bronze socket
#

I've had a crash before where spirv-reflect just didn't consider I could get certain instructions in a certain order so I had to PR them a 2 line fix

solid grove
#

Glslang’s #include doesn’t work

#

if you have certain kinds of path

#

I fixed it for myself in my own checkout since I’m doing something a little weird

bronze socket
#

I think I switched to glslc because I couldn't manage to get glslang to take additional header search args

solid grove
#

does glslc not just use glslang?

bronze socket
#

99% sure it does but the glslc CLI is somehow better than using glslang directly

astral hinge
#

the cli binary from the sdk is built in release mode which means it doesn't have the checks that make it crash for me frogs

astral hinge
#

and stuff like the option that prepends text to your shader literally builds a string that gets prepended to your loaded file before it's sent to glslang

cloud rivet
#

ok, now I can start working on the orientation code

#

so I'm going to use that as my third party camera placeholder when I'm not in third party camera view

#

so I'll just start with the rotation around the y axis assuming a world up, then I'll add pitch, and then make it work with the track normals, and then have it follow the skimmer and then it should just work?

#

and then I'll just make that a generic look at function that just works with whatever

broken fog
cloud rivet
#

I may move up wavefront obj file parsing on my timeline 😅

broken fog
#

then you can import an actual headcrab

cloud rivet
#

when I originally played hl2 I didn't think they were cute, they scared me

#

but I guess they are cute now

broken fog
#

they just want to cuddle

bronze socket
#

how does sorse store skeletons

#

oh wait source games have weird file formats nvm, that made me think they used obj for a moment

cloud rivet
#

there's the bug

#

ok

#

a sign issue I think

#

I think I

astral hinge
#

the z fighting of the yellow and red lines makes it look like a cute walking animation

cloud rivet
#

animation ✅

#

nice, one thing I don't need to worry about now

#

going to write that angle to the ui

cloud rivet
#
 auto cross_p = cross(world_forward, v_projection_to_xz);
  auto sign = dot3(cross_p, world_up);
  auto dot_p = dot3(v_projection_to_xz, world_forward);
  auto angle = acosf(dot_p);
  if (sign < 0.f) {
    angle = -angle;
  }
#

cool cool

#

hrm

#

ok now to get the other angle

#

the pitch as it were

cloud rivet
#

had a huge bug

#

my quaternion form is w, x, y, z and my mat to q did x,y,z,w :(

#

that was the bug

#

a normal look at function now works

#

no issues with my coordinate system thank god

astral hinge
#

one time glm updated and changed the quat constructor from xyzw to wxyz. that was fun to track down

cloud rivet
#

this wasn't fun at all KEKW

#

like my approach at one angle at a time ran into gimbal issues

astral hinge
#

are you reinterpreting your quat struct as an array of float or something

#

If you accessed the fields one at a time I can't see how you'd get this bug

cloud rivet
#

as a single quat

#

my orientation is just a single quaternion

astral hinge
#

I'm confused how the storage order mattered here

cloud rivet
#

well my math was x, y, z, w, except one function

#

which had it the reverse

astral hinge
#

"ideally" the user of the quat wouldn't need to know whether it's xyzw or wxyz

#

oh I think I see

#

the math was just wrong?

cloud rivet
#

right because it made the quaternions incorrectly

#

because I copied it out of my math book

astral hinge
#

I think I was projecting my storage bug onto you

cloud rivet
#

I mean I understand what it does

#

I understand what the trace of a matrix is

#

and how the construction of the quaternion works vi athe math

#

I just wrote the w to the w variable, and then the clang vectors have a w data member

#

it just happens to be the wrong one

astral hinge
#

a real oopsie daisy moment

cloud rivet
#

that's my middle name

#

what's the origin story for your pfp?

#

it looks like gumby, I keep thinking is like a gumby like character

#

I think my brain stopped working and I can't do more right now

#

why does that happen

astral hinge
cloud rivet
#

ooh lore

#

thanks

astral hinge
cloud rivet
#

also keep forward momentum when not giving power so you can't break midair

broken fog
#

ngl it looks super fun

#

if you tone it down maybe you can have like a moon level where jumping just yeets you way up

cloud rivet
#

Yeah that would be cool

#

I am going tone tone it waaay down

solid grove
#

might want to have the gravity increase after a certain amount of time in the air

#

can help the skimmer feel more substantial

cloud rivet
#

I like that idea

#

I am going to try that out

cloud rivet
#

I finally started using lsp renaming in neovim, it works so great

#

yesterday I spent a lot of time manually prefixing my C functions and today I decied to see how good the lsp rename works and it works amazingly

#

just no undo

#

git reset is the undo

#

oh maybe there's an lsp undo

#

no there's not

brisk chasm
#

as a neovim bro, you need a split keyboard too

cloud rivet
#

I don't like those

brisk chasm
#

: )

cloud rivet
#

I have a normal logitech keyboard like a regular person

brisk chasm
#

yeah

#

i was just joking

#

those split-keyboard-yt-bros, who keep typing a word once then backspacing 100 times before writing one more word correctly

cloud rivet
#

the biggest drawback to neovim is really tracking global changes/sessions, it's all just buffer based

#

if you have some plugin or something that changes files that aren't even open there's no hope

brisk chasm
#

jetbrains' tools have a local version thing, where it kind of snapshots your code in various intervals, and you can go back in time when needed, and you have not setup git or havent commited in a while, its pretty handy

cloud rivet
#

and most commands just work on the current buffer

#

yeah local version in jetbrains has saved me so many times

brisk chasm
#

same hehe

cloud rivet
#

visual studio has this too with the resharper C++

brisk chasm
#

yeah

cloud rivet
#

hrm

brisk chasm
#

i always wanted to give neovim a true and honest try for more than just 2mins, but i cant

#

im too stupid to start memorizing all the vim keybinds, or perhaps too old, idk

cloud rivet
#

it's impossible to memorize

#

the way to do it is to just start with the basics

#

build up muscle memory

brisk chasm
#

yeah

cloud rivet
#

and then slowly expand

#

if you asked me how to do anything I do I couldn't tell you

brisk chasm
#

i keep going back to clion

cloud rivet
#

it's just my fingers doing stuff

brisk chasm
#

i owuldnt even know what to do really, when editing text "ok here i need to go to the 5th word on that line to put an a in between 4 letters of that word"

#

so i just go into i, and cursor there and just put the a 🙂

#

and not do 5w and i and whatever else vim bind you press before i

cloud rivet
#

I used vim from like 2005 to 2012

#

and then gave up when multi cursor came out and used jetbrains IDEs for about 5 years

#

and then at my current job all our work is remote

brisk chasm
#

yeah alt+shift+. is ❤️

cloud rivet
#

and jetbrains is horrible at remote editing

#

so I started using visual studio code

brisk chasm
#

ah vscode is great there

cloud rivet
#

but now I'm back to neovim since june

#

well new to neovim

#

I hadn't ever used neovim

brisk chasm
#

aye, so you went through the valley of pain already

cloud rivet
#

yeah

brisk chasm
#

and learned ze basics

cloud rivet
#

neovim is much better than vim, I would never use vim

#

well I have been using vim for commit messages and cli stuff, I never stopped using it

#

for small edits

#

but as a main editor

#

no thanks

brisk chasm
#

i use it for config files too, but its just cursor keys and no vim motions or whatever, dd and u at maximum heh

cloud rivet
#

now I am using Neovide, which is a UI for neovim

#

all it does is uh fix the cntrl key and adds fancy cursor animations

#

and smooth scrolling

#

one of the problems using neovim or any editor in a shell is that shells don't like control key

brisk chasm
#

yeah i heard of neovide

cloud rivet
#

what are you using?

#

clion?

#

I still have this installed, I don't think I've opened it in years

brisk chasm
#

ye clion and sometimes vscode

cloud rivet
#

3 years KEKW

brisk chasm
#

😄

cloud rivet
#

I have been paying the license all this time

brisk chasm
#

200 bucks a year

#

if its the full one

cloud rivet
#

yeah

brisk chasm
#

i have that one too, i think its worth it

#

if i was using vim or any other vimlike i would probably quit jetbrains too

cloud rivet
#

oh shit, I have work code on this computer, the last thing I opened in this project is from my job

#

😅

#

that's gotta go

brisk chasm
#

calling your boss

cloud rivet
#

this is from when were still a tiny startup

#

I have no idea how to open up the terminal or do anything anymore

brisk chasm
#

there is a button in the bottom left corner

cloud rivet
#
commit 05efa10d171977fb91a8274c711d6688410943ea (HEAD -> bt/DUCT-4130/clear_app_user_source_ids, origin/bt/DUCT-4130/clear_app_user_source_ids)
Author: Bjorn Tipling <[email protected]>
Date:   Thu Mar 30 05:40:58 2023 +0000

    [DUCT-4130] Add ability to clear app user source ids from support page
#

great

brisk chasm
#

or shift shift terminal enter

cloud rivet
#

2023

#

C:\Users\Bjorn\IdeaProjects\c1

#

I never look in there

#

it's been hiding

brisk chasm
#

windows peasant 😄

tight torrent
#

it has nertree, clangd plugin and thats about it

#

tried nvim once, didnt feel like it

cloud rivet
#

I tried running neovim on my 32GB of memory dev machine and it ooms

#

so I still use vim on that thing

brisk chasm
#

ah thanks for reminding me

tight torrent
#

how lol

cloud rivet
#

it's actually gopls that ooms

brisk chasm
#

i noticed this laptop swapping despite having 19GB free ram out of 32gb

cloud rivet
#

the go lsp

#

but it kills neovim

#

what's weird is that visual studio code's client that runs on the same machine also uses gopls and it doesn't die, but gopls does sometimes have problems

brisk chasm
cloud rivet
#

going to just uninstall intellij and finally cancel my license I think

brisk chasm
#

pls in gopls stnds for "go, please!"

cloud rivet
brisk chasm
#

btop

cloud rivet
#

ohh my jetbrains annual license fee is really cheap though

#

holy shit

#

it costs double what I pay

#

haha

brisk chasm
#

it usually goes down every year, for 3 years and then you keep paying that lowest

cloud rivet
#

ohh I see

#

yeah yeah ok I actually pay the third year price

#

hrm

brisk chasm
#

yeah same

cloud rivet
#

that's a big incentive to just keep paying the money

#

I'll just keep it lol

#

they got me

#

let me see what they got maybe I like something

brisk chasm
#

they do provide good software 🙂

#

i frequently use rider, clion, webstorm and datagrip

tight torrent
#

iirc

cloud rivet
#

that is cool

brisk chasm
#

rider and clion can be used freely these days

#

and one or two other things of their whole suite

tight torrent
brisk chasm
#

yeah

tight torrent
#

i have the jetbrains suite with an education license

brisk chasm
#

great for hobbyists

#

ah its 180, plus tax

cloud rivet
#

I'm going to try fleet

#

can't parse my C

#

I'm going to try and replace my notepad++ usage with fleet

#

it should have just been able to parse my C with clangd and compile_commands.json

#

I dont' think this editor can replace notepad++, it's a bit slow

tight torrent
#

i personally use kate + kdevelop for a text editor + ide

brisk chasm
#

wouldnt surprise me if they retire fleet again

silver slate
#

Notepad++ reigns supreme.

#

Imagine holding Alt, and then just selecting a column. 4itsgood

brisk chasm
#

luckily a lot editors can do that

silver slate
#

Most of the ones I know require me to press two keys for that and they may overlap with another combo and then my first select isn't a column select and then the second one is but I have then already closed the program and started cursing about it in a random Discord chat.

astral hinge
#

I can hold alt, ctrl, then press arrow keys to select multiple lines

brisk chasm
#

alt + left mouse works for me for the ones i know

#

yeah and that, what jaker said, i also very much like alt+shift+. in jetbrains' tools, multi select on whatever is at the cursor/isselected

astral hinge
#

maybe it was alt+shift in visual studio too, my fingers just do it

brisk chasm
#

depends on the keyboard schkeeme probably

tight torrent
#

alt + ctrl is what works in vs code

#

ive used it alot more than i expected to when i first figured it out lol

brisk chasm
#

vscode default keymap is botched when you are used to vs/resharper/jetbrains-keymaps heh

#

ctrl+- in vscode doesnt navigate back, it zooms the ui out 😄

hushed creek
#

I hate that so much

#

especially since I never want code zoom in/zoom out, I set a font size when I install the IDE and that's it

cloud rivet
#

I zoom in all the time because my vision went bad as I got older

#

I was going to make some progress and instead renamed almost everything

#

everything is now snake cased and prefixed with p_

#

I was pretty excited to use camel case when I started this project because resharper in C++ forced me to snake case and I wanted camel case, but over time I just ended up preferring snake case in C

#

it's beause I think I don't have any types, just functions and structs

#

types as Type types

cloud rivet
#

fleet is terrible

#

I'm going to cancel my jetbrains license I don't want any of these editors

#

it expires soon so good timing

cloud rivet
#

kind of fun

pseudo dock
#

What's the technique to avoid launching yourself off a ramp?

cloud rivet
#

slowing down so you're not accelerating off into the air too high

#

the two shoulder triggers are analog

#

left applies reverse thrust and right applies forward thrust

#

this track is kind of silly, since it has such hard edges

#

I'm going to smooth it out and there will only be ramps in interesting places

#

I really have no idea what I'm doing

#

I actually want to replace the soap bar/roach thing

#

I'm going to see how much my maya skills have deteriorated in the last 5 months

#

there's ton more track/physics work to do obviousily

#

but I want to add a wavefront obj parser and then actually replace the blue background with a ray traced scene

pseudo dock
#

Nice

astral hinge
#

your game is looking fun already

cloud rivet
#

I think I will try out VK_NV_cluster_acceleration_structure

#

for the background

astral hinge
#

the race track will be a shrimple quad ribbon but the background will be a hyperrealistic path traced scene with a billion triangles

cloud rivet
#

I just want a height map

solid grove
#

my simple test track is over a million triangles nervous

cloud rivet
#

idk

astral hinge
#

imo that extension seems geared towards very complex scenes, but nothing is stopping you from exploring it for fun

cloud rivet
#

yes I just want tessallation geometry in the RT pipeline

astral hinge
#

I think there might be special intersection methods that are extra fast for heightmap

cloud rivet
#

oh that's cool

astral hinge
#

and you could use an intersection shader to trace it

#

to leverage hw rt

cloud rivet
#

I'll check that out first thanks

astral hinge
#

oh I replied to the wrong thing

cloud rivet
#

actually some results later on mention intersection

astral hinge
#

I'd remove the vulkan keyword personally

cloud rivet
#

thanks for your help I'll look at using an intersection shader

#

I'll make a better skimmer model and add an obj parser before that and then I'll look at making something better than a blue background

tawdry pewter
#

May I ask what kind of developer you're seeking?

cloud rivet
#

"software engineers" basically

#

our work is building out async workflows, state machines, APIs for UIs and customers, data processing, automation, and recently AI agents, as well as building integrations for things like AWS, Google Cloud, 300 other things

brisk chasm
#

CORS errors 😛

brisk chasm
#

read

cloud rivet
#

that's not the app, that's a marketing page

cloud rivet
tawdry pewter
cloud rivet
#

our offices are nice though

tawdry pewter
#

could you tell me about the hiring process?

#

where is it based?

cloud rivet
#

the hiring process is remote unless you're near by

#

we're in portland and san francisco

tawdry pewter
#

and is the team global?

cloud rivet
#

yes

#

hiring process is talk to one of our recruiters, there's a phone screen and about 4 panels in one day, one of which is technical

tawdry pewter
#

I am ready if they are.

cloud rivet
#

oh I see, try applying! good luck!

#

I don't like have any influence over the process, I'm just a cog

tawdry pewter
#

np.
just to be clear, there are three open roles as software engineer.
which role should I apply?

cloud rivet
#

read through them and find one that's good for you

tawdry pewter
#

hmm, okay.

brisk chasm
#

kind of goes without saying that you need to pick what you want

bronze socket
#

normally not reading the JD would have you insta filtered

#

even before AI when you'd be instafiltered anyway

cloud rivet
#

I have no idea what the team that reads the application does

#

I just get an interview scheduled and then I enter feedback and then someone makes a decision and I have no influence or understanding of it

#

when it was just a few of us five years ago, we didn't even interview

#

it's all been enterprisified

#

it's kind of weird to being just a few people, where the "CEO" is just a title one of the other people on the team had and we all worked together, to now I'm a line engineer and the CEO is flying around the world meeting other CEOs and I barely ever see them anymore

bronze socket
#

are you at least sitting on enough options to be happy

cloud rivet
#

yeah I have equity, but I think it's all weird in a cool way

#

not in a bad way

tawdry pewter
cloud rivet
#

I don't even know anymore tbh

#

there are lot of teams now

#

there are many more teams of engineers now then there used to be engineers

#

probably want to ask when you talk to someone

bronze socket
#

when are you gonna sell your equity and retire to bikeshed 24/7

#

that's the dream

cloud rivet
#

idk, by default I don't count equity as worth anything, even though I did exercise a year ago and that was really expensive

#

but I just assume it is worth nothing, because 9 out of 10 times that's how it turns out

#

this is like my fifth or sixth startup

bronze socket
#

ah

cloud rivet
#

I will 100% stop working the first chance I get, and then I will bikeshed 24/7

wraith urchin
#

that would be so nice

cloud rivet
#

I think maybe sometimes I just get a job stocking shelves or something braindead, if those jobs still exist, and just program only for fun

#

and by braindead I actually mean, not mentally stressing, I shouldn't have used that word

cloud rivet
#

first time opening up maya to do work in many months, let's see if I still got it

cloud rivet
#

after it updates

#

crashed on opening

#

will not open

#

I guess I need to delete my preferences folder

#

yup, fixed it, classic maya crash fix

solid grove
wraith urchin
cloud rivet
#

painting with vertex colors is fun, but a little challenging

#

going to try and just load this

#

just a better placeholder than the bar of soap

#
Directory of D:\projects\RosyRendererCreatives\maya\fury_road\scenes

11/24/2025  08:40 PM    <DIR>          .
11/24/2025  08:39 PM    <DIR>          ..
11/24/2025  06:27 PM    <DIR>          edits
11/24/2025  08:40 PM               185 skimmer_1.mtl
11/24/2025  08:40 PM            81,802 skimmer_1.obj
               2 File(s)         81,987 bytes
               3 Dir(s)  795,730,239,488 bytes free
#

oh hrm

#

obj doesn't support vertex colors fml

#

I'll have to write a custom export tool

#

that's not going to work

astral hinge
#

blender supports obj with vertex color

#

and my game loads them

#

you need some "newer" blender (from the last year or two) to export it

cloud rivet
#

I see

#

I'm gonna write a python script for maya

tight torrent
#

ex a vertex at 1, 1, 1, with a color of 1, 0.5, 0 would look like

#

v 1 1 1 1 0.5 0

#

or something

cloud rivet
#

yes I think that's what the blender extension does too

#

I think the python script to do this would be easiest

tight torrent
#

yep thats what blender does

astral hinge
#

i like the name of that linear2srgb function

#

linearrgb_to_srgb_v3_v3

#

now that I think of it, the v3 probably means 3 vector components and not version 3

tight torrent
astral hinge
#

oh that's c++

tight torrent
#

yep

#

simd my beloved

astral hinge
#

returning by out parameter in that function is yucky

#

too hard to make a struct that wraps float[3] I guess

#

it do be a nitpick

tight torrent
#

otherwise its c style code

astral hinge
#

could be c for the interface but implemented with c++

#

some libraries do that

tight torrent
#

the header is a .h file

cloud rivet
#
import maya.cmds as cmds
import sys

project_path = cmds.workspace(query=True, rootDirectory=True)
obj_path = "scenes/skimmer_1.obj"
full_skimmer_path = f"{project_path}/{obj_path}"
print(f"project_path: {full_skimmer_path}")

with open(full_skimmer_path, 'r') as f:
    lines = f.readlines()
    vertex_index = 0
    max_lines_to_check = 10
    for line in lines:
        if line.startswith('v '):
            pos = cmds.pointPosition(f"skimmer_geo_1.vtx[{vertex_index}]")
            vertex_index += 1
            print(f"vtx: {vertex_index} obj: {line} pos: {pos}")
            if vertex_index >= max_lines_to_check:
                print("finished checking max lines")
                break
print("all done")
#
project_path: D:/projects/RosyRendererCreatives/maya/fury_road//scenes/skimmer_1.obj
vtx: 1 obj: v -1.367517 0.500000 6.700000
 pos: [-1.3675166368484497, 0.5, 6.699999809265137]
vtx: 2 obj: v -1.367517 0.811514 6.700000
 pos: [-1.3675166368484497, 0.8115143775939941, 6.699999809265137]
vtx: 3 obj: v -2.446929 1.500000 -6.700000
 pos: [-2.446929454803467, 1.5, -6.699999809265137]
vtx: 4 obj: v -2.446929 0.500000 -6.700000
 pos: [-2.446929454803467, 0.5, -6.699999809265137]
vtx: 5 obj: v -1.522077 1.500000 4.781267
 pos: [-1.5220767259597778, 1.5, 4.781267166137695]
vtx: 6 obj: v -1.522077 0.500000 4.781267
 pos: [-1.5220767259597778, 0.5, 4.781267166137695]
vtx: 7 obj: v -2.351618 0.500000 -5.516786
 pos: [-2.3516178131103516, 0.5, -5.516786098480225]
vtx: 8 obj: v -2.351618 1.500000 -5.516786
 pos: [-2.3516178131103516, 1.5, -5.516786098480225]
vtx: 9 obj: v -1.836718 1.500000 0.875257
 pos: [-1.8367183208465576, 1.5, 0.8752567768096924]
vtx: 10 obj: v -1.836718 0.500000 0.875257
 pos: [-1.8367183208465576, 0.5, 0.8752567768096924]
finished checking max lines
all done
#

I can just append them

#

with polyColorPerVertex

#

hrm

#
            color = cmds.polyColorPerVertex(f"skimmer_geo_1.vtx[{vertex_index}]")
            vertex_index += 1
            print(f"vtx: {vertex_index} obj: {line} pos: {pos} color: {color}")
vtx: 10 obj: v -1.836718 0.500000 0.875257
 pos: [-1.8367183208465576, 0.5, 0.8752567768096924] color: None
#

:(

#

color = cmds.polyColorPerVertex(f"skimmer_geo_1.vtx[{vertex_index}]", query=True, rgb=True)

#

there it is

#

pos: [-1.8367183208465576, 0.5, 0.8752567768096924] color: [0.8899999856948853, 0.8899999856948853, 0.8899999856948853]

cloud rivet
#

bam

#
mtllib skimmer_1.mtl
g default
v -1.367517 0.500000 6.700000 0.890 0.890 0.890
v -1.367517 0.811514 6.700000 0.890 0.890 0.890
v -2.446929 1.500000 -6.700000 0.890 0.890 0.890
v -2.446929 0.500000 -6.700000 0.890 0.890 0.890
v -1.522077 1.500000 4.781267 0.890 0.890 0.890
v -1.522077 0.500000 4.781267 0.890 0.890 0.890
v -2.351618 0.500000 -5.516786 0.890 0.890 0.890
#

ezpz

#
import maya.cmds as cmds
import sys

project_path = cmds.workspace(query=True, rootDirectory=True)
obj_path = "scenes/skimmer_1.obj"
full_skimmer_path = f"{project_path}/{obj_path}"
skimmer_color_path = f"{project_path}/scenes/skimmer_1_colors.obj"
print(f"project_path: {full_skimmer_path}")

with open(full_skimmer_path, 'r') as f:
    lines = f.readlines()


with open(skimmer_color_path, 'w') as f:
    vertex_index = 0
    for line in lines:
        if line.startswith('v '):
            parts = line.strip().split()
            x, y, z = parts[1], parts[2], parts[3]
            color = cmds.polyColorPerVertex(f"skimmer_geo_1.vtx[{vertex_index}]", query=True, rgb=True)
            f.write(f"v {x} {y} {z} {color[0]:.3f} {color[1]:.3f} {color[2]:.3f}\n")
            vertex_index += 1
        else:
            f.write(line)
print("all done")
#

I shall have a proper skimmer tomorrow or the next day

#

and then I'll probably be doing ray tracing stuff for a couple of months

#

the goal with RT is to just draw the background world with it, I will use the graphics pipeline for the geometry around the track, like if it goes into tunnels or through buildings or anything that will be rasterized, I just want the like distant world to be RT, that's it

#

and I'll use RT for shadows, and GI and reflections I guess, idk

#

I don't want to RT the game's geometry because I don't like the noise

#

and I just want a graphics pipeline

#

idk

solid grove
#

will the backgrounds be animated?

cloud rivet
#

I hope so

#

hrm the scale of this vehicle is huge tbh

#

12 meters :X

#

14 actually

#

I'll make the track bigger

#

or shrink it

#

14 meters is ridiculous

#

i'm going to import in blender to see what it looks like

#

idk how to even rotate in blender

#

looks kind of dumb

#

I'll keep working on it later

#

I should bevel the edges

#

anyway I'll make a skimmer customization feature, so it's fine

tight torrent
cloud rivet
#

I actually figured it out: alt+F4

vagrant musk
#

Blender has a LOT of controls

true moon
#

Eh you get through them pretty fast

cloud rivet
#

I should stop using slang since I can't understand the words used in the documentation

#

Slang supports the DescriptorHandle<T> type that represents a bindless handle to a resource. This feature provides a portable way of implementing the bindless resource idiom. When targeting HLSL, GLSL and SPIRV where descriptor types (e.g. textures, samplers and buffers) are opaque handles, DescriptorHandle<T> will translate into a uint2 so it can be defined in any memory location. The underlying uint2 value is treated as an index to access the global descriptor heap or resource array in order to obtain the actual resource handle. On targets with where resource handles are not opaque handles, DescriptorHandle<T> maps to T and will have the same size and alignment defined by the target.

#

slang is a black box and when it doesn't work I just feel helpless

#

there's no spec to refer to

#

I think the VVL support for the RT pipeline is largely insufficient

astral hinge
#

I think you're supposed to ask on their discord or github

cloud rivet
#

I have no idea why renderdoc crashes still on opening up captures

cloud rivet
#

also I did ask

astral hinge
#

indeed, having an actual spec would be miles better

cloud rivet
#

and it hasn't helped

#

I hate asking for help. I did today

#

and what was offered didn't work

astral hinge
#

only now did I realize that glsl does have a big advantage over other shading languages, and it's that it has an actual comprehensive spec

cloud rivet
#

yeah

#

I get VVLs about layout issues for my acceleration structures in my slang, I am using descriptor indexing which is actually not officially supported by slang, but just seems to work anyway

#

ACCELERATION_STRUCTURE is excluded from the list of types since Slang by default uses the handle to a RaytracingAccelerationStructure as a GPU address, casting the handle to a RaytracingAccelerationStructure. This removes the need for a binding-slot of RaytracingAccelerationStructure.

#

you search for anything related to RaytracingAccelerationStructure on the slang discord everyone is using the device address you get from vkGetAccelerationStructureDeviceAddressKHR

tight torrent
cloud rivet
#

I don't know how T is useful here since bindless requires a descriptor set and index right

#

you need two numbers

#

how do I supply two numbers if it's just "T"

#

and the answer just seems to be not to use descriptor indexing with RaytracingAccelerationStructure, but that's the only thing that works for me, I would love to have a small C++ example demonstration of this like one of Sascha's examples but can't find anything like it

#

hrm

tight torrent
cloud rivet
#

in the case of a device address the uint2 is a 64bit address

#

hrm

#

I gotta ditch slang I hate it

tight torrent
#

its built to be a 1:1 mapping of hlsl, or very close to it

#

maybe its simple to switch to dxc -> spirv comp?

astral hinge
#

it's a superset of pre-2021 hlsl

#

Bjorn is trying to use one of the new (slang-only) features

cloud rivet
#

maybe it's not too hard to switch to dxc

#

i don't know

astral hinge
#

hlsl doesn't have the magic descriptor handle thing you're trying to use

#

it supports bindless but in a different way

cloud rivet
#

what's interesting is that's so simple in spirv

#

it's just trivial to follow it in spirv

#

^^ this slang won't even load for me by the way, compiles fine in godot, I get VVL errors for it

#

It compiles fine

#

but when I load the generated spirv VVLs

#

it's fine

#

skill issue or something I don't know I was going to work on obj parsing but just got tired of the RT vvls

#

I'm going to pause working on the game and focus on trying to target spirv directly

#

fuck it

silk pier
#

@cloud rivet if you need some more 1:1 help to get things fixed, just ping me

#

😅 I feel a bit bad regarding everything not working for this stuff

cloud rivet
silk pier
#

fair enough--
if I may ask (it'll help me to know), what don't you like about Slang?

cloud rivet
#

I'm not a fan of the type system, I am using C because it is simple

#

I like simple

silk pier
#

ah

#

so no generics, no templates

#

just glsl but with real pointers?

cloud rivet
#

I love pointers

#

I don't mind generics in theory, but it seems once you have generics the type syntax can become incredibly complex and unfun to read and think about for me

#

which is fine for work that I get paid for

#

but for a personal project I don't think it's for me

silk pier
#

mmm

#

well, if you want c or almost-c to spirv, there should be a few options

GitHub

C Compiler to SPIR-V. Contribute to heroseh/hcc development by creating an account on GitHub.

GitHub

Contribute to nanokatze/cg2c development by creating an account on GitHub.

#

or at least, they have code you can reference when you make your own

astral hinge
#

when

#

this little maneuver's gonna cost us 51 years

silk pier
#

KEKW probably better to contribute to an existing one to be fair

cloud rivet
#

I will look at all these!

#

I think that vcc one looks interesting

#

nano made their own c to spirv wow

cloud rivet
#

so what I think I'll do is write some tests, and just start with a single triangle

#

once I'm past the spirv tutor I guess