{"push_id":2511314046,"size":27,"distinct_size":27,"ref":"refs/heads/master","head":"bb5f73f6a5e664c7d7c2b36dfe21712b90cd2cbc","before":"f7017f7cadcfc71e3518efc86455656016608bcd","commits":[{"sha":"ca2786114bb750ebba010507bf728a446f11b68e","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Update from dear imgui v1.50 WIP to v1.60 WIP.\n\nAdjust existing examples to use the new ImGui_ImplGlfwGL2_RenderDrawData() function.\nFix GLFW and ImGui shutdown sequence order in sutil-cpp.\nAdded new ImGui::CreateContext() and ImGui::DestroyContext() functions.\nFixed size_t to unsigned int conversion warning in optixProgressivePhotonMap.cpp","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/ca2786114bb750ebba010507bf728a446f11b68e"},{"sha":"7428cfd91f243f97d030f46b7bd84ea9144bf999","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Added optixIntro_01.\n\noptixIntro_01\nShows how to ...\n- use CMake to generate projects among different platforms and compilers.\n- setup an OptiX application framework based on GLFW, GLEW, OpenGL, ImGui.\n- initialize the minimum OptiX objects to write to a buffer from within a ray generation program.\n- dump information about the GPU devices visible to OptiX.\n- declare variables and buffers on host and device side.\n- use a host buffer or an OptiX interoperability buffer to display an image rendered in OptiX.\n- change variable values and buffer sizes, and read buffer contents on the host.\n- setup a ray generation program which fills the output buffer without shooting any rays, basically a 2D compute kernel.\n- setup a exception program to catch errors thrown by OptiX on device side.\n- declare and use variables with the predefined OptiX semantics rtLaunchIndex.\n- setup an empty scene graph root Group node with a NoAccel Acceleration.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/7428cfd91f243f97d030f46b7bd84ea9144bf999"},{"sha":"15c556a9589ecd247d8803f974aaaa30bd2990be","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Fix the documentation comment for optixIntro_01","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/15c556a9589ecd247d8803f974aaaa30bd2990be"},{"sha":"161d11c73202585a97a768b5cee1b4e230b1908b","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Added optixIntro_02\n\nShows additionally how to ...\n- implement a pinhole camera view frustum to generate primary rays in the ray generation program.\n- implement mouse interaction to manipulate the pinhole camera (orbit, pan, dolly, zoom).\n- setup a developer defined per ray payload.\n- use rtTrace to combine rays with per ray payload and start traversal at the scene root node (empty Group in this demo).\n- implement a miss program which returns data inside the per ray payload.\n- declare and use variables with the predefined OptiX semantics rtLaunchIndex, rtLaunchDim, rtCurrentRay, rtPayload.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/161d11c73202585a97a768b5cee1b4e230b1908b"},{"sha":"fa44ab53db7c16f160a6cfcbe16e3ddbb54774b8","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Added optixIntro_03\n\nShows additionally how to ...\n- build a plane and sphere geometry from an indexed triangle mesh.\n- create a Geometry node with buffers holding the vertex attributes and index attributes.\n- implement a bounding box and intersection program for indexed triangles.\n- combine attribute and index buffers and bounding box and intersection programs to build a Geometry node.\n- calculate vertex attributes inside the intersection program and access them inside another program domain.\n- implement a closest hit program which visualizes the current shading normal in world space coordinates.\n- create a Material which holds a closest hit program.\n- create a GeometryInstance node, which combines a Geometry with a Material.\n- create GeometryGroups which combine GeometryInstances with Acceleration structures.\n- setting Acceleration properties to invoke a specialized fast Trbvh builder for triangle primitives.\n- create Transform nodes which place GeometryGroups into the world coordinate system.\n- put everything under the scene's root Group which hold the top level Acceleration structure.\n- implement a white environment miss program.\n- use a Timer class to measure scene setup time.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/fa44ab53db7c16f160a6cfcbe16e3ddbb54774b8"},{"sha":"761724cee26239b8e43d27f045017210ba750264","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Remove exception_tonemapper program.\n\n(Not needed before optixIntro_09.)","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/761724cee26239b8e43d27f045017210ba750264"},{"sha":"5f53bbbccdae2ccfc7d8c1af4382b77630aac6bd","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Added optixIntro_04\n\nShows additionally how to ...\n- build a box and torus geometry from an indexed triangle mesh.\n- implement a fast iterative brute force path tracer (no direct lighting).\n- implement a progressive renderer, accumulating values in an input_output buffer.\n- automatic antialiasing of image by sub-pixel jittering inside the ray generation program.\n- separating the integrator into an inlined function.\n- implement a diffuse reflection shading (Lambert) inside a closest hit program.\n- connect all material parameters in a buffer with individual scene objects.\n- use the variable scoping in OptiX to minimize the number of Material nodes needed.\n- use the maximum path length limit to automatically generate ambient occlusion results.\n- implement a tonemapper post-process as GLSL shader working on HDR data.\n- use the time class to schedule image updates only once per second to improve performance (reduced PCI-E bandwidth).\n- drive renderer system and tonemapper settings and material parameters from the GUI.\n- visualize incorrect results in the output (negative, infinite, and not-a-number) for debugging.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/5f53bbbccdae2ccfc7d8c1af4382b77630aac6bd"},{"sha":"9841843aba458f2ef1baf92119b5580e14093002","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Added optixIntro_05\n\nShows additionally how to ...\n- implement direct lighting in an iterative path tracer.\n- switch between brute force path tracing and next event estimation with the compile time switch USE_NEXT_EVENT_ESTIMATION.\n- implement a black environment (not a light).\n- implement a white spherical environment light.\n- implement a parallelogram area light with diffuse emission distribution function.\n- create different light setups in the scene.\n- implement direct lighting with multiple importance sampling between BSDF and light EDF.\n- implement another ray type for visibility checks only (shadow rays).\n- implement an anyhit program for the shadow shadow ray type.\n- use buffers of bindless callable program IDs (a function table in OptiX) to access two different light sampling functions.\n- setup a user defined light definition with an arbitrary number of lights.\n- sample one of many lights per diffuse hit event and how to compensate for the probabilities to have picked one light.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/9841843aba458f2ef1baf92119b5580e14093002"},{"sha":"d66294b1b4d65e4fe3849e44a192c1a20534db82","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Added optixIntro_06\n\nShows additionally how to ...\n- use a single closest hit program for all materials.\n- implement BSDF sampling and evaluation functions as bindless callable programs to reduce the OptiX kernel size.\n- implement BSDFs for diffuse reflection (Lambert), specular reflection (tinted mirror) and specular reflection transmission (glass).\n- implement thin-walled materials.\n- select dynamically which BSDF to use via the material parameters.\n- support nested materials with proper index of refraction handling between media and proper absorption calculation in the integrator.\n- implement different camera projections with bindless callable programs for pinhol, fisheye and sphere projections.\n- show how to switch between the camera projections instantly at runtime.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/d66294b1b4d65e4fe3849e44a192c1a20534db82"},{"sha":"63e0403a8d8c4d76bc29bfe50747f79122258174","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Added optixIntro_07\n\nShows additionally how to ...\n- load images of different formats with DevIL (image library) into a data structure on the host (Picture class holding Images).\n- convert many texture formats from the loaded format to one supported by CUDA (only 1, 2, and 4 components).\n- create an OptiX TextureSampler and its associated Buffer which defines the type (1D, 2D, 3D, cubemap without or with mipmaps; no layered textures handled in this demo).\n- implement an importance sampled HDR spherical environment light.\n- generate the necessary data (CDFs and integral) to do importance sampling of the environment. (Details can be found inside the \"Physically Based Rendering\" book.)\n- use bindless texture and buffer IDs to access the HDR environment data via the LightDefinition structure on device side.\n- add a bindless callable program light sampling function for the spherical HDR environment light.\n- use bindless texture IDs to pass TextureSamplers to the OptiX device code and enable runtime decision if a texture is present.\n- add a GUI control if any of the materials should use the texture or not.\n- implement texture driven cutout opacity in anyhit programs for the radiance and shadow ray types.\n- add third material supporting cutout opacity.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/63e0403a8d8c4d76bc29bfe50747f79122258174"},{"sha":"c200449d26aeef08823e2c7c99f49397339ca553","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"optixIntro_08\n\nShows additionally how to ...\n- implement linear translation and scale-rotation-translation motion blur via Transform nodes.\n- use the rtTrace call with a time value and how to access the variable with semantic rtCurrentTime in other program domains.\n- implement stochastic motion blur camera and different rolling shutter effects, switchable at runtime.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/c200449d26aeef08823e2c7c99f49397339ca553"},{"sha":"c60043abed83e46b1a2fafd64eb841a478930554","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Added optixIntro_09\n\nShows additionally how to ...\n- use the OptiX 5.0.0 AI Denoiser to reduce the random noise from the images. (All behind a compile time switch USE_DENOISER.)\n- implement a custom tonemapper ray generation entry point running before the denoiser.\n  (Same as the one from the GLSL shader, which then becomes a copy operation.)\n- configure the post-processing CommandList running the custom tonemapper and built-in AI Denoiser.\n- setup the additionally required buffers for the post-processing.\n- generate albedo values in the renderer to improve the denoising quality. (Different approaches for specular materials outlined.)\n- use RT_BUFFER_GPU_LOCAL to speed up the accumulation in the output buffer in the denoiser case.\n- interactively blend the original and denoised result with a GUI value.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/c60043abed83e46b1a2fafd64eb841a478930554"},{"sha":"bcbc856b6ea197f8569964d08188542d6327cb24","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Move optixIntro_01 to _09 into a sub-folder optixIntroduction.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/bcbc856b6ea197f8569964d08188542d6327cb24"},{"sha":"005cac03e7bacc4b374e12550aa205b631766480","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Append -std=c++11 to CXX_FLAGS.\n\nInclude <cstring> everywhere memcpy() is used.\nReplace _stricmp(). The filename extension is transformed to lowercase before doing a std::string comparison to detect .dds files.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/005cac03e7bacc4b374e12550aa205b631766480"},{"sha":"d3e53f8d354415408e909f0ee870b03835b9ef78","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Cleanup some comments.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/d3e53f8d354415408e909f0ee870b03835b9ef78"},{"sha":"2678846ba0240cdf75cee3c84e3bee5e851242b4","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Added screenshot functionality for automated QA tests.\n\n-f or --file <filename> will render an image, save it from the resp. output buffer, and exit the application. No display to the screen.\nUses sutil::writeBufferToFile() which only handles *.ppm and *.png.\nAdded glfwTerminate() when other initialization errors occur.\nCleaned the shutdown order to do ilShutDown() before glfwTerminate().\nCorrected some typos in comments.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/2678846ba0240cdf75cee3c84e3bee5e851242b4"},{"sha":"defd3eb99422ba0832ff3d0d4a595da12e606652","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Add documentation ans screenshots for the OptiX Introduction examples.\n\nNote DevIL dependency inside the INSTALL text files.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/defd3eb99422ba0832ff3d0d4a595da12e606652"},{"sha":"5c5f97b4aa744fe2e1a84f5de06d6aa9d71e558f","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Add note how to find the optixIntroduction documentation to root README.md.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/5c5f97b4aa744fe2e1a84f5de06d6aa9d71e558f"},{"sha":"7f7fff8f0e4c2c21a975cba392625b9d5a67a780","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Adding comment about the variable nomenclature used on device side.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/7f7fff8f0e4c2c21a975cba392625b9d5a67a780"},{"sha":"d4c8219e1e433ebac9bc7ff18690954977a81edf","author":{"name":"droettger","email":"94d7899bf15e9adf5231b42f70b2cbcc04b55c41@nvidia.com"},"message":"Optimize the Lambert implementation.\n\nSince the cosine-weighted hemisphere distribution is a perfect importance-sampling of the Lambert material\nthere is no need for the term ((M_1_PIf * fabsf(optix::dot(prd.wi, state.normal)) / prd.pdf) because that cancels out to 1.0f.","distinct":true,"url":"https://api.github.com/repos/nvpro-samples/optix_advanced_samples/commits/d4c8219e1e433ebac9bc7ff18690954977a81edf"}]}
{"actor":{"display_login":"droettger"}}