11 ms·
Physically Based Rendering in Filament
- brundolf 5y agoWhat's the usecase for Google building a PBR? Is it just a "we're huge so let's have a foot in everything" deal? Or do they have some novel insight that could put it above and beyond the status quo?
- rsp1984 5y agoHaving worked at Google myself, quite honestly, I don't think there is a use case. Romain and Mathias are both very senior engineers. They get a lot of freedom to to work on whatever they desire.
- JoelEinbinder 5y ago> This is not an officially supported Google product. Basically when Google employees ask permission to work on a side project, Google asks them to release it open source under Google's GitHub but mark it as not an official Google product. This is probably something the authors work on nights/weekends and not anything to do with their work.
- brundolf 5y agoOof, that's a pretty draconian constraint. Glad I don't work at Google.
- dekhn 5y agoYou can also request that you obtain total control over the project (not hosted by google, not copyrighted by google) but those requests are hard to get approved.
- jopsen 5y ago> but those requests are hard to get approved. I had no problems getting approval for a tiny 2D home-trainer game I worked on this winter.. I suppose it varies depending on what you do. But if you work on part of it during 20% time, you probably can't do this. disclaimer: I work at Google.
- skybrian 5y agoIt makes sense when you want to use your open source project at work, rather than having it completely separate from work. It might be possible to work on it as 20% time if it’s plausible that projects at Google might use it. You could talk about it at promotion time. And at the same time, you’ll still be able to use it if you leave the company. This is a way to have your cake and eat it too. Most code you work on at work isn’t open source at all. Alternatively, you could have a side project that’s completely separate from your job.
- brundolf 5y agoThe GP made it sound like you can't just have a side project that's completely separate from your job; that side projects are Google's by default unless you go out of your way to get permission to separate it out
- pjmlp 5y agoIn most jurisdictions that wouldn't even be allowed by the country law. Google or any other company would have very hard time forbidding what employees do on their free time outside work, regardless of what they feel like putting on the work contract.
- pjmlp 5y agoOriginally it was presented as part of Sceneform. https://developers.google.com/sceneform/develop https://developers.google.com/sceneform/develop But like all big plans presented at Google IO it eventually joined Google graveyard, and apparently they kept on working on Filament alone.
- msk-lywenn 5y agoGoogle Earth?
- happyweasel 5y agoThe Status Quo in 3d is always moving ahead. Having another good open source PBR Renderer available can be hugely beneficial. Game engines with non-state-of-the-art renderers coudl try to integrate it - or more general: any app that wants to display realtime 3d content in a convincing way could benefit from it - most 3d content creation pipelines nowadays are tailored towards PBR (f.e. Metal/Roughness Workflow). If it focuses on mobile then it probably also perform well on desktops. Sadly, no DX support.
- anentropic 5y agoDoes anyone have any experience of using this system outside of the Android ecosystem? i.e. the material compiler targeting desktop/vulkan https://google.github.io/filament/Materials.html#compilingmaterials https://google.github.io/filament/Materials.html#compilingma...
- pjmlp 5y agoOn Android this was originally part of Sceneform. https://developers.google.com/sceneform/develop https://developers.google.com/sceneform/develop I doubt anyone beyond the authors is using it in any form.
- RomainGuy 5y agoIt's used on desktop and iOS as well.
- lasagnaphil 5y agoI tried to use it since I desperately needed a standalone renderer in C++ that is better than my hand-rolled one. Turns out that it only supports Clang and not GCC (it depends on libc++ instead of libstdc++, which generates tons of ABI issues when integrating with existing projects and libraries). In short, if you need to use other libraries (such as libtorch) that don’t support libc++, then don’t use it, it’s going to be a big waste of time.
- happyweasel 5y agoI think Daz3D uses Filament as a Viewport Renderer.
- gimmeThaBeet 5y agoI was really interested to read about their subsurface scattering model, but alas, it's like the only TODO in this whole thing. Which is really saying something, there is an incredible wealth of information in here.
- RomainGuy 5y agoThat subsurface scattering model is not what you would use for skin, etc. It's a fairly simple approximation similar to what Unreal and Frostbite have used (use?) in the past to cheaply approximate somewhat translucent materials. It's mostly still a TODO because it's not that interesting.
- redleader55 5y agoLooking at the Suzanne demo - https://google.github.io/filament/webgl/suzanne.html https://google.github.io/filament/webgl/suzanne.html, you can see some objects being reflected on the back of the head. Is it raytracing?
- monocasa 5y agoNo, it's environment mapping.
- deleted 5y ago[deleted]
- adamdusty 5y agoWithout looking at the code, I doubt it. Real-time reflections are generally done with offscreen rendering and cube maps. The objects being reflected are still rendered, you just can't see them because they aren't in the projection/view space.
- dangerbird2 5y agoThe scene being reflected is almost certainly pre-rendered. Fun fact: it's the Cornell Box, a very common placeholder scene in computer graphics. https://en.wikipedia.org/wiki/Cornell_box https://en.wikipedia.org/wiki/Cornell_box
- qayxc 5y agoAll I can see is a cube map. Looking at the source code of the scene confirms this: it's just a traditional skybox projected onto the mesh. No raytracing there, just plain old cube-mapped reflections.
- sudosysgen 5y agoYou can tell it's not raytracing because you can't see the ear of the head reflected into the head. That's the tell-tale sign of raytracing, when an object reflects into itself.
- deleted 5y ago
- mncharity 5y ago> Figure 44: The Planckian locus visualized on a CIE 1931 chromaticity diagram Visualized... using broken code. Note the Planck curve isn't going through white. Imagine your surprise at setting your monitor to a 6500K or 5000K white point, and finding it green or yellow. > (source: Wikipedia) Sigh. WP has Article and Talk, but neither has served as a "writer's notebook" for long-term memory. So when there's lots of brokenness out in the world, and there's been lots of broken color code over the years, WP has difficulty remembering to avoid it.
- kelsolaar 5y agoIsn’t it a consequence of a post rendering creative editing, e.g. blurring of the generated chromaticities colours, rather than the code itself being broken. No display can reproduce the entirety of the chromaticity diagram, thus there will always be some form of “cheating” required to try to picture it. I do agree with you that burring is not great though and does not really serve anything but aesthetics.
- mncharity 5y agoGamut limitations mostly affect the periphery, rather than the center. Three arms of lightness converge on a white point, here near the bottom of the line marked 6000. Incorrectly far below the Planck curve, pulling bogus colors down over the curve. The curve should go from red to white to blue. Very not orange yellow green cyan. Figure 45 just below looks more plausible. Earlier versions of the wikicommons diagram[1] seem less blurred, making it easier to see its error. For extra fun, this[2] illustrates both gamut position, and the recurring brokenness of a white point label indicating where white was expected, and the rendered white point being elsewhere. [1] https://commons.wikimedia.org/wiki/File:PlanckianLocus.png https://commons.wikimedia.org/wiki/File:PlanckianLocus.png [2] https://www.fourmilab.ch/documents/specrend/figures/ciegamut.jpg https://www.fourmilab.ch/documents/specrend/figures/ciegamut...
- jacobolus 5y agoIt’s impossible to plot colors on a chromaticity diagram in a way that isn’t grossly misleading. This particular picture is one attempt at a compromise that will give readers the right conceptual impression, not “broken” accidentally. The best compromise if you want color might instead be to only color a narrow strip around the triangle forming the gamut of your trichromatic additive display (or, say, sRGB), with intensity of the 2-primary mixture at each point adjusted so that lightness doesn’t vary too sharply. A large portion of the horseshoe is outside your display’s gamut; common pictures either color the outside of the gamut gray, or try to clip out-of-gamut chromaticities to the nearest in-gamut chromaticity. The former is confusing for viewers who don’t already know what they are looking at; the latter gives a false impression. For the colors that are shown, one typical way to plot a 2-dimensional picture of the gamut is “top down” with the most intense available color for each chromaticity, but this introduces substantially misleading lightness artifacts based on the display not based on chromaticities per se. Beyond that, the xy chromaticity diagram should not be used. Stick to the u'v' chromaticity diagram.