I recently built vtk with support for ray tracing - latest VTK : 9.6, ANARI SDK : 0.15, VisRTX : 0.13, NVIDIA OptiX : 8.1 on Windows and the system works well.
But there are several gaps between what IS supported in VTK and what COULD be supported since ANARI/VisRTX already has the support.
I’m particulalry interested in finding out if there are any designs available (or in work) about how these extended capabilities will be exposed through VTK. I’m even more intereted in how these would be exposed via the vtkPartitionedDataSetColleciton and associated vtkCompositePolyDataMapper and vtkCompositeDataDisplayAttributes - I use these heavily in my current work and they are somehwat at odds with the way VTK supports PBR mostly on the vtkActor? Idealy, I’d like ot be able to set ANY of these properties at the block level and have the mapper take care of getting the data to the right place….
Are there any plans to extend support for additional PBR properties? The tables below represnt my undestranding of the current support levels in each of the technolgies. I don’t really need all of these, but for sure the “transmission” poperty woudl be very useful.
If there aren’t any specific plans to enhance ghis capability, I will likely have a go at adding the transmission property myself - currently (based on very little reasearch) I would plan to do this by basically aping the way opacity is handled - and just extend the set of supported PBR properties? But if there is already a design, I’d rather align with that than just do it in isolation?
Scalar & Vector Parameters
| Parameter | vtkProperty | VTK→ANARI Adapter | ANARI KHR Spec | VisRTX non-MDL | VisRTX MDL |
|---|---|---|---|---|---|
| baseColor | GetColor() |
||||
| opacity | GetOpacity() |
||||
| metallic | GetMetallic() |
||||
| roughness | GetRoughness() |
||||
| ior | GetBaseIOR() |
||||
| specular | GetSpecular() |
— | |||
| specularColor | GetSpecularColor() |
— | |||
| clearcoat | GetCoatStrength() |
— | |||
| clearcoatRoughness | GetCoatRoughness() |
— | |||
| alphaMode | — | Hardcoded "blend" |
|||
| alphaCutoff | — | ||||
| transmission | — | ||||
| thickness | — | — | |||
| attenuationDistance | — | — | |||
| attenuationColor | — | — | |||
| sheenColor | — | — | |||
| sheenRoughness | — | — | |||
| iridescence | — | — | |||
| iridescenceIor | — | — | |||
| iridescenceThickness | — | — | |||
| anisotropy | GetAnisotropy() |
— | — | — | |
| anisotropyRotation | GetAnisotropyRotation() |
— | — | — | |
| coatColor | GetCoatColor() |
— | — | — | |
| coatIOR | GetCoatIOR() |
— | — | — | |
| coatNormalScale | GetCoatNormalScale() |
— | — | — | |
| normalScale | GetNormalScale() |
— | — | — | |
| occlusionStrength | GetOcclusionStrength() |
— | — | — | |
| emissiveFactor | GetEmissiveFactor() |
— | — | — | |
| edgeTint | GetEdgeTint() |
— | — | — |
Texture Slots
| Texture | vtkProperty Slot | VTK→ANARI | ANARI KHR Spec | VisRTX non-MDL | VisRTX MDL |
|---|---|---|---|---|---|
| Base color / albedo | "albedoTex" |
||||
| ORM (O+R+M packed) | "materialTex" |
||||
| Normal | "normalTex" |
||||
| Emissive | "emissiveTex" |
||||
| Clearcoat normal | "coatNormalTex" |
— | |||
| Anisotropy | "anisotropyTex" |
— | — | — | |
| Opacity (texture) | — | ||||
| Metallic (standalone) | — | — (via ORM only) | |||
| Roughness (standalone) | — | — (via ORM only) | |||
| Specular (texture) | — | — | |||
| SpecularColor (texture) | — | — | |||
| Clearcoat (texture) | — | — | |||
| ClearcoatRoughness (tex) | — | — | |||
| Transmission (texture) | — | ||||
| Thickness (texture) | — | — | |||
| Sheen color (texture) | — | — | |||
| Sheen roughness (texture) | — | — | |||
| Iridescence (texture) | — | — | |||
| IridescenceThickness (tex) | — | — |