Will exceeding my video memory cause a violation_exception error

Hi,

I have submitted a help ticket but I was wondering if anyone else has had a similar experience.  I have a 980Ti card with 6 GB of video memory.  When I attempt to render a scene with two Genesis3 figures and one or two pieces of clothing (in DazStudio 4.8), the render crashes and produces an error message -- something along the lines of "violation_exception at memory address XXXXXXXX".  From the log report everything seems to load okay, but before it actually renders an image it crashes.

If I hide one figure or one piece of clothing, the scene renders just fine.  So I am thinking that somehow I'm exceeding my video memory size.  Would this cause a crash?  If this is true then how can a couple dozen 4 MB texture maps fill up 6GB video RAM.  Any suggestions?

I have my rendering preference set for my video card.  I do have 32 GB of RAM on my motherboard but haven't tried to use my CPU (i7 - 6 cores) for rendering.

Thanks.

Comments

  • nonesuch00nonesuch00 Posts: 18,320

    yes it will in most cases. You can monitor with the Windows Task Manager is the easiest way...

    If you exceed video card memory it will be kicked out to your CPU to render and if you still exceed OS available memory you often get errors like you mention.

  • morkmork Posts: 278
    edited June 2017

    As for the textures, 4MB is the compressed size. Uncompressed, which they need to be for working with them, they are much much larger.

    Example 4k Texture:

    4096 * 4096 * 32bit = 236.870.912 bits
    236.870.912 bits / 8 = 67.108.864 bytes
    67.108.864 bytes / 1024 = 65.536 kbytes
    65.536 kbytes / 1024 = 64 Megabytes

    So 64 Megabytes per Texture. Given that there are multiple textures per material (diffuse, specular, bump, SSS, normal, ...), it adds up very very quickly.

    Note that when you increase the texture size by doubling it, the memory consumption will quadruple. Same the other way around, shrinking the texture to 50% will reduce the memory consumption to 25%:

    2048 * 2048 * 32bit = 134.217.728 bits
    134.217.728 bits / 8 = 16.777.216 bytes
    16.777.216 bytes / 1024 = 16.384 kbytes
    16.384 kbytes / 1024 = 16 Megabytes

    So you might want to downscale the textures to e.g. 2048.

    Also note that some materials may have insane huge maps - like 4k for Eyelashes or eyes in general.
    That's more than overkill, check those, as you can easily shrink those without noticing.

    In general, you have to take it easy when rendering on the GPU as it's memory is very limited and it cannot outsource (in theory it could, but it would receive a major performance hit).


    One more edit: :)

    I have a 8GB card and had a hard time rendering two G3 figures (with lux though) with a little bit of cloth and hair. I definitely need to downscale the textures then. 2048 is usually enough.

    Post edited by mork on
  • Rascal3DRascal3D Posts: 290

    @nonescuh00 -- Thanks! I'll try using the Windows Task Manager to see how much of my resources are being used.  I guess that I could always render the characters separately and then compose the two images together in Photoshop.

     

    @mork -- Ouch!  I'm shocked at how fast it adds up.  So, if I count the conforming clothing as another character with its own texture maps then I am really looking at 3-4 characters with many maps that individually are around 64 MB each.  I was naively thinking that a video card with 6 GB could handle such a scene.  It is too bad that the "Scene Optimizer" by V3Digitimes isn't compatible with 4.8

Sign In or Register to comment.