IRAY Wood Shaders

2»

Comments

  • Jason GalterioJason Galterio Posts: 2,562

    Thank you for all of the additional information. Let me ask a question, after I make a statement (which I am not sure if I mentioned earlier).

    I was personally stymied by models that involved large flat areas; floors, walls, etc. Like the inside of a house or a city street.

    I wanted to reduce the render load when multiple types of these surfaces have to be rendered. For example, a city street; sidewalk texture, wall texture, street texture, etc. All of those textures add up quickly when each has its own image associated with it. Ontop of this, I found that the repeating nature of most textures would be distracting to the overall image.

    So with the intent to keep the load minimal, my idea was this:
    ​1. Provide a wide range of Base Colors that can be applied.
    2. Use a simple black and white seamless image as a displacement map to create the tile pattern.
    ​3. Much like the Base Color, provide a wide range of colors that can be applied to the Diffuse Overlay Color.
    4. Use an invert of the displacement map to create the grout pattern by placing the inverted image in the Diffuse Overlay Weight which will only show the Diffuse Overlay Color.
    ​5. Lastly, and optionally, provide a noise pattern to be used on the Metallic Flake, with a range of colors, that provides some variation to the Base Color at a different tile rate of the displacement map.

    In this manner, few detailed images have to be used, the repeating nature is somewhat avoided, and the render load should be lessened.

    My question is, does my plan actually suceed in such?

    In addition, I attached a test image using one of the brick patterns, applied to a Cube primitive with 1 division. I set the Displacement detail to 12. The Base Color is beige, the grout color is Black.

    Brick Test.jpg
    600 x 338 - 52K
  • Oso3DOso3D Posts: 14,958

    Displacement isn't going to work very well in most cases, because a LOT of content uses low polygon surfaces for floor/ground/walls (in many cases, just a single polygon). This is just... not going to show proper displacement, and subd won't help for two reasons: first, if you subdivide a complex object that includes a ground plane, you are subdividing EVERYTHING. Second, single poly planes and older content in general turns to abstract art if you subdivide it.

    The rest of the plan is great, but what I would do is include the displacement for situations where it's useful, and use a Normal map, too (there are a bunch of ways to convert Displacement -> Normal)

     

  • Jason GalterioJason Galterio Posts: 2,562

    Displacement isn't going to work very well in most cases, because a LOT of content uses low polygon surfaces for floor/ground/walls (in many cases, just a single polygon). This is just... not going to show proper displacement, and subd won't help for two reasons: first, if you subdivide a complex object that includes a ground plane, you are subdividing EVERYTHING. Second, single poly planes and older content in general turns to abstract art if you subdivide it.

    The rest of the plan is great, but what I would do is include the displacement for situations where it's useful, and use a Normal map, too (there are a bunch of ways to convert Displacement -> Normal)

     

    Got it. Big thank you for the explanation. And I do see what you are describing. I pulled up the first model in my library that had a floor / wall combination (1003 Nights) and noted that the floor was one single polygon.

    Displacement does not work, just like you described. I had been using plain primitives and they were working when I set the Sub-D detail to 12. So I just assumed it would work on other models that were similarly designed. There must be something different about the primitives that allow the subdivision to happen?

    In any case, I am experimenting with the Normal function as well. Not a big deal to add it, just have to get the Shaders right for it.

  • Oso3DOso3D Posts: 14,958

    It's just how it's modeled. And in most cases SubD beyond 4 or 5 will melt your computer. ;)

    With primitives you have a lot more freedom; in the procedural shaders I have below, some of them have displacement. Which, when you can make a dense mesh primitive, works awesome; I can make asteroids and so on from simple spheres!

    Buuuut using it on existing content... yeah, most of the time I have to shut Displacement off.

    (Unfortunately, I have yet to find a decent way to procedurally generate Normals, which is annoying, but such is life)

     

  • nonesuch00nonesuch00 Posts: 18,032
    edited June 2017

    So then displacement works poorly, if at all, on these low polygon models, so would tesselation work better? Not that it seems to be available in DAZ Studio but generally speaking. Is that what makes tesselation different than displacement, an ability to subdivide a low polygon model on the fly so that the displacement will work? Just trying to learn a bit more.

    I'll be glad to test & render the City Roads again if you update your shaders to create presets from pre-constructed normal maps or normal maps created from your displacement maps on the fly. You might be able to find opensource function that will do that but you'd likely need to compile it as a dll with an API exposed to DAZ's API and scripting language to convert the displacement maps to normal maps on the fly via a 'convert' preset.

    Post edited by nonesuch00 on
  • Jason GalterioJason Galterio Posts: 2,562

    So then displacement works poorly, if at all, on these low polygon models, so would tesselation work better? Not that it seems to be available in DAZ Studio but generally speaking. Is that what makes tesselation different than displacement, an ability to subdivide a low polygon model on the fly so that the displacement will work? Just trying to learn a bit more.

    I'll be glad to test & render the City Roads again if you update your shaders to create presets from pre-constructed normal maps or normal maps created from your displacement maps on the fly. You might be able to find opensource function that will do that but you'd likely need to compile it as a dll with an API exposed to DAZ's API and scripting language to convert the displacement maps to normal maps on the fly via a 'convert' preset.

    I have a couple of filters for Filter Forge that do relatively good translation of Displacement Maps to Normals, however I have not been terribly happy with the results so far. I see very little different between a render with the Normal Map and without (with no Displacement, of course). So I am still experimenting a bit.

  • nonesuch00nonesuch00 Posts: 18,032

    So then displacement works poorly, if at all, on these low polygon models, so would tesselation work better? Not that it seems to be available in DAZ Studio but generally speaking. Is that what makes tesselation different than displacement, an ability to subdivide a low polygon model on the fly so that the displacement will work? Just trying to learn a bit more.

    I'll be glad to test & render the City Roads again if you update your shaders to create presets from pre-constructed normal maps or normal maps created from your displacement maps on the fly. You might be able to find opensource function that will do that but you'd likely need to compile it as a dll with an API exposed to DAZ's API and scripting language to convert the displacement maps to normal maps on the fly via a 'convert' preset.

    I have a couple of filters for Filter Forge that do relatively good translation of Displacement Maps to Normals, however I have not been terribly happy with the results so far. I see very little different between a render with the Normal Map and without (with no Displacement, of course). So I am still experimenting a bit.

    I experimented with the strength of the normal maps / bump maps yesterday and making the weight value slider higher numbers (eg from 0.55 to 20) will do things like make skin pores look like deep acne scars and so on...

Sign In or Register to comment.