Announcement

Collapse
No announcement yet.

Interesting post from AnswerHub on how to setup a Layer Car Paint shader

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • replied
    I am interested in your material but I would like to know if it works on 4.12. I understand that there are many changes in 4.12 that impact the material, from the dual normal clear coat shading model to the custom resolution of the reflection captures ... what are your plans for the material?
    Thanks!

    Leave a comment:


  • replied
    Hey ifthikhar,

    Usually I see this error when there is something wrong with the texture parameter, or texture sample node. But it's possible that your error might be coming from somewhere else.

    When you see the error, does the material editor point out a particular node which is causing the error?

    -Vince

    Leave a comment:


  • replied
    Thanks for the Great material, I followed your tutorial and made the entire material from scratch, Even though it took me two days for it, I learned a lot!
    But inbetween, I got an error saying Warning: Compilation errors in this material "the current material has compilation errors, so it will not render correctly in feature level ES2. Are you sure you wish to continue? "

    What am i missing? and how to rectify this error?

    Leave a comment:


  • replied
    Originally posted by Stimpanzee View Post
    Hey Cyber Katana,

    I believe the issue you are running into has to do with the Scene Capture Actor, within your scene. By default the actor is set to "Capture Every Frame." You can find that check box within the details panel.

    After you have built your project, and the surface turns green, it means that the scene capture actor is not running. The "Cube Render Target" texture is returning a null, which in this case is green.

    There are two solutions:
    #1 - If you want the scene capture actor to render reflections for every frame - make sure the check-box for "Capture Every Frame" is checked on.
    #2 - If you would like the reflections to be static, you can right click on the "Cube Render Target" and select "Create Static Texture." Then all you need to do is replace the Cube Render Target in your material with the new static texture.

    Note: Scene Capture Actors are extremely expensive to use realtime (capture every frame) but there are ways to improve it's performance cost. Check out the video I have here for more info on optimization: Youtube Video
    You are right! After making static texture material not green anemore. Thank you very much!

    Leave a comment:


  • replied
    Originally posted by CyberKatana View Post
    Stimpanzee, thank you for tutorial. Material looks great! But i have some trouble with reflection after packaging. I found nodes, that give this problem. I am asked this question here but dont have any answer. Have anybody tried to package this(or material that using cubemap generated by SceneCaptureCUbe) material in 4.9 (in another version i don't tried to package)?
    Hey Cyber Katana,

    I believe the issue you are running into has to do with the Scene Capture Actor, within your scene. By default the actor is set to "Capture Every Frame." You can find that check box within the details panel.

    After you have built your project, and the surface turns green, it means that the scene capture actor is not running. The "Cube Render Target" texture is returning a null, which in this case is green.

    There are two solutions:
    #1 - If you want the scene capture actor to render reflections for every frame - make sure the check-box for "Capture Every Frame" is checked on.
    #2 - If you would like the reflections to be static, you can right click on the "Cube Render Target" and select "Create Static Texture." Then all you need to do is replace the Cube Render Target in your material with the new static texture.

    Note: Scene Capture Actors are extremely expensive to use realtime (capture every frame) but there are ways to improve it's performance cost. Check out the video I have here for more info on optimization: Youtube Video

    Leave a comment:


  • replied
    This is fantastic, Ryan! You are the man!

    This is exactly what I was hoping to see one day. The cost of running a scene capture has always been the biggest drawback of my system, but it was impossible to achieve the subsurface details without the multi-layered approach. Replacing the scene capture with your new method will cut performance considerably, and retain the eye candy!

    I will have to revisit my materials and incorporate your method for the standard reflections model. Your results already match the quality I was able to achieve! Whatever performance hit it brings will certainly be less of a blow than rendering a separate 360.

    Your solution is very clever, but it's a little over my head! haha. I need to buckle down and get back into advanced material creation. Still lots to learn!

    Leave a comment:


  • replied
    I have not had time to test it for performance since messing with it. It can be difficult to say though since this kind of overhead cost can be very platform specific. Sometimes the overhead is merely from having more temporary variables in the overall shader file which even if many of them are not used (due to branch always being disabled etc), can cause the GPU to process things less efficiently. But sometimes that cost may only show up on ps4 for instance. In practice on PC with a decent video card it is probably hard to measure the cost since it will be very small. But when enabled, it makes all clearcoat materials go up in instruction count a bit. I can't remember exactly how much but it wasn't double or anything crazy. If you enable it in project settings but don't use the bottom normal, it will still add some cost to the clear coat deferred shading since it has to check if the pixels encoded the bottom normal mask. For materials that do not use it, it will not really do that much extra work but the extra variables in the shader may cost something small.


    GPUs try to parallelize things they will 'make room' for variables they don't know they won't need which is why unused extra variables can hurt in some cases.
    Last edited by RyanB; 10-06-2015, 09:22 PM.

    Leave a comment:


  • replied
    RYAN MY GOD YOU'RE AMAZING!!!

    I actually was going to request this feature be added to clear coat, but I thought you guys had more important things to do (this was back around 4.5's release). Thank you so much!

    Out of curiosity, how much overhead are we talking?

    Leave a comment:


  • replied
    Hey Stimpanzee I think you will enjoy this.

    For an epic friday project a couple months ago I added a new secondary bottom normal map input to the clear coat shading model so you can get accurate shading for carbon fiber substrate as well as attempt to create metallic flakes using a noisy normal. It is not checked in yet (it needs to go through code review as I am not a full fledged coder) but there is a chance this will make it in by 4.11 or so. Currently this is implemented as a project setting that has to be enabled since there is some rendering overhead any time you introduce more dynamic branching into the deferred rendering path.

    Click image for larger version

Name:	01.JPG
Views:	1
Size:	78.2 KB
ID:	1088783

    Click image for larger version

Name:	02.JPG
Views:	1
Size:	57.8 KB
ID:	1088784

    quick attempt at flakes with a normal map (tempAA is off since tempAA kind of removes the sparkles unfortunately):
    Click image for larger version

Name:	sparkles.JPG
Views:	1
Size:	54.8 KB
ID:	1088785


    The basic gist of how its done:
    -New normal map input via "Custom Output" node (same system used for landscape grass)
    -Normalmap is packed into gbuffer using vector to octahedron since we only have 2 spare gbuffer channels to store in (custom data had a single channel left and opacity). Note that this packed normal is 8-bit which is why I chose to make the bottom normal the secondary rather than the top (top requires full precision for smooth vertex normals).
    -Still in the bass pass, the clearcoat mask value is packed as 7-bit and if there has been a custom-output clearcoat bottom normal node placed, write a 1 into the free bit in CC mask, else write a 0.
    -Then its a branched IF inside of the clearcoat shading model that unpacks the bit from the clearcoat mask. If the bit is 0, do the standard clearcoat shader. If the bit is 1, do the extra work for the bottom normal.
    Last edited by RyanB; 10-05-2015, 08:21 PM.

    Leave a comment:


  • replied
    Stimpanzee, thank you for tutorial. Material looks great! But i have some trouble with reflection after packaging. I found nodes, that give this problem. I am asked this question here but dont have any answer. Have anybody tried to package this(or material that using cubemap generated by SceneCaptureCUbe) material in 4.9 (in another version i don't tried to package)?

    Leave a comment:


  • replied
    Gdc - 2015

    It is here! I am currently in San Francisco, waiting for the CA orientation to start. This year is going to be the biggest yet! For all those attending, send me a message if you want to chat or grab a beer.

    Right before I left for Cali, I put together a quick scene with some old animations for my in development title: Cafe Races. I thought I would share it here! This game was the reason I started the car paint material project.


    Leave a comment:


  • replied
    Thanks Hera!

    The scene capture cube is certainly one of the most taxing actors in any given scene. Thankfully there are some tools in place which allow us to get some performance scaling. Check out the video I have here:


    I go over some of the techniques I use to bring up the FPS, using the capture cube.


    In the future I would like to cut down the cost of performance even further. I think there might be a good way to get a hybrid system running. I am imagining a system where only certain angles of reflections are calculated through a 2D capture actor, and the rest are handled with the standard reflection tools. In theory, such a system could cut performance cost by 84%

    Now that the first collection of materials have been released I can spend some time in R&D. Mad material scientist! I'll keep this post updated with my results. =)

    Leave a comment:


  • replied
    I followed tutorial on your website and result is amazing. I'm creating a garage setting for car renderings. as you have said, SceneCaptureCube method really is taxing, especially in interior with many lights. I only get 10-15 fps when walking around a car (exterior is fine). as I'm still fairly new to UE4 and I haven't managed to make clear coat shader to work. but, it's good you can save captured reflection to EXR file and use that instead of a real time capture and delete SceneCaptureCube, which skyrocketed my fps immediately. of course, this is only good if a car's not moving anywhere, which it isn't in my case. ;-)

    thank you for sharing. shader is awesome, great work!
    Last edited by heraSK; 02-21-2015, 05:06 AM.

    Leave a comment:


  • replied
    Video Tutorials - Marketplace Materials

    Thanks everyone!

    I just finished uploading the final video tutorial, going over the system. If anyone is interested in learning more about the flexibility of the system, or wants to learn about the materials they bought, you can find the full list of videos on my website: http://www.caferaces.com/p/car-paint-materials.html

    Or you can watch the playlist right here: http://youtu.be/Rl_oR6-m7mI?list=PLA...WJbVvPfc4CRSSt



    Here is a little taste - Video 1 of 5

    Leave a comment:


  • replied
    Congrats, Vince!

    Leave a comment:

Working...
X