#Andromeda - Terrain/Landscape editor using Vulkan and Rust

1 messages · Page 5 of 1

shadow trench
#
fence.with_cleanup(move || {
    // Take ownership of every resource inside the submit batch, to delete it afterwards
    let _pool = self.local_pool;
    for mut submit in self.submits {
        unsafe {
            submit.cmd.delete(self.exec.clone()).unwrap();
        }
    }
})
#

This is attached to the submit's fence when calling SubmitBatch::finish()

nimble solar
#

Can you speak C++

shadow trench
#

sure kekw

#
fence.add_cleanup_fn([_pool = std::move(this->pool), submits = std::move(this->submits)]() {
  for (auto& submit : submits) {
    submit.cmd.delete_now(...);
  }
  // _pool goes out of scope and is released here
});
nimble solar
#
// render loop
{
  // wait for frame's fence
  vkWaitForFences();
  vkResetFences();
  fence.clean_up_all_the_resources_used();
  auto ubo = local_pool.allocate_ubo();
  // record commands (uses ubo)
  vkQueueSubmit(queue, {
    commands, ...
  }, fence);
  fence.add_dependent_resource(ubo);
}```
shadow trench
#

Except that final line, yes

#

Well, implicitly

#
{
  fences[cur_frame].wait_and_call_cleanup();
  
  local_pool = LocalPool(global_pool);
  auto ubo = local_pool.allocate_ubo();
  auto submits = SubmitBatch(...);
  submits.add_cmd(VkCommandBuffer, ...);
  fences[cur_frame] = submits.finish(local_pool);
}
#

the submit batch takes care of creating the fence properly and whatnot

nimble solar
#

What's new fence

shadow trench
#

each frame in flight has its own fence associated with it so you can have some overlap

#

so more like fences[cur_frame] really

nimble solar
#

Now it's good

shadow trench
nimble solar
#

What if it's not in a frame though

shadow trench
#

Then you need to keep the local pool in scope yourself

#

Either attach it to the fence manually or wait on the fence before destroying it

nimble solar
#

Hmm

#

I don't like manual things

shadow trench
#

yeh me neither

#

but most of those cases you'll have something like

#
void async_thread_task() {
  // record commands
  auto pool = LocalPool ...;

  auto fence = submit(commands);
  fence.wait(); // now we block
}
#

and then its not an issue since the pool is kept in scope long enough

nimble solar
#
{
  auto huge_buffer = local_pool.allocate();
  auto desc_set = allocate_desc_set();
  desc_set.bind(huge_buffer);
  auto command = CommandCompiler();
  command.bind_desc_set(desc_set);
  auto cmd_buf = command.compile();
  auto fence = queue.submit(cmd_buf);
  // ~fence(); will wait for the thing and kill the thingies
}```
#

I had this in mind

#

But I have no idea how viable it is, I guess the only way is to try

shadow trench
#

its possible

#

but what i dont like about this is the implicit blocking wait

#

Something potentially expensive such as blocking while the gpu waits can imo never be implicit

nimble solar
#

Hmm

#

That's true

shadow trench
#

oh btw, binding descriptor sets is entirely transparent for me

#

i bind them directly in the command buffer

nimble solar
#

🤔

#

How does that work?

shadow trench
#
cmd.bind_uniform_buffer(0, 0, buffer);
#

black magic

#

no uh

#

it tracks all bindigns until draw or dispatch is called

#

then looks that info up in a hashmap

#

returns descriptor if exists, allocates new one otherwise

nimble solar
#

What's the condition for the descriptor set existing?

#

A descriptor set with all the bindings already specified in a previous frame?

shadow trench
#

yes

#

this works especially well with bindless because you have few truly unique descriptor sets

nimble solar
#

What about stale bindings

shadow trench
#

i keep track of when the last usage was

#

if its >= n frames -> delete

#

i might pool those back into a new pool and re-use them instead of allocating but its not a problem for now

nimble solar
#

So each descriptor set has it's own frame timer or something?

shadow trench
#

yeah

nimble solar
#

Or do they all share the same frame timer

shadow trench
#

thats all internal to the cache

#

its shrimply

template<typename R>
struct CacheEntry {
  size_t ttl;
  R resource;
  bool persistent;
}
nimble solar
#

🤔

