@openhps/core
Version:
Open Hybrid Positioning System - Core component
30 lines (28 loc) • 813 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _TSLBase = require("../../tsl/TSLBase.js");
// Microfacet Models for Refraction through Rough Surfaces - equation (33)
// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html
// alpha is "roughness squared" in Disney’s reparameterization
const D_GGX = /*@__PURE__*/(0, _TSLBase.Fn)(({
alpha,
dotNH
}) => {
const a2 = alpha.pow2();
const denom = dotNH.pow2().mul(a2.oneMinus()).oneMinus(); // avoid alpha = 0 with dotNH = 1
return a2.div(denom.pow2()).mul(1 / Math.PI);
}).setLayout({
name: 'D_GGX',
type: 'float',
inputs: [{
name: 'alpha',
type: 'float'
}, {
name: 'dotNH',
type: 'float'
}]
}); // validated
var _default = exports.default = D_GGX;