#Andromeda - Terrain/Landscape editor using Vulkan and Rust
6580 messages Β· Page 7 of 7 (latest)
i think its not used much in the library though anymore, maybe only for the examples
I guess tbh i should expect a lot of crates but man i don't like having a lot of external crates
idfk why it makes my project feel bloated
the thing in rust is you dont want to reinvent what crates already do
ya true
also they dont get recompiled until you update them
but there's just extra baggage that i just don't need
but you're right don't redo the wheel
which is why im a professional wheel maker π
tbh phobos doesnt depend on a whole lot
i can get rid of layout-rs I think
let me do that actually
rayon is only for integrating with rayon if youre also using rayon
ash, ash-window - obviously required
raw-window-handle - interop with other windowing libraries
gpu-allocator - like VMA
derivative - derive Debug while ignoring fields, this is a proc macro so not included in the final result
futures - almost everything will depend on this eventually
petgraph - graph used in the internal representation of the render graph
winit - integration with winit is provided, but can be disabled
anyhow, thiserror - any project will have these
spv-cross - shader reflection
log - logging, most projects will have this one way or another
rayon - optional rayon integration if you are using rayon
static_assertions - tiny macro lib, though I dont think im using this anymore
fsr2-sys - FSR2, optional
widestring - wide strings for fs2, only enabled with fsr2 on
multimap - used in the pool, its just a HashMap<K, Vec<V>> but with some utilities
i dont see much room for removing dependencies here
i see
i do also want to minimize them though, its not like i just throw new ones in for no reason
The best part of rust π
I've only completed chapter 9
shhh
chapter 10 is traits, lifetimes, and probably what makes rust rust
Probably then yeah
god i need to relearn the fundementals ive kinda been winging it 
praying that rust lang book will teach me those

Btw mr penguin
Can I employ you to implement VK_EXT_mesh_shader support in renderdoc
("no" is not in the domain of acceptable answers)
π

I gotta implement RT first
But baldurk scares me
Does nsight not have mesh shader support
No π
unless it's changed no
I believe baldurk said he would accept contributions for RT support
Working happily with OpenGL
Ive been considering working on it but itβs a huge task
bro doesn't have to deal with vulkan that means less pain
(i fear vulkan like idfk what im doing dawg)
Then I realize that RenderDoc doesn't support anything, switch over to Vulkan, and it still doesn't support anything
Life is cruel
so Lvstri-debugger when
Doesnβt even support dynamicstate3 btw
Whenever I get paid to do it 
hehe
dynamicstate3?
Extended dynamic state
The ext that makes VkDynamicState less garbage
what was dynamicstate2 then?
Also more dynamic states
Less garbage, but to a lesser degree
ill pretend to understand what you guys said
its been so long since i used vulkan by itself i've been too vuk and phobos pilled
3 > 2 I think
i hope vb finishes his dynamic stateisms in vkguide
3 adds a lot but theyβre all optional lol
yes
I need the guide
vblanco hurry pls
i remember doing vkguide i probably should've extended the renderer π
profiles + dynamic state
What is pretty_env_logger?
log doesnβt actually write any output, it just records logs
That crate takes the output and prints it to stdout in a nice format
Ohh alright
I think
I got a basic implementation (i yoinked and twisted from examples)
how would i uh
actually run it
is there code in phobos showing how the examples are ran?
Tbh I like fern more
Allows me to log to a file as well
Which allows me to do this
Just a few files tehe >.<

