#Vulkan Forest Scene

1555 messages ยท Page 2 of 2 (latest)

topaz cove
#

oh OpenGL

solid jackal
#

im definitely doing opengl next

thick edge
#

Hehe

topaz cove
#

its midnight so I was confused if demongod was sayin graphics library

#

or somethin

uncut tusk
#

lmao

topaz cove
#

they waterboarded my cohort with mandatory vulkan in sophmore year in undergrad

#

urm... dunno why i got to take it before I completed OS class ๐Ÿ˜…

thick edge
solid jackal
#

I know too much about the API but not enough about techniques

thick edge
#

Idk shit about techniques I just invent everything as I go

uncut tusk
#

I just read papers

#

a lot of them

topaz cove
#

I feel like this is a good rule of thumb in general because u can bruteforce and tryhard above ur skill level and still kinda develop but then u get strange gaps in ur foundation u gotta go back n fix anyways and its more stress for less gain

uncut tusk
#

too many probably

topaz cove
#

It's like urm, lifting and stuff

#

You could probably egolift with bad form if u really force urself

#

but u risk just hurting urself even if that gives u gains in the short term

solid jackal
#

yeah

#

I lift too btw

#

lmao

uncut tusk
#

Actually how the hell do you know if you're in that zone

topaz cove
#

wu wei or some shit

topaz cove
#

but it'd be like trying to learn how to read a new language by bruteforcing a dictionary and subtitling a full movie in it straight away like u would be spending 150% of ur effort for like 5% progress

#

or like trying to grind intergration before differentiation or somethin

#

the easiest analogy is probably seen in fitness but i think the same stuff applies to the brain too, although this i dont have any citations for it

thick edge
topaz cove
#

Where if u try and force urself to do certain exercises or lift certain amounts before ur body physically cant over n over u just arent getting as much gains ig

thick edge
#

If you're copying anything verbatim you're not there

uncut tusk
#

What if I'm copying maths

topaz cove
uncut tusk
#

Because I'm sure as hell not going to reinvent the wheel in maths KEKW

thick edge
#

If your goal isn't to learn the math then copying the math is ok I guess, it depends on what your goals are

topaz cove
#

its actually kinda nice to know that u encourage it. I kinda always took if I have to 'try too hard' beyond that level of being able to understand from an article or description and do the rest myself that I don't have the pre-req foundation yet but i didn't know if that was wisdom or laziness

uncut tusk
#

My goal is to learn, understand and apply it

#

but the formulas themselves I don't really need to reinvent

thick edge
#

I guess it depends on what we're talking about

#

Are you talking about like light transport stuff

uncut tusk
#

Fourier, "higher" analysis (change of variables theorem, multidimensional integrals etc.) and some formulas that just "exist"

#

Like idk, I'm taking a "top down" approach where I see the stuff that I need for my ocean sim and then break that stuff down part for part until I reach the stuff I understand

topaz cove
#

i can relate to top down approach vibe

#

wait no i think im bottom up? but i relate to 'i only touch the stuff i understand'

thick edge
#

It all depends on your goals, if your goal is to be able to invent stuff like the Fourier ocean then you'd probably need to study those directly out of a book since wielding those tools creatively takes a lot deeper knowledge, but if you just want to be capable of implementing effects like the ocean then it's fine to just learn only what you need

#

I'm spoiled because I studied physics so pretty much everything in graphics is right in my wheelhouse and I can understand it from first principles just by skimming for concepts

#

Learning that shit on your own is hard man

uncut tusk
#

I kinda want to learn that shit to understand it enough so I'm able to invent stuff as well

#

but I learn best when I also have some practical application

thick edge
#

For sure

#

It just takes time

uncut tusk
#

Yeah definitely

thick edge
#

Are you in school?

uncut tusk
#

University

thick edge
#

What year

uncut tusk
#

~2 semesters (including this) until I write my thesis

thick edge
#

I take it you didn't have a multivar/vector calculus course then?

uncut tusk
#

I can technically take one but only get access to the lecture afaik

thick edge
#

Did you take linear algebra

uncut tusk
#

