@openhps/core
Version:
Open Hybrid Positioning System - Core component
49 lines (46 loc) • 1.11 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _TSLBase = require("../../tsl/TSLBase.js");
const RECIPROCAL_PI = /*@__PURE__*/(0, _TSLBase.float)(1 / Math.PI);
// https://google.github.io/filament/Filament.md.html#materialsystem/anisotropicmodel/anisotropicspecularbrdf
const D_GGX_Anisotropic = /*@__PURE__*/(0, _TSLBase.Fn)(({
alphaT,
alphaB,
dotNH,
dotTH,
dotBH
}) => {
const a2 = alphaT.mul(alphaB);
const v = (0, _TSLBase.vec3)(alphaB.mul(dotTH), alphaT.mul(dotBH), a2.mul(dotNH));
const v2 = v.dot(v);
const w2 = a2.div(v2);
return RECIPROCAL_PI.mul(a2.mul(w2.pow2()));
}).setLayout({
name: 'D_GGX_Anisotropic',
type: 'float',
inputs: [{
name: 'alphaT',
type: 'float',
qualifier: 'in'
}, {
name: 'alphaB',
type: 'float',
qualifier: 'in'
}, {
name: 'dotNH',
type: 'float',
qualifier: 'in'
}, {
name: 'dotTH',
type: 'float',
qualifier: 'in'
}, {
name: 'dotBH',
type: 'float',
qualifier: 'in'
}]
});
var _default = exports.default = D_GGX_Anisotropic;