#
// has the hash map used for all desc sets
auto desc_pool = allocate_desc_pool();
// render loop
{
  // make many desc sets...
  auto desc_sets = vector {
    desc_pool.allocate_thing(main_frame_timer),
    desc_pool.allocate_thing(main_frame_timer),
    ...
  };
  main_frame_timer.tick();
}```
shadow trench
#

yeah its updated once every frame with next_frame

#

wait

#

its more like

nimble solar
#

Do I need two hash maps?

#

One for which descriptor bindnigs belong to descriptor sets

#

And another for the actual resources bound?

shadow trench
#

no, those are together

#

the hashmap is a little like

#
struct DescriptorBinding {
  uint32_t binding;
  ResourceBinding resource; // a union or whatever
}

unordered_map<DescriptorBinding, CacheEntry<DescriptorSet>> cache;
#

(yes i have hundreds of lines of code describing how to hash stuff)

nimble solar
#

I am conchfused

shadow trench
#

the exact same logic is also applied to pipelines btw, to create them on the fly once renderpass info is known

nimble solar
#

Why is there a 1 to 1 mapping of descriptor sets and bindings?

#

One desc set has many bindings right?

shadow trench
#

oh wait

#

that should be a vector<DescriptorBinding>

#

my bad

nimble solar
#

Hmm...........

shadow trench
#

🐸

shadow trench
#

To #1027528776717975592!

nimble solar
#

How do you keep track of which bindings have been bound (and which are new)?

#

You create a whole new desc set right?

shadow trench
#

the command buffer keeps a list of these DescriptorBindings

#

yeah theres no partial invalidation going on now

nimble solar
#

Makes sense

shadow trench
#

I can implement it but im lazy and if you use bindless its kinda useless anyway

nimble solar
#

Yeah, partial invalidation is a lot of extra work for nothing I think

shadow trench
#

and then i need to look up the exact rules on descriptor set disturbing

nimble solar
#

This way you just have the ttl of the desc set as a whole

shadow trench
#

yeah

#

on each access its reset obviously

#

so if you use it every frame itll never be deleted

nimble solar
#

Reset?

#

Ah right

#

yes

shadow trench
#
pub struct InFlightContext {
    /// The current frame's swapchain image
    pub swapchain_image: Option<ImageView>,
    /// The current frame's swapchain image index
    pub swapchain_image_index: Option<usize>,
    pub(crate) wait_semaphore: Option<Arc<Semaphore>>,
    pub(crate) signal_semaphore: Option<Arc<Semaphore>>,
}

i would love to delete this struct

nimble solar
#

Is this good enough?

shadow trench
#

oh yeah thats nice

#

much smoother

shadow trench
#

the present system thingy gives that to the command recorder stuff to do all the proper frame sync and know what swapchain image we have rn

#

but its ugly

#

it used to also fullfill the part of LocalPool but thats been ripped out now because it doesnt play well with out of frame submits

#

and i dont like inconsistency between submitting/recording in a frame and on a background thread

nimble solar
#

Wait

#

🤔

#

swapchain index? Not frame index?

shadow trench
#

i used to "fix" this by allowing creating 'fake' InFlightContext structs where those optional fields are empty

shadow trench
#

because its kept alive as long as needed, theres no way to accidentally overlap access

nimble solar
#

What about per frame resources? How do you index into these?

shadow trench
#

they have to be allocated through a local pool

nimble solar
#

Ah yes I see now

#

Thanks, I have gained a lot of insight and brain mass

shadow trench
#

anything to slowly convert the opengl frogs to vulkan

shadow trench
#

I have an idea to make this completely transparent but I don’t know if it’s a good one

#

I can stuff the local pool inside the command buffer and delete it together with it

#

That way you’d have to allocate through the command buffer instead

#

It already has all the information passed to it to construct a local pool anyway

#

But I’m not sure I like that a lot

#

The upside is you never have to worry about keeping the local pool alive

young oar
#

Hey at least you got accepted to uoft

#

I have no idea when to start submitting my uni submissions

shadow trench
#

Look at all these younglings still in high school

young oar
#

Lol

#

Hey man I just turned 17 I'm a big boy now!!11!1

shadow trench
young oar
#

Also question about your terrain

#

How do you handle edits/brushes exactly?

#

Do you just read back the heights and then modify them by some delta (based on brush size/weight?)

#

I'm working on an octree voxel terrain ATM and I'm about to implement terrain edits and unfortunately I can have persistent voxel data because of the octree so I have to find a different way to handle terrain edits (maybe using CSG ops) instead of brushes

shadow trench
#

I create a cmd buf with the compute submit for the edit and add that to the current frame’s submit call

young oar
#

Yea makes sense

shadow trench
#

Reading back height data would introduce too much delay I think

#

Plus you’d need to double buffer it

young oar
#

Yep

#

I'm gonna do my edits using compute as well since my voxel texture only persists for one frame anyways

shadow trench
#

Yeah I’m sure it’s doable

young oar
#

I guess I'll need to regenerate the terrain everything I do an edit

shadow trench
#

Plus you get nice gpu parallelization

young oar
#

2-4 ms for like 20 octaves of voronoi and simplex noise in a 64^3 volume is not bad at all

shadow trench
#

Oh yeah that’ll be fine

young oar
#

Compared to like 200ms on the cpu lol

shadow trench
#

💀

young oar
#

I feel bad for my laptop 1050 tho

#

It's definitely shitting itself lol

shadow trench
#

Is it 2ms on a 1050

young oar
#

Yep

shadow trench
#

Oh

#

So basically free

young oar
#

Yea not counting rendering tho

shadow trench
#

I can do a quick profile on my pc when I get back to uni on sunday

young oar
#

Only compute is 2-4 ms

shadow trench
#

I have a 3060 ti there

young oar
#

Holy

shadow trench
#

Compared to my laptop MX250 KEKW

young oar
#

Never heard of that lmfao

#

Amd? Intel?

shadow trench
#

Its a laptop nvidia gpu

#

pretty bad tho

young oar
#

My old laptop had a gt525m lol

#

Could barely run the simplest unity scene above 60fps

shadow trench
#

I used to have a 1050 ti in my pc though

#

Was a pretty solid gpu honestly

young oar
#

Yea my dad has a desktop with a 1060

#

Surprisingly much more powerful than my laptop 1050

shadow trench
#

That’s the case with laptop gpus usually

#

Its why I don’t bother with them at all

young oar
#

Yea

coarse yoke
shadow trench
#

for editing using a brush

coarse yoke
#

yeah are you saying applying the brush edit on cpu?

shadow trench
#

im saying im not doing that :P

coarse yoke
#

yes that what i meant

shadow trench
#

im doing it in a compute shader instead

coarse yoke
#

the program i've worked on that did CPU editing doesn't readback for CPU brush application, it just stores on CPU and uploads changes when dirty

shadow trench
coarse yoke
#

i read that :P i was just trying to figure out if i understood what you meant with that sentence

#

since i don't think many programs would be storing on GPU, move to RAM to edit, then move back to GPU

shadow trench
#

oh yeah right

#

That sounds inefficient to do yeah

coarse yoke
#

inefficient either way from RAM :P

#

i'm honestly surprised the unnamed program that i've worked on does it 2flushed

shadow trench
coarse yoke
#

especially considering the brush position is obtained off a render result readback dogekek

#

if that makes sense

shadow trench
#

yeah im a bit confused as to why you would do that

coarse yoke
#

so paint delay is 2ish upload frames and 2 readback frames

shadow trench
#

i find the readback delay not too noticable but add another 2 frames and i might get annoyed

coarse yoke
#

depends on framerate of the program

#

do you have framerate locked?

shadow trench
#

i dont atm

coarse yoke
#

ye, should help

shadow trench
#

i dont really know what do do about repainting yet

#

I used to only redraw the terrain on change

coarse yoke
#

oh btw is undoing gonna be hellish for you 🙂

shadow trench
#

but i scrapped that for simplicity for now

shadow trench
#

i plan on making a copy of the heightmap when a stroke starts

#

so you can undo full strokes

coarse yoke
#

i wonder if you could actually store the undo buffers on RAM if you really wanted to have an extended history

shadow trench
#

no idea

#

i mean

coarse yoke
#

would be annoying but i bet some programs do that

shadow trench
#

you probably could write them back on a background thread tbh

#

and save the ones very deep down to disk even

coarse yoke
#

if i was an academic who could spend 9 months of my life working on a single thing

#

that'd be a fun project lmao

shadow trench
#

kek yeah maybe lol

young oar
#

Wait I thought this was a personal project but it's for academics instead?

shadow trench
#

no it is a personal project

coarse yoke
#

i was just making a remark about how it would take a long time to get it working seamlessly

young oar
#

Ohh yea totally

young oar
#

It would be pretty cool

shadow trench
#

yeah that would be awesome

potent quest
#

Tempted rn to flip a coin to pick my uni

#

Let an rng algorithm decide my fate 🗣️🗣️

shadow trench
mild flower
shadow trench
#

the man himself

mild flower
#

The McMahon himself

hot yarrow
#

jesus fucking christ rust

#

go to rustlang...

#

find out how t install rust

#

read this

#
Rustup: the Rust installer and version management tool
The primary way that folks install Rust is through a tool called Rustup, which is a Rust installer and version management tool.
#

install rustup

#

run rustup update

#

read this:

[deccer@rootfs ~]$ rustup update
info: no updatable toolchains installed
info: cleaning up downloads & tmp directories
info: self-update is disabled for this build of rustup
info: any updates to rustup will need to be fetched with your system package manager
shadow trench
#

Try running cargo

hot yarrow
#

there is no cargo installed along with rustup

shadow trench
#

huh

#

rustup should install everything

hot yarrow
#

i just installed rustup in me arch

shadow trench
#

It was super simple when I did it last time

hot yarrow
#

seems to be an official package

#

not some jank thing from aur

#
deccer@rootfs ~]$ sudo pacman -S rustup
warning: rustup-1.26.0-3 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...

Packages (1) rustup-1.26.0-3

Total Installed Size:  6.98 MiB
Net Upgrade Size:      0.00 MiB

:: Proceed with installation? [Y/n]
shadow trench
#

Archwiki says to install the rust package

hot yarrow
#

heh

shadow trench
#

That should install rustc + rustup + cargo

hot yarrow
#

its a running back and forth again it seems

#

yeah

shadow trench
#

Ah you might need to rustup default stable

#

To install a toolchain

hot yarrow
#

first thing you read on their webshite

shadow trench
#

Yeh I think that’s how I did it too

#

I don’t remember but I had a working install on arch with no major issues

hot yarrow
#

im just whining in my language, not complaining

shadow trench
hot yarrow
#

rustup default schtable is also not mentioned on the installing rust 🙂 or "getting-started" or "kwik install"

shadow trench
#

Yet here he is installing rust

shadow trench
nimble solar
#

deccer has been taken by the Rust demon 😦

shadow trench
#

Soon you too will join

hot yarrow
#

lol

nimble solar
#

does rust have equivalent UI to C#'s Avalonia

shadow trench
#

Lemme check what avalonia is

hot yarrow
#

i hate rust already

#

look at the scrollbar

#

every schmuck on the planet who has touched rust, HAD to make a vscode plugin

shadow trench
#

get rust-analyzer

#

But

#

IntelliJ >>>>

hot yarrow
#

ah clion better?

shadow trench
#

Yeah

hot yarrow
#

alrighty

shadow trench
#

Any jetbrains ide will do but intellij and clion are good

#

There’s a great rust plugin

#

Managed by jetbrains

shadow trench
#

Rust UI ecosystem is somewhat lacking atm

nimble solar
#

then the rust demon cannot claim my soul

shadow trench
#

Out of curiosity, what brings you to rust @hot yarrow

hot yarrow
#

c++

shadow trench
#

Highly understandable

nimble solar
#

What reading [over.match] does to a mf

shadow trench
#

happy frog

coarse yoke
#

is that valorant

shadow trench
#

unfortunately

coarse yoke
#

unfortunately for me i recognize the font and background

shadow trench
#

its good that im washed or i might accidentally have fun

coarse yoke
#

at least its' not league 🙂

shadow trench
#

i never played that game luckily

#

i also dont plan to

shrewd lynx
#

Valorant moment

coarse yoke
#

ok but on the topic of valorant

#

why is the aliasing in this game so bad

#

there are so many effects that have 2 pixel wide jaggies

#

example 1

#

example 2 is harbor ult

nimble solar
#

No FSR

#

Clearly inferior game

hot yarrow
#

this game needs to run on your 10yearold brother's potato laptop

coarse yoke
#

isn't this what graphics settings are for

hot yarrow
#

dont elite player set those to low anyway?

nimble solar
#

Ngl implementing FSR would actually give you more performance

coarse yoke
#

yes but i'm not an elite player so i do not care

nimble solar
#

Assuming they don't use OpenGL on NVIDIA, in which case you get randomized performance KEKW

shrewd lynx
#

They literally have zero excuse

shadow trench
livid geode
shadow trench
#

im not a big fan of vscode

livid geode
#

im not talking about the ide but the lang server

shadow trench
#

ah

livid geode
#

it can't update itself because it's not managed by itself

#

what did you end up doing?

#

i recommend installing it the official way (the cmd in theit website) because you can update it more easily that way

young oar
#

@shadow trench you use fsr for your engine correct?

shadow trench
#

yep

young oar
#

Is it stable enough for use

#

(Fsr I mean)

shadow trench
#

Yeah I think so

#

It looks pretty good

young oar
#

I'm thinking of hacking my way through wgpu and somehow implementing fsr for it

#

Probably impossible but I'd like to try

shadow trench
#

you can probably just call the raw bindings in the middle of your command buffer

#

as long as you add barriers before and after for sync itll work fine most likely

young oar
#

Ah well that's impossible lol

shadow trench
#

is it actually

#

shit api

young oar
#

Wgpu has an internal command buffer

shadow trench
#

use phobos ™️

young oar
#

So it doesn't actually tell vulkan to record when you want it to

young oar
#

I want smthing vulkaney but not too high level

#

Cause I already have a nice thicc wrapper around wgpu atm

shadow trench
#

thats sort of what i went for tbh

#

annoying parts like sync are abstracted

#

for me at least using it feels like using vk without the boilerplate

young oar
#

O-o

#

That sounds very interesting

#

I gave up on vulkan cause of the boilerplate and sync

#

But if it's somewhat bearable then I just might

shadow trench
#

you can check the samples for what exactly it looks like

young oar
#

Doing so this instant lol

#

Yea it's interesting

shadow trench
#

if you have any issues or questions you can always let me know

young oar
#

Awesome

shadow trench
#

I play on max graphics and this is the AA I get

#

what a scam

young oar
shadow trench
#

gigaChad true

young oar
# shadow trench 😔

I have such a burning hatred for AA that I plan to just not support it in my engine

shadow trench
#

FSR2 is a form of AA

young oar
#

Ohh really?

shadow trench
#

yeh

young oar
#

I thought it just upscaled things and sharpened it

shadow trench
#

its TAA + upscaling

young oar
#

Oh fuck it's temporal??

shadow trench
#

if you do 1:1 upscale its just TAA

#

yeh

young oar
#

Aight I guess no FSR2 for me either

coarse yoke
#

modern AA is fine

shadow trench
coarse yoke
#

it's like they do the effect at half res with basically no upscaling KEKW

shadow trench
coarse yoke
#

not even anti-aliasing, this is applied aliasing

nimble solar
#

anti-anti-aliasing

coarse yoke
#

max graphics settings btw

shadow trench
#

what happened here lol

coarse yoke
#

the bedframe is what i wanna know about

nimble solar
#

Thank god I only play real games

shadow trench
#

im going back to my factorio addiction

shadow trench
coarse yoke
#

i think it's literally just done at half res

#

no clue why they'd do that though

shadow trench
#

covers a large screen area i guess

#

but eh

coarse yoke
#

this setting though?

#

also is it not literally just a decal

nimble solar
#

I like how steam still asks me for a review

#

Like, what do you expect me to say

shadow trench
#

2k hours nervous

young oar
nimble solar
#

good game, may cause severe addiction

shadow trench
#

true tbh

young oar
#

Yep

nimble solar
#

I clicked play

#

it's over

shadow trench
#

see you in 3 weeks

#

o7

young oar
#

o7

nimble solar
#

The factory must grow 🫡

shadow trench
shadow trench
#

I have spent the day playing factorio

#

As you can clearly tell my exams start next week

livid geode
#

lmfao same

#

i spent all weekend playing factorio and doing hardware shit with my friends

#

still haven´t launched a single rocket tho

#

have you finished the game?

shadow trench
#

😔

#

I was close but I didn’t bother and went to play space exploration instead

#

I did launch one there but it’s a bit faster

livid geode
#

is it?

shadow trench
#

I think so yeah

livid geode
#

doesn´t it start much simpler

shadow trench
#

No yellow or purple science

livid geode
#

ohjhh

#

did you get the achievement for it

shadow trench
#

After blue it’s straight to rocket building

#

No

livid geode
shadow trench
#

Im continuing that save now, just finished destroying my entire old base so I can start from scratch but with all my resources left :P

#

I have 300k plates in warehouses NanaStare

livid geode
#

im still saving resources to do exactly that

#

my old base sucks balls

shadow trench
#

yeh mine did too

livid geode
#

i kinda hate main bus

shadow trench
#

idk how i will deal with this

livid geode
#

well not hate but just dislike

shadow trench
#

im building train base now

livid geode
livid geode
shadow trench
#

its fun

livid geode
#

just seems more disconnected and has much less buffering

shadow trench
#

yeah

livid geode
#

also that

shadow trench
#

i mean you have buffers in your unloaders but thats fine ish

livid geode
#

but those are good

shadow trench
#

yeah

livid geode
#

because they decrease unloading times

#

the material transported is determined by what you put into the cargo wagons

#

not the distance between the source and target

shadow trench
#

true

#

im using cybersyn now for train scheduling, its a lot easier to set up stations than ltn imo

livid geode
#

like in a main bus base its completely ineffective or inviable to make bus liens of some stuff because theyre really expensive to buffer but in a rail base thats no issue (specially because you can easily allocate space in cargo wagons with exactly what you want and how much of it you want)

shadow trench
#

also adding lanes is hard

#

with trains you set up a new provider and youre done

livid geode
#

true

#

lmao its like car infrastructure vs irl trains

shadow trench
#

not wrong

livid geode
#

just one more lane bro

shadow trench
livid geode
#

it will fix the traffic im sure bro just one more

#

its also much easier to make malls and other factories for

#

with a main bus you need lanes for everything

#

with a train system you just need a single train connection

shadow trench
#

true

#

although theres only one true king

livid geode
#

then you can assign a train to collect exactly what you need

shadow trench
#

spaghetti base

livid geode
#

true

#

without spaghetti base we would not have nice bases

shadow trench
#

indeed

nimble solar
#

I switched to 16 bit bus for iron and copper, loaded and unloaded by trains, it was a real fucking pain to setup but it's so worthit

#

My iron has never had so much

T H R O U G H P U T

#

The bus-es are also localized so I don't have unnecessary space dedicated to ungodly amounts of belts

#

Everything is handled by train loaders and unloaders which I spam at every facility I have

#

There's also a Primary Production Facility (PPF) and a Secondary Production Facility (SPF) which produce all the materials needed for most craftings (green red blue circuits, belts, dubious liquids like L U B E)

shadow trench
#

LUBE

nimble solar
#

There is an 8 lane train system which starts from the PPF and the SPF and goes to the numerous APFs (Auxiliary Production Facilities)

shadow trench
#

sounds very large scale

#

id love to make my new mall not a mess and use logistics bots but unfortunately SE says no

mild flower
#

@shadow trench are your rust bindings for fsr 2 on github

shadow trench
#

yeh

mild flower
#

thx, I wanted to show my coworkers

shadow trench
#

i may have removed the dx backend

mild flower
#

I see 😄

#

np

shadow trench
#

the compiler binaries they ship are too large, crates.io has a 10mb upload limit KEKW

nimble solar
#

Hmm

#

How's efficiency

#

red belts have a 900 items/min throughput

shadow trench
#

i did the maffs

nimble solar
#

Epic

shadow trench
#

apart from my unloader being a little slow

#

each lane should consume a red belt

nimble solar
#

'ery nice

shadow trench
#

i despise steel

#

you put down hundreds of furnaces and the result is so sad

hot yarrow
#

i never did any maffs in any game, i just play like an idiot

#

but i also have never played past yellow science 😄

wispy ore
hot yarrow
#

Anno 1800 is ❤️

wispy ore
#

It's going to be so hard for BlueByte Mainz to beat that one

#

imho a masterpiece in the genre now with the DLCs

hot yarrow
#

when my pc was still working i played it quite a log with a colleague and it was always 3 or 4am in the morning when we stopped XD

#

yeah

#

and you need all dlcs, but all worth it tbh

shadow trench
#

oh that looks cool

wispy ore
#

I kinda wish they'd have gone with the PDX route for multiplayer at least

#

so only host needs dlc

hot yarrow
#

i mean they dont cost an arm and a leg

wispy ore
#

well if they are on sale

shadow trench
#

(unlike paradox dlcs)

wispy ore
hot yarrow
#

and they are on special every now and then

wispy ore
#

well and there's the gold edition now or whatever it's called

hot yarrow
#

yeah

wispy ore
hot yarrow
#

id just love my uplay account to become a steam account so that i can just play via steam

wispy ore
#

You play those games long term

#

they have a core playerbase

shadow trench
wispy ore
#

ofc. with CK3 and Vicky 3 the prices for DLC are a bit too high for me

shadow trench
#

i mostly played stellaris and cities skylines

wispy ore
#

But I tend to think of it more as a "very soft" subscription model

hot yarrow
#

i only plaid stellaris for some time back then

wispy ore
#

Stellaris is very nice

hot yarrow
#

have a screenshot of me conkuqering the whole universe 🙂

wispy ore
#

but currently waiting for Diablo 4 KEKW

shadow trench
#

i can get so immersed in that game, its great

wispy ore
hot yarrow
#

it was like 7 years ago or so

wispy ore
shadow trench
warped beacon
#

I think space exploration makes a lot of the processes more difficult

#

I believe you just got more used to the game

shadow trench
#

yeah thats definitely possible

#

i do find it much more fun, but then again i tend to have a masochist tendency in these kind of games sometimes KEKW

warped beacon
#

Space exploration is fun

hot yarrow
#

i recently played through everspace2

#

finished main story + few side quests in ~27hrs and played a little further to 30hrs

#

it gets super repetetteteive and the story turned very meh at the end

#

according to the interweb, if you solve everything you can spend ~70-90hrs

shadow trench
#

thats a pretty short game

hot yarrow
#

they are working on a dlc for end of year, and a paid expansion for q2 2024

#

but ye

#

also quite repeteteive... fly to x, to get the job, fly across your accessible universe to look at something there, just to fly back to get the XP or whatever

#

plus the random side quests here and there

potent quest
#

Fellas

#

I am proud to announce

#

I have picked my university

#

by RNG

shadow trench
potent quest
#

this is divine intervention

#

look at that wheel

shadow trench
#

LMAO

potent quest
#

i have to go now

#

i alreadt submitted these changes

shadow trench
#

are you sure you dont want to go to toronto to do math

potent quest
#

It's scarborough

#

not st. geiorge because i forgot to aply

shadow trench
#

that doesnt sound like a real place

potent quest
#

it's not 💀 it's their bad campus

shadow trench
potent quest
#

also all these unis will lead me to the same point

#

its just how much debt i go into

#

this is why it was agonizing to pick KEKW

#

they're all good options

shadow trench
#

fair enough

potent quest
#

im so proud i let an rng algo decide my fate

shadow trench
#

as long as this is a good one

#

and you dont regret it later

#

enough factorio for today probably

#

i built this entire area today except the solars

#

from the ashes of my old mess arises a new mess

#

yes the train stations at the iron and copper smelters are stupid i realized that too late

#

ill fix it eventually

potent quest
#

yo

#

im starting to regret ym choice

#

but

#

the other option ottawa would put me

#

into crippling student debt

mild flower
#

what

coarse yoke
#

this channel is this meme

#

but instead of the first part, it's andromeda

#

and instead of ant farm, it's factorio

shadow trench
#

Bringing back #memes step by step

young oar
#

I'm thinking of going UofT for CS / Graphics Dev (if they have it?) but idk yet

potent quest
#

@young oar It’s a gamble.

#

I am not joking

#

Apply early as well. They seem to be more receptive to lower averages to people who apply early. So i’m not kidding, like prepare your application before they even open and apply ASAP
Later you apply -> higher averages you get. It’s how kids with 99s and 98s get rejected from UTSG.

#

I;m so sorry penguins for temporarily turning this place to university apps 😭

mild flower
#

it won't be nearly as bad as when you start doing job apps bleakekw

#

imagine trying to survive the moisture wars while looking for a job

potent quest
#

But their GP is the strongest in Canada imo. They offer very good and compelling courses. However, they don’t offer a ray tracing course. Iirc UOttawa only does

potent quest
#

Almost every uni offers co-op here in Canada. So it’s not uncommon to go back to work full-time at your co-op

mild flower
#

btw university of rochester (which is close to toronto) offers color science degrees, but I think only MS and PhD

potent quest
#

Color science?

mild flower
#

color perception and reproduction is an extremely complicated topic

#

yet it's very important in gp (and any other field where images are produced)

potent quest
#

Ohhhhhhh

#

Maybe that was the degree I was supposed to do KEKW

mild flower
#

things like """gamma correction""" and """tonemapping""" (which aren't even correct terms) are the tip of the color science iceberg (and there is a stupid amount of misinfo about it on the internet)

potent quest
#

Oh damn

#

Huh I assumed color science would be way more like

#

Pigments to make paintings

#

Also I’m devastated. I just learnt today that US unis don’t require you to take SATs at all 😭

#

I would’ve tried for Cornell bro

mild flower
#

by SAT do you mean the standardized test

mild flower
potent quest
young oar
#

That's definitely going to help

potent quest
# young oar That's definitely going to help

Good luck man! UTSG requires a supplemental form so make sure you stack your ECs with your interests. UTSC only looks at your average. UTM hasn’t change their CS POSt requirements so it’s still insanely hard there.

#

Hmm what else. UTSG is the main campus you want, but I would say also apply to UTSC CS as a back up.

young oar
#

Solid solid

shadow trench
#

im thinking of generating material properties based on the height data

#

i dont know if its possible at all but it sounds interesting

#

color can maybe be done using a few base colors/textures + noise + normals

young oar
#

I use 3 onion textures for albedo/normals/mask and blend within them using clamped normal up scalar

shadow trench
#

how does that work pepe_think

#

does the user supply base textures and you modify them based on height data?

young oar
#

Oui

#

Left is albedo

#

Right is normal data

#

There's a lot of noticeable tiling cause I use simple triplanar mapping

#

And it's already taking 3ms per frame bleakekw

shadow trench
#

i wouldnt do it every frame so i can afford fairly expensive procedures

young oar
#

Oh it's my frag shader

shadow trench
#

ah does it interpolate between the different albedo textures based on steepness and whatnot

shadow trench
#

i see

#

i could add some noise to it to reduce tiling

young oar
#

I need to find a way to fetch barycentric coordinates to handle custom "painted" materials

young oar
#

It's so slow and I have no idea why

shadow trench
#

id probably rebuild this on every stroke end

#

full async obviously

young oar
#

Yeap

shadow trench
#

and then swap out the new textures when its done

young oar
#

Yes

#

Buffer all the things

shadow trench
#

always

coarse yoke
#

are you just saying procedural materials?

coarse yoke
shadow trench
#

possibly

#

i havent done anything like that before

#

so i dont really know what im talking about KEKW

coarse yoke
#

do you want a recommendation?

shadow trench
#

Sure yeah

coarse yoke
#

ok, it'd take a bit, like probably a couple of weeks, but building shaders out of a node graph might not be as hard as you think

#

you expose some textures derived from the terrain, and you add math operators and the output nodes, then build an hlsl string out of it

#

not quite a normal shader graph

#

since it's special cased for the terrain, but that conceptually at least

wispy ore
shadow trench
#

That seems like a good idea yeah

coarse yoke
#

i've really wanted to build a shader graph editor for the past like year after working with some for my job, just haven't had the time

#

i feel the same about the terrain editor and they're closely related dogekek

shadow trench
#

Yeah I’ll do some tinkering :)

#

Thanks for the advice froge

coarse yoke
#

np

#

from my experience, the node editor was more complicated than the shader graph :)

shadow trench
#

Heh I can imagine tbh

coarse yoke
#

there aren't many great non-fully procedural alternatives i think, though one workaround would be just to have good exporting and importing with splatmaps

young oar
#

I need to find a better way to sample my textures

#

9+ texture samples don't seem too good

wispy ore
young oar
#

...

#

You have 96 texture samples....?

wispy ore
#

no

#

but farcry 5 optimized from that

#

down to 12 or so

young oar
#

Holy fuck

#

That is a lot

#

It also might be because I'm using onion textures

#

Maybe they have an impact on performance when sampled?

wispy ore
#

onion = array?

coarse yoke
#

it's pretty easy to get to large numbers when you're sampling multiple materials

#

imagine each material has 6 channels, and you support 8 materials

coarse yoke
#

yeah or you support 6 materials with 4 channels and sample each 4 times :P

#

that's where the 96 came from i see

wispy ore
#

yep

#

but that was for cliffs

#

not for the terrain itself

#

afaik for that they still used adaptive virtual textures

coarse yoke
wispy ore
#

funnily enough 8 for the close cliffs

shadow trench
#

96 samples NanaStare

#

jesus

pulsar ingot
#

It’s just RT basics

#

Sorry for off topic

coarse yoke
#

watcha lookin up ECS for :)

pulsar ingot
#

Haha

#

I’m trying to figure out how ECS’ work with transform hierarchies

#

Or if they just go away with the concept completely

coarse yoke
#

i don't think penguin minds off topic much

pulsar ingot
#

Since ECS have non deterministic iteration I’m inclined to think it’s removed

coarse yoke
#

i would suggest doing away with them

pulsar ingot
#

Hm ok

coarse yoke
#

as in

#

well, how much do you care about performance

pulsar ingot
#

Not remotely

#

There will be like 1000s of objects at most

#

Want to write first then benchmark

mild flower
#

Multiple options are presented

coarse yoke
#

if you have an entity hierarchy, you can just store an entity reference (even as a component!), or you can store the entire hierarchy in an entity

pulsar ingot
#

Such a specific problem I’m surprised someone bothered lol

coarse yoke
#

skypjack has an awesome ecs library

#

the one that i use

pulsar ingot
#

I’m a filthy rustacean

mild flower
#

ECS and hierarchies aren't very niche in gamedev haha

pulsar ingot
#

So references are kind of a PITA depending on the usage

coarse yoke
#

you can store the entire hierarchy in an entity
this actually isn't that bad of an option FWIW, it's how my game works

#

if you import a model, splitting apart that hierarchy means you lose the hierarchical transforms, and there is no parent/child relationship between entities

#

but models still have them to keep GLTF importing easy

pulsar ingot
#

Because of rust’s borrow checking I resorted to having transforms just be handles into a “node context”

#

Handles being indices into a slotmap

#

But it makes it hard to duplicate or spawn entire prefabs

#

That’s the big issue idk how to solve

#

A good design pattern for that

pulsar ingot
coarse yoke
#

one of the things about ECS is that it already handles the thing that parent/child relationships often are trying to solve
e.g. my characters have a healthbar, usually making this a child of the character would be a solution, but with ECS it's just a component that's fairly easy to construct it's transform from the entity's base transform component

pulsar ingot
#

Oh

#

That’s a good point

coarse yoke
#

so i'd make sure that you need an entity relationship hierarchy first, which fair enough if do

pulsar ingot
#

It’s mainly just for importing GLTF tbh

#

I use blender to author maps, and export custom attributes per node

#

I figured maintaining the hierarchy would be beneficial but maybe I could flatten it depending on what the object is I guess (?)

#

Honestly I just put everything into a giant node hierarchy because of frame interpolation: you can make the camera a node, skeletons into nodes, game objects into nodes etc

#

Then just interpolate the entire node context

#

I was hoping to keep that so I didn’t need specialized frame interpolation for every single type of object which might have one or more transforms

coarse yoke
#

that's fun

#

it may be worth just managing the entity references honestly

pulsar ingot
#

What would that look like then? Do you mean the system you proposed where instead of child/parent you just have components or

coarse yoke
pulsar ingot
#

Sry

coarse yoke
#

i take responsibility

shadow trench
#

kek all good

wispy ore
shadow trench
#

👀

coarse yoke
#

is anything wip 🙂

shadow trench
#

I have been cooking material graphs in my head

#

But concretely I have been playing factorio and studying

#

Exams next week :(

nimble solar
#

I've also been cooking mesh shading in my head, but currently studying

#

😭

livid geode
#

nice flagspeech lol

hot yarrow
#

heh

coarse yoke
#

you gonna NIH node editor or just yoink one?

#

if you do it that is

shadow trench
shadow trench
shadow trench
shadow trench
#

and at that point i might want to make my own anyway

coarse yoke
#

im not sure

#

node editors do seem tough, but also perhaps fun

shadow trench
#

Yeah

livid geode
#

factorio timeeeee

shadow trench
livid geode
hot yarrow
shadow trench
#

Thank

livid geode
#

@shadow trench YOUR TIME HAS COME

#

i will now test phobos

shadow trench
livid geode
#

you will be judged

shadow trench
#

dont use the readme example

livid geode
#

and your library will be heavily abused

shadow trench
livid geode
shadow trench
#

the ones in examples/ are fine

#

im still updating docs

#

also i suggest using the git version but pinning to a commit

livid geode
#

why

shadow trench
#

some small improvements that arent published yet

livid geode
#

could you publish a new version when you have time?

#

ill use git for now sure

shadow trench
#

yeah ill finish going over all the docs and publish

#

that should also get rid of outdated examples

livid geode
#

lesgo

shadow trench
#

user feedback will be nice for improvements i hope

livid geode
#

the example runner code is really long

shadow trench
#

it is yeah, i gotta clean that up

livid geode
#

i personally dont like when libs do that

#

i sincerely prefer having repeated code in examples

shadow trench
#

its a bit of a mess

#

hmm i see

#

ill clean that mess up soon, but after the updated release

livid geode
#

hold up

#

dont tell me its nightly

#

😦

shadow trench
#

ive recently been trying to get rid of some unnecessary nightly features but theres still 2 in use right now yeah :(

livid geode
#

specialization and what else?

shadow trench
#

new_uninit, only with fsr2

#

maybe i can somehow have a nightly feature flag for that

#

i want to get rid of specialization

#

i think its possible but it would allow calling attach_value on a fence multiple times to replace the value inside

#

(instead of only allowing it on Fence<()>)

livid geode
#

i have no idea what you're talking about KEKW

#

but i'll trust your words magic man

shadow trench
#

ill figure it out

#

phobos 0.9.0 hopefully no longer nightly only

livid geode
#

i forgot how much boilerplate code vk required

shadow trench
#

its hopefully not as bad with phobos at least

livid geode
#

AIGHT that took a while

#

need the shaders now

shadow trench
#

that should be easy

shadow trench
livid geode
shadow trench
#

epic

livid geode
shadow trench
#

ah hm

livid geode
#

also apparently use order mattered i think

shadow trench
#

i dont recommend using the example runner for your actual program

livid geode
#

ye ofc ill modify it to my needs

#

just wanted to get something working first

shadow trench
#

ye makes sense

#

mostly the init part is useful

livid geode
#

that's weird, rust-analyzer is kinda broken rn

#

i think it's because of the toolchain

#

fuck it switching whole project to nightly then

shadow trench
#

ill try to make it not require nightly

livid geode
shadow trench
livid geode
#

goddammit

shadow trench
#

wtf

livid geode
#

system's falling apart hold on

shadow trench
#

good first user experience

livid geode
#

cool dolphin crashes cause theres no space on the drive lmao

shadow trench
#

phobos victim list

  • 1 linux installation
livid geode
#

ok sorry pengu i'm leaving phobos for later

shadow trench
#

all good

livid geode
#

i'll have to finish the clean up program first

shadow trench
#

yeh

#

i gotta use that when its ready

hot yarrow
#

rm -rf ~/.crates && sudo pacman -R rust rustup cargo

#

😛

shadow trench
hot yarrow
#

aww

#

i have not removed rust from my system yet

shadow trench
#

one day

#

#1112444142291800115 is not dead yet

mild flower
#

it's in the afterlife

potent quest
#

ahhh i cant pick between continuing my cpp raytracer or going to rust 💀

#

im at like chapter 8 of the rust book rn and uh restarted my ray tracer (again)

shadow trench
#

you could restart it in rust wesmart

hot yarrow
#

go rust with your raytracer

#

ah 🙂

potent quest
#

lmaooo
. > does not know what a "lifetime" is
. > has only completed 8/24 chapters

#

. > cargo install phobos

#

its rustin' time 😎

nimble solar
#

As a professional C++ advocate I recommend C++
(I have stockholm syndrome)

potent quest
#

all C++ devs got stockholm syndrome 🗣️

#

we can't leave its grasps

#

the illusion of choice:
C++
Rust but then you need to use C++ at your school/work

hot yarrow
#

as a professional c# fanboy, i suggest c#

potent quest
#

hmhmhmhmh c# does unlock unity (i do not use unity, but ue5)

nimble solar
#

On a serious note, it's not like you have to "choose" a language and be loyal to it forever

potent quest
#

yeah for sure. fairly certain ill still c++ cuz school, ue5, and one day (never) godot

shadow trench
#

btw i will try to remove the nightly requirement with the next release

#

(but some stuff will break so you'll need to make some minor changes)

potent quest
#

all good

#

breakage is fine tbh cuz im still at the starting example project KEKW

shadow trench
#

yeah kek

#

you'll probably want to look at the rt sample

#

also, do phobos = { git = "https://github.com/NotAPenguin0/phobos-rs", rev = "8036bfe" } in your cargo.toml

#

thats the latest commit, but it wont update automatically unless you change the commit tag

livid geode
#

also it requires nightly

shadow trench
#

(for now)

livid geode
shadow trench
potent quest
#

bleakekw the end is near

#

so like

#

what do i name the renderer

shadow trench
#

big questions indeed

potent quest
#

hmhmhmhm

#

Renderboy 😎 (pixar is gonna sue me)

shadow trench
potent quest
#

Danny's
Awesome
Rendering
Engine

(DARE)

shadow trench
#

heh thats kinda cool

potent quest
#

acronyms letsss gooo

nimble solar
#

Sounds like RAGE

#

(Rockstar Advanced Game Engine)

hot yarrow
#

for unreal there is also unrealclr 🙂 ie c# rather than c++ when you dont want to do pluebrints

potent quest
#

bro i cannot do blueprints for the love of my life

#

its so god damn messy

#

like let me type it bro

#

"yeah this blueprint is really simple and easy to follow"

#

sorry for off-topic

coarse yoke
#

node editors GigaChad

potent quest
#

real

coarse yoke
#

spend a week in substance designer, your mind will melt and reform into a node wrangler

potent quest
potent quest
#

wait does

#

phobos include fsr2?

#

or is that separate project (Andromeda)

#

i really do not want to install fsr2 with all of phobos 💀

shadow trench
#

you can enable a feature flag for it

#

but not by default

mild flower
#

Pog

potent quest
#

OHHH i rmeember why i avoided rust

#

the foundation

#

Why does the lang have massive every year

#

💀💀💀

livid geode
#

massive what

coarse yoke
#

literally every year...

shadow trench
#

Lol

#

C++ has drama too, just behind closed doors usually

shadow trench
#

just submitted the final version of my bachelor thesis paper ez

livid geode
#

YOOO congrats

#

will we get a copy when you defend it 🥺

shadow trench
#

theres no defense as far as i know for this, thats only for a masters or phd i think

#

you can get a copy but its in dutch :(

mild flower
#

Interesting thesis

#

Surprisingly readable if I pretend it's drunk English

shadow trench
#

i would have preferred to write it in english tbh

hot yarrow
#

im surprised its in pommeslang not engrish

shadow trench
#

i hate writing technical stuff in dutch

hot yarrow
#

limitation by the school?

shadow trench
#

yeah

#

something something do education in your mother tongue something

mild flower
#

All I read was
--- do --- your mother

shadow trench
mild flower
#

Freud's thesis

hot yarrow
#

there are some funny dutch words which would be weird if you read them as german as well

#

verkocht.... verhuuren

shadow trench
#

some words are pretty similar yeah

shadow trench
hot yarrow
#

overboiled and selling your body (if you go 1:1 from .nl -> .de -> .us)

#

but it actually means... sold and rented out iirc

shadow trench
#

yep

hot yarrow
#

and the ggggggggggggggggggggggggggg

shrewd lynx
#

And it's a huge project I don't understand why

coarse yoke
#

oh god yall do thesis's for your bachelors

nimble solar
#

I'll just do what I do best: Write utterly unhinged rants on stuff I don't even care about

young oar
#

I'm still in hs 🥲

#

I have utterly no idea how you can manage making a thesis out of pure thin air

mild flower
#
  1. Pick something to study
  2. Study it
  3. Write a paper with findings
hot yarrow
#

or

#

finish school

#

find a job

#

make some money

#

do gp as a hobby

young oar
#

The dream

shadow trench
shadow trench
#

its the result of months of work on some topic/project

young oar
#

Yea I meant where the idea comes from*

#

Like do unis just let you pick anything and study / research it

hot yarrow
#

the latter part is a little weird

#

i wish for students who actually want to research new shit to go for it

#

thats what university is all about

#

but so many people just graduate with something which has been invented 1000x already

#

yet another deferred renderer showing off sponza... with CSM and idk... som PBRIBLism

#

as part of their thesis/master papers

#

i find that super sad

#

(im also generally speaking)

young oar
#

Oh shit nothing stops you from doing stuff that had been done before?

#

I thought universities would be strict about showing off a "new" thing

shadow trench
#

especially in your bachelor's youre not expected to do something new at all

#

for your master's they do encourage you to, and for your phd of course you need actual research