ShaderLib.js 4.3 KB
Newer Older
R
Rich Harris 已提交
1
import { ShaderChunk } from './ShaderChunk';
2
import { UniformsUtils } from './UniformsUtils';
R
Rich Harris 已提交
3 4 5 6
import { Vector3 } from '../../math/Vector3';
import { UniformsLib } from './UniformsLib';
import { Color } from '../../math/Color';

7 8 9 10 11 12
/**
 * @author alteredq / http://alteredqualia.com/
 * @author mrdoob / http://mrdoob.com/
 * @author mikael emtinger / http://gomo.se/
 */

M
Mr.doob 已提交
13
var ShaderLib = {
14

M
Mr.doob 已提交
15
	basic: {
16

17
		uniforms: UniformsUtils.merge( [
M
Mr.doob 已提交
18 19
			UniformsLib.common,
			UniformsLib.aomap,
20
			UniformsLib.lightmap,
M
Mr.doob 已提交
21
			UniformsLib.fog
22
		] ),
23

M
Mr.doob 已提交
24 25
		vertexShader: ShaderChunk.meshbasic_vert,
		fragmentShader: ShaderChunk.meshbasic_frag
26 27 28

	},

M
Mr.doob 已提交
29
	lambert: {
30

31
		uniforms: UniformsUtils.merge( [
M
Mr.doob 已提交
32 33 34 35 36 37
			UniformsLib.common,
			UniformsLib.aomap,
			UniformsLib.lightmap,
			UniformsLib.emissivemap,
			UniformsLib.fog,
			UniformsLib.lights,
38
			{
39
				emissive: { value: new Color( 0x000000 ) }
40
			}
41
		] ),
42

M
Mr.doob 已提交
43 44
		vertexShader: ShaderChunk.meshlambert_vert,
		fragmentShader: ShaderChunk.meshlambert_frag
45 46 47

	},

M
Mr.doob 已提交
48
	phong: {
49

50
		uniforms: UniformsUtils.merge( [
M
Mr.doob 已提交
51 52 53 54 55 56 57
			UniformsLib.common,
			UniformsLib.aomap,
			UniformsLib.lightmap,
			UniformsLib.emissivemap,
			UniformsLib.bumpmap,
			UniformsLib.normalmap,
			UniformsLib.displacementmap,
T
Takahiro 已提交
58
			UniformsLib.gradientmap,
M
Mr.doob 已提交
59 60
			UniformsLib.fog,
			UniformsLib.lights,
61
			{
62 63
				emissive: { value: new Color( 0x000000 ) },
				specular: { value: new Color( 0x111111 ) },
M
Mr.doob 已提交
64
				shininess: { value: 30 }
65
			}
66
		] ),
67

M
Mr.doob 已提交
68 69
		vertexShader: ShaderChunk.meshphong_vert,
		fragmentShader: ShaderChunk.meshphong_frag
70 71 72

	},

M
Mr.doob 已提交
73
	standard: {
W
WestLangley 已提交
74

75
		uniforms: UniformsUtils.merge( [
M
Mr.doob 已提交
76 77 78 79 80 81 82 83 84
			UniformsLib.common,
			UniformsLib.aomap,
			UniformsLib.lightmap,
			UniformsLib.emissivemap,
			UniformsLib.bumpmap,
			UniformsLib.normalmap,
			UniformsLib.displacementmap,
			UniformsLib.roughnessmap,
			UniformsLib.metalnessmap,
T
Takahiro 已提交
85
			UniformsLib.glossinessmap,
86
			UniformsLib.specular2map,
M
Mr.doob 已提交
87 88
			UniformsLib.fog,
			UniformsLib.lights,
W
WestLangley 已提交
89
			{
90
				emissive: { value: new Color( 0x000000 ) },
M
Mr.doob 已提交
91
				roughness: { value: 0.5 },
92
				metalness: { value: 0.5 },
T
Takahiro 已提交
93
				glossiness: { value: 0.5 },
94
				specular2: { value: new Color( 0x000000 ) },
95
				envMapIntensity: { value: 1 } // temporary
W
WestLangley 已提交
96
			}
97
		] ),
W
WestLangley 已提交
98

M
Mr.doob 已提交
99 100
		vertexShader: ShaderChunk.meshphysical_vert,
		fragmentShader: ShaderChunk.meshphysical_frag
W
WestLangley 已提交
101 102 103

	},

M
Mr.doob 已提交
104
	points: {
105

106
		uniforms: UniformsUtils.merge( [
M
Mr.doob 已提交
107 108
			UniformsLib.points,
			UniformsLib.fog
109
		] ),
110

M
Mr.doob 已提交
111 112
		vertexShader: ShaderChunk.points_vert,
		fragmentShader: ShaderChunk.points_frag
113 114 115

	},

M
Mr.doob 已提交
116
	dashed: {
117

118
		uniforms: UniformsUtils.merge( [
M
Mr.doob 已提交
119 120
			UniformsLib.common,
			UniformsLib.fog,
121
			{
122 123
				scale: { value: 1 },
				dashSize: { value: 1 },
M
Mr.doob 已提交
124
				totalSize: { value: 2 }
125
			}
126
		] ),
127

M
Mr.doob 已提交
128 129
		vertexShader: ShaderChunk.linedashed_vert,
		fragmentShader: ShaderChunk.linedashed_frag
130 131 132

	},

M
Mr.doob 已提交
133
	depth: {
134

135
		uniforms: UniformsUtils.merge( [
M
Mr.doob 已提交
136 137
			UniformsLib.common,
			UniformsLib.displacementmap
138
		] ),
139

M
Mr.doob 已提交
140 141
		vertexShader: ShaderChunk.depth_vert,
		fragmentShader: ShaderChunk.depth_frag
142 143 144

	},

M
Mr.doob 已提交
145
	normal: {
146

147
		uniforms: UniformsUtils.merge( [
148 149 150 151 152
			UniformsLib.common,
			UniformsLib.bumpmap,
			UniformsLib.normalmap,
			UniformsLib.displacementmap,
			{
153
				opacity: { value: 1.0 }
154
			}
155
		] ),
156

M
Mr.doob 已提交
157 158
		vertexShader: ShaderChunk.normal_vert,
		fragmentShader: ShaderChunk.normal_frag
159 160 161 162 163 164 165

	},

	/* -------------------------------------------------------------------------
	//	Cube map shader
	 ------------------------------------------------------------------------- */

M
Mr.doob 已提交
166
	cube: {
167

M
Mr.doob 已提交
168
		uniforms: {
M
Mr.doob 已提交
169 170 171
			tCube: { value: null },
			tFlip: { value: - 1 },
			opacity: { value: 1.0 }
M
Mr.doob 已提交
172
		},
173

M
Mr.doob 已提交
174 175
		vertexShader: ShaderChunk.cube_vert,
		fragmentShader: ShaderChunk.cube_frag
176 177 178

	},

179 180 181 182
	/* -------------------------------------------------------------------------
	//	Cube map shader
	 ------------------------------------------------------------------------- */

M
Mr.doob 已提交
183
	equirect: {
184

M
Mr.doob 已提交
185
		uniforms: {
M
Mr.doob 已提交
186 187
			tEquirect: { value: null },
			tFlip: { value: - 1 }
M
Mr.doob 已提交
188
		},
189

M
Mr.doob 已提交
190 191
		vertexShader: ShaderChunk.equirect_vert,
		fragmentShader: ShaderChunk.equirect_frag
192 193 194

	},

M
Mr.doob 已提交
195
	distanceRGBA: {
196 197

		uniforms: {
M
Mr.doob 已提交
198
			lightPos: { value: new Vector3() }
199 200
		},

M
Mr.doob 已提交
201 202
		vertexShader: ShaderChunk.distanceRGBA_vert,
		fragmentShader: ShaderChunk.distanceRGBA_frag
203

204 205 206
	}

};
207

M
Mr.doob 已提交
208
ShaderLib.physical = {
209

210
	uniforms: UniformsUtils.merge( [
M
Mr.doob 已提交
211
		ShaderLib.standard.uniforms,
212
		{
M
Mr.doob 已提交
213 214
			clearCoat: { value: 0 },
			clearCoatRoughness: { value: 0 }
215
		}
216
	] ),
217

M
Mr.doob 已提交
218 219
	vertexShader: ShaderChunk.meshphysical_vert,
	fragmentShader: ShaderChunk.meshphysical_frag
220 221

};
R
Rich Harris 已提交
222 223


M
Mr.doob 已提交
224
export { ShaderLib };