WOOO
I GOT IT FUCKING WORKING
WOOOOO
WOOOOOOOOOOH
LETS GOOOOOO
YEAHHHHHHHHHHH
now i need to figure out what i did 
antyways on my c++ project i am getting linker errors
this is supposed to be the part where i give up i think
wtf im supposed to move all my function definitions from my .hpp to my .cpp for template classes?
no
yes
no
the reason is that you cannot instantiate a template without seeing its definition
you get a linker error because the code for that instantiation hasn't been generated
ohh that makes sense
you can manually create instantiations of the template, which allows you to define the template function in a file, but it kinda goes against the point of templates in the first place (being generic)
because you have to place the manual instantiations somewhere that can see the full definition of the template (probably in the cpp file where it's defined)
no, it's only 11pm
2 in canada est
i should sleep
but i got my cpp ray tracer's handle and asset system working
the moment i started putting my template classes' methods in my headers the ide started giving me errors and i was no longer doing wild goose chases

Yeah but the thing I want to return isnβt the thing inside the lock, it just refers to it
Like, the lock is on a hashmap and I want to return an entry in the map
dashmap
and if you use parking lot there's a way to map lock guards
Hmm I might look into that

100% safe
also (shameless π warning)
may i interest you in my heightmap compression library
That looks interesting
Why
When I was loading Moana Island, I was pondering upon my decision to load it while painfully aware that there was no streaming system and that it would crash
import gltf into your own format that can be directly mmaped and copied to the GPU
that's as fast as you're gonna get
Sadly not, but the gltf crate seems relatively good
otherwise i doubt the cost of parsing gltf is gonna be more than the rest of the processing you do
gltf is a meh runtime format
yeah i should put numbers in the readme, i forgor π
compare lets you compare multiple algorithms on a local file tho
you should really put a comparison yeah 
i have that, but in the wip research paper lol
yyyy/MM/yyyy-MM-dd.log even better π
Lol
GLTF has been working pretty fine for me
The only problem with my implementation is that my meshes are pretty naively implemented (just store a buffer for each vertex attribute) so it creates a lot of buffers when loading lot's of meshes
That's not really related to the crate though
oops
also played a little today again
restarted my lastweekends world, but still fuck up transition green to red circuits π
need to work on that
and then its pure spaghetti with blue circuits and electromotors
thats where i quit heh
factorio trains changing their schedule to the exact nanosecond you step on the track to run you over
π
i have no trains in that new world
well, i lied, i keep having 4 locomotives and a bunch of tank waggons in my pockets for quite some time, but have not built any tracks
monkey island kind of pockets π
i uh
rushed trains really hard this time
I just finished setting up the basic train net even before getting blue science
i played that train signal tutorial in between, but havent understood a thing lol, need to exercise that a little
The middle is the tiny starter factory I made to automate some supplies
Rail signals are tricky at the start but once you get the idea its super simple
Lots of ores, thats pretty nice
I have not been blessed with that on my island map
hehe i havethis funny circle thing for research
Already have one cargo ship line to another island for iron
I might have to set up another one soon
ah
Yeah
i rember now
I had another save but I started over
the factory must grow
inshallah the factory will grow
whenever i play factorio, i want to make something similar or at least try some
then i quit factorio
These ships do look kinda cool
and dont want to do anytthing anymore
uh sweet indeed
The mod also adds offshore oil so that's next on my list
the art is incredible as well, whole of factorio
Yeah, true
better job than all the other factorio clones
π
Easy fix
That red signal on the right should be a chain signal I think
worf a try
not in phobos anymore
i use it to compile the shaders for the examples
but i use hlsl so i dont actively use it anymore
do you happen to have any idea why shaderc refuses to accept CRLF files
../shaders/0.1/final.frag:78: error: '' : unexpected token
../shaders/0.1/final.frag:78: error: '' : unexpected token
../shaders/0.1/final.frag:78: error: '' : unexpected token
../shaders/0.1/final.frag:78: error: '' : unexpected token```
ignore the first one

zamn everyone is switching over to hlsl
Is it that much better?
it is quite nice
I don't understand how you live without BDA pengu

This is so good
Instead of set = 0, binding = 0; set = 0, binding = 1; set = 0, binding = 2 ..
Oh does phobos not have device adress automatically for buffers? vuk you could get your buffer then just do .buffer_address
you can do that in phobos too
ohh ok
Oh yeah does phobos have a way to reuse synchronization or am I architecturing / understanding it wrong?
Because when I make my BLAS / TLAS some of them may refer to different buffers so I would need to create a seperate pass to sync it but sometimes those passes may be reused between BLASes
wdym?
like just write your current code and what you dont like about it
oh nono im just asking curiosity cuz im running into the same-ish issue in vuk so im wondering if phobos has a way around it
i can send vuk code if oyu want. it's gonna be horrible
i mean you could just give it all the buffers youre going to use in a single pass and then call all the build cmds
oml i could 

i assumed that passing in the buffers would mean it would only use those buffers
i forgor we set up the buffer targets for a reason in the build infos

thank you penguin

abusing my power to pin stuff in others' people's stuff, so that i will find it again

sorry not sorry xD
flexing off his glsl setup
"pic goes hard feel free to take a pic" 
wait hold on
rebuild how tf would I handle that?
i'd need those buffers again but i cant attach them since i moved them
vuk
no idea
std::ref to the rescue 
probably not intended whatsoever
i cant find a way for reuse to happen
i find it strange binding a buffer would force you to move it
C++ moment
Getting there :)
: )
im at 241 already 
const restrict uint[] primitive_index = uint[](
uint(primitive_ptr.data[primitive_offset + primitive_id * 3 + 0]),
uint(primitive_ptr.data[primitive_offset + primitive_id * 3 + 1]),
uint(primitive_ptr.data[primitive_offset + primitive_id * 3 + 2]));
const restrict vertex_format_t[] vertices = vertex_format_t[](
vertex_ptr.data[vertex_offset + index_ptr.data[index_offset + primitive_index[0]]],
vertex_ptr.data[vertex_offset + index_ptr.data[index_offset + primitive_index[1]]],
vertex_ptr.data[vertex_offset + index_ptr.data[index_offset + primitive_index[2]]]);
const restrict mat4 transform = transform_ptr.data[group_id];``` I heard you guys like indirection
arr1[arr2[arr3[0]]] is 2 layers of indirection
xD
i remember some discussion back in IRC, people made fun of a finnish guy who pretty much just used void* for everything
and few places it was void** and void***
really strange guy
generiks β’οΈ
it wasnt neure btw π
neure writes good code
hes also a cool dude

are you implying void*** isn't good code?
if you claim you write proper c++
I know this might sound like speculation but... I think my app might be GPU bottlenecked
Are you guys all using Andromeda or something
It feels like there're three people who post about their projects here π
ill uhh make a project post later
Andromeda is a refugee camp
Yea... same
Ahem
TERRAIN I LOVE TERRAIN!! RAHHHHHHH π¦
π¦
π¦
π¦
π¦
π¦
I mean my project is somewhat related to terrain dev lel
(it kinda is a terrain generator ngl)
andromeda and co
ok so
phobo'ing time
now we finally become relevant
to the project π
Hmmmm does rust have an equivalent of handles?
Nope but there's crate that handle (no pun intended) that for you
I decided to roll my own type of handle/manager just for funsies but it's not really that hard
Just an ID and a centralized struct that contains a vec of objects associated with the IDs
Yes this is the terrain dev channel now
phobos channel when
TERRAIN IS AWESOME

Meranwhile me reading paper after paper π
Oml there is
Ahh I should make my own project post but there isnβt anything to show for it ππ
I LOVE TRYING TO COMPRESS IT AND FIT IT ON DISK
which reminds me, i should try implementing the ideas i've got
to see if they actually don't suck
I LOVE TRYING TO FIT 64KM^2 TERRAIN ON DISK WITH LODS AT 0.25M ACCURACY
LET'S MAKE UNREASONABLY BIG GAMES 
i'm trying to ship the earth with 1200^2, 400^2, and 100^2 LODs in as small as a size i can get
it's like 12 gb rn 
what's the accuracy?
If you want it super accurate you will hit lots of walls with different projections and different DEM accuracies
also bathymetry data is hard to come by at good resolutions
heh like i said, yall should merge into one thing
that would be too simple
almost as if we could create something meaningful when we do that
we don't do that here though 
each tile (1200, 400, 100) is 1x1 degree
it's not very accurate
it's for a top-down map, not even 3d lol
I see
well for top down accuracy can be a bit "worse"
100 is pretty large though
I've found some DEMs at 0.25
yeah the 100x100 tiles are for a 1200 nm map range 

hehe i know π
@shadow trench how terrain editor going
why
its just very hard
doubt it's harder than staying on one project
behold my abomination
reminds me of Dosh's train cart hack π
its inspired by exactly that yeah
you haven't seen my cmakelists.txt yet, this is no abomination

yeah his videos are great
βYes this is the terrain dev channel nowβ - NotAPenguin
and factorio
Literally what happened through development lol
Most of these were results of "yo shit lemme try if this works" and not cleaning up things afterwards
Now I have 3 structs like that all over my terrain crate lul
that is a good way of developing π
Well it moves you forward
just need to know at some point you might wanna do some cleaning up even if just for readability
yeah refactoring can happen after you get it to work
Right yea
yes but a lot of people clean up their code before they know what they need or what works
very bad habit in this discord from what i've seen
I always code things 2-3 times to actually understand how they work and then I rewrite for readability
that was me until a few months ago
now I implement stuff
and when I notice that the interface sucks too much for what I want to accomplish I refactor
i am once again suggesting that relying on normals in a program where you edit terrain with brushes feels odd to me
#wip message
How so?
custom-normals are primarily useful when you have a higher resolution mesh that you are trying to decimate
without the higher resolution source, you can't really modify that unless you reconstruct it
Right yea
I thought you were talking about like... normal normals that are stored per vertex
Cause I don't think you can do lighting without those lol
yeah just automatically generated ones that smooth out the surface aren't goin away
Yep
i actually don't even understand the supposed benefit of custom normals anyways, shouldn't it require more data than just storing the heightmap would? i guess if your heightmap is like 32 bit and your normal channels are 8?
idr who was using them though π
Right yea
Iirc voxel plugin (for ue4) uses axis aligned normal maps only for chunks that are lower LOD
using it for LODs makes sense
i think jake is just figuring out the autogenned ones there so it's not a relevant example
Oh I see I see
holy shit you made some progress on your renderer
wdym that is not your renderer
Obviously
nah it definitely is
they spent the last week renderdocing 24/7
source: I'm in the walls
i could hear the 'holy fuck why does this work in renderdoc but not outside'
norway
its quite nice, first time visiting

spanning from near the north pole to near the south pole 
Ah so pretty southern
we landed in bergen and then drove like 4 hours
I definitely want to be on the Island Senja once, be at the Nordkapp and on Svalbard π
But also taking the Oslo-Bergen train for the scenery alone
Unironically as well - Norway's landscape is kinda an inspiration for me to do terrain stuff 
Its so nice, never really seen anything like this
The water is great
A friend of me is going to study in Trondheim the coming semester

maybe you can go there too some day
I hope
If you can go there I've heard Jotunheimen is pretty nice
I want to work on my engine but at the same time I just want to sleep 
true
I mean they have Svalbard which is pretty close to the North Pole and they have Bouvet Island which is close to the South Pole
Bouvet Island:
Estimate

Norwegian administration of the island is handled by the Polar Affairs Department of the Ministry of Justice and the Police
what
they own the poles confirmed
Huh lol
Damn you even got real-time erosion working on terrain props? Awesome
yesyes
realtime
in terms of time required for the simulation to finish
Scaled a glacier today
Definitely donβt pass up on that if you ever get the chznce
Terrain looking good
Making rapid progress yesyes
will multiply a glacier by some scale matrix when I get the chance, got it

Revive before thread gets archived lol
im back from vacation this week so maybe I can finally resume work on this soon
goodluck!! may the pixels be with you

welcome back from the middle of your renderer
I LOVE TERRAIN!!11
I LOVE IGNEIOUS ROCKS π£οΈ
Tbh I don't mind terrain gen / terrain rendering is the sole reason I got into GP
not yet
im doing some student work for my uni all day and webdev is frustrating
i thought typescript wasnt as bad
but no
["1"] + "1" = 11
I really want to get into webdev to make simple sites like your blog but there's so many frameworks idk which one to pick
Frameworks 
just use jekyll if you want a blog
you simply write markdown and it does the rest
Oh sweet
Maybe need some minimal html knowledge but that's about it
Very minimal
Yea as long as I don't have to learn a whole js framework to do a simple thing I'm good
definitely not
I have become centerer, destroyer of css
Are you Dutch
I don't think he is from red dead redemption 2 unless dutch had a secret css hobby
yes
Dutch is also in RDR1
Ah so you potentially speak 4 langs 

indeed

i see that this chat was opened again π
@shadow trench possible ressurrection? :^)

I'm working on other things nowadays, but it's not like I'll never go back to graphics
wish that were me
currently procrastinating from work where i have to write some allocator bullshit by scrolling through discord
sounds annoying
at least it's graphics adjacent
suffering in mysql
this aint graphics adjacent
this is cold hard dirty straight graphics
fortunately no mysql or web or any of that though yeah
am not dead
i passed exams so i will get a topic assigned for my master thesis in a week or so
very hopefully computer graphics related
in which case ill probably be here a lot :)
wait you don't pick your thesis?
whattt
i would hope itβs just the general topic that it needs to cover?
You submit a list of 7 from a large set of like 250
And then you get one assigned
Somewhat, thereβs definitely freedom to deviate a bit within the topic
My first choice is working on something related to this paper https://rgl.epfl.ch/publications/Vicini2021NonExponential
We introduce a novel transmittance model to improve the volumetric representation of 3D scenes. The model can represent opaque surfaces in the volumetric light transport framework. Volumetric representations are useful for complex scenes, and become increasingly popular for level of detail and sc ...
The other two graphics topics that were available were something on path guiding and something about tiling algorithms, but this is definitely my top choice
Got my top choice assigned 



