DAZ 4.9.3.166 Degradation of iRay

2»

Comments

  • AndySAndyS Posts: 1,438

    Hi folks,

    I found a big waste of memory. It is as Richard already suspected.
    If you set Displacement SubD for only one of the various surfaces of a complex figure, DAZ automatically applies this setting to all surfaces, although this is absolutely unnecessary.

    This odd behaviour already appeared in the older versions, too.

  • hphoenixhphoenix Posts: 1,335
    edited April 2017
    AndyS said:

    Hi folks,

    I found a big waste of memory. It is as Richard already suspected.
    If you set Displacement SubD for only one of the various surfaces of a complex figure, DAZ automatically applies this setting to all surfaces, although this is absolutely unnecessary.

    This odd behaviour already appeared in the older versions, too.

    Unfortunately, I don't think it IS unneccessary.  If two surfaces are adjacent (they share vertices) and you apply Displacement SubDivision to one of them, you will get discontinuities between the subdivided surface edge and the non-subdivided surface.  It's really a choice to NOT support subdividing a single surface and creating visual artifacts, as opposed to supporting it and allowing the renders to have surface edge incongruencies.

    If the code could determine that a given surface was NOT connected to another, then it would be fine.  But that's not a simple determination.

     

    Post edited by hphoenix on
  • AndySAndyS Posts: 1,438
    edited April 2017

    OK ... ,

    but on the other hand, you can avoid the discontinuation, if the displacement map is designed in a corresponding manner.

    You even get discontinuation on edges. Imagine a wall which continues in an perpendicular angle, for example. If the displacement map is not neutral in the corner, you'll get an opening or an intersection. Even if both surfaces are subdivided the same way.
    So your argument only on the first look is convincing. But this is not necessary. Its only up to the user and the design of the displacement map to avoid possible gaps.

    Please keep in mind: Sub-dividing is only necessary to carry the details.

    Post edited by AndyS on
  • hphoenixhphoenix Posts: 1,335

    Well, the problem is the shading code doesn't KNOW that an adjacency is acceptable or not.  Nor does it know that the map was/is created to account for it.  Nor can it know that the shader applied was even made for that geometry (we can apply any shader to any surface.)

    So again, the choice is to force all surfaces to the same level of SubD, so there will be no discontinuities, or to allow them to occur and have rendering issues at surface boundaries.  Neither is a good thing, but DAZ chose the first one.

    I'm well aware that sub-dividing is only necessary to carry extra detail into the shading of the model.  However, that doesn't change the the outcome above.  From an artistic perspective, I understand why some would choose to allow surface boundary discontinuities and fix it in post or via other means.  But from a programming and support perspective, DAZ's decision (in this case) makes sense.  If some shader on a figure used this, and then the user changes one surface (to a non-subD one), then suddenly there are render artifacts, you'll get a lot of support questions and complaints.

     

  • AndySAndyS Posts: 1,438
    hphoenix said:

    Well, the problem is the shading code doesn't KNOW that an adjacency is acceptable or not.  Nor does it know that the map was/is created to account for it.  Nor can it know that the shader applied was even made for that geometry (we can apply any shader to any surface.)

    Sorry, no!

    In all the props and more complex assets I found over here, the border from one surface area to the next is a well defined line.
    None of all the products over here fullfil your assumptions.

    And as already posted previously:
    Breaks between single areas are also possible using 3Delight and displacement maps in an unsensitive way.
    This only is a problem for the resulting picture, but it never was for any render engine.

  • hphoenixhphoenix Posts: 1,335
    edited May 2017
    AndyS said:
    hphoenix said:

    Well, the problem is the shading code doesn't KNOW that an adjacency is acceptable or not.  Nor does it know that the map was/is created to account for it.  Nor can it know that the shader applied was even made for that geometry (we can apply any shader to any surface.)

    Sorry, no!

    In all the props and more complex assets I found over here, the border from one surface area to the next is a well defined line.
    None of all the products over here fullfil your assumptions.

    And as already posted previously:
    Breaks between single areas are also possible using 3Delight and displacement maps in an unsensitive way.
    This only is a problem for the resulting picture, but it never was for any render engine.

    You aren't understanding how I'm using the terms.  While a surface area edge may be a 'well defined line' that does NOT mean that the geometry of that edge will allow for one-surface subdivision without creating tearing between it and the adjacent surface caused by having additional virtual vertices on one surfaces idea of that 'well defined line' and the other surfaces idea of that same line.  This WILL create rendering artifacts.

    Any asset in the store which has a surface which is not on a 'sharp' interior edge (60° concave angle between them) is going to have this kind of problem  And there are PLENTY of them.  Any human figure, most props, almost all clothing.  Simple environments might not, Hair (done as strips) probably won't.  But almost everything else WILL show the issue I described.

    And even the geometry which DOES have that sharp interior angle between the two surfaces is likely to have rendering artifacts, as you will have polygon interpenetration.

    Whether or not you are allowed to do this in 3Delight is immaterial.  Iray displacement works differently.

     

    Post edited by hphoenix on
  • kitakoredazkitakoredaz Posts: 3,526

    @AndyS

    I could confirm what you are talking about iray render displacement sub-D with each suface group.

    it is not expected.  and the problem is there seems no clear discribe how current daz studio change .  though I do not know it is Nvidia that change behavor about MDL,

    but DAZ have responsiblity to clear discribe when shader property change the way.

    To see clear how current daz studio apply render sub-D with daz uber  iray shader,  I made simple test.

    1.  Ioad simple primitive  plane (only 4 sub-divide plane).  name it as "plane".  then load second primitive plane , name as "plane2".

    2  I export those two plane as one mesh, then import it to daz studio, name as "jointplane"  . (it keep two surface group.)

    3.  I do not set any sub-d, (parameter mesh resolution) ,  these three plane  keep sharp edge.  All planes keep Resolution level as base.

    4,  Apply same displacement map for palne1, plane2.  then set render sub-D (iray shader property) = 7. for plane1. then set render sub-D = 2 for plane2.

    5  I can clear see, only plane1 (render sub-D 7) can keep detail. But plane2 (render sub-D =2) only show corrupted edge , but not show displacement effect. It is expected.    (thogh I did not know, without change resolution lever in parameter, iray displacement  work without problem)

    6  Next I try same thing, about joint plane... It has two surface group (made from two plane)  then I set same displacement map for both surface group. I only set render sub-D as 7 for surface1, then  keep reder sub-D as 0  for surface2.

    7 I can clear see, surface 2 (render sub-D set as 0) show parefect same displacement effect as surface 1. even though I set render sbu-D as 0.

    it is not expected. because  I have not seen any offciial document about this change. And I had seen many discirbe in forum or web, we can change render sub-D lever about each surface.

    it is useful, because there are many case, one obj or prop , have saparate parts and need to apply individual diplacement map, with individual render sub-D lever.    or if we use displacement map for one part,, ds auto apply render sub-D for all part. it is really annoying.about huge scene prop. actually there is many product, it is not separated with each part. but offered as one obj.

    I am afraid,   even though I did not apply displacement map, about surface 2,  those poligon will be  sub-divide in render as same as suface 1. (though I can not check it, may need to check log file)

    At least about those things we need clear official document. daz have responsilibity to offer clear guide about daz studio base shader for iray. I think.

    subD1.JPG
    1544 x 715 - 133K
    subD2.JPG
    1548 x 789 - 149K
    subD3.JPG
    1538 x 802 - 151K
    subD4.JPG
    1636 x 842 - 229K
  • AndySAndyS Posts: 1,438
    edited May 2017

    Hey,

    of cause I understood.

    hphoenix said:
    You aren't understanding how I'm using the terms.  While a surface area edge may be a 'well defined line' that does NOT mean that the geometry of that edge will allow for one-surface subdivision without creating tearing between it and the adjacent surface caused by having additional virtual vertices on one surfaces idea of that 'well defined line' and the other surfaces idea of that same line.  This WILL create rendering artifacts.

    But you already got artefacts in 3Delight just for displacement structures not fitting to the neighboured planes (i.e. in corners) - holes, open tiles, etc. depending on the kind of displacement maps.
    This wouldn't be a problem at all.

    Please keep in mind: We're not trying to show the triangles - we only use the divisions to display the 3D real details.
    It simply is in the responsibility of the artist to have the end of the texture fit to the following zone.
    But that'd ever.

    Post edited by AndyS on
Sign In or Register to comment.