no exercises and definitely no grading

#

yes, was mandatory

thick edge
#

Did you take differential equations

uncut tusk
#

linear algebra, abstract algebra, some DEs, some calc

thick edge
#

Abstract algebra but no vector calc lol interesting

#

Is this for a CS major

uncut tusk
#

ah wait

#

some vector calc

#

but not indepth

#

we did jacobian etc.

#

but that's about it

uncut tusk
thick edge
#

Yea

topaz cove
#

holy shit my CS feels like 90% SWE

thick edge
#

Wait you did Jacobian but not even multivariable integrals?

thick edge
uncut tusk
#

we did partial derivatives

thick edge
#

Hmm ok

topaz cove
#

alright time to sleep

#

have a good one u folks

uncut tusk
#

you too

topaz cove
#

also @solid jackal is in high school? proud of him fr fr

#

i learned to code like when i was old enough to drink ๐Ÿ™ƒ

topaz cove
#

(drinking age in Singapore is 18 tho)

uncut tusk
#

three semesters of theoretical cs, part of which is abstract algebra

#

it's also where most students that do drop out or fail reach that point KEKW

solid jackal
#

sunk cost fallacy best fallacy tbh

#

and nah im only 16 so i still couldnโ€™t drink

uncut tusk
#

I can only laugh in German here

#

well we're allowed only the light stuff at 16 but still KEKW

solid jackal
#

lol

#

alchohol seems overrated tbh

uncut tusk
#

Nah, it is pretty good if you want to clean electronics KEKW

solid jackal
#

oh yeah

#

ISOPROPYL NUMBER 1 BABY

#

you aint a real one if you never had dis befo fr

uncut tusk
#

I literally cleaned off the thermal paste with vodka once lol

#

Didn't have anything else at hand at the time KEKW

solid jackal
#

oh lmao

#

i wonder if that other type of alchohol works

#

hydrogen somethingide

#

the stuff in the brown bottle

uncut tusk
#

there's a lot of brown bottles

#

you need to be a bit more specific KEKW

solid jackal
#

hydrogen peroxide

#

im not going to test it lmao

thick edge
#

That's not alcohol

uncut tusk
#

That's also not something I'd willingly put on my CPU either

thick edge
#

Haha

thick edge
# solid jackal hydrogen peroxide

Ok I had to look that up actually because I was pretty sure but then I had a crisis of faith when I realized that there is definitely an -OH group in hydrogen peroxide lol

#

But it has to be bound to a carbon atom to be considered an alcohol

solid jackal
#

bud thinks hes the knower

#

my pfp is atrocious

thick edge
#

16yo aren't you taking chemistry this year in school

solid jackal
#

this next year i think

#

i wouldnโ€™t expect to learn much though

#

i happen to attend a school not well known for being good at anything

thick edge
#

Ah lol

solid jackal
#

I changed my grass texture, added some simple lighting, and got a better sky color

#

this looks like something from windows 95 lol

thick edge
#

Reminds me of mount and blade

#

I like it

#

Ship it

solid jackal
#

needs shadows lol

thick edge
#

Debatable

#

My games don't have shadows and they look good enough

#

I'll probably add them at some point but I haven't really cared thus far

inland flax
#

skipping shadows is a good way to have ez perf ๐Ÿ™‚

solid jackal
#

i messed up

#

matrix multiplication confuses me so I just change it around until it works ๐Ÿคฃ

thick edge
#

Lmao

solid jackal
#

well anyways i added some randomness

verbal vector
#

shadows are overrated. bad shadows are distracting, good shadows are hard to implement.
project some shadow disks under the trees and call it a day

solid jackal
#

alright fine

#

next is multisampling ig

thick edge
#

Isn't that just a flag you set

verbal vector
#

