| ▼ backbone | |
| ► drjit | |
| ► include | |
| ► backbone | |
| color.h | Defines a color as an alias to a drjit array |
| complex.h | Define complex as an alias to drjit::Complex. Also define a custom toString method to mimic the native version's complex output |
| control.h | Data and flow control |
| gradient.h | |
| horizontal.h | Map bbm horizontal methods to corresponding DrJIT methods |
| math.h | Connect bbm math functions to the corresponding DrJIT methods |
| random.h | |
| stringconvert.h | Specialization for converting backbone core types to and from strings |
| type_traits.h | BBM type traits |
| vec.h | Defines 2D and 3D vectors as aliases to drjit arrays |
| backbone.h | Define the available configurations of the DrJIT backbone |
| ► enoki | |
| ► include | |
| ► backbone | |
| array.h | Additions to enoki::Array |
| color.h | Defines a color as an alias to an enoki array |
| complex.h | Define complex as an alias to enoki::Complex. Also define a custom toString method to mimic the native version's complex output |
| control.h | Data and flow control |
| gradient.h | |
| horizontal.h | Map bbm horizontal methods to corresponding enoki methods |
| math.h | Connect the bbm math functions to the corresponding enoki methods |
| random.h | |
| stringconvert.h | Specialization for converting backbone core types to and from strings |
| type_traits.h | Bbm type traits |
| vec.h | Defines 2D, and 3D vectors as aliases to enoki arrays |
| backbone.h | Define the available configurations for the enoki backbone |
| ► native | |
| ► include | |
| ► backbone | |
| array.h | Core data structure for color and vecNd |
| color.h | Define an RGB color as a specialization of array |
| complex.h | |
| control.h | Data and flow control |
| horizontal.h | |
| math.h | Extend basic math function to scalar STL and backbone::array types |
| python.h | |
| random.h | |
| stringconvert.h | Specializations for converting backbone core types to and from strings |
| type_traits.h | Type traits |
| vec.h | Defines vec2d and vec3d as specializations of an array |
| backbone.h | Define the available configurations for the backbone |
| ▼ include | |
| ► bbm | |
| aggregatebsdf.h | A run-time aggregation of BSDFs |
| batch.h | Batch loss wrapper for sampled loss functions |
| bbm_core.h | |
| bsdf.h | Connects a BSDF model and a BSDF |
| bsdf_attr_flag.h | Flags to mark properties of a bsdf's attribute |
| bsdf_attribute.h | Default bsdf attribute types |
| bsdf_base.h | Abstract base definition of a BSDF (with virtual functions) |
| bsdf_enumerate.h | Enumerate all BSDF parameters (e.g., stack in a vector) |
| bsdf_flag.h | Reflectance component flags |
| bsdf_import.h | Import a BSDF from a string using the BBM_DEFAULT_BSDF_IMPORTER method specified in the configuration |
| bsdf_properties.h | Flags to record and indicate specific properties of BSDF models |
| bsdf_ptr.h | A shared_ptr wrapper for bsdfs |
| bsdf_string_convert.h | Specialized conversion between strings and bsdfs not handeled by the default string convertion defined in core/stringconvert.h |
| bsdf_symmetry.h | Enum for passing Isotropic or Anisotropic options to a BSDF |
| bsdfmodel.h | All includes and helpers needed for declaring new bsdfmodels |
| bsdfsample.h | Structure to hold a sampled direction and corresponding pdf |
| config.h | All BBM methods are defined to operate on a variety of value types and spectrum types. Each BBM class takes a config structure as a template parameter (that satisfies concepts::config). To import common typedefs into the current scope add the macro BBM_IMPORT_CONFIG with the config template parameters as parameter. To import a single 'core' type use Core_t<Config> |
| constructor.h | Tools for easy creation of a constructors |
| fresnel.h | Fresnel reflectance |
| fresnel_complex.h | |
| fresnel_cook.h | |
| fresnel_schlick.h | |
| gradient.h | Gradient related operations |
| loss.h | Connects a lossfunction with a loss |
| loss_base.h | Abstract base definition of a LOSS (with virtual functions) |
| loss_ptr.h | A shared_ptr wrapper for losses |
| maskingshadowing.h | All necessary include files for defining new joint masking and shadowing functions |
| ndf.h | All includes and helpers needed for declaring new ndfs |
| ndf_sampler.h | Replaces a(n isotrpic) BSDF model's importance sampling with a data-driven NDF based sampler |
| optimizer.h | Connects a optimization_algorithm to a optimizers |
| optimizer_base.h | |
| optimizer_ptr.h | A shared_ptr wrapper for optimizers |
| sampledlossfunction.h | Definition of a loss function that is the sum of losses on samples |
| unit.h | Light unit: Radiance or Importance |
| vec3dpair.h | Structure to hold a pair of directions |
| ► bsdfmodel | |
| aggregatemodel.h | The sum of different BSDF models |
| ashikhminshirley.h | Implements the specular component from: "An anisotropic phong BRDF
model" [Ashikhmin and Shirley 2000]: https://doi.org/10.1080/10867651.2000.10487522 |
| ashikhminshirleyfull.h | |
| bagher.h | Implements the microfacet BSDF with Shifted Gamma Distribution: |
| cooktorrance.h | Implements the Cook-Torrance BSDF Model [SIGGRAPH'82]: https://doi.org/10.1145/357290.357293 |
| cooktorranceheitz.h | |
| cooktorrancewalter.h | Implements a microfacet BSDF with a Beckmann NDF: "Microfacet Models
for Refraction through Rough Surfaces" [Walter et al. 2007]: http://dx.doi.org/10.2312/EGWR/EGSR07/195-206 |
| ggx.h | Implements a microfacet BSDF with a GGX NDF: "Microfacet Models for
Refraction through Rough Surfaces" [Walter et al. 2007]: http://dx.doi.org/10.2312/EGWR/EGSR07/195-206 |
| ggxheitz.h | |
| he.h | Implements: "A Comprehensive Physical Model for Light Reflection" [He 1991]: https://doi.org/10.1145/127719.122738 |
| holzschuchpacanowski.h | The BSDF models from "A two-scale microfacet
reflectance model combining reflection and diffraction", Holzschuch and Pacanowski [2017]: https://doi.org/10.1145/3072959.3073621 |
| lafortune.h | Implements: "Non-Linear Approximation of Reflectance Functions" |
| lambertian.h | The classic diffuse Lambertian BSDF model |
| low.h | The bsdfmodels used for the BSDF paramter fits in the supplemental material of: "BRDF models for accurate and efficient rendering of glossy
surfaces" [Low 2012]: https://doi.org/10.1145/2077341.2077350 |
| lowmicrofacet.h | The Low et al.'s microfacet BRDF model from "BRDF models for accurate
and efficient rendering of glossy surfaces" [Low 2012]: https://doi.org/10.1145/2077341.2077350 |
| lowsmooth.h | The Low et al.'s smooth BRDF model from "BRDF models for accurate and
efficient rendering of glossy surfaces" [Low 2012]: https://doi.org/10.1145/2077341.2077350 |
| microfacet.h | Microfacet BSDF model following "Microfacet Models for Refraction
through Rough Surfaces" [Walter et al. 2007]: http://dx.doi.org/10.2312/EGWR/EGSR07/195-206 |
| ngan.h | All the BSDF variants used in "Experimental Analysis of BRDF Model" |
| orennayar.h | Implements: "Generalization of Lambert's Reflectance Model" [Oren and Nayar 1994]: https://doi.org/10.1145/192161.192213 |
| phong.h | Implements: "The Modifed Phong BSDF model for physically based rendering" |
| phongwalter.h | Implements a microfacet BSDF with a Phong NDF: "Microfacet Models for
Refraction through Rough Surfaces" [Walter et al. 2007]: http://dx.doi.org/10.2312/EGWR/EGSR07/195-206 |
| ribardiere.h | |
| scaledmodel.h | Add an 'albedo' parameter to an existing bsdfmodel and scale the albedo and eval respectively |
| ward.h | Implements: "Measuring and modeling anisotropic reflection" [Ward 1992]: https://doi.org/10.1145/142920.134078 following the notes from Bruce Walter: https://www.graphics.cornell.edu/~bjw/wardnotes.pdf |
| wardduer.h | Implements: "An Improved Normalization for the Ward Reflectance
Model" [Arne Duer 2006]: https://doi.org/10.1080/2151237X.2006.10129215 |
| wardduergeislermoroder.h | Implements: "A New Ward BRDF Model with Bounded Albedo", |
| ► concepts | |
| ► backbone | |
| complex.h | Additional requirements for the complex data-type (in addition to all other backbone type requirements; see BBM_VALIDATE_BACKBONE in backbone.h) |
| control.h | Flow control, lookup and cast operations |
| gradient.h | A differentiable type T has valid gradient operations if: |
| horizontal.h | Horizontal operators (aggregation over all elements in the type) |
| math.h | Extended math functionality |
| ordered.h | A valid ordering requires that the type has eq, neq, <, >, <=, and => operators that each return the same type. The return type does not need to be a boolean. == and != must return a boolean |
| random.h | Random number generator |
| stringconvert.h | Each core type of the backbone must have appropriate methods for converting the core type to and from a string |
| type_traits.h | A valid backbone type must have the following type_traits: |
| attribute.h | Attribute and attribute_property contracts |
| bsdf.h | Bsdf contract: virtual interface wrapper around bsdfmodels |
| bsdf_attribute.h | Bsdf attribute contract |
| bsdf_ptr.h | Bsdf_ptr contract |
| bsdfmodel.h | Bsdfmodel contract |
| config.h | Config contract |
| constructor.h | Bbm constructor concept |
| convertible.h | |
| fresnel.h | Fresnel contract |
| inout_linearizer.h | Inout_linearizer contract |
| loss.h | Loss contract: virtual interface wrapper around lossfunctions |
| loss_ptr.h | Loss_ptr contract |
| lossfunction.h | Loss function contract |
| macro.h | Macros for checking if a class meets a concept |
| maskingshadowing.h | Joint Masking-Shadowing Functor concept |
| named.h | Named (class) concept |
| ndf.h | Microfacet Normal Distribution contract |
| optimization_algorithm.h | Optimization algorithm interface contract |
| optimizer.h | Optimizer contract: virtual interface wrapper around optimization_algorithms |
| optimizer_ptr.h | Optimizer_ptr contract |
| parameter.h | Concepts related to BSDF model parameters |
| ptr_wrapper.h | A shared_ptr wrapper |
| reflection.h | |
| sampledloss.h | Sampledloss contract |
| sampledloss_ptr.h | Sampledloss_ptr contract |
| sampledlossfunction.h | Sampled loss function contract |
| samplelossfunction.h | |
| stringconvert.h | Concept to check if a type has a valid string_converter |
| util.h | Additional basic helper concepts |
| ► core | |
| arg.h | Structure to store an argument, with possibly a type, name and default value. Refer to args.h for its usage |
| args.h | Provides a more flexible argument passing to function and methods |
| attribute.h | A warpper class to attach a properties to a class via a property struct. The propert expects by default at least a type |
| backbone.h | Active the current backbone |
| bitmap.h | Minimal bitmap class |
| color.h | Defines additional helper methods for RGB colors |
| constants.h | |
| Endian.h | Detect Endianess of processor and conversion methods |
| enumerate.h | Enumerate all elements in iterators recursively |
| error.h | Predefined exceptions for common errors |
| ior.h | Defines 'ior' and 'reflectance' types |
| mat.h | |
| precompute.h | Helper structures and methods for storing precomputed compiled data |
| shading_frame.h | Shading frame transformations |
| spherical.h | Methods for handling spherical coordinates |
| stringconvert.h | Convert a string to an object and vice versa |
| transform.h | Basic matrix transformations |
| vec.h | Defines additional helper methods for vectors |
| vec_transform.h | Vector transformation operations |
| ► export | |
| bbm_fromstring.h | FromString support for BBM |
| bbm_python.h | Python support for BBM |
| clear_export.h | Clears and defines the export macros |
| ► io | |
| dynamic_library.h | Load and unload a dynamic library |
| fit.h | Read and write BSDF fits to a 'fit' file |
| pfm.h | Read/write a bitmap to/from PFM |
| ► linearizer | |
| merl_linearizer.h | Linearize the sphere of in-out directions according to the encoding used in the MERL BRDF database |
| spherical_linearizer.h | |
| ► loss | |
| cosine_weighted_l2.h | |
| cosine_weighted_log.h | The Low et al.'s cosine weighted log BRDF fitting metric from "BRDF
models for accurate and efficient rendering of glossy surfaces" [Low 2012]: https://doi.org/10.1145/2077341.2077350 |
| ► maskingshadowing | |
| heightcorrelated.h | Height correlated joint masking and shadowing. Follows Eq. 99 from "Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs" |
| uncorrelated.h | Uncorrelated joint masking and shadowing. Follows Eq. 98 from "Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs" |
| vanginneken.h | |
| vgroove.h | Vgroove shadowing and masking. Based on Torrance and Sparrow, 19967, "Theory for off-specular reflection from roughened surfaces": https://dl.acm.org/doi/10.5555/136913.136924 |
| ► ndf | |
| beckmann.h | Implements the Beckman Microfacet Normal Distribution: |
| epd.h | The Exponential Power Distribution from "A two-scale microfacet
reflectance model combining reflection and diffraction", Holzschuch and Pacanowski [2017]: https://doi.org/10.1145/3072959.3073621 |
| ggx.h | Implements the GGX Microfacet Normal Distribution from: "Microfacet
Models for Refraction through Rough Surfaces" [Walter et al. 2007]: http://dx.doi.org/10.2312/EGWR/EGSR07/195-206 |
| low.h | Implements Low et al.'s Microfacet Normal Distribution from "BRDF
models for accurate and efficient rendering of glossy surfaces" [Low 2012]: https://doi.org/10.1145/2077341.2077350 |
| phong.h | Implements the Phong Microfacet Normal Distribution from: "Microfacet
Models for Refraction through Rough Surfaces" [Walter et al. 2007]: http://dx.doi.org/10.2312/EGWR/EGSR07/195-206 |
| sampler.h | Replace an NDF's sample and pdf method by a data-driven version. Monitors the NDF and update the internal state if required |
| sgd.h | Implements the Shifted Gamma Distribution: |
| studentt.h | |
| ► optimizer | |
| compass.h | Compass search (i.e., pattern search) optimization. Gradient free optimization algorithm that probes each cardindal direction |
| ► precomputed | |
| ► holzschuchpacanowski | |
| convolution.h | |
| distributionNormalization.h | |
| G1.h | |
| normalization.h | |
| ► python | |
| bbm_embed_module.h | Embed a static python module in the executable |
| bbm_python_interpreter.h | Python interpreter for BBM modules |
| py_arg.h | Create an object with a bbm constructor (with bbm::args) from py::args and py::kwargs arguments |
| py_bsdf.h | Export a BSDF model to python |
| py_cast.h | Wrapper around py::cast for more robust casting to attributes and to aggregate types such as vec2d, vec3d, spectrum, etc.. |
| py_core.h | Export of core classes to python |
| py_fresnel.h | Export ior::ior and ior::reflectance to pyton |
| python_macro.h | Shorthand definitions for a python modules |
| ► staticmodel | |
| merl.h | Support for the MERL-MIT brdf database: https://doi.org/10.1145/882262.882343 |
| ► util | |
| apply_all.h | |
| attribute_value.h | Helper methods for extracting the value of an attribute (according to concepts::attribute) |
| cdf.h | Discrete Cummulative Distribution Function (cdf) constructed from a set of samples and accompanying sampling method |
| constfor.h | Complile-time for loop |
| constforeach.h | Compile-time for each loop |
| factorial.h | Compute the factorial (uses precomputation to speed up run time querries) |
| flags.h | Scoped enum operators and methods |
| gamma.h | Packet-type friendly implementation of: |
| invgamma.h | Packet friendly computation of the the inverse of the incomplete gamma functions: |
| iterator_util.h | Extensions for STL iterators/ranges |
| literal.h | Work around for using floating point literals for compilers that do not support it (e.g., Clang 14) |
| macro_util.h | General macro utilities |
| make_from.h | Tools for making an object: |
| multirange_for.h | Ranged for loop over multiple containers at once |
| named.h | A wrapper for STL containers such as tuple, pair, and array. These containers force the programmer to remember the function/meaning of each element based on its position. This is error-prone. To mitigate this, the named wrapper allows to assign a name, via a template parameters, to each element so that subsequently it can be used to query elements by name, and to ensure that the assignment takes in account the order of the elements |
| named_util.h | Additional convenience methods for named tuples |
| option.h | Simple command line option parser |
| pointer.h | Pointer wrapper that takes both shared and non-shared pointers. If the pointer is 'managed' then the pointer is deleted when the reference count hits zero. By default a pointer is not managed unless a shared ptr is assigned or it is explicitely marked as managed during construction |
| poly.h | Compile time polynomial using Horner's method |
| reference.h | Assignable reference with wrapper support for rvalues |
| reflection.h | Compile-time reflection of: |
| string_literal.h | |
| string_util.h | Helper method for processing strings |
| to_string_literal.h | Convert other types to a string literal |
| tuple.h | Extensions for the STL tuple class |
| type_traits.h | |
| typestring.h | Produce stringview of type name of a type. Avoids using typeid for GCC, MSVC, and CLANG. For other compilers it will fall back to typeid.name() |
| vector_util.h | Extensions for the STL vector class |
| bbm.h | Include all modules and the backbone |