Live data from Hacker News

Meta releases Intermediate Graphics Library

khronos.org

91–100 of 221 posts

Re: Meta releases Intermediate Graphics Library

#91
Thnx Meta! This is so cool that it's like a high-level Khronos release. #1 priority is I believe getting USD / Hydra rendering to WASM targets for browser use. But in the meantime, ray tracing doom ii summer of fun! ;)

Also, TIL the Meta Quest 2 is running Android 12L??

Re: Meta releases Intermediate Graphics Library

#92
post #64
post #53

Earlier quoted context omitted.

It does seem to be Meta's answer to WGPU. The picture looks like they didn't have automatic tonemapping, the rendering equivalent of auto exposure control. So the picture is too dim. I brought it into a photo editor, saw that the top third of the intensity space was empty, used "Levels", and it looked much better. That's a standard glTF test scene, called "bistro". Here's the same scene, rendered with Rend3/WGPU.[1]…

hi John! you know a lot more about this stuff than I do. is it possible they just haven't implemented a full PBR pipeline for this demo/screenshot, or do you think this (the differences in the two screenshots) is more an indication of what would likely be areas for future development?

They seem to have implemented everything that the "bistro" scene calls for. I don't know if those hanging colored lights emit light, though. Rend3/WGPU doesn't handle large numbers of light sources yet. But you wouldn't see them in daylight anyway, because this is high dynamic range rendering, and, as in real life, those light are dim relative to the sun.

Here's the same scene in Godot.[1] This was modified a bit, and has accurate values for the lamp illumination. So they are totally washed out by the sun.

And here it is in several other renderers, with a video.[2]

The original scene was in .fbx, from Amazon's "Lumberyard" project. [3] That project started as the Crysis engine, was bought by Amazon, spun off as open source, was renamed Open 3D Engine, and is still getting Github changes, so it's not dead.

There are many open source game engines. Most of them get stuck at "mostly works, not ready for prime time". That's where the problems get hard and fixing them stops being fun.

[1] https://github.com/godotengine/godot/issues/74965

[2] https://www.ronenbekerman.com/orca-amazon-lumberyard-bistro/...

[3] https://developer.nvidia.com/orca/amazon-lumberyard-bistro

[4] https://en.wikipedia.org/wiki/Amazon_Lumberyard

Re: Meta releases Intermediate Graphics Library

#94
post #86
post #65

Earlier quoted context omitted.

Even outside of platform-specific stuff, I'm seeing it all over the core rendering code. I'm not impressed. https://github.com/facebook/igl/blob/main/samples/desktop/Ti...

You're right, that's weird. The particular snippet you linked to isn't that egregious, it just creates a dummy 1x1 texture for some reason, and changes a hint. A lot of stuff in that file though is branched on that opengl flag. The `render` function is a huge mess, and it doesn't even seem like that demo supports Metal at all. But tbf also, I'm just skimming the code base. Maybe they'll publish some better docs later…

It's a very weird one.

createRenderPipelines uses the branch to add #version 460 to the beginning of shaders (one would think the platform backend could do that for you, also this won't support GLES2 or GL3), and also makes the programmer build a sampler/uniformblock mapping table.

That's... perhaps needed if you're on GL3 because you don't have access to binding=N in the shading language and you don't want to do any shader parsing in the backend, but also, you're forcing it on GL 4.6, so... huh? Just use explicit binding in the shader and the binding index APIs.

The render function uses USE_OPENGL_BACKEND to adapt for the -1...1 clip space. Sure, again, glClipControl is more modern than your minspec, but you're already forcing GL 4.6, so WTF. Also, it's not hard to write device_->adjustProjectionMatrixForNativeClipSpace(); that does a matrix mul.

It also makes the shadow render target have a color attachment (wtf? depth-only targets are supported just fine in GLES2/GL3 to my knowledge), and it also... doesn't use an index buffer when rendering? (EDIT: This is because it's using a 32-bit index buffer, which GLES2 doesn't support. But it's a much better idea to split it into multiple 16-bit index buffer draws if required than drop the index buffer entirely... also, you know, shaders have 4.6). I give up trying to understand what's going on. Oh, and despite building the uniformblock mapping table from before, you still have to use glPipelineState->getUniformBlockBindingPoint? What on earth?

This does not impress me.

Re: Meta releases Intermediate Graphics Library

#96

They claim to support WebGL as a compile target, it seems like a pretty big missed opportunity that all of their demos don't link to in-browser WebGL running examples!

To be fair, we don't want WebGL anymore, we want WebGPU now =P

Speak for yourself. I'm preparing for WebGFX. Need to stay ahead of the curve.

Re: Meta releases Intermediate Graphics Library

#98

385 lines for a triangle: https://github.com/facebook/igl/blob/main/samples/desktop/Ti... When you are trying to sell a wrapper you want your hello world example as small as possible not as comprehensive as possible.

ye, it's approaching 50% of LOD of a vulkan hello triangle
Post reply on HN