Home Forums Challenges Challenge 05: Beer foam

103 replies, 36 voices Last updated by Profile photo of Julius Ihle Julius Ihle 2 months, 2 weeks ago
Viewing 20 posts - 1 through 20 (of 104 total)
  • Author
  • #5236
    Profile photo of Zeno Pelgrims
    Zeno Pelgrims
    • Probably waiting for uncompleted render buckets
    27 pts

    Challenge 05: Beer Foam! New month, new challenge. Thanks to everyone participating in the last one, it was by far our most popular challenge so far. It’s very nice to see new members joining whilst seeing others participate time after time.


    We thought about how we should supply the foam and went with a simple mesh, as this is _most_ likely the way you’ll get it in production – and more interesting shading wise. I’m super interested in seeing the ways this will be solved! Volumes, anyone? Nested dielectrics, anyone? 🙂


    This challenge the HDR was captured in the room I shot the reference picture at – so the lighting should be closer than usual!


    Just as our previous two challenges, there will be a voting panel of industry experts in lookdevelopment – working at Pixar, ILM and Double Negative.


    This challenge will last two months instead of one since I will be traveling in July and won’t be back in time to organise the next challenge/voting. Good luck everyone!

    Reference imagery


    Getting started

    The initial scene setup is very straightforward and only takes 5 minutes. It is important that we standardize scene conditions between contributors, so please make sure that you’re not setting up the scene differently.

    1. Download and extract the .zip package.
    2. Open or load in the alembic, containing the scene geometry and camera.
    3. Assign a lambertian material to the floor geometry, assign the checker texture map [tex/checker_floor.tif] to the color slot.
    4. Repeat step 3 for the macbeth chart [tex/macbeth_chart.tif].
    5. Create an HDRI light and rotate it in these axis: [-175.0, -2.5, -180.0].

    The default lighting setup should look like the following.


    Please make sure to post renders using this setup. It is allowed to post extra renders using your own light setup. Since the shared light setup is at the core of the challenge, this will be heavily moderated. You’ve been warned!

    What is expected of you?

    This month, only one render needs to be submitted.

    The focus of these challenges is on sharing shading knowledge. Explain the shading setup in as much detail as you can be bothered to do. Think of shaders.xyz as a sort of open source project. Please, also share your scene file if possible. This is not a requirement, but would be very nice.

    About creating extra geometry – just try to think if it would work in a shading pipeline. If you think it would be practical, go for it.


    Feel free to post WIPs in this thread.

    For now, please use “auto” for the width and height attributes when uploading images. This is needed to display them correctly.

    To tag others in a post, use the “@” symbol.

    To avoid image compression, upload .png instead of .jpg! This is something we’re working on to avoid.

    That’s all! The winner gets picked by the admin team on the 1st of July, 2017 and will receive an exclusive SHADERS.XYZ t-shirt (hype!). Don’t forget to motivate others by voting for your favorite submission! Good luck everyone!


    #5724 Score: 0
    Profile photo of Max
    • Freelance 3D Generalist

    I’ve downloaded the file but the geo folder appears to be empty?

    #5726 Score: 0
    Profile photo of Zeno Pelgrims
    Zeno Pelgrims
    • Probably waiting for uncompleted render buckets
    27 pts

    @max3 Thanks for noticing that! I’ve updated the link in the original post as well.



    #5749 Score: 0
    Profile photo of Johnson Martin
    Johnson Martin
    • Student

    This should be a fun one. 🙂 I quickly set up the scene tonight in Blender Cycles for working on later. Also did some very basic shaders to start out with as a base.


    P.S. For anyone else using Cycles for setting it up, a Z rotation of -98.39 seemed to work for the IBL.

    Very basic shaders:


    #5819 Score: 0
    Profile photo of Ace
    • Surfacing / Look Dev Artist

    Hello Zeno  !

    First, thanks for this great website. I love the idea of this monthly challenge 🙂

    I had a question : is it allowed to tweak/redo the UVs, and to use custom made texture (not tilable) ? I get that we’re trying to stick to a production pipeline, but well, in a studio you have texture/surfacing artists. If this is more like a “pure shading” contest, no problem, just thought I’d ask !

    Thanks !!

    #5826 Score: 0
    Profile photo of

    Could i use alshaders?

    #5833 Score: 0
    Profile photo of Danil
    • Russia
    1 pt

    First step 🙂



    #5839 Score: 0
    Profile photo of Tanagon Woraprepop
    Tanagon Woraprepop
    • CG Artist, freelance

    W.I.P # 01
    Scene Base Setting

    renderer : Redshift
    renderTime : 1.12 mins

    W.I.P # 02
    renderTime : 6.17 mins

    #5858 Score: 0
    Profile photo of Carl Krause
    Carl Krause
    • Germany

    Hi guys 🙂 Always fun to start the month with a new shading challenge.

    I played a bit in Houdini and created a small setup for smaller an bigger bubbles and excluded those from the foam geo.
    Render was done in Arnold. The foam is a mixture of transmission and sss. But I struggled with the nesting of the dialectrics. The bubbles are always getting to dark.
    In Mantra or PRman I can choose a surface priority. That would be really helpful in Arnold. There was this custom shader from
    Jonah Friedman from Psyop that was capable of nested dialectrics but that was written for Arnold 4.
    Does anybody know if Arnold 5 is somehow capable of nesting dialectrics?
    Thanks 🙂




    #5860 Score: 0
    Profile photo of
    11 pts

    In before this gets out of hand 😀

    As I was one of the guys initially asking/proposing bubbles/foam as an upcoming challenge, I feel like I need to clarify my intention:

    A shader can of course be “just” a setup existing shader approaches, but also a written shader that does certain things specialised.

    In my suggestion I was explicitly hoping for the latter, written shaders that do raymarching, voronoi based intersections, thinwalled bubble evaluation etc based solely on particles as basic sources. I believe this is possible in some engines. Others do have dedicated shaders for foam, like Phoenix FD for example, so these could also be welcome.

    If the decision, which I totally respect, is to approach this given a basic geometry volume, I guess it does make sense to stick with that and not exchange/enhance it with custom geometry like bubbles, holes and so on. Because its about the shader and not the model I assume;)

    Looking forward to the results..

    #5877 Score: 0
    Profile photo of Thilo Seifert
    Thilo Seifert
    13 pts

    first WIP Cinema 4d Corona

    I used the dart throw algorithm via xpresso in Cinema 4d to place different spheres which are not overlapping

    from this mesh i rendered a depth map which drives displacement, ior, spec, roughness and sss.

    for the big bubbles i duplicated the mesh to render the bubbles separately to habve a foam layer under them

    the bubbles texture need some work and i have to fix the tiling issues

    #5884 Score: 0
    Profile photo of Julian
    • ArchViz 3D artist in France, now travelling in New Zealand

    Hi all, here is my first attempt at this challenge, I tried to keep it simple.

    Basic Vray material with a mix of the default cellular texture of 3dsmax to drive the displacement as well as color, amount of refraction and glossiness.

    The “fake” part is a vray fog added in the geometry to fake the color of the bubbles so there are more foam than beer color.

    #5886 Score: 0
    Profile photo of Erwann Loison
    Erwann Loison
    • CG artist

    I think it should be made clear if that is about shading the provided geometry (which I assume includes displacement and/or implicit mapping) or if it is about creating the best looking foam possible.
    Personally I think adding/replacing geometry or doing anything that is not shading would invalid the exercise?

    #5930 Score: 0
    Profile photo of Aleksandr Jevhuta
    Aleksandr Jevhuta
    • A.D.

    3ds max / Corona
    MAin single layer material:


    This one is sketch with bubbles.

    Another single layer material variant:

    #5934 Score: 0
    Profile photo of Matthew Nowak
    Matthew Nowak
    • 2d Animator

    C4d and Arnold.  Need to work on size and placement of bubbles as well as bubbles on the side of the glass.


    #5957 Score: 2
    Profile photo of Julius Ihle
    Julius Ihle
    • something with pixels @ ILM / LucasFilm
    11 pts

    Hi guys,


    First time posting so I have the urge to thank you Zeno for this wonderful website! Arvid recently made me aware of it and I find it a great resource to learn and share 🙂


    I’ll try and see if I can find enough time next to the deadlines at work to have a go at this challenge as well! I’m planning to go with RenderMan, because I haven’t had an in-depth chance to play with it since the good old REYES days…
    I started today – here’s a render of the setup:

    base setup



    I did a few shading tests already and while at first glance it doesn’t seem too terribly difficult to get a somewhat foamy looking shader (I’ll probably go mainly with SSS) something that became a bit more of a head-scratcher are the bubbles. The tiny seem comparatively straight forward (I personally found the PxrWorley noise pattern pretty good for these), but I wasn’t too sure about the bigger ones.
    As mentioned in the first post we should try to not use any additional geo, so I wrote an OSL pattern that scatters “spheres” within a specified radius which could be used as a displacement source.


    I thought a quick screen-cap probably describes it better than words.. 🙂
    SHADERS.XYZ Beer Foam Challenge: OSL bubbles pattern from Julius Ihle on Vimeo


    (Is there any way to properly embed a vimeo link..?)




    It’s very basic and I really only added controls that are useful for this challenge. I really hope I’ll find enough time to submit a somewhat decent result for this challenge eventually!

    …and because this site is all about sharing whatever you did here’s the source code if anyone finds it useful. Should work for any OSL-compatible renderer (eg Blender, Arnold, VRay, PRMan, 3Delight, etc):

    #include <stdosl.h>

    Simple bubbles shader for shaders.xyz beer foam challenge.

    Author: Julius Ihle
    Version: 1.0
    shader jiBubbles(
    point offset = 0,
    int seed = 0,
    int maxNum = 10,
    float minSize = 0.5,
    float maxSize = 1.5,
    float gamma = 1,
    point spread = 1,
    output color outRGB = 0

    point Pos = transform(“world”,P) – offset;

    float bubbles = 0;

    for (float i = 0.0; i < maxNum ; ++i) {
    color randPos = cellnoise(i,seed) * spread – (spread/2);
    float randSize = minSize + cellnoise(i,seed+847) * (maxSize – minSize) / 1;
    bubbles = max( bubbles, 1-( pow( clamp(distance(randPos,Pos/randSize),0,1), gamma)) );
    outRGB = bubbles;


    This post has received 2 votes up.
    #5968 Score: 0
    Profile photo of
    11 pts

    Now thats the spirit, Julius! Thanks for taking this up a serious level!!

    #6032 Score: 0
    Profile photo of Tanagon Woraprepop
    Tanagon Woraprepop
    • CG Artist, freelance

    Update W.I.P.02



    using displacement texture made from Zbrush and modified shading with Redshift materialblender / Redshiftdisplacementblender



    still find the way to fix the bubble pattern and shape.

    #6123 Score: 0
    Profile photo of Yuval Tordgeman
    Yuval Tordgeman

    Hey guys, first time joining the challenge =)
    I’m having some difficulties setting up the scene, would be great if someone could help me out.

    I loaded the scene in maya 2016 (using vray), I assigned the materials but when it comes to the light setup I feel like i’m doing something wrong.

    I create a vray dome light, and attach the texture to it, but I don’t really understand where I need the rotate it from? is it the translate x/y/z numbers I should change? or is it somewhere else?

    Here is the render I’m getting right now using the basic camera. The shot I’m getting from the camera also seems wrong, am I missing something? is there a set resolution everyone using?


    Thanks for the help! 



    #6144 Score: 3
    Profile photo of Thilo Seifert
    Thilo Seifert
    13 pts

    WIP2: changed from corona to arnold because of some displacement issues and rendertime

    This post has received 3 votes up.
Viewing 20 posts - 1 through 20 (of 104 total)

You must be logged in to reply to this topic.