Kit 106.1

Release Date: Aug 2024

Added

This provides a unified entry point for developers to manage materials through the USD NDR/SDR SDK, streamlining the process for those looking to extend materials within OV applications and extensions.

This facilitates the authoring and modification of various shading graphs, with a particular emphasis on MaterialX.

  • Removal of UsdMaterialWatcher from Kit.

With the introduction of the SDR plugin for MDL, as previously noted, the UsdMaterialWatcher has been removed from Kit. This update includes key refactoring efforts to ensure compatibility and improved material management within the Kit environment.

  • The omni.kit.property.material extension has been refactored to utilize the new SDR functionality. This update enhances the efficiency of material processing and aligns the extension with the latest architecture.

  • The UsdMaterialWatcher has been deprecated and removed. Any code that previously relied on it has been either refactored or removed to ensure seamless operation within the updated system.

  • In addition to the primary refactoring, other components that depended on UsdMaterialWatcher have been identified and updated. This cleanup ensures that the transition to the SDR plugin is comprehensive and does not leave any legacy dependencies.

Warning

Please review and update any custom extensions or code bases that may have relied on UsdMaterialWatcher to align with the new SDR-based architecture.

  • Rounded Corner Support in RTX Renderers.

    This refers to a technique used in 3D graphics to smooth out sharp edges of objects by automatically rounding them during the rendering process. This technique is especially useful in achieving realistic results without the need for detailed and labor-intensive modeling of rounded edges in the geometry itself. This technique modifies only the normals of the affected geometry and is enabled through the material bound to the primitive, provided that the material has this feature enabled. The following image illustrates the effect of rounded corners: with rounded corners enabled (1) and disabled (2).

RT distilling


Rounded Corner Menu


Note

Not all materials support rounded materials.

Example MDL code to add rounded corner support with simple diffuse shading.
mdl 1.8;
import ::anno::*;
import ::state::*;
import ::df::*;

export material RoundedCorners(
  color base_color = color(0.2) [[
    anno::display_name("Color"),
    anno::description("This is the diffuse base color"),
    anno::in_group("Diffuse")
  ]],
uniform float round_edges_radius = float(0.0) [[
    anno::display_name("Round Edge Radius"),
    anno::description("Influence radius around the edges in meters"),
    anno::in_group("Geometry"),
    anno::soft_range(0.0, 1.0)
]],
uniform float round_edges_roundness = float(1.0) [[
    anno::display_name("Round Edge Roundness"),
    anno::description("Determines how round the edge will look"),
    anno::in_group("Geometry"),
    anno::hard_range(0.0, 1.0)
]],
uniform bool round_edges_across_materials = false [[
    anno::display_name("Round Edge Across Materials"),
    anno::description("Normal smoothing happens only between facets of equal material, \n"
              "\t\tunless this parameter is set true, in which case the smoothing \n"
              "\t\thappens between facets irrespective of their materials"),
     anno::in_group("Geometry")
]],
float3 geometry_normal = state::normal() [[
     anno::display_name("Geometry Normal"),
     anno::in_group("Geometry"),
     anno::usage("normal")
]]
)
= let{
      bsdf diffuse_bsdf = df::weighted_layer(
          weight: 1.0,
          layer:  df::diffuse_reflection_bsdf(
                    tint:       base_color,
                    roughness:  float(0.0)
      ),
           base:   bsdf(),
           normal: geometry_normal
        );
      material_surface surface =  material_surface(
                                scattering: diffuse_bsdf
                                );
      material_geometry geometry = material_geometry(
                        normal: state::rounded_corner_normal(
                            radius: round_edges_radius,
                            across_materials: round_edges_across_materials,
                            roundness: round_edges_roundness
                            ));

} in material(
       surface: surface,
         geometry: geometry
);
  • MDL Path Demangling.

    We replace the scheme with a valid MDL package name and we use “%”-encoding on all characters allowed in Omniverse URIs but prohibited in MDL names. We also use a leading ‘/’ to make the resulting MDL path and absolute path. To be precise, the encoding replaces:

    a leading "omniverse://"       with   "/^omniverse/",
    a leading "file:///"           with   "/^file/",
    all ":"                        with   "%3A",
    all "\"                        with   "%5C", and
    all control codes and delete   with   their respective %-encoding
    (i.e. ASCII < 31 and ASCII 127)
    

    This results then for above example asset names in the following MDL file paths

    /^omniverse/localhost%3A3009/folder/file.mdl
    /^file/folder/file.mdl
    

    or, respectively, MDL package paths for the MDL import statement

    :: "^omniverse" :: "localhost%3A3009" :: "folder":: "file"
    :: "^file" :: "folder" :: "file"
    

    This is enabled by default but can be bypassed by passing this flag to the app:

    -/exts/omni.mdl.usd_converter/enableNewDemangling=false
    
  • Render Context Reordering.

    Render contexts, found under the Preferences->Material->Render Context menu, can be reordered by dragging them in the list (see A). This list will use the first context, and then fall back to the those lower on the list if the context can’t be found.

Render Context Reordering

Improved

  • Improvements to MDL Distilling and Baking. This feature now utilizes an independent rendering and baking pipeline, eliminating the need for a supported renderer to be loaded to produce correct baked textures. Previously some materials would result in null textures being created.

Fixed

  • Fixed support for vertex opacity when converting gTLF assets to USD. If enabled in the PRB.mdl material after conversion, it will use either the .w component of the vertex attribute displayColor or the vertex attribute displayOpacity.

  • Fixed issus with 3D procedural noise bump mapping in RTX renderers.

  • Fixed issues with derivatives in OmniSurface and texture sampling.

  • Fixed normal mapping issues with Subsurface Scattering in RTX: RT

  • Fixed MaterialX issues with range annotations, nested node graphs, geomprop lookups, saving, and loading.

  • Fixed various crashes and instability issues.

  • Fixed various issues related to regressions, pathing, parameters.

Known Issues

  • When encountering issues, run the Asset Validator.