@@ -3,11 +3,11 @@ import {
3
3
} from '../../graphics.js' ;
4
4
import { shaderChunks } from '../chunks/chunks.js' ;
5
5
6
- //import {
6
+ // TODO: support passes:
7
+ // import {
7
8
// SHADER_DEPTH, SHADER_FORWARD, SHADER_FORWARDHDR, SHADER_PICK, SHADER_SHADOW
8
- //} from '../../scene/constants.js';
9
+ // } from '../../scene/constants.js';
9
10
10
- //import { programlib } from './program-lib.js';
11
11
import { begin , end , fogCode , precisionCode , skinCode , versionCode } from './common.js' ;
12
12
13
13
var node = {
@@ -16,16 +16,15 @@ var node = {
16
16
if ( options . fog ) key += '_fog' ;
17
17
if ( options . alphaTest ) key += '_atst' ;
18
18
if ( options . shaderGraph ) key += options . shaderGraph . key ;
19
- // key += '_' + options.pass;
19
+ // TODO: support passes
20
+ // key += '_' + options.pass;
20
21
return key ;
21
22
} ,
22
23
23
24
createShaderDefinition : function ( device , options ) {
24
- //var n;
25
-
26
25
// generate graph
27
- var rootDeclGLSL = options . shaderGraph . generateRootDeclGlsl ( ) ;
28
- var rootCallGLSL = options . shaderGraph . generateRootCallGlsl ( ) ;
26
+ var rootDeclGLSL = options . shaderGraph . generateRootDeclGlsl ( ) ;
27
+ var rootCallGLSL = options . shaderGraph . generateRootCallGlsl ( ) ;
29
28
30
29
// GENERATE ATTRIBUTES
31
30
var attributes = {
@@ -54,7 +53,6 @@ var node = {
54
53
code += chunks . transformVS ;
55
54
}
56
55
57
- // code += 'attribute vec3 vertex_position;\n';
58
56
code += 'varying vec3 vPosition;\n' ;
59
57
60
58
code += 'attribute vec3 vertex_normal;\n' ;
@@ -66,40 +64,12 @@ var node = {
66
64
code += 'attribute vec2 vertex_texCoord0;\n' ;
67
65
code += 'varying vec2 vUv0;\n' ;
68
66
69
- /*
70
- if (options.pass === SHADER_PICK) {
71
- // ##### PICK PASS #####
72
- } else if (options.pass === SHADER_DEPTH) {
73
- // ##### SCREEN DEPTH PASS #####
74
- code += " gl_FragColor = packFloat(vDepth);\n";
75
- }
76
- else if (options.pass === SHADER_FORWARD || options.pass === SHADER_FORWARDHDR )
77
- {
78
-
79
- }*/
80
-
81
- // if (options.pass === SHADER_DEPTH) {
82
- // code += 'varying float vDepth;\n';
83
- // code += '#ifndef VIEWMATRIX\n';
84
- // code += '#define VIEWMATRIX\n';
85
- // code += 'uniform mat4 matrix_view;\n';
86
- // code += '#endif\n';
87
- // code += '#ifndef CAMERAPLANES\n';
88
- // code += '#define CAMERAPLANES\n';
89
- // code += 'uniform vec4 camera_params;\n\n';
90
- // code += '#endif\n';
91
- // }
92
- /* if (options.shaderGraph) {
93
- for (n = 0; n < options.shaderGraph.params.length; n++) {
94
- code += 'uniform ' + options.shaderGraph.params[n].type + ' ' + options.shaderGraph.params[n].name + ';\n';
95
- }
96
- }*/
97
-
67
+ // TODO: support passes SHADER_DEPTH SHADER_FORWARD SHADER_FORWARDHDR SHADER_PICK
98
68
code += 'vec3 getWorldPositionNM(){return (getModelMatrix()*vec4(vertex_position, 1.0)).xyz;}\n' ;
99
69
code += 'vec3 getWorldNormalNM(){return (getModelMatrix()*vec4(vertex_normal, 0.0)).xyz;}\n' ;
100
70
101
71
if ( options . shaderGraph ) {
102
- code += "#define MAX_VS_LIGHTS " + Math . floor ( options . maxVertexLights ) + "\n" ;
72
+ code += "#define MAX_VS_LIGHTS " + Math . floor ( options . maxVertexLights ) + "\n" ;
103
73
code += "#define SG_VS\n" ;
104
74
code += rootDeclGLSL ;
105
75
}
@@ -110,41 +80,17 @@ var node = {
110
80
if ( options . shaderGraph ) {
111
81
code += rootCallGLSL ;
112
82
code += " vPosition = getWorldPositionNM()+OUT_vertOff;\n" ;
113
- code += " gl_Position = matrix_viewProjection*vec4(vPosition,1);\n" ;
83
+ code += " gl_Position = matrix_viewProjection*vec4(vPosition,1);\n" ;
114
84
} else {
115
85
code += " vPosition = getWorldPositionNM();\n" ;
116
86
code += " gl_Position = matrix_viewProjection*vec4(vPosition,1);\n" ;
117
87
}
118
- /*
119
- if (options.pass === SHADER_DEPTH)
120
- {
121
- code += " vDepth = -(matrix_view * vec4(getWorldPosition(),1.0)).z * camera_params.x;\n";
122
- }
123
- else if (options.pass === SHADER_FORWARD || options.pass === SHADER_FORWARDHDR )
124
- {
125
- //vert lighting!
126
-
127
- }
128
-
129
- if (options.pass === SHADER_PICK) {
130
- // ##### PICK PASS #####
131
- } else if (options.pass === SHADER_DEPTH) {
132
- // ##### SCREEN DEPTH PASS #####
133
- code += " gl_FragColor = packFloat(vDepth);\n";
134
- }
135
- else if (options.pass === SHADER_FORWARD || options.pass === SHADER_FORWARDHDR )
136
- {
137
-
138
- } */
139
-
140
- // code += ' vNormal = getNormal(vertex_normal);\n';
141
- //code += ' vNormal = vertex_normal;/*getWorldNormalNM();*/\n';
88
+
89
+ // TODO: support passes SHADER_DEPTH SHADER_FORWARD SHADER_FORWARDHDR SHADER_PICK
142
90
code += ' vNormal = normalize(getWorldNormalNM());\n' ;
143
91
code += ' vColor = vertex_color;\n' ;
144
92
code += ' vUv0 = vertex_texCoord0;\n' ;
145
93
146
- //code += ' calcVertexLightingVS(vPosition, vNormal);\n';
147
-
148
94
code += end ( ) ;
149
95
150
96
var vshader = code ;
@@ -173,7 +119,6 @@ var node = {
173
119
if ( options . forceFragmentPrecision === "mediump" && device . maxPrecision === "lowp" ) options . forceFragmentPrecision = "lowp" ;
174
120
}
175
121
176
- var fshader ;
177
122
code = '' ;
178
123
179
124
if ( device . webgl2 ) {
@@ -194,7 +139,6 @@ var node = {
194
139
code += options . forceFragmentPrecision ? "precision " + options . forceFragmentPrecision + " float;\n\n" : precisionCode ( device ) ;
195
140
196
141
// FRAGMENT SHADER DECLARATIONS
197
-
198
142
code += 'uniform vec3 view_position;\n' ;
199
143
200
144
code += 'varying vec3 vPosition;\n' ;
@@ -209,26 +153,11 @@ var node = {
209
153
code += chunks . alphaTestPS ;
210
154
}
211
155
212
- // if (options.pass === SHADER_DEPTH) {
213
- // // ##### SCREEN DEPTH PASS #####
214
- // code += 'varying float vDepth;\n';
215
- // code += chunks.packDepthPS;
216
- // }
217
-
218
156
if ( options . shaderGraph ) {
219
- /*for (n = 0; n < options.shaderGraph.params.length; n++) {
220
- code += 'uniform ' + options.shaderGraph.params[n].type + ' ' + options.shaderGraph.params[n].name + ';\n';
221
- }*/
222
- code += "#define MAX_PS_LIGHTS " + Math . floor ( options . maxPixelLights ) + "\n" ;
157
+ code += "#define MAX_PS_LIGHTS " + Math . floor ( options . maxPixelLights ) + "\n" ;
223
158
code += "#define SG_PS\n" ;
224
159
code += rootDeclGLSL ;
225
160
}
226
- // if (options.nodeInputs.emissiveColor) code += options.nodeInputs.emissiveColor;
227
- // if (options.nodeInputs.baseColor) code += options.nodeInputs.baseColor;
228
- // if (options.nodeInputs.opacity) code += options.nodeInputs.opacity;
229
- // if (options.nodeInputs.normal) code += options.nodeInputs.normal;
230
- // if (options.nodeInputs.metallic) code += options.nodeInputs.metallic;
231
- // if (options.nodeInputs.roughness) code += options.nodeInputs.roughness;
232
161
233
162
// FRAGMENT SHADER BODY
234
163
code += begin ( ) ;
@@ -237,32 +166,16 @@ var node = {
237
166
code += rootCallGLSL ;
238
167
code += 'gl_FragColor=OUT_fragOut;\n' ;
239
168
}
240
- else
241
- {
242
-
243
- }
244
- // code += NodeMaterial.generateLightingCode(options);
245
-
246
- // code += ' gl_FragColor = getEmissiveColor()+lightGGX(getBaseColor(), getOpacity(), getNormal(), getMetallic(), getRoughness());\n';
247
- // code += ' gl_FragColor = vec4(getEmissiveColor(),1);\n';
248
- // code += ' gl_FragColor = '+options.shaderGraph.funcName+ root(getEmissiveColor(),1);\n';
249
169
250
170
if ( options . alphatest ) {
251
171
code += " alphaTest(gl_FragColor.a);\n" ;
252
172
}
253
173
254
- // TODO implement passes
255
- // if (options.pass === SHADER_PICK) {
256
- // // ##### PICK PASS #####
257
- // } else if (options.pass === SHADER_DEPTH) {
258
- // // ##### SCREEN DEPTH PASS #####
259
- // code += " gl_FragColor = packFloat(vDepth);\n";
260
- // } else {
261
- // ##### FORWARD PASS #####
174
+ // TODO implement passes SHADER_PICK SHADER_DEPTH
175
+ // ##### FORWARD PASS #####
262
176
if ( options . fog ) {
263
177
code += " glFragColor.rgb = addFog(gl_FragColor.rgb);\n" ;
264
178
}
265
- // }
266
179
267
180
code += end ( ) ;
268
181
0 commit comments