#Fwog and co.
1 messages · Page 12 of 1
my imgui is currently washed out with srgb enabled 🙂
that is normal
jakers isnt
I'm just rendering imgui with srgb off
how would that work
not even adhering to his own standards
Why would you render a gui with srgb on
shrimply glDisable(GL_FRAMEUFFER_SRGB)
is it a separate framebuffer? still, you are haiving a srgb swapchain
its gonna get wased out if you present it
you can enable/disable that thing whenever you like
You can switch it dynamically in gl
how does that work
It just makes the linear->srgb not happen when it's disabled
ok so it's applying transfer function on write then ok
actually ok that I think is how it should be
I presume imgui colors were authored in srgb, so it doesn't make sense to do the conversion
Only problem is that the color picker is screwed up, but that's because omar doesn't understand how sRGB works
that makes color picker use srgb values also
Yeah that's fine
unless you want linear
It's just the blending that's jacked up
i was also sinking (in context of beginrendertoframebuffer) to only enable srgb, when a color attachment has a SRGBy format
is it actually rendered via blended layers?
should be per pixel if you are sane
it's using hsv color space iirc for picking
or hsl
I mean interpolation, my b
Not blending as in compositing
The problem is they interpolate between colors in srgb
tbh it's gonna appear more uniform like that I think
wait nope
only if black and white
It just means the colors look like poopoo
color gradients will get dark spots
srgb is nonlinear
ok that's also not right
should be fine but perceptually more linear than if you were to use linear colorspacce to generate gradients, and also should distribute precision uniformly
generating in lkinear and ten converting to srgb is going to compress blacks and expand whites
ok wait need to test my clain about orecision
if we generate gradient in srgb its gonna require no change before presentation and bits will remain uniformly distributed
sounds riht
generating gradient in linear will shift bits towards blacks and you might get bigger banding around whites
linear, srgb transfer function and difference
no wait it;s the opposite
hmmmmm or maybe not
yeah it's not
all I said is right I tried to plot bit shifts
got this but remembered that the transfer function is linear->srgb
so it's decoding
encoding would give oppsite effect it would compress the white
you begin a fake command buffer when you start a render pass in fwog
so I just put all the stuff that can only be called in that scope in the Cmd namespace, mostly because I couldn't think of a better name
They disappeared so it k
So heres somethin @long robin
Like
Buffers need to have data passed in when constructed i think
gltf viewer just clears their buffres after construction
Nvm i need to look again to see i kinda frogor my point
frogor
Quick fwog question: can it target GL 4 lower than 4.6?
I haven't tried, but you'll probably get errors if you make a sampler (since it uses anisotropic filtering) or try to use one of the Draw*IndirectCount commands
so 4.5 is probably 95% supported, while anything below will require an extension to enable DSA
and you'll need more extensions as you decrease the version
but tbf, most of the extensions you'd need are rather ubiquitous
Interesting ok. The version I had in mind was 4.3, I need to check what all .4 and .5 added
That web page is great. Also I’m shocked how old 4.3 is, I probably shouldn’t be shocked but I am lol
I'd need these to support 4.3
- ARB_buffer_storage
- ARB_clear_texture (optional)
- ARB_texture_barrier (optional)
- ARB_direct_state_access
- ARB_clip_control (optional)
- ARB_texture_filter_anisotropic (optional)
- ARB_indirect_parameters (optional)
the optional ones just mean that some features of fwog use these, but they aren't critical
so really just DSA and immutable storage are necessary to have
Ok awesome makes sense
somehow I made my toctree have both bullets and numbers
it appeared after I added :numbered: to the toctree directive, but now it won't go away even after a rebuild 
it must be using some sort of caching
can't see any other reasons why it should remain after being deleted 
btw I have no time to work on fwog rip
i dont have the skill to work on fwog yet but i got the skill to work with fwog
okay.gif
the issue must be that these bullets only update when I add a new section (and I guess rebuilding the project doesn't clear the docs)
“Creating a Fwog”
What is fwog usin to load gltf rn
I unintentionally cut off the word "context", but maybe I'll update it
tinygltf
I think you should 
Ah oki
Was considerin puttin @wind jasper 's fast gltf for my fwog game
hello
Hi
basil using all the gp discord projects at once
Would that be my contribution to the gp diacord
An actually finished non bikesheded game
That uses the gp projects i need
and alpha testing all of our libs at the same time 
Yea
Dogfooder Tess
I think im gonna make a mouse clicking scene in fwog
And load a car
Later tonite
be sure to use zink to translate GL to vulkan and then test on radv
whats radv n zink
zink: gl-to-vulkan layer
radv: 🅱️ulkan driver for AMD geepeeyous
be me
add pipelines to GL because they're clearly such a good idea
https://github.com/KhronosGroup/Vulkan-Docs/blob/main/proposals/VK_EXT_shader_object.adoc
wtf is that extension lol
are they trying to make this gl with extra steps
also what does this solve that dynamic state doesnt
I guess you can use this fake GL stuff to issue draws really quickly without compiling a bunch of stuff first, and in the background make actual optimized pipelines to swap in when they're done
seems anti vulkan
but it all depends on how drivers implement this thing. It sounds familiar, doesn't it 

hi @long robin how should I think about DYNAMIC_STORAGE
i want to create an index buffer and vertex buffer not declared on the Application startup
but the constructors for the vertex buffers are like
'we need data now pwease'
so do I just make it dynamic storage and subdata my data later
if you want to upload data later, use a map flag or add the dynamic storage flag
yea
but the buffers cant be resized right?
so rn i got this
but I want to add to squarePos later (and squareIndices)
so do i just make those vertex buffer dynamic storage
and subdata those in without issue
here it says constant size
you could put the buffer in a std optional and delay its init
and i am like 'but why use big buffer if small buffers do trick'
oh cool TIL about std optional
Correct
You have to make a new one
You can just do buffer = Fwog::Buffer(...) to delete the old one
Not sure what you mean
well so the thing i am tryin to do here is
I cant pass in the vertices and indices to a constructor here
but I want the pos, colors and indices to be dynamically allocated at runtime before i construct my applciation
and ofc i wanna try n solve it without creating a separate constructor by copy and paste
ah, you're using the example framework?
ye
I know I dont need to
but its fun to try n figure out how to overcome this annoyance with the limitations here
I have idea
Why can't you pass vertices and indices here?
I can if they are constexpr
Because fwog isn't loaded?
but like
oh wait yea nvm im tired
I can use initalization list just like i was earlier
lmfao sorry

just so used to constructors doin stuff inside them
I think in my thing I shrimply put the buffers in std optional and load the vertices in the app constructor
I like to put stuff in the initializer list when possible
And the way Fwog types work basically makes it a requirement
yea u forced me to re-learn to give a shit about ininitalizer list
instead of Init() function calling stuff
But std optional is a way to subvert that in a safe way
I remmebered as a baby C++
I had like
really long ininitalization lists
before switching to Init() lifestyle
or passing in CreateInfo type references
ive made longer
for really trivial shit
like a gameobject instance
was not very shrimple
but ty Jaker for teaching me about std::optional
now I no longer need to use pointers for that 'does this exist or not' logic
whens C++29 gonna add std::based
std::expected is the Result<T, E>type right
yes, cool
new gateway to UB
why is it designed this way bruh
operator* is like that for optional
I guess it's supposed to be the cheapest way to access the object
if you want the access to be checked, you use .value()
yeah
doesnt feel like something that should be exposed to the api tbh
maybe im too influenced by rust nowadays
perchance
Think of it like operator[] and .at() for vectors and associative containers
yeah this is kinda everywhere in c++ i guess
Actually rust has this too, but its obviously unsafe
Reminds me of the C Analysis Tool (aka cat) which checks for unsafe lines in C/C++ programs
so static analysis
when you run cat foo.cpp it shows the unsafe lines
Gotteem
i thought it was just a cleverly named tool lmao
I love cmake I love C++
I wonder if the cmake for tinygltf is fooked, since I've encountered this error before
or maybe I needed to set TINYGLTF_HEADER_ONLY
lol that fixed it
now cmake keeps splitting my copy commands into multiple invalid commands, probably because some path has a space in it or something
too bad the output log is unreadable
VERBATIM
how do I enable that on windows/msbuild
I could only find a cmake verbose thing for makefiles
vs can debug cmake now
hrm
btw this is my work pc, where something is fooked, preventing me from opening the local folder with VS (so I have to generate a VS solution instead)
Use of VERBATIM is recommended as it enables correct behavior.
top kek
when correct behaviour is optional

hmm so do I put it like this, or does it go at the end
add_custom_target(copy_shaders ALL COMMAND VERBATIM ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/shaders" "${CMAKE_CURRENT_BINARY_DIR}/shaders")
i think thats fine
putting it at the end seems to not make it fail immediately

cmake is cursed
how to learn cmake
yes
optional correct behavior 
even worse is that it's opt-in
its also just really poorly documented
I tried to learn cmake but I could not figure it out because things kept behaving not as I expected
thats intended behaviour for cmake
I only use it nowdays for programs with 1 file like this
cmake_minimum_required(VERSION 3.10)
# set the project name
project(HelloWorld)
# add the executable
add_executable(HelloWorld main.cpp)
it works if you just post your problems and hope that other people with tribal knowledge can see it
to compile and run it like this without loading visual studio crap
mkdir build
cd build
cmake ..
cmake --build . --config Release
"./Release/HelloWorld.exe"
pause
ninja 

this ninja guy should be cancelled
what is ninja though
its a build tool
build schystem
some build system
schmuild bystem
I've seen one project either use it or fail due to it not being present
the cmake plugins for vscode are also quite neat, voidy, if you are using vscode by any schance
was it librocket? 🤔
can't remember anymore
I used vscode on ubuntu
on my home pc I use visual studio but it's so slow, gets worse with each new edition
oui, when you do cmakeisms, absolutely
hmm
i wonder if TextureView descriptor should have swizzle facilities
so that i can display my depth texture in imgui as rrr rather than r
or perhaps some float texture as rgba8 somehow
display as in ImGui::Image
hmm textureview descripor is probably the wrong location
i just provide my own ImGui::Image which has swizzle facilities
Mayhaps swizzling should be part of the sampler
if you don't have texture view yes
I'm pretty sure swizzling is part of the texture view in Vulkan, but I'll have to see what OpenGL does
im also winderong why you never reset the swizzle in the fwog examples, you probably never need the alpha channel anywhere, and therefore "ignore" the messed up schwizzle mask
If it's sampler state then it'll be easier to put it in the sampler
Wdym
For imgui?
Ye
but never set it back
It's indeed not part of the sampler
probably because of ... "you probably never need the alpha channel anywhere, and therefore "ignore" the messed up schwizzle mask "
makos sensos
I'll have to add a swizzle thing to texture view
index page no longer puts everything under F
its kinda strange that all those c++isms bleed through
overloaded operators etc
ah its just the members as well, nvm
are UBOs and SSBOs compulsory for Fwog. The examples use them and I see a BindImage, BindSampledImage, BindStorageBuffer and bind UniformBuffer
yes
nothing for binding variables tho
no uniform variables for you
im ok with that
well technically you can call glUniform* yourself
but I consider those to be stinky and not worthy of wrapping
vulkan cosplay
meanwhile vulkan: uniforms are back
this doesn't return an error in compiling
altho its easy Skill Issue tho (this works as intended)
dunno if its worth doin something so the constructor goes 'yo urm... u sure?'
implicit conversion moment
let me fix the thingy
oh, it's not an implicit conversion issue
it's a GL issue
look at the constructors for Buffer
@fiery sorrel you're calling this constructor by providing one integer argument
explicit Buffer(size_t size,
BufferStorageFlags storageFlags = BufferStorageFlag::NONE,
BufferMapFlags mapFlags = BufferMapFlag::NONE);
I can't do much there
well it doesn't make much sense to make a buffer with no size
you shouldnt construct these things in the app's ctor
yea Jaker
"shouldnt"
why not
some loading function feels more sane for some reason
but i understand why you do all that in the ctor
I think it's fine to make some resources in the constructor (e.g., uniform buffers that never change size)
I could make a load function that just returns a massive object containing all the schtuff
but I won't
i didnt say anything
the 2023 implicit enum conversion incident
mfw gl enums shrimplicitly convert to size_t 😔
complicitly, one might say
btw just don't use the glnums
make strong versions instead
i dont think he does actually
correct
I made a typo with intellisense
fwog only uses strongly typed enums
so it seemed like a common possible mistake that can happen and I can see someone goin 'i have no triangle on screen how fix'
for the most parts
but mostly only noob tho
if you made a typo with intellisense, it shouldnt compile?
do you need me to make a strongly typed size type so you can't accidentally convert gl enums to sizes 
i dont need it rn
I just brought it up as like 'do u want this to remain as Skill Issue or actually find a way for a compiler to go 'wtf bro''
deccer the kind of froge to make color, direction, and bivector types
but doesn't the example do the same thing 
no it doesnt
colour for martty
everythin glm in examples
the issue is that both of these compile, except they call different constructors
globalUniformsBuffer(Fwog::BufferStorageFlag::DYNAMIC_STORAGE)
globalUniformsBuffer(GL_LITERALLY_ANY_ENUM)
this is fine
ah i c
just dont write bad code
at the beginning of fwog you said you leave those kind of things open for the uninitiated
fun tiems
I'm not sure what to do to prevent that conchfusion
not much you can do there, other than split it into 2 libs/nail it down with #defines
detonate a small nuclear warhead to set off the nuclear annihilation of the human race
heh this is even better
in minecraft
mmh
sorry my cpu cant process the nuke explosion on a single core
i think minecraft actually has threading now its just bottlenecked to only a single core rn right?
back to topic
otherwise we wont be getting any car game made with fwog anytime soon
i keep it shrimple a cube and two cylinders
cars usually have 4 wheels at least
long cylinders
fair
'why two cylinders and not four'
as soon as they accelerate they lose the back wheel, as soon as they break the lose the front one
the unrealistic part of this is that the flintstones canonically takes place before the wheel was invented
hehe
perfection
i was picturing a flatter chassis, and individual wheels slightly floating next ot the box
I am just keeping it super shrimple so i can use the gltf loader inside first
before I put in a more complrex placeholder
this is like reverse bikeshedding
oh yea i should put that as the next one
somethin like that
honestly i just too lazy to take out my mouse rn
but yeah you could ship your own ogl header
I could
I ship glad/gl.h and give users the choice to replace it with their own header
good enuff 4 me
does it really make sense to use something else, other than glad these days?
probably not, but you never know what cursed setup people are running
those people prohabs cant even >=gl4.3
plus it was a trivial addition, so why not
but fair enough
glug.h
grog.h
cmake noob question but is there a better alternative to including header files than
depends on what you call "better" 
check the cmake template
too lazy to copy it from there
one of them got automatically added by my IDE and I was too lazy to change it
i wont be surprised if fwog racing ends up becomin more cmake template-y for the cmake and the lbiraries
cmake template is inspired by various things, fwog is one of them
globbing is in fact what you want here, but I don't like it
you're free to use it though
at least im not procrastinating on car :) @golden schooner
so that should make u happy right 
fuk
glorbius
you want something like this
if (MSVC)
target_compile_definitions(03_gltf_viewer PUBLIC STBI_MSC_SECURE_CRT)
endif()
yea I just saw that
and added it thinkin 'hmm this is the difference....'
cmake noob question but does this only copy if there is a difference
or does it do it every run
copying files every run is gonna be super cringe as the project scales so id need to adapt for that later on
but that'd be a bikeshed to worry about rn
also you don't need to add h files
I like being unnecessarily exschplicit
shrimple
its prob just not in the right fi-
oh yea its named wrongly
imma eat a dinner
docs v1 are almost done btw
noicee 😄
I still can't remember if there is an algorithm that uses logic ops 😄
perhaps fwog's most pointless feature is supporting those
I thought there were some ancient programs that used em for something
hmm I think it was a voxelization program
but these days there are probably better techniques
also I bet they are used in cad apps for something obscure, as usual
wouldnt surprise me neither
mayhaps try a github code search, if something other than 230948398573987th variant of gl.h comes up there might be a use
page 5 and so far I've only seen wrappers
hmm I found some editors using glLogicOp for some things
magnum renderer has it too but doesnt use it anywhere
I bet minecraft uses glLogicOp to draw the xor'd crosshair
scummvm might be using it
and nintendo 3ds simulator citra
mobile also doesnt have it
"I told you how to do it. Just use glLogicOp the same way we use glBlendFunc etc, don't put stuff in the shader." random comment from a psp simulator issue
hmm, you can also get the minecraft crosshair by drawing a white thing and subtracting the dst color
using just blending
no need to support logicop until someone (other than martty) opens a ticket, id say
too late, it's already added 
"Won't Fix" ;P
imma open fishsue to remove them then 
How’s the documentation coming along?
gn8 : )
trying to figure out how to add a little badge for docs using this thing
https://shields.io/
We serve fast and scalable informational images as badges
for GitHub, Travis CI, Jenkins, WordPress and many more services. Use them to
track the state of your projects, or for promotional purposes.
ah actually that one seems easy
the build status one seems a bit more opaque, but I think I can reverse engineer the one vuk is using hehe
CI passing badge but it is actually using the vuk repo 
I know that's not the case because my CI is failing and the badge shows that 
oh btw docs are up
https://fwog.readthedocs.io/en/latest/
though I'm busy trying to figure out why gcc doesn't want to compile this
return *new (this) Fence(std::move(old));
it never had a problem with my texture move assign operator that does the exact same thing 
I have to include <new> to use placement new
(and I guess any other version of global new if I want to be 100% correct)
Niiice, looking professional 
Creating a fwog is in 
the build has passed mashallah
now I can schleep while deccer and basil can bikeshed the contents of the docs
I don't even want to think about why this is
global new is defined in <new>
but most compilers seem to make it available even without that header (except gcc doesn't make placement new available)
gnomes
its pretty good 
haha
you mispellt poipeliones 🙂
Pamplemousse
I like seeing these exotic flags
🇲🇪 🇹🇴 🇴
Idk what the mp and mo flags are though
Ah
🇲🇵 is northern Mariana islands
I'm having trouble googling 🇲🇴
Macau 🙂
: )
@fiery sorrel how would you feel if the gl header wasn't leaked
Itd be neat if i had to manually include it if i wanna do stuff outside limitations of Fwog
then it would be harder to make the mistake you did
Yea. I was able to spot that mistake super fast because i knew what i was doing
But i thought abt the "where triangle" logl newbies
making the gl header not leak should be an easy change
I can also add some convenience features like vuk's dispatch_invocations (which automatically rounds up to the next workgroup)
yes
ok pushed DispatchInvocations and fwog no longer leaks GL headers
rip CI failed
fixed
at some point I ought to use semantic versioning
jaker bending to deccer's will ideas?
mayhap
who've would've thought've
problem is that I make breaking changes so often, the major version would be in the hundreds
you can tie versions to releases which you manually trigger
doesnt have to be a release every time you commit/push
ye but semver.org says that releases with breaking changes should increment the major version
hmm
I guess I could release version 0.x.x now, then make 1.x.x when I'm happy 😄
feels like unnecessary bookkeeping until I have more than one actual user
the idea of having a version number is cool, but the reality is pain 
you could however treat it as an exercise with githubactions and how that versionism work
and its kinda also quite shrimple 🙂
you have a ci.yml and a cd.yml or build.yml and release.yml - the former just builds your things and you can have your builds/tests ok badge if you wanted, and whenever you trigger a release, you create/selectexistingtag tag, and from that tag a version is built
hmm I thought the point is to not automate it
that I can tag a commit as version x.x.x when I'm happy
or you dont release anything, and shrimply tag commits, ye
then people can submodule/fetchcontent from that specific one
rather than encouraging people to download source.tar for version xxx
and you may or may not create releases still where you can nicely list the changes since last version
either hand written, or you let it auto generate one from all commit messages inbetween the 2 releases
(there is a button for that when you create a release)
I'd want to autogenerate it, but then remove the useless stuff (e.g., changes to ex🦐les)
heh the last time I used releases was 6 months ago
when you properly write commit messages, you could prefix those or tag them somehow
it was for ldjam, and I was in a delirious state, so I forgor everything
exshrimple1: fixed imgui button or whatever
and when you see the autoigenerated list of commits, you shrimply remove those with the prefix/tags you dont've want've them've to've be've in've there've
tiny manual labour, not worth the automation i guess, since you wont be releasing 24 times a day
the faq here is nice
https://semver.org/
I could use major version 0 and proceed with semantic versioning
just making releases occasionally when new features have accumulated
yep
technically, any version is fine. (i dont mean different versioning schemes)
fwog provides a good foundation already, therefore could also technically be a 1.x
it could also attract more people, potentially, because they could see/think "ah 1.x already, not some 0.0.0.1-alpha"
heh
I make breaking changes too frequently to want a 1.x.x release
fwog 2 would be next week
then just increment the version as needed
there is no need to keep the major version artificially "low"
if I'm following semver, then major version 0 is reserved for rapid iteration
and people can clearly still grab any version before if they wish
that would mean fwog 2 starts from 0.0.0.0 again
and be treated as a complete different project/product
version 0.x tells people that things will break frequently, which is true
yes yes, im aware 🙂
I was talking about fwog 2.x.x, which would be part of this project
i figured
the 2 just means it has breaking changes from 1
but then there cant be no 0.x technically speaking although you "rapidly prototype for a major version 2"
smh just read the link I sent 😄
nah ill just be quiet
How should I deal with revisions in the 0.y.z initial development phase?
The simplest thing to do is start your initial development release at 0.1.0 and then increment the minor version for each subsequent release.
How do I know when to release 1.0.0?
If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you’re worrying a lot about backwards compatibility, you should probably already be 1.0.0.
Doesn’t this discourage rapid development and fast iteration?
Major version zero is all about rapid development. If you’re changing the API every day you should either still be in version 0.y.z or on a separate development branch working on the next major version.
🇹🇴?
🇩🇪 🇨🇨 🇪🇷 😄
waffle
aye
im from the dutch speaking part though :P
flandern?
the cheesemunchers corner of beljeekistan 😄
deccer with the assist
were a good team
now I gotta look up all these flags
🇨🇨: The Cocos (Keeling) Islands
🇪🇷: Eritrea
🇲🇺: Mauritius (my beloved)
🇳🇨: New Caledonia
🇪🇹: Ethiopia
I need to learn how to read deccer flag speak
isle of man's (smol island between ireland and gb) flag looks also quite cool
🇮🇲
That’s pretty cool ye
turning into a vexillologist here XD
Irl flag collection when
i gave all mine away some years ago
collected flags from countries ive visited
wasnt a lot anyway
you might have an actual chance to get a flag from every country, if you just contact all embassies in your and surrounding countries 🙂 or the countries themselves
heh that actually sounds doable lol
i dont think theyd pay for shipping though
so it gets increasingly expensive with the distance
youve shouldntve worryve aboutve thatve
Funnily enough the emblem of Sicily, the trinacria, is also this but with a head added in the middle for comedic effect
reminds me of a character in vampire survivors
haha it looks exactly like that
I haven't played in so long that I've no clue who that is
trinacria one of the bosses
12th or 14th a new DLC is going to be released for VS
Lol there's so much content I haven't seen
I remember when there were like 4 maps
Last time I played was around the time they added the bone zone
da bone zone
🇧🇴 🇳🇪 🇿 🇴 🇳🇪
i still miss 2 secret characters : > other than that i have every secret/achievement
Rip 🇧🇴 🇿 🇴
texture swizzling pushed
still gotta finish adding it to the ex🦐les, but it at least appears to work for imgui in one of them
i just saw 🙂
my queschin still remains tho
why do we gltexparameter the schwizzle, but never unschwizzle
is this not some sort of global state per texture
affecting shaders etc as well
I dunno what you mean
The swizzle is per texture. That's why you set it in the texture view create info
Then you can make as many different swizzlings as you want by making a texture view for each
yes its per texture
but does it also not affect how shaders sample from it
when you swizzle gb to r... and do a o_color = texture(s_tex, uv).rgb
arent .gb treated as red there too?
yes
That's in fact the only behavior I want (or at least care about in this case)
right now we want swizzle to make imgui show textures when alpha is 0 or depth texture become greyscale
ok for the latter part its irrelevant since depth is usually read from .r anyway, and .gb dont matter really
but if you have no alpha ... eh brb
Anyways, I make a view of the texture with alpha swizzled to 1, then I only use that for ImGui
ImGui backend then samples the texture in a shader, and alpha is 1 (instead of 0) so it appears
eh sorry
The swizzled view is not used anywhere else
ah
thats the clue
i forgot about textureviews, although i just saw the code
you create the view from the actual texture, and just swizzel the view, not the actual texture
I didn't push the example code that calls it yet, btw
if you dont use textureviews, but raw textures
and you swizzle your fbo color attachment 2, which has rgba as well
I figured it only makes sense for views to be swizzleable
but doesnt use a for alpha but for lets say metalness, then you uold mess up the whole renderer, is what i meant to say
yeah
sorry for my weird rambling : )
Yeah I won't want to use the swizzled texture for actual rendering
Just for debugging in this case
Unrelated, but I feel like there are a bunch of bugs lurking in my texture view code
I haven't tried taking a view of a view for example
E.g., taking a view of mips 1-5, then a view of mips 2-3 of that (which should correspond to mips 3-4 of the base texture, I think)
what if you need 2 views with those 2 ranges
Yeah I gotta test it
My point is that it's untested, so idk if it's completely broken or not
fair
maybe render a scene with cubes, 1 per moplevel
then render 2 other cubes, next to the originals, showing those 2 views in action
Or perhaps even squares
mayhaps with a modified texture with distinct moplevel colors or text
Or I could press a button to switch the mip shown on a rectangle
ye
Then just display a big number in the mip
but its boring
Heh
when you open a starter project in UE you have a floor, some shrimple sky, shadows are going and basic pbriblisms do their thing
😛
I feel like the gltf viewer is already attempting to be that
It just needs more PBRisms and clustered light cullingisms
its also super easy of me requesting these things
while i am struggling with shrimpler shit myself 😛
I'll update my prio list
secret article -> a touch of PBR and clustered lighting in gltf viewer -> galunga
you mean one thing leads to another? 😄
You could say that
If you knew, then you should've impersonated me and posted it for me
Like the April 1stisms you guys did 😄
but then i could'vent've played the dreddjiff.gif
couldn't've done it
how many times have you used schlepp and isms outside this discord since its introduction? 😄
hehe
do you use Fwog irl a lot though?
I use it for all my graphics projects nowadays, so I guess yeah
Oh true I guess I meant the word Fwog
Ah
I don't say that word much IRL because I don't talk to people about this hobby IRL 😔
Oh no 😦
I talk about it with you guys plenty 🙂
"hey pa, did you know im working on this cool engine of mine, i called it fwog"
"holly frog, i didnt know you like frogs!"
The average person doesn't even know what a graphics API is
"damn right i do, hmmm mmmh showing favorite frog pic"
They might've heard of Vulkan or DirectX
Whenever I tell my family what I do, my mother always asks "Has someone not done that before?"

My dad knew what physx was when I brought it up once
It shows up in splash screens and whatnot
your dad is a cool frog
does he code too? or know his way around in computerisms?
Mine plays lots of TF2 and DoD:S 😄
i plaed dod alot too back when 😄
Sometimes I walk in and ask if he's winning
Nah he's always at the top of the scoreboard
I can hear him laughing from other rooms when he rekts some fools
Fwog must be known
Lol
on the back of the cd box you see a liddle pic of littlejaker and papa grinning into the camera 😄
with a little backstory
Heh
XD
But yeah he's interested in learning to code now that he's close to retirement
I sent him the website for my CS class where I learned C programming
I'm trying
can i help i think gltf viewer with movablw camera is all u need yea
back to work basil 😄
Sleep*
by sunday i want to see some car driving and physics action 😉
I should do something like for rsm 2
my current filter tends to delete detail in corners
I wonder why these things get screwed up during window resizing, but only when I use texture views
I'm creating and destroying the textures and their views at the same time, so idk what gives
it's a bit sus how the view remains corrupted while my cursor is just holding the resize bit, but not actually triggering resize events
then it suddenly becomes "uncorrupted" when I release click, even though no resize event happened (so the textures are still the same)
I'm gonna blame nvidia for this one
nvidia moment
How weird. Which gpu do you use?
rtx 3070
the weird resizing behavior happens on AMD too 
at this point I just wanna say it's a windows or glfw quirk
inb4 happens on linux
did my task breakdown for Fwog Racing
yea i waited until now to start work fr fr smh
dunno if related bug. I'll put it as a 'Issue' for the Fwog repo
https://github.com/JuanDiegoMontoya/Fwog/issues/63
what's the bug?
it looks kinda laggy, but probably because 400 samples of unfiltered RSM is the default
I got the github issue btw, I'll reply there @fiery sorrel
oh its super minor u dont even have to fix it
It's the G-Buffer clear thing I wanted u to be aware of it in the example
it's actually not a bug
meant here
indeed
ah ok. The reply explaining what's going on there can still be helpful
reply made
oh that's helpful reply
thanks
oh no @long robin what have u done
using that word... that word that should not be said... summons the @robust bough
:p
which one is that in
02_deferred.cpp
ah
im gonna do that yea. I am stealing ur cube primitives
because i dont want to get out paper to remember whose face has whose vertices
is Vulkan experience meant as a pre-req for fwog
The only way I knew to render lines was because I used Vulkan before and knew about the InputAssemblyState when creating the pipeline but there's no examples provided that shows how to use it otherwise.
it helps
it's not supposed to be a requirement, but I can see it being confusing have to put stuff in the pipeline
I will post an issue to describe the observation I made
now that there're docs, you can actually read them
tldr: one extra line of code in hello_triangle can also be a 'soft tutorial' for this concept I guess
because I only was able to figure out what to do because I already used Vulkan before
you can also look at pipeline.h to see what state is available to set
I knew to check there and follow the rabbit hole around pipeline stuff to do it
but only because like I said I knew Vulkan stuff already
in OpenGL people are used to setting the primitive in the draw command
I mean yea they could see it from here
my faith in opengl users is low
understandable considering what you'd see in #opengl
I also realized I'm using spans (pointer + size) in some places where ranges (iterator + size) are a more correct abstraction, but idc tbh
there is no 'default depth texture' for the SwapChainRenderning stuff right?
If I want a depth buffer I have to use BeginRendering instead
how do I write to it then
ive tried all three ops lol
and looked at the header and stuff but i dont get it
The examples use BeginRendering for depth buffer stuff
by binding a pipeline that has depth write enabled
like yea I have to ue BeginRendering if I want these boys I think?
yea I did that at first
oh
but I didn't specify my attachmentloadop
the rendertoswapchain stuff just exposes rendering to the default fbo
ok so if I do that and then nothing shows up what am I missing
if I dont want to use BeginRendering() I mean
so like I thought its because the default swapchain doesnt seem to have a depth buffer so it'd always 'fail' the test or something
I dont see any place to attach the depth buffer to the default fbo
I will be using BeginRendering() anyways but I was just wondering if I was missing something in SwapchainRendering for a depth texture
there is already a depth buffer
assuming you got one from your windowing system
so you don't need to attach anything, it's just there
is there a tldr on how to use it with just 'BeginSwapchainRendering'
if not its ok I can look at the documentation
All examples use BeginRendering() to render to a texture and have a depth buffer attachment and then render that texture into SwapChain
oh I forgot to consider my rasterizationState
it's just like regular opengl, but different
BeginSwapchainRendering has an implicit color target and depth/stencil target
well in regular ogl I can just 'haha glDepthMask(gl_true) go brr'
template<typename... Args> inline requires (sizeof...(Args)<=4) ClearColorValue(const Args &... args)
ah yes, dokumentation
ok I figured out how I was retarded
it was an OpenGL brain rot
I forgot to set a clear depth value. I noticed it through RenderDoc lol
I just thought it'd always be 1.0f by default idk why
wait i got an idea I can edit simple_scene.glb to get an easy ground for placeholder
genius
deforestation
how do you like teh rsm sample
its cool but im not at a deferred rendering skill level to full appreicate it yet
wack without occlusion?
but both it and the gltf_viewer are really good example scenes
if only we could find a good way to use rsm with specular back then it would be more epic
ray tracing sample when
this is the best I could manage but the sample count is a meme
when you add ray tracing
use madmann's lib I'll assist you (when I finish my thesis lmao)
GL_FWOG_ray_tracing
after I do a bunch of other stuff
clustered volumeisms?
🔪 ?
that's also on da list
god I wish I could add a probe sample tho
I absolutely did not expect college to turn out as busy as it did
pure madness with how they require things way ahead of time because they optimize the diploma creation pipeline at the price of overworking staff and students
I'm not even supposed to have a definite thesis topic yet by schedule, but in reality I must have a draft the day after tomorrow
and I have 0% ready lmao
EXT_diploma_objects soon
quickly grabbed my old project as the topic to write a paper on, fr productive leisure helps to move in life
the macro misread the & as &&
I saw dat
was such a stupid question LMFAO
it looked like you were asking what 1 was 
I was like 'how tfw this and conditional even work what?'
then I realized it was an &
why sampler state constructed every frame
woah based
I don't get that error in my things for some reason
hold on did it disappear
yea its related @long robin
https://github.com/ClementineAccount/Fwog_WarningsFixed
when I created a fork just to test it out I can now compile my other project
weird
I still get some warnings but they aren't treated as errors
OH
I found out why
You commented out Werrors but not Wx
let me test if thats the case and if so i can make a pR
I only compile with msvc btw
I don't have werror for the other ones because the warning diverge too much I guess
The crt thing is fixed with a define
I think if Werrors is commented out, Wx should also be commented out
since that's just msvc's version of Werrors
maybe I'll try to enable werror again
the problem is that ci compiles for gcc 🐸
but yeah ideally everything should have werror or wx, but I only enable it for the platform I can quickly iterate on
also fwog's werror things shouldn't impact your project that includes it as a dependency 
I wish there was 'Werror, Wx but only for my code not other libraries'
I think it does actually(?)
mayhaps can ask @golden schooner to include it into his CMake Template as a test. When I tried to i do get this situation
there is
what is it
system includes
Maybe my problem is that I'm using the wrong scope for the compile options
that doesn't affect fwog
can you TLDR it basil?
but i guess if you get warnings from fwog headers you still want system includes
ok so the tldr is @golden schooner
I tried to include Fwog into my project that was born from the Deccer CMake Template
that should be virtually the same
And that caused my compiler to be like 'yo can u fix cgltf kthxbai'
When I forked Fwog and comment out /Wx and used FetchContent for that
then suddenly I can compile again
i set warnings as error on the project level in my cmakeisms iirc
no but before I included Fwog it was fine
unless I removeed Werrors and forgor I did that
How are you including Fwog in the project
in which case it was prob W4 instead
was aout to ask the 
yes
So that fork does run
but if I change it back to Jaker's id prob get back the errors
in the 2nd you add teat warnings as errors
let me test and see
hmm still have headerfiles in tehre, should re 🇲🇴 🇻🇪 those
you are worse than me, you talk like a weasel with severe adhd
what does that mean
every other sentence its another topic 😄 or im just to slow to follow
i dont get it. I only talked about Fwog include FetchContent
hehe, weasel made me giggle
Smh trying to beat my message record
