11 ms·
Filament: Physically-based rendering engine
- corysama 8y agoThe actual code: https://github.com/google/filament https://github.com/google/filament Additional docs on their material system: https://google.github.io/filament//Materials.md.html https://google.github.io/filament//Materials.md.html https://google.github.io/filament/Material%20Properties.pdf https://google.github.io/filament/Material%20Properties.pdf Also, I'll plug http://casual-effects.com/markdeep/ http://casual-effects.com/markdeep/ which was apparently used to format the docs.
- yters 8y agoReally beautiful. Funny how high tech 3D engines get better at making things that look low tech and run down.
- taneq 8y agoIt's kind of like Moravec's paradox but for graphics. :)
- buchanae 8y agoWow. It's so hard to find expert-level documentation like this all in one page these days. I'm usually stuck piecing together information from a couple dozen (often poorly presented) websites. The topic is fantastic, but the presentation deserves some applause too!
- RomainGuy 8y agoGlad you like it. We found it hard to piece together all the information we needed and after reading hundreds of papers and presentations we figured that writing such a document would be helpful to beginners like us (in this field that is).
- buchanae 8y agoI think my render in Chrome is pretty broken. Here's a screenshot of the top of the page: https://drive.google.com/open?id=1YVtcV-J0JrDyW2pJ6vwgEDsgjOEusyEH https://drive.google.com/open?id=1YVtcV-J0JrDyW2pJ6vwgEDsgjO...
- RomainGuy 8y agoLooks like the page wasn't able to load all of its resources. Try to refresh the page until it works. I should make an offline version that doesn't require online processing.
- mkl 8y agoIt took multiple reloads for it to work for me on Android Chrome, and was almost unreadable for a couple of minutes (MathJax processing? Tried KaTeX?) due to an enormous right margin. The margin and font(?) changed multiple times. Is there a PDF version?
- tripzilch 8y agoSort of! The document uses a JS tool called MarkDeep to convert extended MarkDown into styled HTML. Just look at the source, it's 99% plaintext Markdown. If you read the MarkDeep docs, you'll find that it has a feature to convert the source into PDF instead. I admit I haven't tried this, though. If it were up to me, I'd do the transform offline and just serve the static HTML instead. And sure, a link to the PDF just to be nice :)
- RomainGuy 8y agoWe just serve straight from the source tree so it's not out of date :)
- robocat 8y agoMaybe add onerror tags to JavaScript and CSS resources and show a warning if something fails to load? Why is it still so hard to design a page to load reliably?
- valine 8y agoThe PBR tutorial series on LearnOpenGL.com covers a lot of the concepts implemented here like physically based BRDFs and HDR lighting, if anyone is looking for more resources like this. https://learnopengl.com/PBR/Theory https://learnopengl.com/PBR/Theory
- corysama 8y agoIf like me you actually enjoy tech talk videos, "SIGGRAPH University - Introduction to Physically Based Shading in Theory and Practice" is great. PDF version is linked at the bottom of your learnopengl page. https://www.youtube.com/watch?v=j-A0mwsJRmk https://www.youtube.com/watch?v=j-A0mwsJRmk
- gerdesj 8y agoAhhhhhhhhhhh - I will be DVd to death for this but: I have a screen (it happens to be about 18" wide in this case). Why on earth is the text in a stupidly thin column in a small font? It looks like TeX's daemonic alter thingie got into the render process somewhere or perhaps someone forgot the other two columns or wanted to torture a webby reader with multiple columns (mmmm ArXiv scrolly uppy n downy pdf) and lost interest. Anyway ... it looks crap in my browser unless I hit CTRL(num)+ a few times - 200% works.
- RomainGuy 8y agoWould you mind sharing a screenshot somewhere? I'm just using Markdeep's default CSS and the font size seems reasonable on all my screen. I'd be happy to try and tweak it though.
- gerdesj 8y agoI'm not sure what has gone wrong (if anything) - I'm a sysadmin not devops/webby minded. This is what I see: https://nextcloud.roseandjon.gerdes.co.uk/nextcloud/index.php/s/ttqRiyJK7zQrTC3 https://nextcloud.roseandjon.gerdes.co.uk/nextcloud/index.ph... - that should yield two images. Fonts/typefaces - lovely. Layout - a bit limited.
- RomainGuy 8y agoThank you! This is exactly the same render that I get. I could try and widen the column. I've grown to like the narrower width when reading graphics papers like this but I understand it's not for everybody.
- ArtWomb 8y agoKudos to Romain Guy on the Android Graphics team. Stunning WebGL demo here: http://www.curious-creature.com/2017/08/14/physically-based-rendering-demo/ http://www.curious-creature.com/2017/08/14/physically-based-... Good example of visual state-of-the-art on Android is probably the ARK dinosaur game. The Vulkan API is now included on latest Android. And with the compact gltf 2.0 format we can expect great experiences on mobile ;) Vulkan glTF 2.0 https://www.youtube.com/watch?v=sl7iN-vQCOs&list=PLy80eMh1-zPUz7y1JtFiS9I6H7_trBUAf https://www.youtube.com/watch?v=sl7iN-vQCOs&list=PLy80eMh1-z...
- RomainGuy 8y agoThe WebGL demo was the initial prototype of Filament :)
- naikrovek 8y agoglTF is pretty great, to be honest. At work I am writing a tool to convert Creo View models to glTF 2.0 models and I am experiencing actual joy while doing it. I looked at the COLLADA and glTF formats (I wanted something open) and very quickly chose glTF 2. I don't have any 3D format implementation experience, and I implemented glTF 2 in Golang in a day, or less. Anyway, it's a great format (AFAIK) and I wish more 3D modeling tools supported it. I imagine more will come on board as time passes.
- timdorr 8y agoAny thoughts on these criticisms from this Wikipedia article? https://en.wikipedia.org/wiki/GlTF#Criticism https://en.wikipedia.org/wiki/GlTF#Criticism (I'm not agreeing or disagreeing with them, I'm genuinely curious to hear from someone working with the format at the implementation level)
- ChuckMcM 8y agoOk this is way fun and drags me back to the days I was diligently trying to build a 3D rendering engine from first principles (sort of, I had Glide to put stuff on the screen). The renderer is perceptually better than the one that is included in my CAD package (TurboCAD) for pretty much all materials. So I'm guessing they will snarf it and dump the proprietary renderer and replace it with this stuff if they can. But the really interesting idea that popped into my head was this; could Google offer 'rendering as a service'? Specifically they have a zillion machines, many of which are doing nothing important, and they have this rendering package, and they have a scheduler that can put things on any machine. Imagine a service where you sent them a suitably detailed model description, and a set of lights, could they send you back a rendered image? Could you parameterize changes to the model description over time so that they could send you images in time based on your models? Could they do say 480 renders 'free' per month and then maybe $0.19/render over 480 in a single month? Could you create a studio of modellers who would design models, and animators that would animate those models over time, and a director who would compose those animations into scenes? This is basically Pixar without the expensive renderfarm. Does that enable new studios to bring their own vision to life? Does it offer a cost effective service to places like Pixar which allows Google to make money on otherwise idle resources? Curious minds want to know :-)
- steren 8y agoGoogle Cloud Platform offers https://www.zyncrender.com/ https://www.zyncrender.com/
- ChuckMcM 8y agoOkay that is pretty close, and acquired by Google in 2014. So presumably it is possible to be a small CGI shop and use this as your back end. Now I'm wondering if the economics pencil out. Clearly there was something that motivated Google to buy them.
- manigandham 8y agoThey work just fine, the product is one of many that's used by shops now. GCP even recently launched a LA region and had an entire day dedicated to the local VFX shops. Nothing stops you from just running a bunch of VMs which many do and they have rolled out the Filestore NFS to make shared disks easier too.
- mlvljr 8y agotypo: >> when comined with a diffuse map (right)
- fallingfrog 8y agoI'm still waiting for someone to do a completely physically based renderer, and simulate the whole EM spectrum, not just the 3 colors we can see. Then you can model chromatic aberration, and the difference between fluorescent and incandescent lighting, and prisms.. you could call it a really really physically based rendering engine.
- modeless 8y agoHere you go: https://www.indigorenderer.com/unbiased-rendering https://www.indigorenderer.com/unbiased-rendering
- tlarkworthy 8y agoWow those diamonds and sky. I think I might be fooled by the diamonds
- baq 8y agoIf I didn't know, I'd think the diamonds are a photo.
- gmueckl 8y agoAnd if I would not know better I would still believe all the images in IKEA catalogues and all the shiny cars in the car commercials were real. They are not. IKEA started rendering product images about a decade ago and the portion of rendered images is ever increasing. I don't know of any recent car commercial in which the product was filmed instead of rendered. The interesing question is: who does even suspect?
- jdietrich 8y agoThe Mill Blackbird is one of the most profoundly weird objects in the modern world. http://www.themill.com/portfolio/3002/the-blackbird%C2%AE http://www.themill.com/portfolio/3002/the-blackbird%C2%AE
- Solar19 8y agoThis looks very good. Ironic aside: Notice the "Processing math" message on the lower left when you first open the page? That's MathJax, a huge JS library, chugging away because Chrome doesn't support MathML. Try going to the page in Firefox and you'll see that it processes "the math" a hell of a lot faster than Chrome. Firefox supports MathML, and MathJax probably generates MathML for it.
- buchanae 8y agoOh, I actually didn't realize how much of the page I was missing until I opened this in Firefox. My page is very broken in Chrome 67.0
- stepik777 8y agoNo it doesn't, it renders it as a bunch of spans. MathML is basically a dead standard for the web - browsers either don't support it or support is incomplete and with bugs which makes it useless. https://www.peterkrautzberger.org/0186/ https://www.peterkrautzberger.org/0186/
- shawn 8y agoThere is no such thing as physically based rendering, and the sooner the world learns this the better. It’s a marketing term, nothing more. Here’s food for thought: what does it mean to multiply two colors? Nothing. It’s meaningless. It’s an approximation that happens to look good. But if you’re going to claim your engine is physically based, you can’t use it, because multiplying two colors is not based in physics.
- pandaman 8y ago"Physically based" in context of rendering means just that the light calculations preserve energy of light. So there is such thing actually.
- shawn 8y agoThere is no clear definition, further adding to the confusion. https://en.wikipedia.org/wiki/Physically_based_rendering https://en.wikipedia.org/wiki/Physically_based_rendering https://marmoset.co/posts/basic-theory-of-physically-based-rendering/ https://marmoset.co/posts/basic-theory-of-physically-based-r...
- sometimesijust 8y agoThat is a description of unbiased rendering.
- taeric 8y agoThis doesn't seem to be a substantive criticism. Abstractions, even those that are for physics, are done that way as far as it is convenient. Those by physics are the same. Similarly, what does it mean to add colors? Well, kind of non sequitur. Depends entirely on what abstractions you are working on.
- shawn 8y agoIf it isn't a substantive criticism, then it should be easy to address. The claim is precise: It's meaningless to multiply two colors, yet this is the core abstraction that we use in our rendering engines. New ideas are needed to advance the state of the art.
- Solar19 8y agoAlso, there should be a warning in case you're running tab heavy on a lower end machine, or just out of courtesy. The web page is 37 MB (saved as an MHTML in Chrome -- see your About:Chrome flags). It's yuge. MathJax alone is usually >1 MB of JavaScript.
- alfartigan 8y agoWhy, Google, why? That shit looks hideous.
- malkia 8y agoHad to do this: CC=clang CXX=clang++ ./build.sh -j release to get it started to compile (as it seems it had cc pointing to gcc and it did not understand some, apparently clang-specific flags).
- hexo 8y agoanother google minefield?
- andybak 8y ago1. What's the likelihood of seeing a Unity wrapper for this in my lifetime? I imagine the takeup of it if it plugged into Unity or Unreal would be massively increased. 2. How does it compare with what OTOY are working on for realtime? I imagine they are focused on quality over performance and aren't even considering mobile.
- kowdermeister 8y agoPBR is already enabled in most game engines, it's even supported out of the box by Three.js
- lebek 8y agoUnity and Unreal both support Android and PBR so I don't see an obvious benefit to being able to use this alternative renderer. Because of the license and the fact that it's a newish codebase written in simple C++ I can see it being popular as a starting point for in-house engines.
- clankfan 8y agoDoes anyone know how this document relates the the rendering done in the 2016 ratchet and clank game? That game has always astounded me and 8ve never been able to find a deep and comprehensive relation about how the rendering works.
- RomainGuy 8y agoIt's similar techniques, just better because they can afford more effects on a PS4 :)
- forgotpwd16 8y agoIt should provide adequate information as R&C 2016 is using cartoonish stylized pbr and many concepts/methods are common among different engines. Though most pbr engines seem to target photorealistic needs, physically rendered materials and lighting make even non-realistic models and environments look better.
- corysama 8y agoThey certainly use some of these techniques. Here’s a bit of convo about the code and art of R&C https://youtube.com/watch?v=Y65h1aO-xps https://youtube.com/watch?v=Y65h1aO-xps https://youtube.com/watch?v=zpvXB4yWvyA https://youtube.com/watch?v=zpvXB4yWvyA http://advances.realtimerendering.com/s2014/index.html http://advances.realtimerendering.com/s2014/index.html
- hi41 8y agoSuch beautiful documentation!
- skavi 8y agoDo will this replace Escher? Or do they serve different purposes? (UI vs 3D)