Minetest logo

IRC log for #minetest-dev, 2022-04-23

| Channels | #minetest-dev index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:57 proller joined #minetest-dev
01:16 Alias joined #minetest-dev
04:00 MTDiscord joined #minetest-dev
05:35 calcul0n joined #minetest-dev
08:24 YuGiOhJCJ joined #minetest-dev
09:18 Fixer joined #minetest-dev
10:06 HuguesRoss joined #minetest-dev
10:09 proller joined #minetest-dev
10:59 proller joined #minetest-dev
11:09 appguru joined #minetest-dev
11:16 Taoki joined #minetest-dev
11:20 jojje joined #minetest-dev
12:27 cranezhou joined #minetest-dev
14:34 paradust Is it expected that many shaders (e.g. object_shader/opengl_fragment.glsl) don't work with gles under #version 100 ?
14:35 paradust *using #version 100, rather
14:37 paradust Sadly WebGL supports only versions 100 and 300 es. Nothing in between, no compatibility profiles.
14:37 paradust So the next question becomes, has anyone made any attempt to bring the shaders/pipeline up to 300 es.
14:44 paradust Although it would probably be easier to back it down to 100, since it seems to be using features only from version 120
15:25 sfan5 I was under the impression that only GLESv2 supports shaders
15:25 sfan5 maybe WebGL is different
15:36 paradust yea. The version numbers are a mess. WebGL1 is GLESv2, which supports GLSL ES 1.00 (i.e. version #100). WebGL2 is GLESv3 which supports GLSL ES 3.00 (#version 300 es)
15:36 ShadowBot https://github.com/minetest/minetest/issues/100 -- Unexpected uses of transparency lead to x-ray/underground view
15:36 paradust oops
15:37 paradust Wikipedia has a chart here: https://en.wikipedia.org/wiki/OpenGL_Shading_Language#Versions
15:37 paradust second table
15:40 paradust I'm using the WebGL1 irrlicht backend which extends the GLES2 driver
16:46 erle paradust it might not work anyway with some shaders because the number of instructions exceed the limit set by OGLES2. so if that could be fixed, it would be nice too.
16:51 erle in fact, i do have hardware which supports OGLES2 but the rendering looks absolutly crap in minetest. someon told me it is the same issue with the mali 400 GPU.
16:51 erle so if i want to optimize shaders so they fit, where would i start to learn about it?
16:52 erle OpenGL ES profile version string: OpenGL ES 2.0 Mesa 20.3.5
16:52 erle OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
17:32 paradust hm, I haven't encountered an instruction limit yet. But I'm stealing dealing with basic compile errors
17:33 paradust Where to learn shader programming? I'm not the expert, for sure
17:33 paradust I'm piecing it together from what I learned messing around with Unity, and skimming the OpenGL/GLES docs
17:34 erle paradust basically, the question of conformance to the OGLES2 specification is defined by *passing the tests*. which means that you are only guaranteed to run on all GOLES2-capable hardware if you adhere to the *minimum* supported shader size.
17:35 erle i guess the mali 400 GPU is probably an uncommon case, but AFAIK older intel hardware just matches those limits exactly.
17:35 erle or rather, i am under the impression that minetest shaders exceed the size guaranteed by the spec
17:35 erle to work
17:36 erle paradust, basically, if you make shaders work with #version 100 this might solve my problems too, so if i can help, tell me how.
17:36 paradust I'm having trouble getting them to even compiler, because they use syntax that's not supported in OGLESv2. So I can believe there must be more issues. It seems untested
17:36 paradust *to even compile
17:36 erle oh well, that explains a lot
17:38 erle paradust, this is what minetest with OGLES2 looks like on my hardware https://mister-muffin.de/p/7RdQ.png
17:38 erle paradust, inventory looks like this sometimes lol https://mister-muffin.de/p/2OBT.png
17:39 sfan5 it definitely works on OpenGL ES 2.0 supporting hardware/drivers, if anything that'll be yet another webgl specific thing
17:39 sfan5 and no, downgrading the version won't fix your broken drivers
17:47 erle well, do you have any idea what exactly would be broken to make distant stuff black?
17:51 sfan5 the shaders, probably
18:02 erle sfan5 i am trying glslangValidator to figure out the features that might exceed specifications. have you experience with that?
18:02 erle it claims that if it accepts a shader, than all conformant implementations accept it
18:02 sfan5 no
18:04 erle so here is one error message it spits out: 'scalar swizzle' : not supported with this profile: es
18:04 erle (from minetest 5.4.1 shaders)
18:05 erle i bet this is a case where most desktop GL things support this though
18:16 erle sfan5, if you have debian, you can install the package glslang-tools. the validator defaults to ES version 100, but can also do desktop version 110
18:27 paradust I realized the shaders actually compile fine for me without shadows enabled
18:27 paradust The problem sections seem to be protected by ifdef's for shadows
18:28 paradust dynamic shadows
18:30 erle i believe the shaders are actually not correct even without shadows
18:30 erle take this one: https://github.com/minetest/minetest/blob/master/client/shaders/stars_shader/opengl_fragment.glsl
18:30 erle it's super simple
18:31 erle but thefloat type requires a default precision
18:31 erle if i add the line “precision mediump float;” it passes strict validation. without, it does not.
18:32 erle i believe that these shaders were written by people who know *desktop* GLSL
18:32 erle and then thought that would neatly map to ES, but it does not
18:32 erle https://stackoverflow.com/questions/28540290/why-it-is-necessary-to-set-precision-for-the-fragment-shader
18:32 paradust erle: https://github.com/minetest/minetest/blob/master/src/client/shader.cpp#L646
18:33 erle oh i see!
18:33 erle i eat my words
18:33 erle oh lol
18:33 erle so it is using the same code and then adding different prefixes
18:33 paradust yup
18:33 erle let's see what happens if i add the prefixes
18:51 erle paradust, this is my shader validation shell script: am i missing anything? if so, what? https://mister-muffin.de/p/PsXP.txt
18:52 erle oh, i can make it do both desktop and ES
18:53 paradust that code adds much more to the prefix
18:53 paradust https://github.com/minetest/minetest/blob/master/src/client/shader.cpp#L707
18:54 erle this sucks
18:54 erle this is the job of a build system
18:54 paradust can't, it's very dynamic. if you adjust graphics settings, it recompiles the shaders with new defines
18:55 paradust I guess you could try to cover every possible combination
18:55 paradust that'd be better for testing
18:56 erle given the combinatorial explosion you claim i am VERY sceptical that this is valid in all cases
19:02 erle sfan5, any idea how to dump the compiled shaders?
19:03 erle sfan5, sorry, i mean the generated source code. not the compilate
19:03 Krock hijack where the shaders are loaded, after the header #definitions
19:03 paradust if you build your own minetest, you can dump it here: https://github.com/minetest/minetest/blob/master/src/client/shader.cpp#L790
19:03 paradust add a few lines above it to store the strings to files
19:04 erle seems that dumpShaderProgram() is only called if generation fails
19:04 paradust dumpShaderProgram prints it to the screen with line numbers
19:05 erle oof
19:05 paradust you need to modify the code to pull it out, there's no way to force it out with the existing code
19:05 paradust well, I guess you could add some junk to force it to fail to compile, and then extract it from the dump
19:05 erle well that sucks
19:05 paradust but the dump is a mess
19:06 paradust you can clean it up of course
19:06 erle i think the easiest way to assist to your goal of #version 100 compat is to a) dump shaders b) feed them to the validator
19:07 paradust Actually, since I know the issue is just dynamic shadows, I'll probably put it aside for now.
19:07 erle damn
19:07 paradust I have a full dump of the compile errors
19:07 erle i thought you'd be provoked into action by my remark
19:08 erle and make a dump functionality ;>
19:08 erle silly hope i know
19:10 paradust I have 100 other things to fix. Have to pick my battles
19:19 paradust does your exotic hardware run chrome/chromium/firefox/or safari?
19:21 sfan5 paradust: dynamic shadows not working on gles is a known limitation
19:34 paradust i see
19:34 paradust erle: if your gles2 hardware can surf, I'd be curious if it works with: https://minetest.dustlabs.io/beta/
19:38 sfan5 I'm surprised how good the performance is, is it wasm?
19:39 paradust yea
19:39 MTDiscord <x2048> heh, dynamic shadows are not even finished yet :)
19:41 paradust Shaders just improved performance by 50% or so
19:41 paradust But it's now crashing with glBufferSubData overflow pretty frequently. Still needs debugging
19:42 paradust x2048: ah
19:49 MTDiscord <x2048> erle: let me finish #12195, and I'll give you a dump of the shaders
19:49 ShadowBot https://github.com/minetest/minetest/issues/12195 -- Improve shadow filters by x2048
20:02 erle x2048 in case you yearn for additional work, make it a command line flag? ;)
20:03 erle i.e. start minetest, dump shaders
21:02 MisterE[m] sfan5, please check out: https://github.com/minetest/minetest/issues/12092#issuecomment-1107643967
21:04 MisterE[m] please examine the bug test mod, log in to the server, and follow the instructions to test the bug. Also install the mod in singleplayer to see that the bug only occurs in multiplayer
21:04 sfan5 you guys dont need to keep a server running for reproduction you know
21:05 sfan5 latency induced bugs are easy to test locally on linux
21:06 MisterE[m] hmmm... well, its on a server I run anyways, and it doesnt break gameplay
21:07 MisterE[m] so I dont mind running it. This bug is breaking mine and Zughy's minigames servers, and the workaround is not a 100% solution. I would really like this fixed in 5.6
21:07 sfan5 (https://daniel.haxx.se/blog/2010/12/14/add-latency-to-localhost/ for anyone wondering)
21:07 sfan5 sure, was just saying
22:07 erle MisterE[m] so the workaround is to use minetest.after(0, ...) or so?
22:32 panwolfram joined #minetest-dev

| Channels | #minetest-dev index | Today | | Google Search | Plaintext