Sunday, September 2, 2012

Disney releases BRDF Explorer


BRDF Explorer is an application that allows the development and analysis of bidirectional reflectance distribution functions (BRDFs). It can load and plot analytic BRDF functions (coded as functions in OpenGL's GLSL shader language), measured material data from the MERL database, and anisotropic measured material data from MIT CSAIL. Graphs and visualizations update in realtime as parameters are changed, making it a useful tool for evaluating and understanding different BRDFs (and other component functions).

Motivation

In the pursuit of visual realism in our films, we have spent a considerable amount of time exploring the strengths and weaknesses of different BRDFs. To understand the properties of different BRDFs, we found it helpful to be able to visualize and graph them in different ways to see how they responded to illumination in different configurations. Additionally, we wanted to compare BRDFs to sampled BRDF data (mainly those in the MERL BRDF Database). We developed BRDF Explorer because at the time, no publicly available tool met our needs (although BRDFLab, which has since been released, has some similar capabilities).
Screenshot

A screenshot is worth a thousand words:
Major Features
Loads arbitrary BRDFs (coded as GLSL functions), measured materials from the MERL and MIT CSAIL BRDF databases

Handles multiple BRDFs at once, allowing easy comparisons

Automatically creates UI widgets for variables specified in the BRDF file, allowing parameter twiddling

Renders 3D models (OBJ format) under different environment probes (Ptex format), with interactive updating

IBL importance sampling with environment probes

Evaluates all BRDFs on the GPU, allowing real time interaction even with multiple BRDFs

Visualizations and Graphs:

Lit Sphere (can drag the highlight to adjust incident theta/phi)

Lit Object (lit with an IBL)

Theta H / Theta D 

Theta V

Albedo

3D/Goniometric and polar plots

An "image slice" (with Theta H on the x-axis, and Theta D on the y-axis)

Get Started

You can get the source code or win32 binary at github. The source is licensed under the MS-PL (Microsoft Public License).
The only dependencies are Qt, OpenGL, and a relatively recent GPU - we haven't verified the requirements, but anything supporting DX10 / Pixel Shader 4.0 will probably be fine. While there's nothing platform-specific in this code, we have only extensively tested under Linux.

Future Plans

We plan to add Multiple Importance Sampling (MIS), in addition to the IBL importance sampling already there. Alternative BRDF representations (such as additional sampled format types) and additional graphs and views will be added as needed.

Pin It Now!

No comments: