Buckets:
ktongue/docker_container / simsite /frontend /node_modules /three-stdlib /shaders /SubsurfaceScatteringShader.cjs
| ; | |
| Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); | |
| const THREE = require("three"); | |
| let _SubsurfaceScatteringShader; | |
| function get() { | |
| if (_SubsurfaceScatteringShader) | |
| return _SubsurfaceScatteringShader; | |
| const meshphong_frag_head = THREE.ShaderChunk["meshphong_frag"].slice( | |
| 0, | |
| THREE.ShaderChunk["meshphong_frag"].indexOf("void main() {") | |
| ); | |
| const meshphong_frag_body = THREE.ShaderChunk["meshphong_frag"].slice( | |
| THREE.ShaderChunk["meshphong_frag"].indexOf("void main() {") | |
| ); | |
| _SubsurfaceScatteringShader = { | |
| uniforms: THREE.UniformsUtils.merge([ | |
| THREE.ShaderLib["phong"].uniforms, | |
| { | |
| thicknessMap: { value: null }, | |
| thicknessColor: { value: new THREE.Color(16777215) }, | |
| thicknessDistortion: { value: 0.1 }, | |
| thicknessAmbient: { value: 0 }, | |
| thicknessAttenuation: { value: 0.1 }, | |
| thicknessPower: { value: 2 }, | |
| thicknessScale: { value: 10 } | |
| } | |
| ]), | |
| vertexShader: ( | |
| /* glsl */ | |
| ` | |
| #define USE_UV | |
| ${THREE.ShaderChunk["meshphong_vert"]} | |
| ` | |
| ), | |
| fragmentShader: ( | |
| /* glsl */ | |
| ` | |
| #define USE_UV', | |
| #define SUBSURFACE', | |
| ${meshphong_frag_head} | |
| uniform sampler2D thicknessMap; | |
| uniform float thicknessPower; | |
| uniform float thicknessScale; | |
| uniform float thicknessDistortion; | |
| uniform float thicknessAmbient; | |
| uniform float thicknessAttenuation; | |
| uniform vec3 thicknessColor; | |
| void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) { | |
| vec3 thickness = thicknessColor * texture2D(thicknessMap, uv).r; | |
| vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion)); | |
| float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale; | |
| vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness; | |
| reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color; | |
| } | |
| ${meshphong_frag_body.replace( | |
| "#include <lights_fragment_begin>", | |
| THREE.ShaderChunk["lights_fragment_begin"].replace( | |
| /RE_Direct\( directLight, geometry, material, reflectedLight \);/g, | |
| /* glsl */ | |
| ` | |
| RE_Direct( directLight, geometry, material, reflectedLight ); | |
| #if defined( SUBSURFACE ) && defined( USE_UV ) | |
| RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight); | |
| #endif | |
| ` | |
| ) | |
| )} | |
| ` | |
| ) | |
| }; | |
| return _SubsurfaceScatteringShader; | |
| } | |
| const SubsurfaceScatteringShader = { | |
| get uniforms() { | |
| return get().uniforms; | |
| }, | |
| set uniforms(value) { | |
| get().uniforms = value; | |
| }, | |
| get vertexShader() { | |
| return get().vertexShader; | |
| }, | |
| set vertexShader(value) { | |
| get().vertexShader = value; | |
| }, | |
| get fragmentShader() { | |
| return get().vertexShader; | |
| }, | |
| set fragmentShader(value) { | |
| get().vertexShader = value; | |
| } | |
| }; | |
| exports.SubsurfaceScatteringShader = SubsurfaceScatteringShader; | |
| //# sourceMappingURL=SubsurfaceScatteringShader.cjs.map | |
Xet Storage Details
- Size:
- 3.17 kB
- Xet hash:
- 97f4696b27e7c8de7573faf63797bdf1b735b6d009e07b9c50b3ac2c0b182ae0
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.