Announcement

Collapse
No announcement yet.

VrayDisplacement and large renders

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

  • VrayDisplacement and large renders

    Hello Chaospeople

    I have here an issue, where I am pretty much at the end of my wisdom... I have to render a very large image for print (very large = 7k). Most of the scene is covered with "snow". I would love to render this with a fine displacement, which would add a hell of a "kick" to the whole thing.

    But I can't. The reason is (i suggest) the amount of RAM. In my case, there are 24gigs of it in my workstation. The render does not crush! That's not the issue. It renders just fine up to the resolution of 2k. It takes an hour and done. Rising the resolution over 2,5k it gets slow, like S L O W. I mean the "estimated time" is around 500h.

    My render settings: https://www.youtube.com/watch?v=tKaKvWqTFlw. That does not mean I didn't optimized my shaders and lights like I would render it with my method, but at some point I had to incorporate "third party stuff" into the scene, where I just didn't want to get "involved", so I thought to myself: give it a try.

    One more thing to mention: its not the size of the object with displacement, its the area it covers in the resulting image.

    The reason: in the light cache calculation phase the displacement gets presampled and stored in the memory. You can watch filling the RAM up in the "performance tab" of the window's task manager... So the RAM gets filled and the system starts "dumping" the data to some memory on the drive, which of course takes ages... The system gets really unresponsive and canceling the rendering results in a crash or freezing the system for hours (I watched a movie, while waiting for the rendering to be canceled, and even after that, vray dialogues didn't respond to anything. hitting the close button in fury 100 times led to a complete crash )

    That's all clear!

    The solution to this problem: memory management.

    1) A method suggested by you: http://docs.chaosgroup.com/display/V...y+Large+Images.
    2) built in max feature of "blowup" area rendering.

    Both work perfect even in dimensions like 30k unless there's some object of a significant size with a displacement in the scene. It seems like the "displacement" is calculated for the whole image even though a region is rendered. I tested it with a half of the resolution with the blowup method: Endsize: 7k, region size: 3,5k, being precise: a quarter of the final resolution. Turning off the displacement, its fast... like no problem whats so ever. Turning the displacement on: well the "presampled data" kill the system...


    I mean, you coud suggest: "divide the image into smaller regions". Nope that does not solve it. The ram gets filled anyway. even the region is like 1,5k. And in addition to that, the "blowup" method is a manual process. So no rendering "overnight".

    Ok. The farmers logic would suggest: you don't realize a displacement by some distance from the camera anyway, especially in my "snow" example. So why just not kill it by the distance from the camera? Well thought and tested right of the bat using a falloff map set to falloff type "distance blend". The map is a bercon noise blended with a vray color of 128 (neutral grey which should mean a displacement value of 0, right?). Well nope. The RAM gets filled by the same pattern, which feels like the displacement is calculated for the whole object and/or image regardless of the render region. Dang. Why not? 0 displacenemt is zerro but that zerro needs to be stored somewhere anyway... So far the farmers logic.

    So, why not just put the displacement on areas (unique piece of geometry) close to the camera and thatway separate the objects further away? That trick would work, but it's a hell a lot of a work to hide that border, which is definitely visible at least in the reflections... besides that, mind the "UV" layout issues (which can be sorted out, but as said: a damn load of a work, I definitely don't get paid for). In addition, that method is very limited. What if you have to render a brick wall in an interior render, where the wall occupies 50% of the final image and want to give it this ultimate kick, especially when the camera is very close to the wall? nope, that "separation" method won't work on a large render eather.

    Well folks, my question is: is there a way how to optimize the VrayDisplacement modifier for rendering and storing the data depending of the camera distance? Is there any way, how the displacement amount, edge length, max subdivs and edge threshold could be some sort of "adaptive"? Is there any method how to manage the data amount of the displacement?

    What are your suggestions for rendering large objects with VrayDisplacement modifier?

    Thank you very much for any hint and your efforts in advance.

    Ondrej

    PS: unfortunately I can't pass you the scene - NDA. But I can make screens of the settings you could wonder about. It's very easy to reproduce though: a plane with a fancy noise map as displacement in the modifier, some botanics as vray proxies (some many botanics, like 30 trees and more bushes), a "sculpture" with a displacement coming from mudbox (that sculpture is close to the camera but very small though, it takes like 5% of the image). Some 30 IES Lights instanced and a dome light with an HDRI. And if you want, a low poly evermotion car. rendersize: 7k. My system is a WS, i7 990x, 24gig RAM, win 7. 2 renderslaves with 16 and/or 12 gig of ram... but thats not really relevant to the issue.

    PS: The sculpture is not the prob as well. The image renders in 6k resolution in 6h with that sculpture displaced. Its the snow covering a large amount of the final image.
    Last edited by o-v; 08-08-2015, 03:36 AM.

  • #2
    Is your displacement in world units or in screen? if your view dependent is turned on, then this would explain why going higher res suddenly takes forever. Since the geometry becomes much larger in frame, a lot more subdivisions will need to be taken in order to produce displacement.

    So, set your view dependent option to off, and set the displace edge length to a certain fixed value, this would give you constant subdivision across the scene and stabilize the render time.

    Usually though for high frequency detail a bump map is enough, of course I don't know enough about your scene to make exact suggestion but this is a good start.
    Dmitry Vinnik
    Silhouette Images Inc.
    ShowReel:
    https://www.youtube.com/watch?v=qxSJlvSwAhA
    https://www.linkedin.com/in/dmitry-v...-identity-name

    Comment


    • #3
      yap view dependant is on... Thx for that hint!

      Well there's a significant difference between bump and displacement... I actually need it only very close to the cam... so I'll give it a try with "viewdependent off" and falloff texture... maybe that will do the trick. but I doubt the falloff texture will have an effect on the data size...

      Comment


      • #4
        Originally posted by o-v View Post
        yap view dependant is on... Thx for that hint!

        Well there's a significant difference between bump and displacement... I actually need it only very close to the cam... so I'll give it a try with "viewdependent off" and falloff texture... maybe that will do the trick. but I doubt the falloff texture will have an effect on the data size...
        I doubt that too. It depends weather you are using straight up displacement or subdivision for ram usage. But with view dependent at quadruple the res you effectively oversample the displacement to a unnecessarily high value.
        Dmitry Vinnik
        Silhouette Images Inc.
        ShowReel:
        https://www.youtube.com/watch?v=qxSJlvSwAhA
        https://www.linkedin.com/in/dmitry-v...-identity-name

        Comment

        Working...
        X