362 lines
8.2 KiB
JavaScript
362 lines
8.2 KiB
JavaScript
import { ShaderChunk } from './ShaderChunk.js';
|
|
import { mergeUniforms } from './UniformsUtils.js';
|
|
import { Vector2 } from '../../math/Vector2.js';
|
|
import { Vector3 } from '../../math/Vector3.js';
|
|
import { UniformsLib } from './UniformsLib.js';
|
|
import { Color } from '../../math/Color.js';
|
|
import { Matrix3 } from '../../math/Matrix3.js';
|
|
|
|
const ShaderLib = {
|
|
|
|
basic: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.specularmap,
|
|
UniformsLib.envmap,
|
|
UniformsLib.aomap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.fog
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.meshbasic_vert,
|
|
fragmentShader: ShaderChunk.meshbasic_frag
|
|
|
|
},
|
|
|
|
lambert: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.specularmap,
|
|
UniformsLib.envmap,
|
|
UniformsLib.aomap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.emissivemap,
|
|
UniformsLib.bumpmap,
|
|
UniformsLib.normalmap,
|
|
UniformsLib.displacementmap,
|
|
UniformsLib.fog,
|
|
UniformsLib.lights,
|
|
{
|
|
emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }
|
|
}
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.meshlambert_vert,
|
|
fragmentShader: ShaderChunk.meshlambert_frag
|
|
|
|
},
|
|
|
|
phong: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.specularmap,
|
|
UniformsLib.envmap,
|
|
UniformsLib.aomap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.emissivemap,
|
|
UniformsLib.bumpmap,
|
|
UniformsLib.normalmap,
|
|
UniformsLib.displacementmap,
|
|
UniformsLib.fog,
|
|
UniformsLib.lights,
|
|
{
|
|
emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },
|
|
specular: { value: /*@__PURE__*/ new Color( 0x111111 ) },
|
|
shininess: { value: 30 }
|
|
}
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.meshphong_vert,
|
|
fragmentShader: ShaderChunk.meshphong_frag
|
|
|
|
},
|
|
|
|
standard: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.envmap,
|
|
UniformsLib.aomap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.emissivemap,
|
|
UniformsLib.bumpmap,
|
|
UniformsLib.normalmap,
|
|
UniformsLib.displacementmap,
|
|
UniformsLib.roughnessmap,
|
|
UniformsLib.metalnessmap,
|
|
UniformsLib.fog,
|
|
UniformsLib.lights,
|
|
{
|
|
emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },
|
|
roughness: { value: 1.0 },
|
|
metalness: { value: 0.0 },
|
|
envMapIntensity: { value: 1 }
|
|
}
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.meshphysical_vert,
|
|
fragmentShader: ShaderChunk.meshphysical_frag
|
|
|
|
},
|
|
|
|
toon: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.aomap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.emissivemap,
|
|
UniformsLib.bumpmap,
|
|
UniformsLib.normalmap,
|
|
UniformsLib.displacementmap,
|
|
UniformsLib.gradientmap,
|
|
UniformsLib.fog,
|
|
UniformsLib.lights,
|
|
{
|
|
emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }
|
|
}
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.meshtoon_vert,
|
|
fragmentShader: ShaderChunk.meshtoon_frag
|
|
|
|
},
|
|
|
|
matcap: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.bumpmap,
|
|
UniformsLib.normalmap,
|
|
UniformsLib.displacementmap,
|
|
UniformsLib.fog,
|
|
{
|
|
matcap: { value: null }
|
|
}
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.meshmatcap_vert,
|
|
fragmentShader: ShaderChunk.meshmatcap_frag
|
|
|
|
},
|
|
|
|
points: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.points,
|
|
UniformsLib.fog
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.points_vert,
|
|
fragmentShader: ShaderChunk.points_frag
|
|
|
|
},
|
|
|
|
dashed: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.fog,
|
|
{
|
|
scale: { value: 1 },
|
|
dashSize: { value: 1 },
|
|
totalSize: { value: 2 }
|
|
}
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.linedashed_vert,
|
|
fragmentShader: ShaderChunk.linedashed_frag
|
|
|
|
},
|
|
|
|
depth: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.displacementmap
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.depth_vert,
|
|
fragmentShader: ShaderChunk.depth_frag
|
|
|
|
},
|
|
|
|
normal: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.bumpmap,
|
|
UniformsLib.normalmap,
|
|
UniformsLib.displacementmap,
|
|
{
|
|
opacity: { value: 1.0 }
|
|
}
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.meshnormal_vert,
|
|
fragmentShader: ShaderChunk.meshnormal_frag
|
|
|
|
},
|
|
|
|
sprite: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.sprite,
|
|
UniformsLib.fog
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.sprite_vert,
|
|
fragmentShader: ShaderChunk.sprite_frag
|
|
|
|
},
|
|
|
|
background: {
|
|
|
|
uniforms: {
|
|
uvTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
t2D: { value: null },
|
|
backgroundIntensity: { value: 1 }
|
|
},
|
|
|
|
vertexShader: ShaderChunk.background_vert,
|
|
fragmentShader: ShaderChunk.background_frag
|
|
|
|
},
|
|
|
|
backgroundCube: {
|
|
|
|
uniforms: {
|
|
envMap: { value: null },
|
|
flipEnvMap: { value: - 1 },
|
|
backgroundBlurriness: { value: 0 },
|
|
backgroundIntensity: { value: 1 },
|
|
backgroundRotation: { value: /*@__PURE__*/ new Matrix3() }
|
|
},
|
|
|
|
vertexShader: ShaderChunk.backgroundCube_vert,
|
|
fragmentShader: ShaderChunk.backgroundCube_frag
|
|
|
|
},
|
|
|
|
cube: {
|
|
|
|
uniforms: {
|
|
tCube: { value: null },
|
|
tFlip: { value: - 1 },
|
|
opacity: { value: 1.0 }
|
|
},
|
|
|
|
vertexShader: ShaderChunk.cube_vert,
|
|
fragmentShader: ShaderChunk.cube_frag
|
|
|
|
},
|
|
|
|
equirect: {
|
|
|
|
uniforms: {
|
|
tEquirect: { value: null },
|
|
},
|
|
|
|
vertexShader: ShaderChunk.equirect_vert,
|
|
fragmentShader: ShaderChunk.equirect_frag
|
|
|
|
},
|
|
|
|
distanceRGBA: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.common,
|
|
UniformsLib.displacementmap,
|
|
{
|
|
referencePosition: { value: /*@__PURE__*/ new Vector3() },
|
|
nearDistance: { value: 1 },
|
|
farDistance: { value: 1000 }
|
|
}
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.distanceRGBA_vert,
|
|
fragmentShader: ShaderChunk.distanceRGBA_frag
|
|
|
|
},
|
|
|
|
shadow: {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
UniformsLib.lights,
|
|
UniformsLib.fog,
|
|
{
|
|
color: { value: /*@__PURE__*/ new Color( 0x00000 ) },
|
|
opacity: { value: 1.0 }
|
|
},
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.shadow_vert,
|
|
fragmentShader: ShaderChunk.shadow_frag
|
|
|
|
}
|
|
|
|
};
|
|
|
|
ShaderLib.physical = {
|
|
|
|
uniforms: /*@__PURE__*/ mergeUniforms( [
|
|
ShaderLib.standard.uniforms,
|
|
{
|
|
clearcoat: { value: 0 },
|
|
clearcoatMap: { value: null },
|
|
clearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
clearcoatNormalMap: { value: null },
|
|
clearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
clearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },
|
|
clearcoatRoughness: { value: 0 },
|
|
clearcoatRoughnessMap: { value: null },
|
|
clearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
dispersion: { value: 0 },
|
|
iridescence: { value: 0 },
|
|
iridescenceMap: { value: null },
|
|
iridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
iridescenceIOR: { value: 1.3 },
|
|
iridescenceThicknessMinimum: { value: 100 },
|
|
iridescenceThicknessMaximum: { value: 400 },
|
|
iridescenceThicknessMap: { value: null },
|
|
iridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
sheen: { value: 0 },
|
|
sheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },
|
|
sheenColorMap: { value: null },
|
|
sheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
sheenRoughness: { value: 1 },
|
|
sheenRoughnessMap: { value: null },
|
|
sheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
transmission: { value: 0 },
|
|
transmissionMap: { value: null },
|
|
transmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
transmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },
|
|
transmissionSamplerMap: { value: null },
|
|
thickness: { value: 0 },
|
|
thicknessMap: { value: null },
|
|
thicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
attenuationDistance: { value: 0 },
|
|
attenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },
|
|
specularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },
|
|
specularColorMap: { value: null },
|
|
specularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
specularIntensity: { value: 1 },
|
|
specularIntensityMap: { value: null },
|
|
specularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
anisotropyVector: { value: /*@__PURE__*/ new Vector2() },
|
|
anisotropyMap: { value: null },
|
|
anisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
}
|
|
] ),
|
|
|
|
vertexShader: ShaderChunk.meshphysical_vert,
|
|
fragmentShader: ShaderChunk.meshphysical_frag
|
|
|
|
};
|
|
|
|
|
|
export { ShaderLib };
|