MSAA + transparent leaves = sadness (moreso the leaves aren't affected by it)

thick edge
#

Yea rip

#

Not an easy problem to solve

#

I'm trying to remember how I do it

#

I think I just don't lol

#

Or maybe I use purely geometric foliage

verbal vector
#

the leaves should already be filtered from the texture sampler to some extent... but this texture isn't doing any favors

#

I wonder if there's something wrong with the shader. my pixels are huge but come out smooth.

thick edge
#

Idk what I'm looking at

verbal vector
#

oh a zoomed in grate texture

thick edge
#

Ah lol

#

Is this with discard?

verbal vector
#

yeah

#

but I discard <= 0, not 1 which is what I think their shader does?

thick edge
#

How is it so smooth

#

Do you have antialiasing

verbal vector
#

I'm using a linear point sampler shader intended for pixel art

solid jackal
#

oh uh

#

im discarding at == 0

solid jackal
thick edge
#

Very pretty tbh

#

Ship it

solid jackal
#

nah

#

still feel like I haven't learned enough from this project

thick edge
#

Lol I'm joking when I say that

#

Mostly

solid jackal
#

lol

#

what do you think I should do next?

thick edge
#

The point I'm making is that that level of graphics is good enough for most development purposes

#

Idk it's sort of up to you, you need to find something motivating

#

What kind of games do you play

solid jackal
#

nah I mean what next for this project

#

UI maybe?

#

and I definitely want to do blending

thick edge
#

What kind of games do you play

solid jackal
#

idk

#

I really like cave story but that's pretty primitive in terms of graphics

#

some FPS games

thick edge
#

Graphics should serve a purpose

#

Make a 3D cave story scene or something like that

#

Imo just making pretty pictures for the sake of making pretty pictures is slightly pointless, that's what raytracing is for

#

Vulkan and GL are for making interactive graphics

solid jackal
#

right

#

I mean this render engine I've made isn't really great to build anything on

thick edge
#

Why not

solid jackal
#

a ton of hardcoding

#

I guess I can fix that but still

thick edge
#

All my games have tons of hardcoding

#

Maybe not positions of things

#

But graphics are 100% hardcoded

#

Generalization in game graphics is generally useless

#

Unless you have a team of renderer devs to make an in house engine or something your graphics will be relatively hardcoded

#

Hard coding is how Vulkan is designed to be used, even if that hard coding is organized in config files or something

solid jackal
#

hm

thick edge
#

If you don't want to tailor your graphics very closely to your application there isn't much reason to use it over GL or something

eternal dune
#

Hardcoding is great for hobby projects but it's not how it was designed to be used

thick edge
#

It depends on what you're talking about

eternal dune
#

Keep hardcoding stuff until it works is good tbh

thick edge
#

Pipeline permutations are basically intended to be hardcoded or otherwise specified explicitly

#

Not doing that is why you have shitty modern engines that have to compile millions of pipelines for no reason

eternal dune
thick edge
#

Ctrl f for ahead of time compilation

eternal dune
#

Huh I somehow missed this blogpost from Arseny

#

Personally I think that the perfect solution is to have ridiculously large pipelines

#

Instead of many pipelines compiled ahead of time

thick edge
#

There are many different solutions for sure

#

The point of Vulkan is to let you tailor everything to the application and hardware

eternal dune
#

Yeah each solution has pros and cons

topaz cove
inland flax
#

hard coding isn't very real imo

#

code is meant to solve problems, just a question of if it solves your problem

#

e.g. you could say an engine with an ubershader has a hardcoded pipeline, but it's not very meaningful

#

but eh, it's not actually that meaningful of a distinction

#

cause the point of moving away from specifying heights on a set grid is probably a valuable one

thick edge
#

When I say hard coding I'm talking about stuff like having your renderer have an explicit step for drawing terrain or other things that intrinsically tie your renderer to the application

#

Rather than presenting a generic but more complicated interface that the game then uses as an intermediate implementation layer between the game and renderer

inland flax
#

i'm sort of just agreeing with this

LVSTRI โ€” Today at 5:16 PM
Keep hardcoding stuff until it works is good tbh

thick edge
#

Ah yeah I see

#

That's basically what I do, I hard code and then start exposing control when it becomes necessary

eternal dune
#

For example, if you are a beginner and you are learning your way through the API

#

I completely misread your statement didn't I

#

lmfao

#

My bad KEKW

inland flax
#

:^)

