I encountered an error when trying the OptiX_Apps example, as shown in the figure:
My environment is:
Win10 22H2 19045.2006
RTX2070
GeForce Drivers 555.85
VS2019
CUDA 11.8
Optix8.0
I encountered an error when trying the OptiX_Apps example, as shown in the figure:
My environment is:
Win10 22H2 19045.2006
RTX2070
GeForce Drivers 555.85
VS2019
CUDA 11.8
Optix8.0
I won’t be able to look into this before next week.
From the system configuration description, I would expect it to work. I developed that on Turing GPU boards as well.
Which version number of the MDL-SDK did you use?
Is this the first time you tried it or did it work in the past, like with a different driver version?
To probably get more information on the compilation error which resulted in the OPTIX_ERROR_PIPELINE_LINK_ERROR = 7251
,
could you please build the MDL_renderer
executable with the OptiX validation mode enabled here
https://github.com/NVIDIA/OptiX_Apps/blob/master/apps/MDL_renderer/src/Device.cpp#L302
and run that instead?
Or change the USE_DEBUG_EXCEPTIONS from 0 to 1 inside the config.h
file and rebuild the project.
(That will enable more checks and output from the exception program though.)
I’d need to see all output from the beginning of the execution.
Please prefer posting the actual text of the command prompt instead of screenshots.
(You can mark text inside Windows command prompts with a left mouse button drag and copy the text with the RETURN key, then paste it into a code block on this forum.)
To see if there is any issue with the amount or complexity of the MDL materials inside the scene, could you try that with a stripped down version of the scene_mdl_demo.txt
?
Basically comment everything out with the comment character #
from here to the end of the file:
https://github.com/NVIDIA/OptiX_Apps/blob/master/data/scene_mdl_demo.txt#L193
inside the copy of the file you put next to your executables.
That would only retain the diffuse ground plane and one diffuse sphere.
If that works, please try isolating if there is a specific material or a specific number of materials which breaks it.
The version I use is MDL SDK 2023.1.4, downloaded from Material Definition Language (MDL) SDK | NVIDIA Developer. Since the source code I downloaded from Github failed to build, I can only download the SDK from here. I am a self-taught programming novice and this is my first time learning MDL.
MDL_renderer.exe -s system_mdl_hair.txt -d scene_mdl_hair.txt can be run successfully
MDL_renderer.exe -s system_mdl_demo.txt -d scene_mdl_demo.txt
and
MDL_renderer.exe -s system_mdl_vMaterials.txt -d scene_mdl_vMaterials.txt
fail to run
According to what you said, I tried MDL_renderer.exe -s system_mdl_vMaterials.txt -d scene_mdl_demo.txt, and it also failed to run
This is the complete printout:
PS D:\Run> MDL_renderer.exe -s system_mdl_demo.txt -d scene_mdl_demo.txt
Arena size = 128 MiB
OpenGL interop = 1
loadSceneDescription() m_idGroup = 1, m_idInstance = 55, m_idGeometry = 5
CUDA Driver Version = 12.5
CUDA Device Count = 1
Device ordinal 0: NVIDIA GeForce RTX 2070 with Max-Q Design visible
Device ordinal 0: 7487643648 bytes free; 8589475840 bytes total
Device ordinal 0: NVIDIA GeForce RTX 2070 with Max-Q Design selected as active device index 0
1 peer-to-peer island: (0)
INFO: info : Loaded “D:\TEST\OptiX_Apps\OptiX_Apps-master\build\bin\Release\libmdl_sdk.dll”
INFO: info : MDL SDK 2023.1.4, build 373000.3036, 18 Mar 2024, nt-x86-64
INFO: info : Loaded library “D:\TEST\OptiX_Apps\OptiX_Apps-master\build\bin\Release\nv_openimageio.dll”.
INFO: info : Loaded library “D:\TEST\OptiX_Apps\OptiX_Apps-master\build\bin\Release\dds.dll”.
INFO: info : Plugin “oiio_bmp” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_exr” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_gif” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_hdr” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_jpg” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_jp2” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_j2k” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_png” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_pnm” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_psd” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_tga” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_tif” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_webp” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “dds” (build 373000.3036, 18 Mar 2024) initialized
OpenGL on active device index 0
INFO: info : Loading module “::mdl::bsdf_diffuse_reflection” from “D:\Run\mdl\bsdf_diffuse_reflection.mdl”.
INFO: info : Loading module “::mdl::bsdf_diffuse_transmission” from “D:\Run\mdl\bsdf_diffuse_transmission.mdl”.
INFO: info : Loading module “::mdl::bsdf_diffuse_reflection_two_sided” from “D:\Run\mdl\bsdf_diffuse_reflection_two_sided.mdl”.
INFO: info : Loading image “D:\Run\mdl\textures\circle.png”, no selector, pixel type “Rgb”, 1024x1024x1 pixels, 1 miplevel.
INFO: info : Loading module “::mdl::bsdf_diffuse_reflection_cutout” from “D:\Run\mdl\bsdf_diffuse_reflection_cutout.mdl”.
INFO: info : Loading module “::mdl::bsdf_specular_reflect” from “D:\Run\mdl\bsdf_specular_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_specular_reflect_transmit” from “D:\Run\mdl\bsdf_specular_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_specular_transmit” from “D:\Run\mdl\bsdf_specular_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_glossy_reflect” from “D:\Run\mdl\bsdf_glossy_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_glossy_reflect_transmit” from “D:\Run\mdl\bsdf_glossy_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_glossy_transmit” from “D:\Run\mdl\bsdf_glossy_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_smith_reflect” from “D:\Run\mdl\bsdf_microfacet_beckmann_smith_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_smith_reflect_transmit” from “D:\Run\mdl\bsdf_microfacet_beckmann_smith_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_smith_transmit” from “D:\Run\mdl\bsdf_microfacet_beckmann_smith_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_vcavities_reflect” from “D:\Run\mdl\bsdf_microfacet_beckmann_vcavities_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_vcavities_reflect_transmit” from “D:\Run\mdl\bsdf_microfacet_beckmann_vcavities_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_vcavities_transmit” from “D:\Run\mdl\bsdf_microfacet_beckmann_vcavities_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_smith_reflect” from “D:\Run\mdl\bsdf_microfacet_ggx_smith_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_smith_reflect_transmit” from “D:\Run\mdl\bsdf_microfacet_ggx_smith_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_smith_transmit” from “D:\Run\mdl\bsdf_microfacet_ggx_smith_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_vcavities_reflect” from “D:\Run\mdl\bsdf_microfacet_ggx_vcavities_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_vcavities_reflect_transmit” from “D:\Run\mdl\bsdf_microfacet_ggx_vcavities_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_vcavities_transmit” from “D:\Run\mdl\bsdf_microfacet_ggx_vcavities_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_ward_geisler_moroder” from “D:\Run\mdl\bsdf_ward_geisler_moroder.mdl”.
INFO: info : Loading module “::mdl::bsdf_backscattering” from “D:\Run\mdl\bsdf_backscattering.mdl”.
INFO: info : Loading module “::mdl::layer_weighted” from “D:\Run\mdl\layer_weighted.mdl”.
INFO: info : Loading module “::mdl::layer_weighted_color” from “D:\Run\mdl\layer_weighted_color.mdl”.
INFO: info : Loading module “::mdl::layer_fresnel” from “D:\Run\mdl\layer_fresnel.mdl”.
INFO: info : Loading module “::mdl::layer_fresnel_color” from “D:\Run\mdl\layer_fresnel_color.mdl”.
INFO: info : Loading module “::mdl::layer_measured_curve” from “D:\Run\mdl\layer_measured_curve.mdl”.
INFO: info : Loading module “::mdl::layer_measured_curve_color” from “D:\Run\mdl\layer_measured_curve_color.mdl”.
INFO: info : Loading module “::mdl::mixer_normalized” from “D:\Run\mdl\mixer_normalized.mdl”.
INFO: info : Loading module “::mdl::mixer_normalized_color” from “D:\Run\mdl\mixer_normalized_color.mdl”.
INFO: info : Loading module “::mdl::mixer_clamped” from “D:\Run\mdl\mixer_clamped.mdl”.
INFO: info : Loading module “::mdl::mixer_clamped_color” from “D:\Run\mdl\mixer_clamped_color.mdl”.
INFO: info : Loading module “::mdl::mixer_unbounded” from “D:\Run\mdl\mixer_unbounded.mdl”.
INFO: info : Loading module “::mdl::mixer_unbounded_color” from “D:\Run\mdl\mixer_unbounded_color.mdl”.
INFO: info : Loading module “::mdl::modifier_tint” from “D:\Run\mdl\modifier_tint.mdl”.
INFO: info : Loading module “::mdl::modifier_directional_factor” from “D:\Run\mdl\modifier_directional_factor.mdl”.
INFO: info : Loading module “::mdl::modifier_fresnel_factor” from “D:\Run\mdl\modifier_fresnel_factor.mdl”.
INFO: info : Loading module “::mdl::modifier_measured_curve_factor” from “D:\Run\mdl\modifier_measured_curve_factor.mdl”.
INFO: info : Loading module “::mdl::modifier_thin_film” from “D:\Run\mdl\modifier_thin_film.mdl”.
INFO: info : Loading module “::mdl::bsdf_sheen” from “D:\Run\mdl\bsdf_sheen.mdl”.
INFO: info : Loading module “::mdl::vdf_anisotropic” from “D:\Run\mdl\vdf_anisotropic.mdl”.
INFO: info : Loading module “::mdl::edf_diffuse” from “D:\Run\mdl\edf_diffuse.mdl”.
INFO: info : Loading module “::mdl::edf_diffuse_power” from “D:\Run\mdl\edf_diffuse_power.mdl”.
INFO: info : Loading module “::mdl::edf_diffuse_two_sided” from “D:\Run\mdl\edf_diffuse_two_sided.mdl”.
INFO: info : Loading image “D:\Run\mdl\textures\rgby_2x2.png”, no selector, pixel type “Rgba”, 2x2x1 pixels, 1 miplevel.
INFO: info : Loading module “::mdl::edf_diffuse_tex” from “D:\Run\mdl\edf_diffuse_tex.mdl”.
INFO: info : Loading module “::mdl::edf_spot” from “D:\Run\mdl\edf_spot.mdl”.
INFO: info : Loading module “::mdl::edf_spot_power” from “D:\Run\mdl\edf_spot_power.mdl”.
INFO: info : Loading module “::mdl::edf_backface_cutout” from “D:\Run\mdl\edf_backface_cutout.mdl”.
INFO: info : Loading light profile “D:\Run\mdl\ies\TypeC.ies”, original resolution 9x5, interpolated resolution 9x5.
INFO: info : Loading module “::mdl::edf_light_profile” from “D:\Run\mdl\edf_light_profile.mdl”.
INFO: info : Loading module “::mdl::noise_flow_glossy” from “D:\Run\mdl\noise_flow_glossy.mdl”.
INFO: info : Loading module “::mdl::noise_perlin_glossy” from “D:\Run\mdl\noise_perlin_glossy.mdl”.
INFO: info : Loading module “::mdl::noise_worley_glossy” from “D:\Run\mdl\noise_worley_glossy.mdl”.
COMPILER (2) [0]: COMPILE ERROR: failed to create pipeline
Info: Pipeline statistics
module(s) : 61
entry function(s) : 196
trace call(s) : 3
continuation callable call(s) : 0
direct callable call(s) : 36
basic block(s) in entry functions : 3933
instruction(s) in entry functions : 83900
non-entry function(s) : 29
basic block(s) in non-entry functions: 344
instruction(s) in non-entry functions: 2676
debug information : no
ERROR: D:\TEST\OptiX_Apps\OptiX_Apps-master\apps\MDL_renderer\src\Device.cpp(930): m_api.optixPipelineCreate(m_optixContext, &m_pco, &m_plo, programGroups.data(), (unsigned int) programGroups.size(), nullptr, nullptr, &m_pipeline) (7251)
ERROR: Application() failed to initialize successfully.
PS D:\Run>
OK, when the MDL hair example works then the MDL SDK is compatible.
I asked for the version because I noticed that my README.md still listed an older build version, but the MDL_renderer requires at least version MDL SDK 2023.1 (373000.1077) because of the changed OptiX code generation see this commit message:
https://github.com/NVIDIA/OptiX_Apps/commit/c44ed0d1d7d8c9e89d1b8cdb40c084e15239e09a
According to what you said, I tried MDL_renderer.exe -s system_mdl_vMaterials.txt -d scene_mdl_demo.txt, and it also failed to run
I didn’t say that. That’s not a combination of system and scene description files which match. The names are picked on purpose.
MDL_renderer.exe -s system_mdl_vMaterials.txt -d scene_mdl_vMaterials.txt
To be able to use any of the MDL vMaterials, you’d also need to have the MDL vMaterial packages installed.
I’ve prepared material references for all MDL vMaterials in packages 1.7 to 2.3 in that scene_mdl_vMaterials.txt.
I have not included the newest MDL vMaterials 2.4 release, yet!
The simple MDL materials used inside scene_mdl_demo.txt are all inside the data/mdl folder. so only these should work when not installing the MDL vMaterials packages-
Please read again what I requested to isolate the issue further:
1.) Enable valdation inside the code.
2.) Run with validation and see if there is any information about why the pipeline compilation and linking failed.
3.) Post error the output with validation enabled.
4.) Change the scene_mdl_demo.txt to have fewer geometries and materials.
5.) Run again to see if it’s due to some materials not working.
After I deleted the following 5 lines, it ran successfully!
mdl bsdf_diffuse_reflection_cutout bsdf_diffuse_reflection_cutout “mdl/bsdf_diffuse_reflection_cutout.mdl”
mdl bsdf_sheen bsdf_sheen “mdl/bsdf_sheen.mdl”
mdl edf_diffuse_tex edf_diffuse_tex “mdl/edf_diffuse_tex.mdl”
mdl edf_light_profile edf_light_profile “mdl/edf_light_profile.mdl”
mdl edf_backface_cutout edf_backface_cutout “mdl/edf_backface_cutout.mdl”
Thank you very much for your answer!
I also want to ask, what is the real-time performance of MDL? I want to develop a real-time renderer
All the deleted MDL files exist, so the error is not caused by not finding the file. So what is the cause of the error?
I did a simple test and the FPS was very low. Is MDL not suitable for developing real-time ray tracing?
After I deleted the following 5 lines, it ran successfully!
Seriously, that was also not exactly what I asked for, but you were lucky in how my application handles undefined material references that this still worked.
Removing these material reference lines I use to later assign materials to objects will result in warnings that a material reference could not be found and will be replaced by the material reference named “default”, so some of the spheres inside the demo scene are now looking differently than intended.
All the deleted MDL files exist, so the error is not caused by not finding the file. So what is the cause of the error?
I still don’t know what the compilation error is.
It worked fine on my system the last time I tried but I’m not on R555 drivers or Turing hardware.
I need to check the newer display driver and MDL SDK next week.
Interestingly four of these five materials are referencing a texture from the folder mdl/textures
resp. a light_profile from mdl/ies
.
There weren’t any warnings or errors about missing textures when you loaded these before and it looks like you have copied these folders along with the mdl
folder containing them, so I assume the image and IES files are inside these folders.
Though if MDL materials with textures aren’t working, then none of the MDL vMaterials will work!
Could you build a scene which simply has one of the materials you found that aren’t working.
Place only that one material inside the scene by commenting the geometries out like I described before and replace the bsdf_diffuse_reflection material with one of the failing ones and see if that alone fails as well?
Do that with OptiX validation enabled to potentially see more errors.
I also want to ask, what is the real-time performance of MDL? I want to develop a real-time renderer.
I did a simple test and the FPS was very low. Is MDL not suitable for developing real-time ray tracing?
Explain what you consider a real-time renderer.
Real-time like in games with final frame noise free look?
While there are ways to compile MDL materials also to rasterizer shading languages GLSL and HLSL, implementing a real-time ray tracing renderer with MDL would not be my first choice.
MDL is much too flexible for that and the way the MDL_renderer example implements support for all the required features is not the fastest possible solution either, but it’s the most flexible one. Its goal was photorealistic images with that highly flexible material definition language.
There exists a distilling feature inside the MDL SDK where complex MDL materials can be distilled into a simpler more hardcoded material system, but I haven’t used that.
Then that MDL_renderer example implements a full global illumination light transport algorithm with a progressive (Monte Carlo) unidirectional path tracer which is not meant for real-time but requires hundreds to thousands of samples per pixel to result in a final image.
There is no way to reach real-time with that without also using denoisers. OptiX has one, but that is also meant more for a final frame and not real-time, although it’s decently fast, but not compared to DLSS-RR which is designed for real-time use.
You could also implement a different, faster light transport algorithm, like a Whitted renderer like shown inside the OptiX SDK example optixMeshViewer but then you would lose global illumination effects.
Then you’re using a mid-range Turing GPU from two generations ago. The ray tracing performance with the following GPU architecture Ampere and Ada roughly doubled each generation, so a current RTX 4070 should be about 4 times faster than your RTX 2070 in that example.
If you look for maximum performance in a path-tracer, have a look at the rtigo12 example which is using a fixed set of hardcoded closest hit programs with fundamental BXDFs only. That is the fastest path tracer implementation in those examples.
The next well performing of my examples with a much more elaborate material system is the newest example GLTF_renderer. While that is also a global illumination path-tracer, that is using a single über-shader with a fixed material system defined by the glTF 2.0 specs and some glTF extensions and just the material parameters drive the look of the material.
It would be easy to make that even faster by removing some of the more expensive features, like iridescence.
That example shows OpenGL interop support best and also uses multiple asynchronous launches per render call easily. Though it’s single GPU only and the render resolution is currently matching the window client area.
Never benchmark OptiX applications in debug mode or with validation enabled!
Debug device code as used inside the OptiX SDK examples when building Debug targets is horrendously slow (my examples don’t build debug device code by default) and validation mode inserts synchronizations and checks which reduce the performance considerably.
I modified the code according to the picture and recompiled the program. Does this mean that verification is enabled?
After I turned off verification, the FPS did improve a lot,
but it seems to be slower than the CUDA renderer I developed.
The following picture is a screenshot of the rendering I developed with CUDA. RTX2070 has about 25FPS at 1280*720 resolution, so I want to use DXR or Vulkan or Optix to turn on BVH hardware acceleration to speed up the FPS, and then cooperate with MDL to provide more realistic image quality, but I don’t know if MDL will cause very low FPS
I guess the error may be related to the DevIL image loading library, because when I run rtigo9.exe -s system_rtigo9_demo.txt -d scene_rtigo9_demo.txt, the image is not loaded successfully.
Also, I don’t know how GLTF_renderer.exe runs, don’t know what parameters to pass, and I really want to try GLTF_renderer
This is the complete printout after verification is turned on:
PS D:\Run> MDL_renderer.exe -s system_mdl_demo.txt -d scene_mdl_demo.txt
Arena size = 128 MiB
OpenGL interop = 1
loadSceneDescription() m_idGroup = 1, m_idInstance = 55, m_idGeometry = 5
CUDA Driver Version = 12.5
CUDA Device Count = 1
Device ordinal 0: NVIDIA GeForce RTX 2070 with Max-Q Design visible
Device ordinal 0: 7487643648 bytes free; 8589475840 bytes total
Device ordinal 0: NVIDIA GeForce RTX 2070 with Max-Q Design selected as active device index 0
1 peer-to-peer island: (0)
INFO: info : Loaded “D:\TEST\OptiX_Apps\OptiX_Apps-master\build\bin\Release\libmdl_sdk.dll”
INFO: info : MDL SDK 2023.1.4, build 373000.3036, 18 Mar 2024, nt-x86-64
INFO: info : Loaded library “D:\TEST\OptiX_Apps\OptiX_Apps-master\build\bin\Release\nv_openimageio.dll”.
INFO: info : Loaded library “D:\TEST\OptiX_Apps\OptiX_Apps-master\build\bin\Release\dds.dll”.
INFO: info : Plugin “oiio_bmp” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_exr” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_gif” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_hdr” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_jpg” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_jp2” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_j2k” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_png” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_pnm” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_psd” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_tga” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_tif” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “oiio_webp” (build 373000.3036, 18 Mar 2024) initialized
INFO: info : Plugin “dds” (build 373000.3036, 18 Mar 2024) initialized
OpenGL on active device index 0
INFO: info : Loading module “::mdl::bsdf_diffuse_reflection” from “D:\Run\mdl\bsdf_diffuse_reflection.mdl”.
INFO: info : Loading module “::mdl::bsdf_diffuse_transmission” from “D:\Run\mdl\bsdf_diffuse_transmission.mdl”.
INFO: info : Loading module “::mdl::bsdf_diffuse_reflection_two_sided” from “D:\Run\mdl\bsdf_diffuse_reflection_two_sided.mdl”.
INFO: info : Loading image “D:\Run\mdl\textures\circle.png”, no selector, pixel type “Rgb”, 1024x1024x1 pixels, 1 miplevel.
INFO: info : Loading module “::mdl::bsdf_diffuse_reflection_cutout” from “D:\Run\mdl\bsdf_diffuse_reflection_cutout.mdl”.
INFO: info : Loading module “::mdl::bsdf_specular_reflect” from “D:\Run\mdl\bsdf_specular_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_specular_reflect_transmit” from “D:\Run\mdl\bsdf_specular_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_specular_transmit” from “D:\Run\mdl\bsdf_specular_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_glossy_reflect” from “D:\Run\mdl\bsdf_glossy_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_glossy_reflect_transmit” from “D:\Run\mdl\bsdf_glossy_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_glossy_transmit” from “D:\Run\mdl\bsdf_glossy_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_smith_reflect” from “D:\Run\mdl\bsdf_microfacet_beckmann_smith_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_smith_reflect_transmit” from “D:\Run\mdl\bsdf_microfacet_beckmann_smith_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_smith_transmit” from “D:\Run\mdl\bsdf_microfacet_beckmann_smith_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_vcavities_reflect” from “D:\Run\mdl\bsdf_microfacet_beckmann_vcavities_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_vcavities_reflect_transmit” from “D:\Run\mdl\bsdf_microfacet_beckmann_vcavities_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_beckmann_vcavities_transmit” from “D:\Run\mdl\bsdf_microfacet_beckmann_vcavities_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_smith_reflect” from “D:\Run\mdl\bsdf_microfacet_ggx_smith_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_smith_reflect_transmit” from “D:\Run\mdl\bsdf_microfacet_ggx_smith_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_smith_transmit” from “D:\Run\mdl\bsdf_microfacet_ggx_smith_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_vcavities_reflect” from “D:\Run\mdl\bsdf_microfacet_ggx_vcavities_reflect.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_vcavities_reflect_transmit” from “D:\Run\mdl\bsdf_microfacet_ggx_vcavities_reflect_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_microfacet_ggx_vcavities_transmit” from “D:\Run\mdl\bsdf_microfacet_ggx_vcavities_transmit.mdl”.
INFO: info : Loading module “::mdl::bsdf_ward_geisler_moroder” from “D:\Run\mdl\bsdf_ward_geisler_moroder.mdl”.
INFO: info : Loading module “::mdl::bsdf_backscattering” from “D:\Run\mdl\bsdf_backscattering.mdl”.
INFO: info : Loading module “::mdl::layer_weighted” from “D:\Run\mdl\layer_weighted.mdl”.
INFO: info : Loading module “::mdl::layer_weighted_color” from “D:\Run\mdl\layer_weighted_color.mdl”.
INFO: info : Loading module “::mdl::layer_fresnel” from “D:\Run\mdl\layer_fresnel.mdl”.
INFO: info : Loading module “::mdl::layer_fresnel_color” from “D:\Run\mdl\layer_fresnel_color.mdl”.
INFO: info : Loading module “::mdl::layer_measured_curve” from “D:\Run\mdl\layer_measured_curve.mdl”.
INFO: info : Loading module “::mdl::layer_measured_curve_color” from “D:\Run\mdl\layer_measured_curve_color.mdl”.
INFO: info : Loading module “::mdl::mixer_normalized” from “D:\Run\mdl\mixer_normalized.mdl”.
INFO: info : Loading module “::mdl::mixer_normalized_color” from “D:\Run\mdl\mixer_normalized_color.mdl”.
INFO: info : Loading module “::mdl::mixer_clamped” from “D:\Run\mdl\mixer_clamped.mdl”.
INFO: info : Loading module “::mdl::mixer_clamped_color” from “D:\Run\mdl\mixer_clamped_color.mdl”.
INFO: info : Loading module “::mdl::mixer_unbounded” from “D:\Run\mdl\mixer_unbounded.mdl”.
INFO: info : Loading module “::mdl::mixer_unbounded_color” from “D:\Run\mdl\mixer_unbounded_color.mdl”.
INFO: info : Loading module “::mdl::modifier_tint” from “D:\Run\mdl\modifier_tint.mdl”.
INFO: info : Loading module “::mdl::modifier_directional_factor” from “D:\Run\mdl\modifier_directional_factor.mdl”.
INFO: info : Loading module “::mdl::modifier_fresnel_factor” from “D:\Run\mdl\modifier_fresnel_factor.mdl”.
INFO: info : Loading module “::mdl::modifier_measured_curve_factor” from “D:\Run\mdl\modifier_measured_curve_factor.mdl”.
INFO: info : Loading module “::mdl::modifier_thin_film” from “D:\Run\mdl\modifier_thin_film.mdl”.
INFO: info : Loading module “::mdl::bsdf_sheen” from “D:\Run\mdl\bsdf_sheen.mdl”.
INFO: info : Loading module “::mdl::vdf_anisotropic” from “D:\Run\mdl\vdf_anisotropic.mdl”.
INFO: info : Loading module “::mdl::edf_diffuse” from “D:\Run\mdl\edf_diffuse.mdl”.
INFO: info : Loading module “::mdl::edf_diffuse_power” from “D:\Run\mdl\edf_diffuse_power.mdl”.
INFO: info : Loading module “::mdl::edf_diffuse_two_sided” from “D:\Run\mdl\edf_diffuse_two_sided.mdl”.
INFO: info : Loading image “D:\Run\mdl\textures\rgby_2x2.png”, no selector, pixel type “Rgba”, 2x2x1 pixels, 1 miplevel.
INFO: info : Loading module “::mdl::edf_diffuse_tex” from “D:\Run\mdl\edf_diffuse_tex.mdl”.
INFO: info : Loading module “::mdl::edf_spot” from “D:\Run\mdl\edf_spot.mdl”.
INFO: info : Loading module “::mdl::edf_spot_power” from “D:\Run\mdl\edf_spot_power.mdl”.
INFO: info : Loading module “::mdl::edf_backface_cutout” from “D:\Run\mdl\edf_backface_cutout.mdl”.
INFO: info : Loading light profile “D:\Run\mdl\ies\TypeC.ies”, original resolution 9x5, interpolated resolution 9x5.
INFO: info : Loading module “::mdl::edf_light_profile” from “D:\Run\mdl\edf_light_profile.mdl”.
INFO: info : Loading module “::mdl::noise_flow_glossy” from “D:\Run\mdl\noise_flow_glossy.mdl”.
INFO: info : Loading module “::mdl::noise_perlin_glossy” from “D:\Run\mdl\noise_perlin_glossy.mdl”.
INFO: info : Loading module “::mdl::noise_worley_glossy” from “D:\Run\mdl\noise_worley_glossy.mdl”.
COMPILER (2) [0]: COMPILE ERROR: failed to create pipeline
Info: Pipeline statistics
module(s) : 61
entry function(s) : 196
trace call(s) : 3
continuation callable call(s) : 0
direct callable call(s) : 36
basic block(s) in entry functions : 3933
instruction(s) in entry functions : 83900
non-entry function(s) : 29
basic block(s) in non-entry functions: 344
instruction(s) in non-entry functions: 2676
debug information : no
ERROR: D:\TEST\OptiX_Apps\OptiX_Apps-master\apps\MDL_renderer\src\Device.cpp(930): m_api.optixPipelineCreate(m_optixContext, &m_pco, &m_plo, programGroups.data(), (unsigned int) programGroups.size(), nullptr, nullptr, &m_pipeline) (7251)
ERROR: Application() failed to initialize successfully.
PS D:\Run>
I modified the code according to the picture and recompiled the program. Does this mean that verification is enabled?
Yes, as I said, if you rebuilt the application the application with #define USE_DEBUG_EXCEPTIONS 1
the OptiX validation mode was enabled.
It’s surprising that there is no additional output about the compiler error. I’m going to try reproducing this.
After I turned off verification, the FPS did improve a lot,
Right, as I explained in the Never benchmark OptiX applications in debug mode or with validation enabled! paragraph above.
In your results, it may be a coincidence that results seem to be limited to 60 fps but that is usually an indication for vertical sync being enabled for the OpenGL swap buffers on a 60 Hz monitor.
Do not benchmark graphics applications with vsync enabled!
Please go to the NVIDIA Display Control Panel, inside the Manage 3D Settings find the Vertical sync option and change it to Off.
Press Apply and close the Control Panel again.
Then benchmark again and check if the results exceed 60 fps now.
Also note that I do not update the HDR texture which displays the image for every render call.
Read the description of the present
option inside one of the system description text files.
The system_mdl_demo.txt
sets the rendering resolution to 1280x360 irrespective of the window client area size.
For comparisons, on my RTX 6000 Ada board, that scene accumulates and displays every sub-frame image (present 1, interop 1) with around 250 to 1200 fps depending on the view.
I guess the error may be related to the DevIL image loading library, because when I run rtigo9.exe -s system_rtigo9_demo.txt -d scene_rtigo9_demo.txt, the image is not loaded successfully.
I cannot reproduce the DevIL error 1291
(== #define IL_INVALID_FILE_HEADER 0x0508
) on my system when using DevIL 1.8.0.
Since the application started at all, at least the DevIL.dll was found, so I assume you copied the DevIL.dll, ILU.dll and ILUT.dll files from your local DevIL installation against which you compiled the example applications next to the executables.
Also when not actually finding the texture images, the error message would be saying ERROR: Picture::load() <filename> not found
, so that means you also copied all files from the data
folder next to the executables.
Both is exactly described inside the README.md Building chapter.
Note that in the MDL_renderer example, the textures used inside the MDL materials are loaded by the nv_openimageio.dll
by default (alternatively with the nv_freeimage.dll
when you switch to that inside the source code). DevIL is only used for the emissive textures on built-in lights (environment, rectangle, IES) in that example.
The working directory must be the module directory, that is, the folder with the executables, when starting the examples because the texture image files are looked for relative to that.
If that isn’t working, either your DevIL library is broken or not the right version (default build uses 1.8.0), or the image files are broken during download or copying.
Please try loading the *.png
and *.jpg
images inside the executable folder into some paint program to see if the files themselves work.
If not try downloading them again and verify that they are working.
Also I normally do not use the Windows PowerShell but the old Windows command prompt to run all my applications.
I would have expected that the command line inside the PowerShell would need to be .\rtigo9.exe
when running from inside the module directory, unless you added .
to the PATH environment variable.
Works on my Win10 system with either the command prompt or the PowerShell though.
Also note that rtigo9
is the slower example compared to rtigo10
and rtigo12
because it works differently and handles cutout opacity. They use mostly the same scene description, so the system and scene description files with _rtigo9_
in the name work for all three executables. rtigo12 can handle two more BXDFs and supports singular lights better.
For comparisons: rtigo12.exe -s system_rtigo9_demo.txt -d scene_rtigo9_demo.txt
accumulates around 1200 samples per second with display on an RTX 6000 Ada.
Again read the README.md
for the differences (also in lighting) between these examples.
The examples are not supporting unicode characters in paths. Means in case there is anything using Chinese characters inside these examples (including the environment variables MDL_SYSTEM_PATH
and MDL_USER_PATH
set by the MDL vMaterials installation) things files would probably not be found, but your error is different.
After I turned off verification, the FPS did improve a lot, but it seems to be slower than the CUDA renderer I developed.
The following picture is a screenshot of the rendering I developed with CUDA. RTX2070 has about 25FPS at 1280*720 resolution, so I want to use DXR or Vulkan or Optix to turn on BVH hardware acceleration to speed up the FPS, and then cooperate with MDL to provide more realistic image quality, but I don’t know if MDL will cause very low FPS
You cannot compare the performance of two ray tracers like this without exactly knowing what light transport they implement, how they do that, and esp. how many rays are shot per frame.
It’s not clear what the 25 fps mean for your images.
If you get that final frame quality for each individual frame with 25 fps on an RTX 2070, congratulations, that’s looking great.
If you mean 25 samples per pixel per second in a progressively accumulating Monte Carlo renderer and the posted images needed N samples per pixel, then that would be reasonable.
If you already have a CUDA based renderer, the part which could be enhanced by OptiX would be the acceleration structure (BVH) building and traversal and the ray-triangle intersection.
The shading part would not benefit much because that would stay mostly the same instructions in either ray tracing implementation.
Means if you can benchmark inside your CUDA application what percentage of the overall time you use for BVH traversal and ray-triangle intersection only, that would give you an estimation for how much you could improve your renderer performance when using the RT cores on RTX boards for that at maximum.
I would definitely not exchange the material shading part of your current ray tracer implementation before having the BVH traversal and ray-triangle intersection hardware accelerated with OptiX or DXR or Vulkan.
To understand some differences between OptiX and Vulkan raytracing (and DXR) please read this thread: What are the advantages and differences between Optix 7 and Vulkan Raytracing API?
Also, I don’t know how GLTF_renderer.exe runs, don’t know what parameters to pass, and I really want to try GLTF_renderer
1.) All my examples print a usage message when using the command line options ?
or help
or --help
or when there is an error inside the given command line options.
2.) The root README.md inside the repository describes what each example does. For the GLTF_renderer there is this paragraph inside it: https://github.com/NVIDIA/OptiX_Apps?tab=readme-ov-file#simple-and-fast-physically-based-rendering
3.) The Running chapter also mentions the GLTF_renderer at the very end. (Look at your very first screenshot you posted in this thread.)
4.) For the GLTF_renderer example there exists a very extensive README.md which describes all command line parameters, the whole GUI, and some more implementation details.
5.) You have the source code to the applications. All of them have code inside the main.cpp file which handles command line options.
The COMPILE ERROR: failed to create pipeline
seems to be a display driver regression.
I can reproduce that with my workstation boards on an unreleased R555 driver as well and will file a bug report about it.
I was running R545 drivers without issues before.
Please try if reverting to R545 or R550 display drivers for your configuration fixes the pipeline compile error.
Thank you very much for your answer
I am planning to use DXR or Optix or Vullkan to speed up the sampling speed, and then cooperate with MDL to bring the most realistic rendering image quality.