#GrubStomper29's OpenGL Sandbox
1 messages · Page 5 of 1
no
I can't watch it rn
he pretty much showed one of demon’s reddit comments
But yeah if I was showing discord messages I would blur it out
actually everything he said was in the comment. Out of context or not, it was all factually correct i suppose
I’ll chalk it up to a research error; anything to defend the guy calling his game “AgarthaCraft”
It's not insulting it was just part of a discussion about Vulkan being a bad first graphics API, I didn't mean to imply that Vulkan was impossible in general
The context was about learning graphics programming via Vulkan
I'm slowly becoming the joker and moving towards the opinion that actually directx 9 is the one true graphics api
Hahah
these kind of videos are absolutely stupid
i just watched 5mins of it
but so are all the things he mentioned in the first 5mins
people need to get out of tutorial/youtube/reddit hell
i see
After having watched it, you should have known better than to post on reddit 
Very true lol
tmrw, Godwilling, ill spend ~3 hours searching for oob or ub
quick question though, wouldnt the error message mention oob if the error was oob?
It's probably not OOB access
I mentioned that option because the secondary thing it does is clear buffers to a weird value
Which you can just clear to that value manually with glClearNamedBufferSubData or whatever it's called
what do you think it is? I really have no clue where to start looking
other than going thru the trouble of getting rd to work
The idea is to try and get your system to ingest bad values so that you can repro the bug on your machine
RD doesn't really help with sync issues
I missed the issue, what actually happens
.
the error doesnt happen for me
thats pretty much the full extent of what we know
debug
if you have no clue then i must truly be in trouble
I may not be the super genius you take me for 
still
I'm just really persistent
im not a big fan of that option
@kind sparrow if youre on windows you could try this out if you want
Jake and I worked it into a compilable state a few days ago
You might want to just make a precompiled version to make it easier for people
i dont have an exe signing cert
i thought windows stops you if the exe isnt signed
No
It might warn you
you could check if you download the exe if its blocked, by rightclicking it -> properties -> "Blocked" -> Unblock, if its blocked it may or may not run properly
but outright stopping you would be insane
I kinda need it for ASO lol
alright
move in with jake, grubbi
Come to Canada yeah
Canada will also soon join the EU
i dont think id like it there
Why not?
from what ive seen and heard, its about 5 cities and then uninhabitable wasteland
most geographically literate american highschooler
Nah its quite nice actually, we have nice nature
natures always a plus
but we cant be talking about this
we gotta talk about this bug
Do you have integrated graphics on your computer
nah
nah
i do have another cpu that does have igpu
but cpu swap for this would be insane
Maybe not worth repasting yeah
I have extra machines that I cobble together for cheap, really handy for this kind of stuff
what about a different driver?
Yeah you could try that
Yeah I have my main win10 desktop with an Nvidia card and then my Linux laptop on mesa integrated graphics, gives me a lot of coverage for this kind of thing
Stupid question but you do have your debug callback set up right
It looked correct to me
yeah
Crashing on mapping a buffer is the kind of thing that the debug should tell you about
iirc synchronous is enabled
Do you have a memory sanitizer
You could be corrupting the heap and smashing the user mode driver
yeah synchronous was definetly enabled
i couldnt tell you what that even is
Oh one more thing to check
the compiler version
This is one more reason to ship binaries
i see
Well if they are different
there could be UB that shows up in one and not the other
I don't think that's an issue here
i could check tmrw morning
An API call is a foreign function call regardless of compiler and the driver is already compiled
thats true
Are you using visual studio
yes
Turn on asan
It might be tough to get through the memory errors that your libraries have like glfw but if you can then it'll tell you if you're doing anything abhorrent with memory
This is why I like Linux for this since it has valgrind
Basically you are writing off the end of a buffer somewhere far enough that you're corrupting memory allocated by the driver
The checks on validating the API usage can't catch that
Yeah
or am i misinterpreting the meaning of oob 
Well
The OOB that RD catches is out of bounds access of mapped pointers specifically
This could be anywhere though not just in GL usage
One thing you can do is go change every std::vector [] access to .at()
That will bounds check everything
i see
i believe i already use .at for my maps because i couldnt type to save my life
It's not a risk for maps
ah yeah they zero init everything i think
It's for std::vector because its operator[] is a raw unchecked array access
map will never let you access oob
i wonder if i couldve passed a wrong size to a gl function?
Possible
imo thats more likely
i dont think i use vectors very often in the main loop
@plain mantle could you do me a huge favor and try disabling the “update view frustum” setting on the imgui window and see if that helps
Yeah I'll do it in a little bit
any luck?
I just tried that older sponza on the oldest gpu driver I could find and didn't experience the issue
Address sanitizer doesn't report anything
i also skimmed thru most of my code and didnt find any glaring issues
what is the current problem?
Jake is running it on his machine and this happens
we think its oob stuff but address sanitizer isn't reporting anything wrong
is your github repo up2date so that i could just clone and run?
on windows, yeah
besides some minor changes
see if you can run it with address sanitizer on
that hasnt been ennabled on the repo yet
latest commit is 4 days ago though
hmm and i have to copy some model in or something?
ah dreaded working dir nonsense
just drop this in the assets folder @night shoal
is mem sanitizer on
interesting
okay
Without the view frustum update I get the crash slightly before
turning on asan
Ok same place with asan
@gilded shell How many monitors you have?
1
I think I've figured out how to trigger the crash
im also on 1 monitor only
If I click into discord on the other monitor then go back it crashes
Here is my hypothesis, based on where the crash is
One of your indirect draw commands is reading past the end of the vertex or index buffer
Like why are you uploading a default initialized draw command in there cpp SceneObject::IndirectDraw indirectDraw{}; void* map{ glMapNamedBuffer(sceneObject.mIndirectDrawBuffer, GL_WRITE_ONLY) }; std::memcpy(map, &indirectDraw, sizeof(SceneObject::IndirectDraw)); glUnmapNamedBuffer(sceneObject.mIndirectDrawBuffer);
In the case that its a compiler thing, this is the exe that was produced
the compute cluster batcher writes to it
ah i can provide the compiler versions too if that helps
VS 2022 Professional Preview 17.13.0 Preview 2.1
thanks guys i’ll see what i can do
I'm on 17.12.4
@plain mantle have you tried turning sanitization on
I did
no change
Here's what I suggest, ignore the problem for now, sooner or later the UB will manifest on your machine, you can tackle it then
have you tried clean removing the gpu driver and just install 566.xx (or the studio driver)
nah i just went to the oldest driver on the nv website
what if it never does
Then you do nothing
If someone else's thing crashes then you can look at it again
but so far its just me
Nah only me
@gilded shell if you have a 2nd monitor or if you can grab a 2nd one, to see if you can trigger that beehaviour then you might be able to do something about it
i dont have the right cable for that, so that’s also a wild option
maybe one of your friends has the right cable and could help you out
we’ll just say jake’s pcie has a lane that malfunctions but only for this project
: )
haven't seen lost world
steven spielberg movies are cool though
have you seen Close Encounters
nah
watch it
Jurassic World is also pretty good
park iii and all the jurassic world sequels can be skipped though, theyre pretty lame
iii has spinosaurus though, greatest dinosaur to ever live
Adding a view id to my clusters—I've conviniently left these paddings here, so sizing shouldn't be an issue like last time
I really should not have 5 copies of the same struct across several cpp files
per view, I need:
Frustum viewFrustum
mat4 view
mat4 proj
vec4 cameraPos
sampler2D hbz (goodness I need an hbz per view)
float zNear
where frustum is currently 6 vec4s but could be 5
I wonder how gl will pad that
why camera pos is vec4
trying to get vec3s working in a glsl struct is pain
not really, just alignas(16) and it works most of the time
you can pad that depending on your frustum struct
still I have been advised by both the opengl wiki and iirc demongod to avoid vec3s
since all of the time is a lot better than most of the time
anyways I've never dealt with struct padding. I wonder if I need to pad that like 6 vec4s or if them being in a struct makes it different
LOL I forgot I did this
@night shoal how's the readme coming along in your opinion https://github.com/GrumStomper29/OpenGL-Sandbox
I'm thinking about sticking to in-code credits for smaller portions of code, e.g. that single debug output function being written by fendevel. Is this kosher?
why dependencies are marked as todo
ye perhaps a typo 🙂
yeah
?
thats totally up to you
you are free to do anything you like
ive seen people giving credit in code with a comment to some algo they found on stackoverflow or on some blog of someone
lol
I need to credit some of yall too
lvrsri and jasmine for nanitisms
lukasino a bit too
and probably deccer and demon for helpful guidance
“This project was made possible using code from:
…
and mentorship from:
…”
I added that section my self today, still in a branch https://github.com/btipling/Rosy/blob/e32e236e47b385a651ce2d732d2cfe00ba80e4c9/CREDITS.md
bit confused why you want to add view id?
having transform index and material index is cursed also
i have this
I should give some credits too 
the alternative is having an index for every transform that ISNT the clusters
but i figured the vice versa would be less memory intensive
should go to mesh struct?
all jokes aside it works and its simple
memory usage isnt much of a concern in this project so far
it works but I cry in VRAM usage. In my test scene I have 1.2GB VRAM usage 
7**3
mine is one 🫠
i can always optimize for memory later
(never)
but in reality i want lightmaps so i probably have to at some point
oh 💀
the textures is using 90% of your VRAM there
I remember them being 923MB something like that
got it down to 160MB and then texture streaming which cut it 10MB
so youre saying if im funny enough, i can add your project to my portfolio
im not sure, the funny moments all happen accidentally
Avoid them in types that are explicitly meant to represent buffer structure, but don't make your engine types vec4 because of that
You certainly can just use vec3 with alignas or manual padding btw it's just my personal preference to not
yeah i think vec4 will just be easier
I prefer to use the vec4 for buffers (over alignment) because you can pack something in the w component
im also using uint32_t et al and not use the types from the gl header
why?
I don't like the gl types because they start propagating elsewhere in the app, where do you draw the line
because i dont have to use those, and leak them into any other thing
but if that cluster type lives in that part where everything glThisAndThat lives then its also fine
yeah when I didn't know anything I was using gl types all over my app
it was gross
it doesnt really matter in the end anyway
I just had to import gl everywhere, where it made no sense to
hehe
it's all uint32_t and float now
I use std::uint 
If you use my superior code architecture strategy then you don't leak anything
everytime I see your code I'm jealous
it's always great code
you're not even a software engineer for a living right
There are tradeoffs that aren't always visible in small snippers
No I'm not although my programming background is extensive
I was a CS major for my first 1.5 years in school and I took a computer engineering minor
maybe having a job writing code ruins us
because we're always being forced to write shit code to meet deadlines our standards drop
I think the bigger factor is just that I take maximum advantage of not being beholden to any other contributors
there's that too
I think if you work a pro software job your instinct is always to have things be more structured
Whereas I just literally write what is most immediately convenient for myself without really worrying about extensibility or maintainability
seems like extensible and maintainable code to me idk
It is at a more macro scale of like "I could just throw away these 5k lines of code and rewrite it without touching anything else" but not as much on the micro scale maybe
Idk
It's certainly good enough for my purposes on the micro scale
The other thing is my projects are all driven by very specific technical obsessions that drive my design decisions so I'm always on a bright straight line path towards some deep feature
it sounds a lot like ecs
I was referring to my strategy of basically doing encapsulation at the translation unit level
So my header file contains purely the interface rather than the traditional strategy of the header containing the private implementation details too
oh interesting
Normally if you want to write some graphics system in class form you'd need to either store pointers to incomplete types C-style or you'd need to include OpenGL stuff into what should be a public header
Instead I just have some black box free functions and a public component type that acts as an interface
And then behind the scenes in the source file I do arbitrary GL stuff and it stays nicely contained
i think im picking up what youre putting down
basically your header file abstracts the actual content of whatever its implementing?
Here's the interface for my ground clutter system
The component is in another header
This is just the header that tells the engine what to call, the "user" (the game) provides the actual implementation in the game renderer folder
The implementation is just like 2000 lines of random stuff and raw GL code
In this case what I do is I have the game apply the game-visible Clutter component and then the system adds its own component in addition to that one which contains all the private GL BS
And this is a huge help to development?
For me personally yes
Because I'm always implementing super specialized systems that have the potential to get entangled with other stuff
This basically gives me the maximum leeway to write those systems without too much cross coupling
The cross coupling that does exist is basically purely data-oriented
Or perhaps implicit coupling in terms of update order
So you quite literally can just throw away like thousands of lines of code at once without affecting anything else
The tradeoff I guess is that it doesn't offer any particular structure internal to those units, those have the potential to get get arbitrarily ugly although for my purposes that hasn't happened too much
Often they're small, the really complex ones that would hurt to have to drastically refactor internally are the tree system I just worked on, and the multiplayer server system
this is a very appealing design method
Oh yeah, the other thing is just that at this point I have more experience writing shitty NIH games from scratch than I do any other SW experience, including SW internships I've had and the code I do write day to day
So all my programming methodologies are sort of centered around it
Data oriented is the name of the game
One thing I want to do is figure out how I'd apply this strategy if I weren't using EnTT, since currently it relies heavily on EnTT's magical ability to just slap components onto entities completely dynamically
Not that I'm not going to continue using EnTT but I feel like it would cement the strategy more generally if I knew how I'd tackle it without
nice
@plain mantle i think id rather learn piano quite honestly
Vs guitar?
Guitar is real fun
duolingo sells a learning piano
Guitar depends on your genre of choice
I knew a little guitar that my guitarist had taught me when I was in metal bands but I never really took off with it until I started listening to classic country stuff which is way easier to play, and then it was much easier to make progress
only issue is i have no room for a keyboard since my room is occupied by my huge drumset
They don't take much space
Guitar is kinda nice because you don't need electricity
Although its nice with electricity too
i see
DMB stuff is mostly acoustic no?
yeah but the amount of years theyve had a keyboard player is probably greater than the amount they havent
between Butch Taylor, Buddy Strong, and Peter Griesar
They had this song lead by piano rather than guitar and it was very good https://youtube.com/watch?v=VKle47R21Z8
stuff like this and chick corea make me sway towards keys
Yeah chick corea is sick
Have you ever listened to Emerson, Lake & Palmer?
Provided to YouTube by BMG Rights Management (UK) Limited
Tarkus (i. Eruption / ii. Stones of Years / iii. Iconoclast / iv. Mass / v. Manticore / vi. Battlefield / vii. Aquatarkus) (2012 - Remaster) · Emerson, Lake & Palmer
Tarkus
℗ 2012 Leadclass Limited under exclusive license to BMG Rights Management (UK) Limited
Released on: 1971-06-14
...
dont think i hve
Sick keyboards
I recognize this
but from where 🤔
oh we were talking about canada earlier? i saw this thing
I wonder how that’s laid out in memory
if it works it works
something i dont understand is people wanting their ecs components in continuous arrays for better cache hits
i imagine any task you perform on a single component would already be consuming the tiny amount of cache space?
The idea is not to perform an operation on a single component
What you wanna do is process a bunch of ents at once with the same type of component
do you have components that you only put on Luis?
A few, although they could theoretically go on any entity
Actually the main one is character_input_handler
but technically I suppose I could have that on multiple ents, if they sourced from different controllers
does the leviathan have components that only go on it?
Leviathan is multiple ents lol
It has the "boss" component, but that will go on others eventually
ECS systems iterate over every component in that view
So contiguity is definitely good for performance
I don't have a multi component rule, I'm using flecs to be the one place all my game play goes, I am fine to just have components that are just on one entity personally, I don't want to divide up gameplay code between flecs and non-flecs
that's the plan anyway idk
Its not a rule, but you are definetly gonna end up with tons of components that are attached to hundreds if not thousands of entities
such as transform, mesh, collider, etc
right
Yeah it's not a rule I have a number that are only attached to one
20% of your components will be on a large number of entities and the rest will only be on a few
But the big perf threats and wins happen on the numerous ones
@night shoal can you explain the grubbi nickname to me
is it like grubby but with an i for some reason? why?
Because German
its a short version of grubstomper, grubbi 🙂
i guess you could write it as grubby too but that is not as cool as grubbi
Let us begin
I need batch the cluster buffers per view
I realize I can do this really easily by duplicating each cluster sequentially for each view
so,
cluster0_view0, cluster0_view1, cluster1_view0, cluster1_view0
then the draw batcher will write those out to the various view indirect draw buffers
im not fully sure how to explain it but I think this interleaved layout could help performance too
each view will have its own indirect draw buffer
so the variance in atomic write targets could mean less locked threads in my theory
@spring kelp How do you determine the size of the meshlet batch output index buffers? I just statically set mine to however many indices the entire scene contains, but I imagine this scales very poorly
I would avoid writing out indices. It's pretty slow.
But also just hardcode the buffer size at startup.
Users of my bevy plugin have to specify the buffer size when adding the plugin
I see
is that not what you do?
I must now traverse the deepest depths of hell that is model.cpp
I don't do it anymore. Culling outputs a list of clusters to rasterize, and then:
- For hardware raster, I do a single indirect draw with 128 triangles * cluster count
- For software raster, it's an indirect dispatch with cluster count workgroups, 1 WG per cluster
I see
my laziness is a trait i must cull
get to work 
@plain mantle @kind sparrow i want what this guys having https://youtu.be/CTvlczJodrc?si=OeIFMahale7omuvL
S3RL - Feel the Melody
02-03-2025 (Lundi) 4h44h00 Pm,
0:00 Intro
0:28 Mother Soco Dance 12-27-2007
0:49 S3RL Feel the Melody
5:19 23 L-Sit Pull Ups
7:51 Practice Pad 11-18-2007
8:47 Practice Pad MC Mario Get Away
12:00 Mother Soco Tea Time
12:27 Training 02-03-2025 Rings - Dance Jump - Pull Ups
13:09 rings tra...
Lmao
I want those energy levels
maybe I need to switch up my exercise routine to include headstands
on a bare floor?
idk about this
oh he's using rings nm
I have rings
each view needs its own output IndirectDrawBuffer + ibo for opaque and blended
i dont think some array of arrays magic is the solution
or maybe it is :think:
theres no pointers and i dont see how i could dynamically point to an arbitrary ibo
so ig ill just have a single ibo with length numIndices * viewCount
wow I just mixed numFoo and fooCount in the same sentence
better than fooFoo and numCount
why does each view need its own buffer, what is a "view " in your engine?
Probably talking about culling
You basically need a separate draw buffer for each
Since two people looking in opposite directions are basically seeing different scenes
oh is this like a split screen coop?
per shadow cascade
I don't think so but e.g. shadow rendering or picture-in-picture or reflections have different viewpoints
I see, I think I would have one indirect buffer and use offsets per view I guess, I am already using a lot of offsets
but it's different in vk as we do have pointers
vulkan or not doesnt really matter methinks
I probably cvould do that
you just fill your indirect buffer per whatever is visible in the cascade, and cull it accordingly as if you render your world wiothout shadows
i forget if glDrawElementsIndirect has a buffer offset
pointers are really nice, renderdoc doesn't know what an index means, but it knows what a pointer is, so just even the better debugging experience is really nice
this is just implementation detail but you use it the same way
it's the difference between a number you don't know if it is right or not, vs you have direct knowledge in renderdoc that the connection is correct
there is probably some gl_Layer thing you can do as an optimization
Indirect buffers are cheap memory wise, they should be able to mostly refer to the same scene data
So it should be low overhead
lets all hold our horses here
I havent actually implemented the different output buffers, so all 5 views are attempting to atomicAdd to the same buffer which I imagine is the main bottleneck
Give each one a separate count
that is the plan
Don't you need to identify the segments of the buffer for different cameras anyways
That's why I don't write any
except for your systems and subsystems?
No I just don't have any classes in my project
No
Actually wait no I needed to make 3 or 4 because the Jolt engine uses interfaces, and I think I have one or two small container types that basically just wrap std::vector but beyond that no
Not in my engine or game code apart from physics
I call this C+ and it is what I do too
no classes
not a single one
I do put functions in my struct
they are basically all public member objects with no builtin raii or constructors/destructors/move/copy stuff
no inheritance, vtables all that stuff, you can still use templates
I think don't actually do this though, use classes
unless you have a good reason for not, which I am not sure there is one
it is working for me though for now
I think it is silly and the more I use C++ libraries with RAII the more I think I am missing out tbh
feels silly to constrain my C++ to like 10% of it what it offers
c pipi is just humunculus
I'm fully dedicated to C++ long term I have written so much code I am probably C++ for life now
so I need to get with the program
and you never use all the features of a language all at the same time at all times, you also dont have to use everything a language has to offer
yeah but like classes are foundational
classes are fine if you want to use them, they just come with a bit of glue you have to rember
I don't want to
but maybe I do
I am always so glad to have a type with RAII these days where I am like, oh that will just go out of scope
fml
sorry to spam your thread
its wild how frequent discord is spitting out updates over the past weeks
Just don't update, it's probably another silly UI update that offsets something for the exact amount of pixels needed for the eye to notice, but not for the brain to recognize
it's a rather nice new feature they added actually
click on a user and click the three dots
Ignoring, we don't need these half-measures.I just ban everybody
No I don't
But I do put STL types and stuff in them
So they're not completely C-style pod they're just rule of 0
If I didn't have the STL I'd wrote classes for containers, they're useful there
I just don't write containers myself in most cases
youre good
Hopefully one day we will be able to see your majestic code
The disappointment will be immeasurable
Imagine my disappointment when I found only one public sepples repo on your github
At least then I will have something to look at
and steal
Nothing I've written in recent years
My innovative shit architecture is nowhere public
lies
Hehe
I wouldn't make srs public
I doubt he will make it commercial with that amount of bikeshedding
on the contrary there may be opportunities for licensing to the DoD maybe someday imo with the goals and vision
Nah not gonna make it open source but dunno if it'll ever be commercial either
it's definitely valuable enough where I would opt not to
whereas Rosy is just a silly robot thingy
Those that hang out in these threads will occasionally see snippets of the codebase
I'm insulted, SRS is a bikeshed-free project 
fence.gif
Did you have to put down a basket with leaves and other flora to type this message?
Ok maybe we do a measured amount of bikeshedding
But nah most of that is just me thinking about the game while going for a walk at work at lunchtime or something
My "bikeshedding" is mostly allowing myself to develop certain game features deeper than they're needed at the present moment it's not stuff that I won't be using
this isn't really a bikeshed, which is when people spend a disproportinate amount of time focusing on trivial changes to a bikeshed because having an opinion on the nuclear reactor is too difficult, you're working on the reactor
Yeah good point
we actually like to talk about reactors
on this server we conflate it a little too much with decision paralysis
which is different
Me: overengineering the reactor to be insanely efficient and powerful
My boss: that's very cool, but you're a software engineer and I need you to make the website have this picture on it now
I refuse to have decision paralysis, I hate it. I will rather commit to the wrong choice than not make progress, and I think that has worked out for me. I hate it at work when decisions are revisited. No new information means we do not revisit the decision
Yeah I don't like it either
I just steam roll it
I let people have their last minute doubts, I just stick with the plan, we'll figure it out as we go
My architecture is pretty good in that regard too because there isn't like a structure to fit stuff into really you just add a new function call to main and then implement everything under the hood
my main is like 4 lines of code
In my limited experience of working on big codebases the hard part comes when the details are difficult to trace back to the core loop or other systems
I have a core loop, it's just not in main
If your main loop is just a sequence of system function calls it's pretty easy
Yeah I was sort of using main to refer to the core loop
in SDL main gets turned into a macro I think too, so it's not the real main
you don't get a main
Maybe I will make minimal_game public at some point
Or just add anyone who asks to read perms
Honestly that would probably be better anyway
Since it's more to the point and illustrative of the architecture
Rather than having to wade through 50,000 lines of SRS planetary foliage and procedural player controller and firearm crap
The hardest part will be being able to resist adding accurate parallax motion to the stars
SDL3 is using macros to cater for more weirderer platforms
but you dont have to go that way and still use the usual way of using sdl
why not?
Why not to which
not making it open source
Idk I'd just rather not
It's my precious IP
By not releasing it freely I can cope and say that it's worth $300,000 worth of my labor
And it contains a number of things that are only made possible from my irl expertise and domain knowledge that I'm hesitant to just make publicly available for free
Open source software is still licensed and its intention is not to reduce the value of your work. But I think the question “why not open source?” is inverted. You should have a compelling reason to.
so i should close source my projects so no one can know how bad the code is
its insane to me that this might actually be an an accurate estimate
Pretty accurate, I don't track the exact hours I've spent on the project anymore since it's gotten too long and irregular but it's been like 4 years probably 20-30h/wk so somewhere around there
20 hours a week on a personal project is insane
i cant wait to not have both school and work
truly an abomination
I do nothing else besides go to work and work on my projects
why
You have to make sacrifices 
When you get older your desire to play video games wanes a bit ime and you may find projects winning out as the activity of choice more
Savor the games while they last
ime it crashes hard
i hope so tbh
I don't even think it's a time preference thing, even if I could neet it up 24/7 I'd naturally just wanna do something else
except for Cave Story
I sadly go there but Its good you dont waste time playing games and do something productive
everyone can always make time for Cave Story
yeah I just waste time more broadly
especially you, @kind sparrow
Lmao
For me personally games are still quite compelling but I just generally don't feel like playing them over projects or yeah sometimes just screwing around aimlessly
When I do burn out on projects sometimes games rise to the top of my priorities again and then I'll take full advantage of it and binge them for a week or two
I never squander the urge to play games it's just not that common
These days I've been playing guitar as my screwing around filler
just accept the Cave Story plug; drop everything and get it (free!)
Someday lol
The game I was playing most recently was Noita since my brother got it for me for Christmas
I see
anyways I wonder if scientists can take quantum computers and make them develop dna sequences that create organisms with 1:1 dinosaur skeletons and other traits we know about them
Also for the last month I was binging BG3 at my friend's house so that fulfilled my gaming itch
Pick up sekiro next time it starts itching
nope cave story
I could also just play another 2000 hours of Arma
nahhh
@kind sparrow
do you still use a prefix for your class/struct data members?
like m_ or _
or is it useless if you don't have member functions
I used to although I've been not doing it recently
cool beans
I use a private namespace in cpp files for encapsulation
i should definitely use namespaces more
but im not sure what exactly warrants one
a namespace per subsystem?
I don't personally
Make them as broad as possible
Actually nvm I do use them like that
Because if each system has a function called "update" that takes the same args they need to be disambiguated
I just have these massive thousands of lines long anonymous namespaces one per each cpp file
where most of the code lives
and then anything outside of it is how anything else interfaces with the thing and is exposed in a tiny header
and that's how I get like a 5 second compile time with a 12K loc project
for a full build
13K now 
yeah
Hm
better than spamming "static" everywhere
Yeah
wow i forgot what static does for global/namespace vars
I hate my mentality of “dang I have no freetime” even though I played Minecraft for ~4 hours yesterday
I feel that, though I feel like you could call the real problem a lack of "high quality" time when you can actually force your brain to do thinky type stuff
i suppose
but i dont know why i would be low on that
school is easy and work is thoughtless
it still burns your energy and focus
i suppose
and i doubt the solution to that is to consume more and more short form content
this is also affecting my drum practice though, which imo is a lot worse because i need higher frequency to preserve progress
Lmao
were you really though
You got me
It is funny though although I'm not sure if I interpreted it correctly, is it about people that play the game rust
Not about the programming language right
honestly the rust shirt was just a throwaway inside joke and i never even thought of the creature being a rust player
Ah I see
i dont think walmart carries screen protectors for my phone anymore 😦
@plain mantle keyboard has been purchased
what did you get?
korg liano
i watched a few reviews and it seemed best for what i was willing to pay
and Butch Taylor used korg keys with dmb 😅
Looks pretty solid
yeah
i’m only disappointed in the lack of extra sounds
it has all the important stuff but i wont be able to make sax or fiddle noises
Seems like you could put more midi instruments onto it
Like demongod said, you can plug it into your computer and use VST plugins to make whatever sound you want
yeah I could
good vsts are like $100 tho
There are good free ones too, most of the VSTs I use are free
I use this one all over the place https://www.spitfireaudio.com/bbc-symphony-orchestra-discover
lost
lost ||the game?||
some of the best rice ive had was from a chinese takeout place
fried rices tend to be yellow but this was more brown and had a porky flavor
and it seemed to not have as many ingredients as most fried rice would
there were little bits of bacon-like pork, i forgot what thats called
i think the entire rice is called lap yuk rice
ah but i dont think any stores near me carry chinese bacon and it looks like a pain to make
红烧肉 
In my 4th year of uni we lived right next to a Sichuan restaurant and my roommate and I would go there like every day whenever school was out and we didn't have dining commons food
that must have been like paradise, food wise
Well I went to a farm school so all the dining commons food was grown/raised on campus so it was pretty lit
I take it you don't live in a big city?
pretty far from it yeah
all we have are major chains and an amish market 30 minutes away
Sounds like rural midwest alright
Maybe hes not far from me lol, @gilded shell which state?
nah its eastern shore Maryland
@plain mantle
im a little while away from canada lol
Oh I thought it was gonna be like ohio or michigan
Oh I thought you were from Ohio
lol why
Idk I thought you said so for some reason
i think weve had this exact conversation before
@kind sparrow you probably live in apalachia
He lives in the bay area, he's stated it multiple times lmao
Actual photo of demon's house
which bay
if its the chesapeake then ill drive to his house
@kind sparrow
California bay area lol
I'm surprised I haven't been kicked out for my fervent Canadian nationalism 
Can we not violate rule 8 here?
Bro has been evidently checked out
(i didnt find any good .eu adding .ca to the family jiff yet)
i do not know what this means
Jake this thread operates with so many layers of irony that nothing we say should be counted as serious
OBVIOUSLY canada couldnt be annexed as the 51st state
it would probably need to be annexed as 6 states 
Rule 8 exists for a reason, even if its a joke
Surely you've heard me talking about California in the context of talking to other server members in our threads that live nearby and/or in discussing local flora and/or discussing time zones and/or talking about the local economy and job market and/or travel times to various places etc
word, fair enough (to jake)
I had the idea you lived on the west coast
Not least to mention that the current SRS terrain is in my backyard
I'm just talking about us constantly talking about where we respectively live lol
But maybe you just haven't been around in those moments
Yes at first I thought you were making a joke about me not knowing where you live lol
Who tf here lives in Ohio then
Perhaps
I am writing a short comic series
UPS vs China Post
They’re fighting a battle over an ancient cardboard factory that would help them smuggle things past customs
i was originally trying to show the battle in a neutral stance but I think I’m going to make the UPS soldiers the heroes by having them defy orders and try to instead destroy the factory
in other news I’m very good at calculus
if cs fails im not opposed to something like engineering
Engineering is harder than CS tbh although I guess it may be true that they're in more limited supply than programmers
It's harder to skate through and be good enough without trying than it is with programming
Yeah for sure
I just wouldn't consider it a backup plan haha it's like considering graphics programming a backup plan to web development
But yeah it's an alternative
well yeah obviously ill need another 2-6 years of college if i go down that line
are there other well paying calculus jobs?
Finance?
yeah i imagined something related to that
but arent those the jobs you use excel all day?
yeah i know absolutely nothing about finance
i hope its neither corporate hell or immoral
i wonder if “or” or “nor” is more correct there
neither or vs either nor, no? 🙂
You use excel all day as an engineer too lol
Well ok that's an exaggeration but very few jobs have you doing calculus manually
I use excel every once in while as a programmer too
yeah finance is literally
expectation: fancy statistical calculus, phd level 27d thinking
reality: make sure the excel report is correct enough that the government isn't mad
that being said I work at a bank not a hedge fund or anything so I assume quants have a little more fun
for them it's jupyter notebooks and playing with graphs, I guess
it's not really "immoral", that stuff has been stripped long before you touch anything with calculus, finance is basically using stats to cheat your way out of the consequences of your actions using the law of large numbers
if you want immoral, get a job where you actually sell people auto loans
If you have high standards for morality your job options go way way down
Just in general
Most big tech type jobs that employ most of the programmers are pretty immoral
and if you want your job to be fulfilling and useful
finance certainly ain't it
that being said I would certainly want more people to struggle through finance with me because it's pretty much the antithesis of what's easy for programmer nerds like us to learn, at least people like me
it's a dry, formless, boring blob of questionably useful and questionably true factoids and formulas
Plenty of immoral jobs available as a programmer/engineer
i think so
thanks for the advice guys
in further news my left elbow has a pinching feeling when i twist it certain ways and aches when i push my hand hard against something
i think ill take a week off from lifting
especially since i turn 18 next week 🙂
joint pain before 18 is bonkers
I'm so glad it's called drawIndirect and not indirectDraw
drawIndirect sounds a lot cooler for some reason
anyways I'm now using an drawBuffer per view and I'm still not impressed with performance
what an inconvinient time for NSight to stop working 😦
something about asan .dll missing
yeah no performance improvement at all actually so i need to get nsight working and see whats wrong
either its bugged and im still somehow atomicAdding to the same var or theres another perf bottleneck somewhere
possible that you also dont put an actual load on the gpu
try rendering bistro 100 times or something, with lights and shadows
and your meshlet thing
Are you running your app from the right directory?
You can set that in nsight
good question 😅
3000 trading cards
im never buying celeste
alright I set the correct wd for nsight and now my app seems to crash immediately before nsight can attach
its very convinient that the console closes within a ms of opening, to save me the trouble of having to read any useful debug output
it seems like that address sanitizer .dll can't be found
this also happens when i launch the exe outside of visual studio
i think ill add a custom step to output it to the exe folder
I just have to figure out where its source is
this might be useful but im not sure what it means
thats part of MSBuild
Microsoft.CppCommon.targets
thats a custom target you can execute before/after just like you set there
<Target Name="AddAsanBinariesToCopy"
Condition="'$(EnableASAN)' == 'true' and '$(CopyAsanBinariesToOutDir)' == 'true'">
<PropertyGroup>
<ASANExecutablePath Condition="'$(PlatformTarget)' == 'x86'">$(VC_ExecutablePath_x86_x86)</ASANExecutablePath>
<ASANExecutablePath Condition="'$(PlatformTarget)' == 'x64'">$(VC_ExecutablePath_x86_x64)</ASANExecutablePath>
<ASANExecutableFileName Condition="'$(UseDebugLibraries)' == 'true'">clang_rt.asan_dbg_dynamic-$(LlvmPlatformName).dll</ASANExecutableFileName>
<ASANExecutableFileName Condition="'$(UseDebugLibraries)' != 'true'">clang_rt.asan_dynamic-$(LlvmPlatformName).dll</ASANExecutableFileName>
</PropertyGroup>
<ItemGroup>
<CopyFileToFolders Include="$(ASANExecutablePath)\$(ASANExecutableFileName)" />
</ItemGroup>
</Target>
<PropertyGroup Condition="'$(EnableASAN)' == 'true' and '$(CopyAsanBinariesToOutDir)' == 'true'">
<PrepareForBuildDependsOn>AddAsanBinariesToCopy;$(PrepareForBuildDependsOn)</PrepareForBuildDependsOn>
</PropertyGroup>
@gilded shell do you see this?
no lol
asan is on
didnt the visual studio properties page have a search bar? why cant i find it
yeah then you can set it in the project file
<PropertyGroup>
...
<EnableAsan>true</EnableAsan>
<CopyAsanBinariesToOutDir>true</CopyAsanBinariesToOutDir>
...
</PropertyGroup>
inside your vcxproj
microsoft once again demonstrates their ability to create useless gui
I have to add that manually to each build config? sick
or wait I can probably do it for all debug builds
yes and you can add Condition="..."
yeah
heres the keyboard stand i just bought
we might be going desktop lol
or bedtop or what have you
@plain mantle you see this horror
It wobbles?
oof
ill see if i can fix it
does it maybe just need some screws to be tightened?
this is the garbage inside that you need to tighten it to
.
it just comes out whenever i tighten it
does the thread even bite?
yeah
this piece not staying in causes the wobbling and eventual falling over
maybe you can drill a bigger hole and thread it with a bigger diameter
M3 or M4
with a proper screw
and how was it solved?
my father saying we'll figure it out
hmm
dont turn this into a random stackoverflow thing where a response, made by an account solely created for that purpose, is saying "i fixed it" 😄
well technically its not fixed yet
id rather turn asan off than deal with this
anyways heres what my indirect draw buffers look like
i think this is expected
but those counts look rediculously high
heres the scene ill try next
11 cubes (one is inside the solid green one)
12 triangles each
thats 132 triangles or 396 indices
hmmm
thats a bit low
im not doing any backface culling
ohhh these are opaque indices
5 cubes is 180 indices checks out
alignment issue perhaps
nah everything seems in working order
how come they all start at index 0?
oh so those are the indirect calls without "expanding" to see the individual draws
what are the 5 buffers for ?
one for each view
theyll be different once I get per-view culling
shadow cascade/point light shadow
alright @plain mantle @night shoal the piano stand solution is that im getting refunded and then buying a better one
a Z shaped one
i also got a double pedal for my kick drum
thats a big learning curve
yeah
@kind sparrow im also figuring out double pedal kick drum playing
something thats going to be challenging to me will be controlling the hi hat and kick at the same time
im think i can keep a heel on the hats and use my toes on the kick
or i can use bridging if im using the hats to mark time while im on the ride
You don't control both at the same time usually
carter beauford does somehow
Carter Beauford from the Dave Mathews Band in the studio recording the drums to Tripping Billies. From his dvd "Under the Table and Drumming". Great dvd, check it out http://www.amazon.com/Alfred-Carter-Beauford-Under-Drumming/dp/0757990894
I do not own any rights, go buy the dvd! ;)
okay hes not controlling them at the same time but he is controlling them real close together
for that short lick
You definitely want them side by side so that you can switch back and forth if necessary
yeah for sure
But the switch is probably just a question of practice
yeah that switch is so smooth here
i also gotta somehow keep the hats closed while double pedaling
https://youtu.be/E2zpoIlEasY?si=NFnyarFkUbTB189V like at 0:35
Carter Beauford playing #41 in the studio for his video "Under The Table and Drumming".
For those asking about his kit, you can find a full diagram and detailed listing of his gear here: http://www.beaufordbuddy.com/cb_drum_kit.htm
You can get a latch for it
I forget how I set it up
I never really played with it open
Here's a picture of it I can't really tell if it's set or not though
It looks like it's not
It's possible I had it set so that when the clutch was open the hat didn't close all the way (just by setting the spacers inside)
although that seems like then it wouldn't close even with the pedal down
I forget tbh
But generally I never touched the pedal since I just wanted it slightly open so that it sounded good when hit without touching the pedal
whats this from?
Old video of a show
oh okay
I should have recorded myself more when playing at my prime I have very little footage of it
man piano posture is complicated
im just now learning how raise my arms to the keyboard
I never really learned that stuff lol just press the keys
I learned how to hold my hands but other than that it's just back straight and keep your chair adjusted right
back when I took piano lessons I heard all kinds of claims that pianists didn't get carpal tunnel supposedly because of their perfect form
i am taking my time because that was sort of my approach to drumming: just swing the sticks
lo and behold it ended up being much more complex and i had to relearn a lot of stuff
i think on saturday im gonna force myself to code for many hours
progress must be made on this project
i genuinely thought for years that you couldnt
i wonder if i should do that with parenthesis and brakets too
You can configure most everything you could ever want in VS
unless you want to copy asan binaries to the build, then you need to manually modify the vxcproj thing
didnt we go through that a week ago?
with this shtuff?
yeah i was too lazy to do it so i just turn it off and complain
i think i wanna do another sandbox type project before hoa
i want to experiment with curves and tessellation as a lod solution
or 2d