#

i would bump this though and add some other stuff that might be fun

  • add a player camera controller
  • skyboxes
  • terrain materials
#

if you did want to lean into terrain, you do have a whole bunch of people you can bug about it ๐Ÿ™‚

solid jackal
#

there is a camera, not sure what you mean

inland flax
#

first person, walking on the terrain

solid jackal
#

because then i have to do physics

#

i mean i first envisioned this project as a photo realistic forest scene but since thats not a great idea

#

i guess i just want to try a ton of new things and experiment with what i have

inland flax
#

you do not have to do physics

#

but ๐Ÿ‘ just ideas, pick what you like or ignore em all, no need to justify

topaz cove
#

skyboxes help the vibe so much

verbal vector
#

skybox /atmosphere for sure

solid jackal
#

perhaps

verbal vector
#

or terrain multitexturing

solid jackal
#

vulkan is good for different types of objects, right?

#

why not try billboards?

verbal vector
#

billboard what though. unless you make really distant trees

solid jackal
#

grass ๐Ÿ™‚

verbal vector
#

oh, yeah. grass can be a beast

solid jackal
#

or a cool dinosaur idk

topaz cove
#

yo doom/daggerfall style sprite billboard dinosaur would add so much character lol

solid jackal
#

yeah to my windows xp forrest

#

is it official then?

#

am i going for the windows desktop aesthetic lol

#

wait

#

my brother in Christ this is my project

#

and I say yes

thick edge
#

It's just that Vulkan is hard in general

#

In GL it takes like 5 min to get it up and running

solid jackal
#

yeah

#

it would be pretty easy on vulkan but the backend doesn't support a vulkan feature that I'm using

#

Oh yeah baby

#

multisampling

#

(top image)

verbal vector
#

look at the little flowers!

uncut tusk
solid jackal
#

blending moment

solid jackal
#

i think im multiplying my alpha when applying lighting

#

yeah its fixed

#

my leaves look a lot better now

verbal vector
#

oh they're certainly less distracting now

solid jackal
#

lol my girlfriend said this looks like the golf from wii sports

solid jackal
#

As is standard in vulkan, the next thing I want to add will take some time

#

remain patient

uncut tusk
solid jackal
#

shadows

#

im gonna need a new pipeline which is always fun

#

and ill need to work with multiple render passes which Iโ€™ve never done before

uncut tusk
#

adding a pipeline shouldn't be that bad

solid jackal
#

not really

#

youre right

uncut tusk
#

just should work a bit on getting a bit of structure in the project

#

otherwise it might take longer than it should

solid jackal
#

yeah

#

next time I might abstract pipelines

uncut tusk
#

Wasn't thinking in terms of abstracting pipelines but rather something that lets you structure the renderer as a whole easier

#

so you can focus on the important stuff

solid jackal
#

yeah

#

is this where rendergraphs come in?

#

they sound really complicated and confusing lol

uncut tusk
#

no need to do an entire rendergraph

#

For example I do something like a "flattened" rendergraph which I can later expand into one if I feel the need to

#

but to actually make use of a rendergraph you need enough "nodes" for it in the first place

thick edge
#

Pipeline creation is exactly the kind of thing you should be abstracting

#

Generally for something like Vulkan you want to follow a semantic compression technique

#

I have a PipelineCreateInfo struct that I defined that contains all the things I actually care to change in a pipeline, like the render pass, primitive topology, depth/stencil settings, shader info, etc., which just gets passed to a function that handles the rest

#

Anything I don't care to expose gets hard-coded in that function

uncut tusk
thick edge
#

Yeah I agree

#

I think abstraction is the wrong word to use here

#

What I'm against is generalization

#

Generic abstraction is usually a waste of time

#

Specialized abstraction/semantic compression/"helper functions" are critically useful

uncut tusk
solid jackal
#

Yeah im with demongod on this one

thick edge
#

Generic abstraction is like writing an abstraction layer that attempts to simplify the use of Vulkan without sacrificing generality, i.e. you could use it to build any Vulkan application

solid jackal
#

