b9fbfa94f02b2c846a4798f3369f4c7beda90fd4a401dad55f06f7e95a6f62e9.json 49 KB

1
  1. {"ast":null,"code":"/* eslint-disable @typescript-eslint/naming-convention */\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { TmpVectors } from \"./math.js\";\n// https://dickyjim.wordpress.com/2013/09/04/spherical-harmonics-for-beginners/\n// http://silviojemma.com/public/papers/lighting/spherical-harmonic-lighting.pdf\n// https://www.ppsloan.org/publications/StupidSH36.pdf\n// http://cseweb.ucsd.edu/~ravir/papers/envmap/envmap.pdf\n// https://www.ppsloan.org/publications/SHJCGT.pdf\n// https://www.ppsloan.org/publications/shdering.pdf\n// https://google.github.io/filament/Filament.md.html#annex/sphericalharmonics\n// https://patapom.com/blog/SHPortal/\n// https://imdoingitwrong.wordpress.com/2011/04/14/spherical-harmonics-wtf/\n// Using real SH basis:\n// m>0 m m\n// y = sqrt(2) * K * P * cos(m*phi) * cos(theta)\n// l l l\n//\n// m<0 m |m|\n// y = sqrt(2) * K * P * sin(m*phi) * cos(theta)\n// l l l\n//\n// m=0 0 0\n// y = K * P * trigono terms\n// l l l\n//\n// m (2l + 1)(l - |m|)!\n// K = sqrt(------------------)\n// l 4pi(l + |m|)!\n//\n// and P by recursion:\n//\n// P00(x) = 1\n// P01(x) = x\n// Pll(x) = (-1^l)(2l - 1)!!(1-x*x)^(1/2)\n// ((2l - 1)x[Pl-1/m]-(l + m - 1)[Pl-2/m])\n// Plm(x) = ---------------------------------------\n// l - m\n// Leaving the trigonometric terms aside we can precompute the constants to :\nconst SH3ylmBasisConstants = [Math.sqrt(1 / (4 * Math.PI)),\n// l00\n-Math.sqrt(3 / (4 * Math.PI)),\n// l1_1\nMath.sqrt(3 / (4 * Math.PI)),\n// l10\n-Math.sqrt(3 / (4 * Math.PI)),\n// l11\nMath.sqrt(15 / (4 * Math.PI)),\n// l2_2\n-Math.sqrt(15 / (4 * Math.PI)),\n// l2_1\nMath.sqrt(5 / (16 * Math.PI)),\n// l20\n-Math.sqrt(15 / (4 * Math.PI)),\n// l21\nMath.sqrt(15 / (16 * Math.PI)) // l22\n];\n// cm = cos(m * phi)\n// sm = sin(m * phi)\n// {x,y,z} = {cos(phi)sin(theta), sin(phi)sin(theta), cos(theta)}\n// By recursion on using trigo identities:\nconst SH3ylmBasisTrigonometricTerms = [() => 1,\n// l00\ndirection => direction.y,\n// l1_1\ndirection => direction.z,\n// l10\ndirection => direction.x,\n// l11\ndirection => direction.x * direction.y,\n// l2_2\ndirection => direction.y * direction.z,\n// l2_1\ndirection => 3 * direction.z * direction.z - 1,\n// l20\ndirection => direction.x * direction.z,\n// l21\ndirection => direction.x * direction.x - direction.y * direction.y // l22\n];\n// Wrap the full compute\nconst applySH3 = (lm, direction) => {\n return SH3ylmBasisConstants[lm] * SH3ylmBasisTrigonometricTerms[lm](direction);\n};\n// Derived from the integration of the a kernel convolution to SH.\n// Great explanation here: https://patapom.com/blog/SHPortal/#about-distant-radiance-and-irradiance-environments\nconst SHCosKernelConvolution = [Math.PI, 2 * Math.PI / 3, 2 * Math.PI / 3, 2 * Math.PI / 3, Math.PI / 4, Math.PI / 4, Math.PI / 4, Math.PI / 4, Math.PI / 4];\n/**\n * Class representing spherical harmonics coefficients to the 3rd degree\n */\nexport class SphericalHarmonics {\n constructor() {\n /**\n * Defines whether or not the harmonics have been prescaled for rendering.\n */\n this.preScaled = false;\n /**\n * The l0,0 coefficients of the spherical harmonics\n */\n this.l00 = Vector3.Zero();\n /**\n * The l1,-1 coefficients of the spherical harmonics\n */\n this.l1_1 = Vector3.Zero();\n /**\n * The l1,0 coefficients of the spherical harmonics\n */\n this.l10 = Vector3.Zero();\n /**\n * The l1,1 coefficients of the spherical harmonics\n */\n this.l11 = Vector3.Zero();\n /**\n * The l2,-2 coefficients of the spherical harmonics\n */\n this.l2_2 = Vector3.Zero();\n /**\n * The l2,-1 coefficients of the spherical harmonics\n */\n this.l2_1 = Vector3.Zero();\n /**\n * The l2,0 coefficients of the spherical harmonics\n */\n this.l20 = Vector3.Zero();\n /**\n * The l2,1 coefficients of the spherical harmonics\n */\n this.l21 = Vector3.Zero();\n /**\n * The l2,2 coefficients of the spherical harmonics\n */\n this.l22 = Vector3.Zero();\n }\n /**\n * Adds a light to the spherical harmonics\n * @param direction the direction of the light\n * @param color the color of the light\n * @param deltaSolidAngle the delta solid angle of the light\n */\n addLight(direction, color, deltaSolidAngle) {\n TmpVectors.Vector3[0].set(color.r, color.g, color.b);\n const colorVector = TmpVectors.Vector3[0];\n const c = TmpVectors.Vector3[1];\n colorVector.scaleToRef(deltaSolidAngle, c);\n c.scaleToRef(applySH3(0, direction), TmpVectors.Vector3[2]);\n this.l00.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(1, direction), TmpVectors.Vector3[2]);\n this.l1_1.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(2, direction), TmpVectors.Vector3[2]);\n this.l10.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(3, direction), TmpVectors.Vector3[2]);\n this.l11.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(4, direction), TmpVectors.Vector3[2]);\n this.l2_2.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(5, direction), TmpVectors.Vector3[2]);\n this.l2_1.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(6, direction), TmpVectors.Vector3[2]);\n this.l20.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(7, direction), TmpVectors.Vector3[2]);\n this.l21.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(8, direction), TmpVectors.Vector3[2]);\n this.l22.addInPlace(TmpVectors.Vector3[2]);\n }\n /**\n * Scales the spherical harmonics by the given amount\n * @param scale the amount to scale\n */\n scaleInPlace(scale) {\n this.l00.scaleInPlace(scale);\n this.l1_1.scaleInPlace(scale);\n this.l10.scaleInPlace(scale);\n this.l11.scaleInPlace(scale);\n this.l2_2.scaleInPlace(scale);\n this.l2_1.scaleInPlace(scale);\n this.l20.scaleInPlace(scale);\n this.l21.scaleInPlace(scale);\n this.l22.scaleInPlace(scale);\n }\n /**\n * Convert from incident radiance (Li) to irradiance (E) by applying convolution with the cosine-weighted hemisphere.\n *\n * ```\n * E_lm = A_l * L_lm\n * ```\n *\n * In spherical harmonics this convolution amounts to scaling factors for each frequency band.\n * This corresponds to equation 5 in \"An Efficient Representation for Irradiance Environment Maps\", where\n * the scaling factors are given in equation 9.\n */\n convertIncidentRadianceToIrradiance() {\n // Constant (Band 0)\n this.l00.scaleInPlace(SHCosKernelConvolution[0]);\n // Linear (Band 1)\n this.l1_1.scaleInPlace(SHCosKernelConvolution[1]);\n this.l10.scaleInPlace(SHCosKernelConvolution[2]);\n this.l11.scaleInPlace(SHCosKernelConvolution[3]);\n // Quadratic (Band 2)\n this.l2_2.scaleInPlace(SHCosKernelConvolution[4]);\n this.l2_1.scaleInPlace(SHCosKernelConvolution[5]);\n this.l20.scaleInPlace(SHCosKernelConvolution[6]);\n this.l21.scaleInPlace(SHCosKernelConvolution[7]);\n this.l22.scaleInPlace(SHCosKernelConvolution[8]);\n }\n /**\n * Convert from irradiance to outgoing radiance for Lambertian BDRF, suitable for efficient shader evaluation.\n *\n * ```\n * L = (1/pi) * E * rho\n * ```\n *\n * This is done by an additional scale by 1/pi, so is a fairly trivial operation but important conceptually.\n */\n convertIrradianceToLambertianRadiance() {\n this.scaleInPlace(1.0 / Math.PI);\n // The resultant SH now represents outgoing radiance, so includes the Lambert 1/pi normalisation factor but without albedo (rho) applied\n // (The pixel shader must apply albedo after texture fetches, etc).\n }\n /**\n * Integrates the reconstruction coefficients directly in to the SH preventing further\n * required operations at run time.\n *\n * This is simply done by scaling back the SH with Ylm constants parameter.\n * The trigonometric part being applied by the shader at run time.\n */\n preScaleForRendering() {\n this.preScaled = true;\n this.l00.scaleInPlace(SH3ylmBasisConstants[0]);\n this.l1_1.scaleInPlace(SH3ylmBasisConstants[1]);\n this.l10.scaleInPlace(SH3ylmBasisConstants[2]);\n this.l11.scaleInPlace(SH3ylmBasisConstants[3]);\n this.l2_2.scaleInPlace(SH3ylmBasisConstants[4]);\n this.l2_1.scaleInPlace(SH3ylmBasisConstants[5]);\n this.l20.scaleInPlace(SH3ylmBasisConstants[6]);\n this.l21.scaleInPlace(SH3ylmBasisConstants[7]);\n this.l22.scaleInPlace(SH3ylmBasisConstants[8]);\n }\n /**\n * update the spherical harmonics coefficients from the given array\n * @param data defines the 9x3 coefficients (l00, l1-1, l10, l11, l2-2, l2-1, l20, l21, l22)\n * @returns the spherical harmonics (this)\n */\n updateFromArray(data) {\n Vector3.FromArrayToRef(data[0], 0, this.l00);\n Vector3.FromArrayToRef(data[1], 0, this.l1_1);\n Vector3.FromArrayToRef(data[2], 0, this.l10);\n Vector3.FromArrayToRef(data[3], 0, this.l11);\n Vector3.FromArrayToRef(data[4], 0, this.l2_2);\n Vector3.FromArrayToRef(data[5], 0, this.l2_1);\n Vector3.FromArrayToRef(data[6], 0, this.l20);\n Vector3.FromArrayToRef(data[7], 0, this.l21);\n Vector3.FromArrayToRef(data[8], 0, this.l22);\n return this;\n }\n /**\n * update the spherical harmonics coefficients from the given floats array\n * @param data defines the 9x3 coefficients (l00, l1-1, l10, l11, l2-2, l2-1, l20, l21, l22)\n * @returns the spherical harmonics (this)\n */\n updateFromFloatsArray(data) {\n Vector3.FromFloatsToRef(data[0], data[1], data[2], this.l00);\n Vector3.FromFloatsToRef(data[3], data[4], data[5], this.l1_1);\n Vector3.FromFloatsToRef(data[6], data[7], data[8], this.l10);\n Vector3.FromFloatsToRef(data[9], data[10], data[11], this.l11);\n Vector3.FromFloatsToRef(data[12], data[13], data[14], this.l2_2);\n Vector3.FromFloatsToRef(data[15], data[16], data[17], this.l2_1);\n Vector3.FromFloatsToRef(data[18], data[19], data[20], this.l20);\n Vector3.FromFloatsToRef(data[21], data[22], data[23], this.l21);\n Vector3.FromFloatsToRef(data[24], data[25], data[26], this.l22);\n return this;\n }\n /**\n * Constructs a spherical harmonics from an array.\n * @param data defines the 9x3 coefficients (l00, l1-1, l10, l11, l2-2, l2-1, l20, l21, l22)\n * @returns the spherical harmonics\n */\n static FromArray(data) {\n const sh = new SphericalHarmonics();\n return sh.updateFromArray(data);\n }\n // Keep for references.\n /**\n * Gets the spherical harmonics from polynomial\n * @param polynomial the spherical polynomial\n * @returns the spherical harmonics\n */\n static FromPolynomial(polynomial) {\n const result = new SphericalHarmonics();\n result.l00 = polynomial.xx.scale(0.376127).add(polynomial.yy.scale(0.376127)).add(polynomial.zz.scale(0.376126));\n result.l1_1 = polynomial.y.scale(0.977204);\n result.l10 = polynomial.z.scale(0.977204);\n result.l11 = polynomial.x.scale(0.977204);\n result.l2_2 = polynomial.xy.scale(1.16538);\n result.l2_1 = polynomial.yz.scale(1.16538);\n result.l20 = polynomial.zz.scale(1.34567).subtract(polynomial.xx.scale(0.672834)).subtract(polynomial.yy.scale(0.672834));\n result.l21 = polynomial.zx.scale(1.16538);\n result.l22 = polynomial.xx.scale(1.16538).subtract(polynomial.yy.scale(1.16538));\n result.l1_1.scaleInPlace(-1);\n result.l11.scaleInPlace(-1);\n result.l2_1.scaleInPlace(-1);\n result.l21.scaleInPlace(-1);\n result.scaleInPlace(Math.PI);\n return result;\n }\n}\n/**\n * Class representing spherical polynomial coefficients to the 3rd degree\n */\nexport class SphericalPolynomial {\n constructor() {\n /**\n * The x coefficients of the spherical polynomial\n */\n this.x = Vector3.Zero();\n /**\n * The y coefficients of the spherical polynomial\n */\n this.y = Vector3.Zero();\n /**\n * The z coefficients of the spherical polynomial\n */\n this.z = Vector3.Zero();\n /**\n * The xx coefficients of the spherical polynomial\n */\n this.xx = Vector3.Zero();\n /**\n * The yy coefficients of the spherical polynomial\n */\n this.yy = Vector3.Zero();\n /**\n * The zz coefficients of the spherical polynomial\n */\n this.zz = Vector3.Zero();\n /**\n * The xy coefficients of the spherical polynomial\n */\n this.xy = Vector3.Zero();\n /**\n * The yz coefficients of the spherical polynomial\n */\n this.yz = Vector3.Zero();\n /**\n * The zx coefficients of the spherical polynomial\n */\n this.zx = Vector3.Zero();\n }\n /**\n * The spherical harmonics used to create the polynomials.\n */\n get preScaledHarmonics() {\n if (!this._harmonics) {\n this._harmonics = SphericalHarmonics.FromPolynomial(this);\n }\n if (!this._harmonics.preScaled) {\n this._harmonics.preScaleForRendering();\n }\n return this._harmonics;\n }\n /**\n * Adds an ambient color to the spherical polynomial\n * @param color the color to add\n */\n addAmbient(color) {\n TmpVectors.Vector3[0].copyFromFloats(color.r, color.g, color.b);\n const colorVector = TmpVectors.Vector3[0];\n this.xx.addInPlace(colorVector);\n this.yy.addInPlace(colorVector);\n this.zz.addInPlace(colorVector);\n }\n /**\n * Scales the spherical polynomial by the given amount\n * @param scale the amount to scale\n */\n scaleInPlace(scale) {\n this.x.scaleInPlace(scale);\n this.y.scaleInPlace(scale);\n this.z.scaleInPlace(scale);\n this.xx.scaleInPlace(scale);\n this.yy.scaleInPlace(scale);\n this.zz.scaleInPlace(scale);\n this.yz.scaleInPlace(scale);\n this.zx.scaleInPlace(scale);\n this.xy.scaleInPlace(scale);\n }\n /**\n * Updates the spherical polynomial from harmonics\n * @param harmonics the spherical harmonics\n * @returns the spherical polynomial\n */\n updateFromHarmonics(harmonics) {\n this._harmonics = harmonics;\n this.x.copyFrom(harmonics.l11);\n this.x.scaleInPlace(1.02333).scaleInPlace(-1);\n this.y.copyFrom(harmonics.l1_1);\n this.y.scaleInPlace(1.02333).scaleInPlace(-1);\n this.z.copyFrom(harmonics.l10);\n this.z.scaleInPlace(1.02333);\n this.xx.copyFrom(harmonics.l00);\n TmpVectors.Vector3[0].copyFrom(harmonics.l20).scaleInPlace(0.247708);\n TmpVectors.Vector3[1].copyFrom(harmonics.l22).scaleInPlace(0.429043);\n this.xx.scaleInPlace(0.886277).subtractInPlace(TmpVectors.Vector3[0]).addInPlace(TmpVectors.Vector3[1]);\n this.yy.copyFrom(harmonics.l00);\n this.yy.scaleInPlace(0.886277).subtractInPlace(TmpVectors.Vector3[0]).subtractInPlace(TmpVectors.Vector3[1]);\n this.zz.copyFrom(harmonics.l00);\n TmpVectors.Vector3[0].copyFrom(harmonics.l20).scaleInPlace(0.495417);\n this.zz.scaleInPlace(0.886277).addInPlace(TmpVectors.Vector3[0]);\n this.yz.copyFrom(harmonics.l2_1);\n this.yz.scaleInPlace(0.858086).scaleInPlace(-1);\n this.zx.copyFrom(harmonics.l21);\n this.zx.scaleInPlace(0.858086).scaleInPlace(-1);\n this.xy.copyFrom(harmonics.l2_2);\n this.xy.scaleInPlace(0.858086);\n this.scaleInPlace(1.0 / Math.PI);\n return this;\n }\n /**\n * Gets the spherical polynomial from harmonics\n * @param harmonics the spherical harmonics\n * @returns the spherical polynomial\n */\n static FromHarmonics(harmonics) {\n const result = new SphericalPolynomial();\n return result.updateFromHarmonics(harmonics);\n }\n /**\n * Constructs a spherical polynomial from an array.\n * @param data defines the 9x3 coefficients (x, y, z, xx, yy, zz, yz, zx, xy)\n * @returns the spherical polynomial\n */\n static FromArray(data) {\n const sp = new SphericalPolynomial();\n Vector3.FromArrayToRef(data[0], 0, sp.x);\n Vector3.FromArrayToRef(data[1], 0, sp.y);\n Vector3.FromArrayToRef(data[2], 0, sp.z);\n Vector3.FromArrayToRef(data[3], 0, sp.xx);\n Vector3.FromArrayToRef(data[4], 0, sp.yy);\n Vector3.FromArrayToRef(data[5], 0, sp.zz);\n Vector3.FromArrayToRef(data[6], 0, sp.yz);\n Vector3.FromArrayToRef(data[7], 0, sp.zx);\n Vector3.FromArrayToRef(data[8], 0, sp.xy);\n return sp;\n }\n}","map":{"version":3,"names":["Vector3","TmpVectors","SH3ylmBasisConstants","Math","sqrt","PI","SH3ylmBasisTrigonometricTerms","direction","y","z","x","applySH3","lm","SHCosKernelConvolution","SphericalHarmonics","constructor","preScaled","l00","Zero","l1_1","l10","l11","l2_2","l2_1","l20","l21","l22","addLight","color","deltaSolidAngle","set","r","g","b","colorVector","c","scaleToRef","addInPlace","scaleInPlace","scale","convertIncidentRadianceToIrradiance","convertIrradianceToLambertianRadiance","preScaleForRendering","updateFromArray","data","FromArrayToRef","updateFromFloatsArray","FromFloatsToRef","FromArray","sh","FromPolynomial","polynomial","result","xx","add","yy","zz","xy","yz","subtract","zx","SphericalPolynomial","preScaledHarmonics","_harmonics","addAmbient","copyFromFloats","updateFromHarmonics","harmonics","copyFrom","subtractInPlace","FromHarmonics","sp"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Maths/sphericalPolynomial.js"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { TmpVectors } from \"./math.js\";\n// https://dickyjim.wordpress.com/2013/09/04/spherical-harmonics-for-beginners/\n// http://silviojemma.com/public/papers/lighting/spherical-harmonic-lighting.pdf\n// https://www.ppsloan.org/publications/StupidSH36.pdf\n// http://cseweb.ucsd.edu/~ravir/papers/envmap/envmap.pdf\n// https://www.ppsloan.org/publications/SHJCGT.pdf\n// https://www.ppsloan.org/publications/shdering.pdf\n// https://google.github.io/filament/Filament.md.html#annex/sphericalharmonics\n// https://patapom.com/blog/SHPortal/\n// https://imdoingitwrong.wordpress.com/2011/04/14/spherical-harmonics-wtf/\n// Using real SH basis:\n// m>0 m m\n// y = sqrt(2) * K * P * cos(m*phi) * cos(theta)\n// l l l\n//\n// m<0 m |m|\n// y = sqrt(2) * K * P * sin(m*phi) * cos(theta)\n// l l l\n//\n// m=0 0 0\n// y = K * P * trigono terms\n// l l l\n//\n// m (2l + 1)(l - |m|)!\n// K = sqrt(------------------)\n// l 4pi(l + |m|)!\n//\n// and P by recursion:\n//\n// P00(x) = 1\n// P01(x) = x\n// Pll(x) = (-1^l)(2l - 1)!!(1-x*x)^(1/2)\n// ((2l - 1)x[Pl-1/m]-(l + m - 1)[Pl-2/m])\n// Plm(x) = ---------------------------------------\n// l - m\n// Leaving the trigonometric terms aside we can precompute the constants to :\nconst SH3ylmBasisConstants = [\n Math.sqrt(1 / (4 * Math.PI)), // l00\n -Math.sqrt(3 / (4 * Math.PI)), // l1_1\n Math.sqrt(3 / (4 * Math.PI)), // l10\n -Math.sqrt(3 / (4 * Math.PI)), // l11\n Math.sqrt(15 / (4 * Math.PI)), // l2_2\n -Math.sqrt(15 / (4 * Math.PI)), // l2_1\n Math.sqrt(5 / (16 * Math.PI)), // l20\n -Math.sqrt(15 / (4 * Math.PI)), // l21\n Math.sqrt(15 / (16 * Math.PI)), // l22\n];\n// cm = cos(m * phi)\n// sm = sin(m * phi)\n// {x,y,z} = {cos(phi)sin(theta), sin(phi)sin(theta), cos(theta)}\n// By recursion on using trigo identities:\nconst SH3ylmBasisTrigonometricTerms = [\n () => 1, // l00\n (direction) => direction.y, // l1_1\n (direction) => direction.z, // l10\n (direction) => direction.x, // l11\n (direction) => direction.x * direction.y, // l2_2\n (direction) => direction.y * direction.z, // l2_1\n (direction) => 3 * direction.z * direction.z - 1, // l20\n (direction) => direction.x * direction.z, // l21\n (direction) => direction.x * direction.x - direction.y * direction.y, // l22\n];\n// Wrap the full compute\nconst applySH3 = (lm, direction) => {\n return SH3ylmBasisConstants[lm] * SH3ylmBasisTrigonometricTerms[lm](direction);\n};\n// Derived from the integration of the a kernel convolution to SH.\n// Great explanation here: https://patapom.com/blog/SHPortal/#about-distant-radiance-and-irradiance-environments\nconst SHCosKernelConvolution = [Math.PI, (2 * Math.PI) / 3, (2 * Math.PI) / 3, (2 * Math.PI) / 3, Math.PI / 4, Math.PI / 4, Math.PI / 4, Math.PI / 4, Math.PI / 4];\n/**\n * Class representing spherical harmonics coefficients to the 3rd degree\n */\nexport class SphericalHarmonics {\n constructor() {\n /**\n * Defines whether or not the harmonics have been prescaled for rendering.\n */\n this.preScaled = false;\n /**\n * The l0,0 coefficients of the spherical harmonics\n */\n this.l00 = Vector3.Zero();\n /**\n * The l1,-1 coefficients of the spherical harmonics\n */\n this.l1_1 = Vector3.Zero();\n /**\n * The l1,0 coefficients of the spherical harmonics\n */\n this.l10 = Vector3.Zero();\n /**\n * The l1,1 coefficients of the spherical harmonics\n */\n this.l11 = Vector3.Zero();\n /**\n * The l2,-2 coefficients of the spherical harmonics\n */\n this.l2_2 = Vector3.Zero();\n /**\n * The l2,-1 coefficients of the spherical harmonics\n */\n this.l2_1 = Vector3.Zero();\n /**\n * The l2,0 coefficients of the spherical harmonics\n */\n this.l20 = Vector3.Zero();\n /**\n * The l2,1 coefficients of the spherical harmonics\n */\n this.l21 = Vector3.Zero();\n /**\n * The l2,2 coefficients of the spherical harmonics\n */\n this.l22 = Vector3.Zero();\n }\n /**\n * Adds a light to the spherical harmonics\n * @param direction the direction of the light\n * @param color the color of the light\n * @param deltaSolidAngle the delta solid angle of the light\n */\n addLight(direction, color, deltaSolidAngle) {\n TmpVectors.Vector3[0].set(color.r, color.g, color.b);\n const colorVector = TmpVectors.Vector3[0];\n const c = TmpVectors.Vector3[1];\n colorVector.scaleToRef(deltaSolidAngle, c);\n c.scaleToRef(applySH3(0, direction), TmpVectors.Vector3[2]);\n this.l00.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(1, direction), TmpVectors.Vector3[2]);\n this.l1_1.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(2, direction), TmpVectors.Vector3[2]);\n this.l10.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(3, direction), TmpVectors.Vector3[2]);\n this.l11.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(4, direction), TmpVectors.Vector3[2]);\n this.l2_2.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(5, direction), TmpVectors.Vector3[2]);\n this.l2_1.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(6, direction), TmpVectors.Vector3[2]);\n this.l20.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(7, direction), TmpVectors.Vector3[2]);\n this.l21.addInPlace(TmpVectors.Vector3[2]);\n c.scaleToRef(applySH3(8, direction), TmpVectors.Vector3[2]);\n this.l22.addInPlace(TmpVectors.Vector3[2]);\n }\n /**\n * Scales the spherical harmonics by the given amount\n * @param scale the amount to scale\n */\n scaleInPlace(scale) {\n this.l00.scaleInPlace(scale);\n this.l1_1.scaleInPlace(scale);\n this.l10.scaleInPlace(scale);\n this.l11.scaleInPlace(scale);\n this.l2_2.scaleInPlace(scale);\n this.l2_1.scaleInPlace(scale);\n this.l20.scaleInPlace(scale);\n this.l21.scaleInPlace(scale);\n this.l22.scaleInPlace(scale);\n }\n /**\n * Convert from incident radiance (Li) to irradiance (E) by applying convolution with the cosine-weighted hemisphere.\n *\n * ```\n * E_lm = A_l * L_lm\n * ```\n *\n * In spherical harmonics this convolution amounts to scaling factors for each frequency band.\n * This corresponds to equation 5 in \"An Efficient Representation for Irradiance Environment Maps\", where\n * the scaling factors are given in equation 9.\n */\n convertIncidentRadianceToIrradiance() {\n // Constant (Band 0)\n this.l00.scaleInPlace(SHCosKernelConvolution[0]);\n // Linear (Band 1)\n this.l1_1.scaleInPlace(SHCosKernelConvolution[1]);\n this.l10.scaleInPlace(SHCosKernelConvolution[2]);\n this.l11.scaleInPlace(SHCosKernelConvolution[3]);\n // Quadratic (Band 2)\n this.l2_2.scaleInPlace(SHCosKernelConvolution[4]);\n this.l2_1.scaleInPlace(SHCosKernelConvolution[5]);\n this.l20.scaleInPlace(SHCosKernelConvolution[6]);\n this.l21.scaleInPlace(SHCosKernelConvolution[7]);\n this.l22.scaleInPlace(SHCosKernelConvolution[8]);\n }\n /**\n * Convert from irradiance to outgoing radiance for Lambertian BDRF, suitable for efficient shader evaluation.\n *\n * ```\n * L = (1/pi) * E * rho\n * ```\n *\n * This is done by an additional scale by 1/pi, so is a fairly trivial operation but important conceptually.\n */\n convertIrradianceToLambertianRadiance() {\n this.scaleInPlace(1.0 / Math.PI);\n // The resultant SH now represents outgoing radiance, so includes the Lambert 1/pi normalisation factor but without albedo (rho) applied\n // (The pixel shader must apply albedo after texture fetches, etc).\n }\n /**\n * Integrates the reconstruction coefficients directly in to the SH preventing further\n * required operations at run time.\n *\n * This is simply done by scaling back the SH with Ylm constants parameter.\n * The trigonometric part being applied by the shader at run time.\n */\n preScaleForRendering() {\n this.preScaled = true;\n this.l00.scaleInPlace(SH3ylmBasisConstants[0]);\n this.l1_1.scaleInPlace(SH3ylmBasisConstants[1]);\n this.l10.scaleInPlace(SH3ylmBasisConstants[2]);\n this.l11.scaleInPlace(SH3ylmBasisConstants[3]);\n this.l2_2.scaleInPlace(SH3ylmBasisConstants[4]);\n this.l2_1.scaleInPlace(SH3ylmBasisConstants[5]);\n this.l20.scaleInPlace(SH3ylmBasisConstants[6]);\n this.l21.scaleInPlace(SH3ylmBasisConstants[7]);\n this.l22.scaleInPlace(SH3ylmBasisConstants[8]);\n }\n /**\n * update the spherical harmonics coefficients from the given array\n * @param data defines the 9x3 coefficients (l00, l1-1, l10, l11, l2-2, l2-1, l20, l21, l22)\n * @returns the spherical harmonics (this)\n */\n updateFromArray(data) {\n Vector3.FromArrayToRef(data[0], 0, this.l00);\n Vector3.FromArrayToRef(data[1], 0, this.l1_1);\n Vector3.FromArrayToRef(data[2], 0, this.l10);\n Vector3.FromArrayToRef(data[3], 0, this.l11);\n Vector3.FromArrayToRef(data[4], 0, this.l2_2);\n Vector3.FromArrayToRef(data[5], 0, this.l2_1);\n Vector3.FromArrayToRef(data[6], 0, this.l20);\n Vector3.FromArrayToRef(data[7], 0, this.l21);\n Vector3.FromArrayToRef(data[8], 0, this.l22);\n return this;\n }\n /**\n * update the spherical harmonics coefficients from the given floats array\n * @param data defines the 9x3 coefficients (l00, l1-1, l10, l11, l2-2, l2-1, l20, l21, l22)\n * @returns the spherical harmonics (this)\n */\n updateFromFloatsArray(data) {\n Vector3.FromFloatsToRef(data[0], data[1], data[2], this.l00);\n Vector3.FromFloatsToRef(data[3], data[4], data[5], this.l1_1);\n Vector3.FromFloatsToRef(data[6], data[7], data[8], this.l10);\n Vector3.FromFloatsToRef(data[9], data[10], data[11], this.l11);\n Vector3.FromFloatsToRef(data[12], data[13], data[14], this.l2_2);\n Vector3.FromFloatsToRef(data[15], data[16], data[17], this.l2_1);\n Vector3.FromFloatsToRef(data[18], data[19], data[20], this.l20);\n Vector3.FromFloatsToRef(data[21], data[22], data[23], this.l21);\n Vector3.FromFloatsToRef(data[24], data[25], data[26], this.l22);\n return this;\n }\n /**\n * Constructs a spherical harmonics from an array.\n * @param data defines the 9x3 coefficients (l00, l1-1, l10, l11, l2-2, l2-1, l20, l21, l22)\n * @returns the spherical harmonics\n */\n static FromArray(data) {\n const sh = new SphericalHarmonics();\n return sh.updateFromArray(data);\n }\n // Keep for references.\n /**\n * Gets the spherical harmonics from polynomial\n * @param polynomial the spherical polynomial\n * @returns the spherical harmonics\n */\n static FromPolynomial(polynomial) {\n const result = new SphericalHarmonics();\n result.l00 = polynomial.xx.scale(0.376127).add(polynomial.yy.scale(0.376127)).add(polynomial.zz.scale(0.376126));\n result.l1_1 = polynomial.y.scale(0.977204);\n result.l10 = polynomial.z.scale(0.977204);\n result.l11 = polynomial.x.scale(0.977204);\n result.l2_2 = polynomial.xy.scale(1.16538);\n result.l2_1 = polynomial.yz.scale(1.16538);\n result.l20 = polynomial.zz.scale(1.34567).subtract(polynomial.xx.scale(0.672834)).subtract(polynomial.yy.scale(0.672834));\n result.l21 = polynomial.zx.scale(1.16538);\n result.l22 = polynomial.xx.scale(1.16538).subtract(polynomial.yy.scale(1.16538));\n result.l1_1.scaleInPlace(-1);\n result.l11.scaleInPlace(-1);\n result.l2_1.scaleInPlace(-1);\n result.l21.scaleInPlace(-1);\n result.scaleInPlace(Math.PI);\n return result;\n }\n}\n/**\n * Class representing spherical polynomial coefficients to the 3rd degree\n */\nexport class SphericalPolynomial {\n constructor() {\n /**\n * The x coefficients of the spherical polynomial\n */\n this.x = Vector3.Zero();\n /**\n * The y coefficients of the spherical polynomial\n */\n this.y = Vector3.Zero();\n /**\n * The z coefficients of the spherical polynomial\n */\n this.z = Vector3.Zero();\n /**\n * The xx coefficients of the spherical polynomial\n */\n this.xx = Vector3.Zero();\n /**\n * The yy coefficients of the spherical polynomial\n */\n this.yy = Vector3.Zero();\n /**\n * The zz coefficients of the spherical polynomial\n */\n this.zz = Vector3.Zero();\n /**\n * The xy coefficients of the spherical polynomial\n */\n this.xy = Vector3.Zero();\n /**\n * The yz coefficients of the spherical polynomial\n */\n this.yz = Vector3.Zero();\n /**\n * The zx coefficients of the spherical polynomial\n */\n this.zx = Vector3.Zero();\n }\n /**\n * The spherical harmonics used to create the polynomials.\n */\n get preScaledHarmonics() {\n if (!this._harmonics) {\n this._harmonics = SphericalHarmonics.FromPolynomial(this);\n }\n if (!this._harmonics.preScaled) {\n this._harmonics.preScaleForRendering();\n }\n return this._harmonics;\n }\n /**\n * Adds an ambient color to the spherical polynomial\n * @param color the color to add\n */\n addAmbient(color) {\n TmpVectors.Vector3[0].copyFromFloats(color.r, color.g, color.b);\n const colorVector = TmpVectors.Vector3[0];\n this.xx.addInPlace(colorVector);\n this.yy.addInPlace(colorVector);\n this.zz.addInPlace(colorVector);\n }\n /**\n * Scales the spherical polynomial by the given amount\n * @param scale the amount to scale\n */\n scaleInPlace(scale) {\n this.x.scaleInPlace(scale);\n this.y.scaleInPlace(scale);\n this.z.scaleInPlace(scale);\n this.xx.scaleInPlace(scale);\n this.yy.scaleInPlace(scale);\n this.zz.scaleInPlace(scale);\n this.yz.scaleInPlace(scale);\n this.zx.scaleInPlace(scale);\n this.xy.scaleInPlace(scale);\n }\n /**\n * Updates the spherical polynomial from harmonics\n * @param harmonics the spherical harmonics\n * @returns the spherical polynomial\n */\n updateFromHarmonics(harmonics) {\n this._harmonics = harmonics;\n this.x.copyFrom(harmonics.l11);\n this.x.scaleInPlace(1.02333).scaleInPlace(-1);\n this.y.copyFrom(harmonics.l1_1);\n this.y.scaleInPlace(1.02333).scaleInPlace(-1);\n this.z.copyFrom(harmonics.l10);\n this.z.scaleInPlace(1.02333);\n this.xx.copyFrom(harmonics.l00);\n TmpVectors.Vector3[0].copyFrom(harmonics.l20).scaleInPlace(0.247708);\n TmpVectors.Vector3[1].copyFrom(harmonics.l22).scaleInPlace(0.429043);\n this.xx.scaleInPlace(0.886277).subtractInPlace(TmpVectors.Vector3[0]).addInPlace(TmpVectors.Vector3[1]);\n this.yy.copyFrom(harmonics.l00);\n this.yy.scaleInPlace(0.886277).subtractInPlace(TmpVectors.Vector3[0]).subtractInPlace(TmpVectors.Vector3[1]);\n this.zz.copyFrom(harmonics.l00);\n TmpVectors.Vector3[0].copyFrom(harmonics.l20).scaleInPlace(0.495417);\n this.zz.scaleInPlace(0.886277).addInPlace(TmpVectors.Vector3[0]);\n this.yz.copyFrom(harmonics.l2_1);\n this.yz.scaleInPlace(0.858086).scaleInPlace(-1);\n this.zx.copyFrom(harmonics.l21);\n this.zx.scaleInPlace(0.858086).scaleInPlace(-1);\n this.xy.copyFrom(harmonics.l2_2);\n this.xy.scaleInPlace(0.858086);\n this.scaleInPlace(1.0 / Math.PI);\n return this;\n }\n /**\n * Gets the spherical polynomial from harmonics\n * @param harmonics the spherical harmonics\n * @returns the spherical polynomial\n */\n static FromHarmonics(harmonics) {\n const result = new SphericalPolynomial();\n return result.updateFromHarmonics(harmonics);\n }\n /**\n * Constructs a spherical polynomial from an array.\n * @param data defines the 9x3 coefficients (x, y, z, xx, yy, zz, yz, zx, xy)\n * @returns the spherical polynomial\n */\n static FromArray(data) {\n const sp = new SphericalPolynomial();\n Vector3.FromArrayToRef(data[0], 0, sp.x);\n Vector3.FromArrayToRef(data[1], 0, sp.y);\n Vector3.FromArrayToRef(data[2], 0, sp.z);\n Vector3.FromArrayToRef(data[3], 0, sp.xx);\n Vector3.FromArrayToRef(data[4], 0, sp.yy);\n Vector3.FromArrayToRef(data[5], 0, sp.zz);\n Vector3.FromArrayToRef(data[6], 0, sp.yz);\n Vector3.FromArrayToRef(data[7], 0, sp.zx);\n Vector3.FromArrayToRef(data[8], 0, sp.xy);\n return sp;\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}