I don't think there's any need in making some advanced pipeline class if im only having like 6

uncut tusk
#

I mean when I say "don't abstract pipelines" I don't mean don't do helpers for it ๐Ÿ˜„

thick edge
#

Specialized abstraction is like "rather than copying and pasting my hard-coded pipeline creation, I'm going to dump it into a convenient function"

#

Generic abstraction is like trying to roll your own OpenGL using Vulkan

#

Specialized abstraction is like writing a game directly in Vulkan but hiding the implementation details behind an API firewall that keeps the mess out of your game code

solid jackal
#

main looks like this

#

I should probably keep my engine state in a struct next time ๐Ÿ’€

uncut tusk
thick edge
#

In some sense yeah

#

I'd have to see it I guess

#

Generic abstraction usually looks like an API that you would provide in a library, a sign that you're doing that is if you find yourself doing 2x the work

#

E.g. if you do a bunch of work to wrap your Vulkan graphics in a convenient API, and then you use that API to write a renderer, you're basically writing twice

#

Whereas if you just write the renderer directly in raw Vulkan + some helper functions you're not wasting any of that time

uncut tusk
#

The only thing I've wrapped was the command buffer and that's purely out of convenience (so I don't have to dance around levels of indirection with my resources anymore)

#

other than that it's practically pure d3d12

thick edge
#

yeah sounds good to me then

#

I mean ultimately all that matters is whether it serves your purposes well and is efficient to use

uncut tusk
#

Yeah efficiency of use is what I care most about

#

and as time and need comes I enhance the API for more functionality, say something like "instead of just a list on a single queue I could allow for async compute processes"

thick edge
#

The problem with generic abstraction is that you end up fighting your own abstractions, like "hmm I designed my API around this assumption but now I need control over this hidden thing and it's becoming a pain in the ass," whereas with helper functions you're just like "ok I'll just expose this hard-coded thing as a parameter and the 'user' [me] will just set it manually"

uncut tusk
#

I do expose the raw D3D12 stuff if I need to which helps that but I've noticed as well in one scenario where it did bite me

thick edge
#

Well it only works if you can pull your graphics code into a black box

#

What I do is write my game to have essentially no conception of graphics except for physically-relevant data (e.g. meshes, needed for physics/raycasting), and everything else is just an ID

#

The renderer is content-aware (i.e. it's written bespoke for this game) and just handles raw Vulkan/GL + helper functions

#

That way none of the impl details leak out into the game, the renderer becomes part of the game itself (but stays isolated)

#

The difference is that if you wrote a generic graphics abstraction you might be able to replace the graphics API (e.g. swap GL for Vulkan) without touching the game renderer

#

Whereas in my case you have to rewrite the whole renderer

#

But it's a lot cleaner and doesn't restrict the API usage at all

#

a generic graphics abstraction designed around GL is basically just going to be like using GL if you rewrite the backend in Vulkan

#

Whereas in my case I can rewrite the whole renderer directly in Vulkan and it doesn't cause any architectural pain because the renderer is a black box

#

I've done this before btw I completely swapped the renderer and only touched 2 lines of code anywhere else in the codebase

#

And the whole time I have unrestricted access to the API like it's a greenfield project, not fighting any stale abstraction

uncut tusk
uncut tusk
solid jackal
#

i think i might get shadows in by tonight

#

i may have overestimated how hard it would be

eternal dune
#

Remember that y is flipped

solid jackal
#

Ah the path of tediousness

#

I can either add another descriptor to my global descriptor set or just push constants, but that would require a new pipe layout for the shadow pass

#

either way im tired

#

im gonna go play minecraft

eternal dune
#

Descriptor Sets are very annoying indeed

#

They're something you abstract very early or just use push descriptors

uncut tusk
#

Just use Bindless (tm) KEKW

eternal dune
#

BDA will save you from descriptor sets KEKW

thick edge
#

I didn't find them that bad for my simple purposes, you just have to group by update frequency

uncut tusk
#

Who needs pipeline layouts when all you have is a single pipe layout KEKW

uncut tusk
#

but first you need to write the boilerplate for them

eternal dune
#

The only descriptor sets I have are for storage images, samplers and textures

#

Because there's no IDA (Image Device Address)

uncut tusk
#

I don't have any descriptor set KEKW

eternal dune
#

OpenGL has Image Device Address btw, clear win for OpenGL

uncut tusk
#

But I also don't have BDA bleakekw

solid jackal
#

im budgeting hard

#

the shadow pass will need 2 mat4s, while the render pass will need a mat4 and the texture index

#

and imo descriptor sets aren't the most annoying thing in vulkan

eternal dune
#

I recommend push descriptors if you don't want to deal with the tediousness of descriptor sets/pools

#

They're suboptimal, but extremely unlikely to make a difference in performance

#

In exchange you gain ease of use

eternal dune
#

How are shadows going @solid jackal

solid jackal
#

when i get back to my pc ill show yall the problem

solid jackal
#

im going to do something very lazy

thick edge
#

What's that

solid jackal
#

im putting the sampler to my shadow map at the very end of my texture array lol

eternal dune
#

Did you manage to fix the proj

solid jackal
#

yeah I think so

eternal dune
#

Let's see the shadow map

solid jackal
#

program on life support

#

im about to do the first test

solid jackal
#

shadowing isnt going well

uncut tusk
solid jackal
uncut tusk
#

Yeah I know that's astonishing right?

solid jackal
#

alright so it looks like the transform data is correct

inland flax
#

i'm not gonna read all of #questions , is your sun's depth buffer reasonable?

#

nvm i see you got it

solid jackal
#

Vulkan Forest Scene

thick edge
#

Scope adjustment?

uncut tusk
#

Seems like it

solid jackal
#

its not gonna me massive in terms of size anymore

#

unless you guys think it should

thick edge
#

Lol just teasing

#

Do whatever makes sense

#

You're finally discovering what the real graphics programming is like

solid jackal
#

Nice

#

i think i want a skybox next

#

i dont think vulkan has cubemap functionality though

#

so iโ€™ll need my own

#

currently im cleaning and refactoring some code

#

more specifically im putting most of my data in a big struct so i can spread flow out over functions more evenly

eternal dune
solid jackal
#

oh?

#

ill have to look into it then

solid jackal
#

Graphics::run() is now less than 100 lines

#

it hasn't been this way in so long

solid jackal
#

Alright, it's pushed

thick edge
#

Cubemaps are just a sampler type

solid jackal
#

I'm gonna be on vacation all of next week

inland flax
#

did you book your time off

thick edge
#

Yes please submit your request so we can approve it

solid jackal
#

no

solid jackal
#

iโ€™m back

thick edge
#

Welcome back

inland flax
#

im gone

verbal vector
#

ready to see more ๐ŸŒฒ ๐ŸŒฒ๐ŸŒฒ๐ŸŒฒ

solid jackal
#

yeah

solid jackal
#

i completely forgot what i planned next

#

cubemaps?

#

i wish i could work more on this than i can

solid jackal
#

i cant find any good skyboxes

#

oh well

#

I kinda wanna make a huge forest scene in blender but due to .obj it will probably take several gigs to load lol

thick edge
#

In a game you wouldn't have a unique model for the trees anyway, you'd have 5-10 tree models that you'd instance

#

Maybe with some procedural scaling or coloration applied

solid jackal
thick edge
#

what? obj is a mesh transmission format

#

It has nothing to do with instancing

#

Instancing is what you develop in your engine

#

You need to develop your own asset pipeline around whatever you want to do in your application

solid jackal
#

right

#

im not going to explain what i meant because iโ€™m tired

#

gn

solid jackal
#

I meant like

#

duplicate meshes

#

I think in obj if you wanted an identical mesh in different locations you would just have to duplicate the all of the vertices and indices

eternal dune
#

ye

thick edge
#

Different locations? Export each tree as its own obj file

#

And then instance them in your application

eternal dune
#

with obj you make your own scene representation yes

#

you have one obj per unique mesh

#

and instance them yourself

solid jackal
#

my normals are screwed up

#

i suspect its because they arent being rotated along with the model matrix

verbal vector
#

you need to apply a TBN matrix

#

also you need to decide to either transform obj to world or light to obj space. iirc obj to world can cause precision problems but it works for me

solid jackal
#

I think

#

I want to finish this simple lighting, add rain, and ship it

verbal vector
#

tangent bitangent normal matrix

solid jackal
verbal vector
#

no look it up. it's a standard equation for applying normal mapping to geometry

solid jackal
#

ah I see

#

would this be done in the vertex shader?

#

ah

#

praise learnopengl

#

but I need 2 more vec3s per vertex ๐Ÿ˜ฆ

thick edge
#

You don't need a TBN matrix if you're not doing normal mapping

#

Just rotate the normals by the model matrix

solid jackal
#

oh

#

ill try that lol

solid jackal
#

uh question

#

it didnt work

thick edge
#

Idk your transformation chain you kinda have to debug it yourself

solid jackal
#

because rn I'm just multiplying it like its a position vector

thick edge
#

It's not a position though it's a vector

eternal dune
#

it's just normalize(inverse(transpose(mat3(transform))) * normal);

thick edge
#

Multiply it like (v, 0)

solid jackal
#

now this matrix does have translations but shouldn't that not matter since we're ommitting the fourth row and column?

thick edge
#

Yes

#

Better check the values then

solid jackal
#

alr

#

heres some samples from the lab

#

now I may be wrong

thick edge
#

I meant you do it lol

solid jackal
#

well yeah im just tossing these here

thick edge
#

It's not really possible to debug someone else's numbers unfortunately

solid jackal
#

yeah

#

now I may not be an expert

solid jackal
#

and I think that may make sense since these are tree normals

#

and the trees in the scene are noticable darker than the ground

thick edge
#

Yes those are not normalized lol

solid jackal
#

then we have a problem

#

could this be because the matrix also has scale too?

#

ok its fixed

#

sunset ๐Ÿ™‚

solid jackal
#

I need to fix shadows

solid jackal
#

not a fan of the ground texture

verbal vector
#

it's okay. gives me some late 90's vibes

solid jackal
#

I think i might be done with this project

#

Today i might clean up the code, and push it to the github

#

ill see if my models can fit on github too so yall can run it

solid jackal
#

It's been a wonderful vulkan forest scene

verbal vector
#

do you feel like you learned a lot?

solid jackal
#

Yes

#

practical and theory

eternal dune
#

I wish I could end a project

#

nice work fam

solid jackal
#

ah my .obj is over 100 mb

#

let me try and compress it

#

I probably can't

eternal dune
#

You could definitely come back to this when you gather the motivation, here's a few things you can add that are not trivial:

  • Infinite world with world partitioning
  • LODs
solid jackal
#

I can fit in the .blend file though LMAO

#

ill just include instructions on setting it up

#

Alright guys

#

all yours if you wish to try it

thick edge
#

What's next?

solid jackal
#

I'm making a gltf renderer in opengl just so I can learn how the both work

thick edge
#

I would just do the bare minimum gltf for now don't worry too much about the PBR stuff

eternal dune
#

OpenGL is great

thick edge
#

Even after learning Vulkan I've never really found a reason to justify using it

#

I just use the lessons it taught me to build more well organized renderers that could be swapped for a Vulkan impl later if necessary

#

GL is everything I've ever needed for my projects

solid jackal
#

yeah lol

solid jackal
thick edge
#

Use a simpler model

#

You need something where you can inspect all the data in the file numerically

#

I've never used gltf so I can't really help beyond that

uncut tusk
#

explicit async compute / copy as well

#

if performance is no issue and none of those things here are desired or required then yes, no real need to switch

thick edge
#

Yeah RT and mesh shaders would be some, I haven't needed them though

#

And if I did want to use RT for something I'd rather do it in software so that the performance isn't tied to having a certain kind of specialized GPU

solid jackal
#

I mean

#

hmm

#

should I close this?

#

since I guess im complete?

#

i might come back to it later but idk

thick edge
#

You can just leave it as is and come back to it later, you don't have to close the thread unless you want