SPV GLSL.std.450: Add needed smear operations for min, max, clamp, mix, step, and smoothstep.

This commit is contained in:
John Kessenich 2015-12-13 13:34:37 -07:00
parent 6feb4989fe
commit e7c83cfb8c
5 changed files with 401 additions and 387 deletions

View File

@ -2871,6 +2871,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
libCall = spv::GLSLstd450UMin;
else
libCall = spv::GLSLstd450SMin;
builder.promoteScalar(precision, operands.front(), operands.back());
break;
case glslang::EOpModf:
libCall = spv::GLSLstd450Modf;
@ -2882,6 +2883,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
libCall = spv::GLSLstd450UMax;
else
libCall = spv::GLSLstd450SMax;
builder.promoteScalar(precision, operands.front(), operands.back());
break;
case glslang::EOpPow:
libCall = spv::GLSLstd450Pow;
@ -2900,18 +2902,24 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
libCall = spv::GLSLstd450UClamp;
else
libCall = spv::GLSLstd450SClamp;
builder.promoteScalar(precision, operands.front(), operands[1]);
builder.promoteScalar(precision, operands.front(), operands[2]);
break;
case glslang::EOpMix:
if (isFloat)
libCall = spv::GLSLstd450FMix;
else
libCall = spv::GLSLstd450IMix;
builder.promoteScalar(precision, operands.front(), operands.back());
break;
case glslang::EOpStep:
libCall = spv::GLSLstd450Step;
builder.promoteScalar(precision, operands.front(), operands.back());
break;
case glslang::EOpSmoothStep:
libCall = spv::GLSLstd450SmoothStep;
builder.promoteScalar(precision, operands[0], operands[2]);
builder.promoteScalar(precision, operands[1], operands[2]);
break;
case glslang::EOpDistance:

View File

@ -7,12 +7,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 503
// Id's are bound by 507
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 479
EntryPoint Fragment 4 "main" 483
ExecutionMode 4 OriginLowerLeft
Source GLSL 450
Name 4 "main"
@ -22,15 +22,15 @@ Linked fragment stage:
Name 22 "ui"
Name 181 "ub41"
Name 188 "f"
Name 211 "uf"
Name 281 "u"
Name 284 "uui"
Name 301 "b"
Name 338 "ub42"
Name 479 "FragColor"
Name 497 "uiv4"
Name 499 "ub"
Name 502 "uuv4"
Name 212 "uf"
Name 285 "u"
Name 288 "uui"
Name 305 "b"
Name 342 "ub42"
Name 483 "FragColor"
Name 501 "uiv4"
Name 503 "ub"
Name 506 "uuv4"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -49,38 +49,38 @@ Linked fragment stage:
179: TypeVector 178(bool) 4
180: TypePointer UniformConstant 179(bvec4)
181(ub41): 180(ptr) Variable UniformConstant
210: TypePointer UniformConstant 6(float)
211(uf): 210(ptr) Variable UniformConstant
280: TypePointer Function 141(int)
283: TypePointer UniformConstant 141(int)
284(uui): 283(ptr) Variable UniformConstant
300: TypePointer Function 178(bool)
338(ub42): 180(ptr) Variable UniformConstant
392: 18(int) Constant 2
399: 18(int) Constant 1
429: TypeVector 6(float) 3
448: 6(float) Constant 1073741824
455: 6(float) Constant 1065353216
460: 18(int) Constant 66
466: 18(int) Constant 17
478: TypePointer Output 7(fvec4)
479(FragColor): 478(ptr) Variable Output
495: TypeVector 18(int) 4
496: TypePointer UniformConstant 495(ivec4)
497(uiv4): 496(ptr) Variable UniformConstant
498: TypePointer UniformConstant 178(bool)
499(ub): 498(ptr) Variable UniformConstant
500: TypeVector 141(int) 4
501: TypePointer UniformConstant 500(ivec4)
502(uuv4): 501(ptr) Variable UniformConstant
211: TypePointer UniformConstant 6(float)
212(uf): 211(ptr) Variable UniformConstant
284: TypePointer Function 141(int)
287: TypePointer UniformConstant 141(int)
288(uui): 287(ptr) Variable UniformConstant
304: TypePointer Function 178(bool)
342(ub42): 180(ptr) Variable UniformConstant
396: 18(int) Constant 2
403: 18(int) Constant 1
433: TypeVector 6(float) 3
452: 6(float) Constant 1073741824
459: 6(float) Constant 1065353216
464: 18(int) Constant 66
470: 18(int) Constant 17
482: TypePointer Output 7(fvec4)
483(FragColor): 482(ptr) Variable Output
499: TypeVector 18(int) 4
500: TypePointer UniformConstant 499(ivec4)
501(uiv4): 500(ptr) Variable UniformConstant
502: TypePointer UniformConstant 178(bool)
503(ub): 502(ptr) Variable UniformConstant
504: TypeVector 141(int) 4
505: TypePointer UniformConstant 504(ivec4)
506(uuv4): 505(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(v): 8(ptr) Variable Function
20(i): 19(ptr) Variable Function
188(f): 143(ptr) Variable Function
281(u): 280(ptr) Variable Function
301(b): 300(ptr) Variable Function
480: 8(ptr) Variable Function
285(u): 284(ptr) Variable Function
305(b): 304(ptr) Variable Function
484: 8(ptr) Variable Function
12: 7(fvec4) Load 11(uv4)
13: 7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
Store 9(v) 13
@ -284,378 +284,382 @@ Linked fragment stage:
186: 7(fvec4) Load 9(v)
187: 7(fvec4) Load 9(v)
189: 6(float) Load 188(f)
190: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 186 187 189
191: 7(fvec4) Load 9(v)
192: 7(fvec4) FAdd 191 190
Store 9(v) 192
193: 7(fvec4) Load 9(v)
194: 7(fvec4) Load 11(uv4)
195: 7(fvec4) Load 9(v)
196: 7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 193 194 195
197: 7(fvec4) Load 9(v)
198: 7(fvec4) FAdd 197 196
Store 9(v) 198
199: 7(fvec4) Load 9(v)
190: 7(fvec4) CompositeConstruct 189 189 189 189
191: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 186 187 190
192: 7(fvec4) Load 9(v)
193: 7(fvec4) FAdd 192 191
Store 9(v) 193
194: 7(fvec4) Load 9(v)
195: 7(fvec4) Load 11(uv4)
196: 7(fvec4) Load 9(v)
197: 7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 194 195 196
198: 7(fvec4) Load 9(v)
199: 7(fvec4) FAdd 198 197
Store 9(v) 199
200: 7(fvec4) Load 9(v)
201: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 199 200
202: 7(fvec4) Load 9(v)
203: 7(fvec4) FAdd 202 201
Store 9(v) 203
204: 7(fvec4) Load 9(v)
201: 7(fvec4) Load 9(v)
202: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 200 201
203: 7(fvec4) Load 9(v)
204: 7(fvec4) FAdd 203 202
Store 9(v) 204
205: 7(fvec4) Load 9(v)
206: 7(fvec4) Load 9(v)
207: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 204 205 206
208: 7(fvec4) Load 9(v)
209: 7(fvec4) FAdd 208 207
Store 9(v) 209
212: 6(float) Load 211(uf)
213: 7(fvec4) Load 9(v)
214: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 212 213
215: 7(fvec4) Load 9(v)
216: 7(fvec4) FAdd 215 214
Store 9(v) 216
217: 6(float) Load 211(uf)
218: 6(float) Load 211(uf)
219: 7(fvec4) Load 9(v)
220: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 217 218 219
207: 7(fvec4) Load 9(v)
208: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 205 206 207
209: 7(fvec4) Load 9(v)
210: 7(fvec4) FAdd 209 208
Store 9(v) 210
213: 6(float) Load 212(uf)
214: 7(fvec4) Load 9(v)
215: 7(fvec4) CompositeConstruct 213 213 213 213
216: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 215 214
217: 7(fvec4) Load 9(v)
218: 7(fvec4) FAdd 217 216
Store 9(v) 218
219: 6(float) Load 212(uf)
220: 6(float) Load 212(uf)
221: 7(fvec4) Load 9(v)
222: 7(fvec4) FAdd 221 220
Store 9(v) 222
223: 7(fvec4) Load 9(v)
224: 7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 223
222: 7(fvec4) CompositeConstruct 219 219 219 219
223: 7(fvec4) CompositeConstruct 220 220 220 220
224: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 222 223 221
225: 7(fvec4) Load 9(v)
226: 7(fvec4) FAdd 225 224
Store 9(v) 226
227: 7(fvec4) Load 9(v)
228: 7(fvec4) Load 9(v)
228: 7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 227
229: 7(fvec4) Load 9(v)
230: 7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 227 228 229
230: 7(fvec4) FAdd 229 228
Store 9(v) 230
231: 7(fvec4) Load 9(v)
232: 7(fvec4) FAdd 231 230
Store 9(v) 232
232: 7(fvec4) Load 9(v)
233: 7(fvec4) Load 9(v)
234: 7(fvec4) Load 9(v)
235: 7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 233 234
236: 7(fvec4) Load 9(v)
237: 7(fvec4) FAdd 236 235
Store 9(v) 237
234: 7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 231 232 233
235: 7(fvec4) Load 9(v)
236: 7(fvec4) FAdd 235 234
Store 9(v) 236
237: 7(fvec4) Load 9(v)
238: 7(fvec4) Load 9(v)
239: 7(fvec4) Load 9(v)
240: 6(float) Load 211(uf)
241: 7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 238 239 240
239: 7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 237 238
240: 7(fvec4) Load 9(v)
241: 7(fvec4) FAdd 240 239
Store 9(v) 241
242: 7(fvec4) Load 9(v)
243: 7(fvec4) FAdd 242 241
Store 9(v) 243
244: 7(fvec4) Load 9(v)
245: 7(fvec4) DPdx 244
243: 7(fvec4) Load 9(v)
244: 6(float) Load 212(uf)
245: 7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 242 243 244
246: 7(fvec4) Load 9(v)
247: 7(fvec4) FAdd 246 245
Store 9(v) 247
248: 7(fvec4) Load 9(v)
249: 7(fvec4) DPdy 248
249: 7(fvec4) DPdx 248
250: 7(fvec4) Load 9(v)
251: 7(fvec4) FAdd 250 249
Store 9(v) 251
252: 7(fvec4) Load 9(v)
253: 7(fvec4) Fwidth 252
253: 7(fvec4) DPdy 252
254: 7(fvec4) Load 9(v)
255: 7(fvec4) FAdd 254 253
Store 9(v) 255
256: 18(int) Load 22(ui)
257: 18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 256
258: 18(int) Load 20(i)
259: 18(int) IAdd 258 257
Store 20(i) 259
260: 18(int) Load 20(i)
261: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 260
256: 7(fvec4) Load 9(v)
257: 7(fvec4) Fwidth 256
258: 7(fvec4) Load 9(v)
259: 7(fvec4) FAdd 258 257
Store 9(v) 259
260: 18(int) Load 22(ui)
261: 18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 260
262: 18(int) Load 20(i)
263: 18(int) IAdd 262 261
Store 20(i) 263
264: 18(int) Load 20(i)
265: 18(int) Load 22(ui)
266: 18(int) ExtInst 1(GLSL.std.450) 39(SMin) 264 265
267: 18(int) Load 20(i)
268: 18(int) IAdd 267 266
Store 20(i) 268
269: 18(int) Load 20(i)
270: 18(int) Load 22(ui)
271: 18(int) ExtInst 1(GLSL.std.450) 42(SMax) 269 270
272: 18(int) Load 20(i)
273: 18(int) IAdd 272 271
Store 20(i) 273
274: 18(int) Load 20(i)
275: 18(int) Load 22(ui)
276: 18(int) Load 22(ui)
277: 18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 274 275 276
265: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 264
266: 18(int) Load 20(i)
267: 18(int) IAdd 266 265
Store 20(i) 267
268: 18(int) Load 20(i)
269: 18(int) Load 22(ui)
270: 18(int) ExtInst 1(GLSL.std.450) 39(SMin) 268 269
271: 18(int) Load 20(i)
272: 18(int) IAdd 271 270
Store 20(i) 272
273: 18(int) Load 20(i)
274: 18(int) Load 22(ui)
275: 18(int) ExtInst 1(GLSL.std.450) 42(SMax) 273 274
276: 18(int) Load 20(i)
277: 18(int) IAdd 276 275
Store 20(i) 277
278: 18(int) Load 20(i)
279: 18(int) IAdd 278 277
Store 20(i) 279
282: 141(int) Load 281(u)
285: 141(int) Load 284(uui)
286: 141(int) ExtInst 1(GLSL.std.450) 38(UMin) 282 285
287: 141(int) Load 281(u)
288: 141(int) IAdd 287 286
Store 281(u) 288
289: 141(int) Load 281(u)
290: 141(int) Load 284(uui)
291: 141(int) ExtInst 1(GLSL.std.450) 41(UMax) 289 290
292: 141(int) Load 281(u)
293: 141(int) IAdd 292 291
Store 281(u) 293
294: 141(int) Load 281(u)
295: 141(int) Load 284(uui)
296: 141(int) Load 284(uui)
297: 141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 294 295 296
298: 141(int) Load 281(u)
299: 141(int) IAdd 298 297
Store 281(u) 299
302: 6(float) Load 211(uf)
303: 178(bool) IsNan 302
Store 301(b) 303
304: 6(float) Load 188(f)
305: 178(bool) IsInf 304
Store 301(b) 305
306: 7(fvec4) Load 9(v)
307: 7(fvec4) Load 11(uv4)
308: 179(bvec4) FOrdLessThan 306 307
309: 178(bool) Any 308
Store 301(b) 309
310: 178(bool) Load 301(b)
SelectionMerge 312 None
BranchConditional 310 311 312
311: Label
313: 7(fvec4) Load 9(v)
314: 7(fvec4) Load 11(uv4)
315: 179(bvec4) FOrdLessThanEqual 313 314
316: 178(bool) Any 315
Branch 312
312: Label
317: 178(bool) Phi 310 5 316 311
Store 301(b) 317
318: 178(bool) Load 301(b)
SelectionMerge 320 None
BranchConditional 318 319 320
319: Label
321: 7(fvec4) Load 9(v)
322: 7(fvec4) Load 11(uv4)
323: 179(bvec4) FOrdGreaterThan 321 322
324: 178(bool) Any 323
Branch 320
320: Label
325: 178(bool) Phi 318 312 324 319
Store 301(b) 325
326: 178(bool) Load 301(b)
SelectionMerge 328 None
BranchConditional 326 327 328
327: Label
329: 7(fvec4) Load 9(v)
330: 7(fvec4) Load 11(uv4)
331: 179(bvec4) FOrdGreaterThanEqual 329 330
332: 178(bool) Any 331
Branch 328
328: Label
333: 178(bool) Phi 326 320 332 327
Store 301(b) 333
334: 178(bool) Load 301(b)
SelectionMerge 336 None
BranchConditional 334 335 336
335: Label
337: 179(bvec4) Load 181(ub41)
339: 179(bvec4) Load 338(ub42)
340: 179(bvec4) IEqual 337 339
341: 178(bool) Any 340
Branch 336
336: Label
342: 178(bool) Phi 334 328 341 335
Store 301(b) 342
343: 178(bool) Load 301(b)
SelectionMerge 345 None
BranchConditional 343 344 345
344: Label
346: 179(bvec4) Load 181(ub41)
347: 179(bvec4) Load 338(ub42)
348: 179(bvec4) INotEqual 346 347
349: 178(bool) Any 348
Branch 345
345: Label
350: 178(bool) Phi 343 336 349 344
Store 301(b) 350
351: 178(bool) Load 301(b)
352: 179(bvec4) Load 181(ub41)
353: 178(bool) Any 352
354: 178(bool) LogicalAnd 351 353
Store 301(b) 354
355: 178(bool) Load 301(b)
279: 18(int) Load 22(ui)
280: 18(int) Load 22(ui)
281: 18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 278 279 280
282: 18(int) Load 20(i)
283: 18(int) IAdd 282 281
Store 20(i) 283
286: 141(int) Load 285(u)
289: 141(int) Load 288(uui)
290: 141(int) ExtInst 1(GLSL.std.450) 38(UMin) 286 289
291: 141(int) Load 285(u)
292: 141(int) IAdd 291 290
Store 285(u) 292
293: 141(int) Load 285(u)
294: 141(int) Load 288(uui)
295: 141(int) ExtInst 1(GLSL.std.450) 41(UMax) 293 294
296: 141(int) Load 285(u)
297: 141(int) IAdd 296 295
Store 285(u) 297
298: 141(int) Load 285(u)
299: 141(int) Load 288(uui)
300: 141(int) Load 288(uui)
301: 141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 298 299 300
302: 141(int) Load 285(u)
303: 141(int) IAdd 302 301
Store 285(u) 303
306: 6(float) Load 212(uf)
307: 178(bool) IsNan 306
Store 305(b) 307
308: 6(float) Load 188(f)
309: 178(bool) IsInf 308
Store 305(b) 309
310: 7(fvec4) Load 9(v)
311: 7(fvec4) Load 11(uv4)
312: 179(bvec4) FOrdLessThan 310 311
313: 178(bool) Any 312
Store 305(b) 313
314: 178(bool) Load 305(b)
SelectionMerge 316 None
BranchConditional 314 315 316
315: Label
317: 7(fvec4) Load 9(v)
318: 7(fvec4) Load 11(uv4)
319: 179(bvec4) FOrdLessThanEqual 317 318
320: 178(bool) Any 319
Branch 316
316: Label
321: 178(bool) Phi 314 5 320 315
Store 305(b) 321
322: 178(bool) Load 305(b)
SelectionMerge 324 None
BranchConditional 322 323 324
323: Label
325: 7(fvec4) Load 9(v)
326: 7(fvec4) Load 11(uv4)
327: 179(bvec4) FOrdGreaterThan 325 326
328: 178(bool) Any 327
Branch 324
324: Label
329: 178(bool) Phi 322 316 328 323
Store 305(b) 329
330: 178(bool) Load 305(b)
SelectionMerge 332 None
BranchConditional 330 331 332
331: Label
333: 7(fvec4) Load 9(v)
334: 7(fvec4) Load 11(uv4)
335: 179(bvec4) FOrdGreaterThanEqual 333 334
336: 178(bool) Any 335
Branch 332
332: Label
337: 178(bool) Phi 330 324 336 331
Store 305(b) 337
338: 178(bool) Load 305(b)
SelectionMerge 340 None
BranchConditional 338 339 340
339: Label
341: 179(bvec4) Load 181(ub41)
343: 179(bvec4) Load 342(ub42)
344: 179(bvec4) IEqual 341 343
345: 178(bool) Any 344
Branch 340
340: Label
346: 178(bool) Phi 338 332 345 339
Store 305(b) 346
347: 178(bool) Load 305(b)
SelectionMerge 349 None
BranchConditional 347 348 349
348: Label
350: 179(bvec4) Load 181(ub41)
351: 179(bvec4) Load 342(ub42)
352: 179(bvec4) INotEqual 350 351
353: 178(bool) Any 352
Branch 349
349: Label
354: 178(bool) Phi 347 340 353 348
Store 305(b) 354
355: 178(bool) Load 305(b)
356: 179(bvec4) Load 181(ub41)
357: 178(bool) All 356
357: 178(bool) Any 356
358: 178(bool) LogicalAnd 355 357
Store 301(b) 358
359: 178(bool) Load 301(b)
SelectionMerge 361 None
BranchConditional 359 360 361
360: Label
362: 179(bvec4) Load 181(ub41)
363: 179(bvec4) LogicalNot 362
364: 178(bool) Any 363
Branch 361
361: Label
365: 178(bool) Phi 359 345 364 360
Store 301(b) 365
366: 18(int) Load 20(i)
367: 18(int) Load 22(ui)
368: 18(int) IAdd 366 367
369: 18(int) Load 20(i)
370: 18(int) IMul 368 369
Store 305(b) 358
359: 178(bool) Load 305(b)
360: 179(bvec4) Load 181(ub41)
361: 178(bool) All 360
362: 178(bool) LogicalAnd 359 361
Store 305(b) 362
363: 178(bool) Load 305(b)
SelectionMerge 365 None
BranchConditional 363 364 365
364: Label
366: 179(bvec4) Load 181(ub41)
367: 179(bvec4) LogicalNot 366
368: 178(bool) Any 367
Branch 365
365: Label
369: 178(bool) Phi 363 349 368 364
Store 305(b) 369
370: 18(int) Load 20(i)
371: 18(int) Load 22(ui)
372: 18(int) ISub 370 371
372: 18(int) IAdd 370 371
373: 18(int) Load 20(i)
374: 18(int) SDiv 372 373
Store 20(i) 374
375: 18(int) Load 20(i)
376: 18(int) Load 22(ui)
377: 18(int) SMod 375 376
Store 20(i) 377
378: 18(int) Load 20(i)
379: 18(int) Load 22(ui)
380: 178(bool) IEqual 378 379
381: 178(bool) LogicalNot 380
SelectionMerge 383 None
BranchConditional 381 382 383
382: Label
384: 18(int) Load 20(i)
385: 18(int) Load 22(ui)
386: 178(bool) INotEqual 384 385
387: 18(int) Load 20(i)
388: 18(int) Load 22(ui)
389: 178(bool) IEqual 387 388
390: 178(bool) LogicalAnd 386 389
374: 18(int) IMul 372 373
375: 18(int) Load 22(ui)
376: 18(int) ISub 374 375
377: 18(int) Load 20(i)
378: 18(int) SDiv 376 377
Store 20(i) 378
379: 18(int) Load 20(i)
380: 18(int) Load 22(ui)
381: 18(int) SMod 379 380
Store 20(i) 381
382: 18(int) Load 20(i)
383: 18(int) Load 22(ui)
384: 178(bool) IEqual 382 383
385: 178(bool) LogicalNot 384
SelectionMerge 387 None
BranchConditional 385 386 387
386: Label
388: 18(int) Load 20(i)
389: 18(int) Load 22(ui)
390: 178(bool) INotEqual 388 389
391: 18(int) Load 20(i)
393: 178(bool) INotEqual 391 392
394: 178(bool) LogicalNotEqual 390 393
Branch 383
383: Label
395: 178(bool) Phi 380 361 394 382
SelectionMerge 397 None
BranchConditional 395 396 397
396: Label
398: 18(int) Load 20(i)
400: 18(int) IAdd 398 399
Store 20(i) 400
Branch 397
397: Label
401: 6(float) Load 211(uf)
402: 6(float) Load 211(uf)
403: 6(float) FAdd 401 402
404: 6(float) Load 211(uf)
405: 6(float) FMul 403 404
406: 6(float) Load 211(uf)
407: 6(float) FSub 405 406
408: 6(float) Load 211(uf)
409: 6(float) FDiv 407 408
Store 188(f) 409
410: 7(fvec4) Load 9(v)
411: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 410
412: 6(float) Load 188(f)
413: 6(float) FAdd 412 411
392: 18(int) Load 22(ui)
393: 178(bool) IEqual 391 392
394: 178(bool) LogicalAnd 390 393
395: 18(int) Load 20(i)
397: 178(bool) INotEqual 395 396
398: 178(bool) LogicalNotEqual 394 397
Branch 387
387: Label
399: 178(bool) Phi 384 365 398 386
SelectionMerge 401 None
BranchConditional 399 400 401
400: Label
402: 18(int) Load 20(i)
404: 18(int) IAdd 402 403
Store 20(i) 404
Branch 401
401: Label
405: 6(float) Load 212(uf)
406: 6(float) Load 212(uf)
407: 6(float) FAdd 405 406
408: 6(float) Load 212(uf)
409: 6(float) FMul 407 408
410: 6(float) Load 212(uf)
411: 6(float) FSub 409 410
412: 6(float) Load 212(uf)
413: 6(float) FDiv 411 412
Store 188(f) 413
414: 7(fvec4) Load 9(v)
415: 7(fvec4) Load 9(v)
416: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 414 415
417: 6(float) Load 188(f)
418: 6(float) FAdd 417 416
Store 188(f) 418
415: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 414
416: 6(float) Load 188(f)
417: 6(float) FAdd 416 415
Store 188(f) 417
418: 7(fvec4) Load 9(v)
419: 7(fvec4) Load 9(v)
420: 7(fvec4) Load 9(v)
421: 6(float) Dot 419 420
422: 6(float) Load 188(f)
423: 6(float) FAdd 422 421
Store 188(f) 423
424: 6(float) Load 188(f)
425: 6(float) Load 211(uf)
426: 6(float) FMul 424 425
427: 6(float) Load 188(f)
428: 6(float) FAdd 427 426
Store 188(f) 428
430: 7(fvec4) Load 9(v)
431: 429(fvec3) VectorShuffle 430 430 0 1 2
432: 7(fvec4) Load 9(v)
433: 429(fvec3) VectorShuffle 432 432 0 1 2
434: 429(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 431 433
435: 6(float) CompositeExtract 434 0
436: 6(float) Load 188(f)
437: 6(float) FAdd 436 435
Store 188(f) 437
438: 6(float) Load 188(f)
439: 6(float) Load 211(uf)
440: 178(bool) FOrdEqual 438 439
441: 178(bool) LogicalNot 440
SelectionMerge 443 None
BranchConditional 441 442 443
442: Label
444: 6(float) Load 188(f)
445: 6(float) Load 211(uf)
446: 178(bool) FOrdNotEqual 444 445
447: 6(float) Load 188(f)
449: 178(bool) FOrdNotEqual 447 448
450: 178(bool) LogicalAnd 446 449
Branch 443
443: Label
451: 178(bool) Phi 440 397 450 442
SelectionMerge 453 None
BranchConditional 451 452 453
452: Label
454: 6(float) Load 188(f)
456: 6(float) FAdd 454 455
Store 188(f) 456
Branch 453
453: Label
457: 18(int) Load 22(ui)
458: 18(int) Load 20(i)
459: 18(int) BitwiseAnd 458 457
Store 20(i) 459
461: 18(int) Load 20(i)
462: 18(int) BitwiseOr 461 460
Store 20(i) 462
463: 18(int) Load 22(ui)
464: 18(int) Load 20(i)
465: 18(int) BitwiseXor 464 463
Store 20(i) 465
467: 18(int) Load 20(i)
468: 18(int) SMod 467 466
Store 20(i) 468
469: 18(int) Load 20(i)
470: 18(int) ShiftRightArithmetic 469 392
Store 20(i) 470
471: 18(int) Load 22(ui)
472: 18(int) Load 20(i)
473: 18(int) ShiftLeftLogical 472 471
Store 20(i) 473
474: 18(int) Load 20(i)
475: 18(int) Not 474
Store 20(i) 475
476: 178(bool) Load 301(b)
477: 178(bool) LogicalNot 476
Store 301(b) 477
481: 178(bool) Load 301(b)
SelectionMerge 483 None
BranchConditional 481 482 492
482: Label
484: 18(int) Load 20(i)
485: 6(float) ConvertSToF 484
486: 7(fvec4) CompositeConstruct 485 485 485 485
487: 6(float) Load 188(f)
488: 7(fvec4) CompositeConstruct 487 487 487 487
489: 7(fvec4) FAdd 486 488
490: 7(fvec4) Load 9(v)
491: 7(fvec4) FAdd 489 490
Store 480 491
Branch 483
492: Label
493: 7(fvec4) Load 9(v)
Store 480 493
Branch 483
483: Label
494: 7(fvec4) Load 480
Store 479(FragColor) 494
420: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 418 419
421: 6(float) Load 188(f)
422: 6(float) FAdd 421 420
Store 188(f) 422
423: 7(fvec4) Load 9(v)
424: 7(fvec4) Load 9(v)
425: 6(float) Dot 423 424
426: 6(float) Load 188(f)
427: 6(float) FAdd 426 425
Store 188(f) 427
428: 6(float) Load 188(f)
429: 6(float) Load 212(uf)
430: 6(float) FMul 428 429
431: 6(float) Load 188(f)
432: 6(float) FAdd 431 430
Store 188(f) 432
434: 7(fvec4) Load 9(v)
435: 433(fvec3) VectorShuffle 434 434 0 1 2
436: 7(fvec4) Load 9(v)
437: 433(fvec3) VectorShuffle 436 436 0 1 2
438: 433(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 435 437
439: 6(float) CompositeExtract 438 0
440: 6(float) Load 188(f)
441: 6(float) FAdd 440 439
Store 188(f) 441
442: 6(float) Load 188(f)
443: 6(float) Load 212(uf)
444: 178(bool) FOrdEqual 442 443
445: 178(bool) LogicalNot 444
SelectionMerge 447 None
BranchConditional 445 446 447
446: Label
448: 6(float) Load 188(f)
449: 6(float) Load 212(uf)
450: 178(bool) FOrdNotEqual 448 449
451: 6(float) Load 188(f)
453: 178(bool) FOrdNotEqual 451 452
454: 178(bool) LogicalAnd 450 453
Branch 447
447: Label
455: 178(bool) Phi 444 401 454 446
SelectionMerge 457 None
BranchConditional 455 456 457
456: Label
458: 6(float) Load 188(f)
460: 6(float) FAdd 458 459
Store 188(f) 460
Branch 457
457: Label
461: 18(int) Load 22(ui)
462: 18(int) Load 20(i)
463: 18(int) BitwiseAnd 462 461
Store 20(i) 463
465: 18(int) Load 20(i)
466: 18(int) BitwiseOr 465 464
Store 20(i) 466
467: 18(int) Load 22(ui)
468: 18(int) Load 20(i)
469: 18(int) BitwiseXor 468 467
Store 20(i) 469
471: 18(int) Load 20(i)
472: 18(int) SMod 471 470
Store 20(i) 472
473: 18(int) Load 20(i)
474: 18(int) ShiftRightArithmetic 473 396
Store 20(i) 474
475: 18(int) Load 22(ui)
476: 18(int) Load 20(i)
477: 18(int) ShiftLeftLogical 476 475
Store 20(i) 477
478: 18(int) Load 20(i)
479: 18(int) Not 478
Store 20(i) 479
480: 178(bool) Load 305(b)
481: 178(bool) LogicalNot 480
Store 305(b) 481
485: 178(bool) Load 305(b)
SelectionMerge 487 None
BranchConditional 485 486 496
486: Label
488: 18(int) Load 20(i)
489: 6(float) ConvertSToF 488
490: 7(fvec4) CompositeConstruct 489 489 489 489
491: 6(float) Load 188(f)
492: 7(fvec4) CompositeConstruct 491 491 491 491
493: 7(fvec4) FAdd 490 492
494: 7(fvec4) Load 9(v)
495: 7(fvec4) FAdd 493 494
Store 484 495
Branch 487
496: Label
497: 7(fvec4) Load 9(v)
Store 484 497
Branch 487
487: Label
498: 7(fvec4) Load 484
Store 483(FragColor) 498
Return
FunctionEnd

View File

@ -7,7 +7,7 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 55
// Id's are bound by 56
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -82,7 +82,8 @@ Linked fragment stage:
51: 6(float) Load 50(blend)
52: 6(float) Load 8(blendscale)
53: 6(float) FMul 51 52
54: 10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 45 48 53
Store 44(gl_FragColor) 54
54: 10(fvec4) CompositeConstruct 53 53 53 53
55: 10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 45 48 54
Store 44(gl_FragColor) 55
Return
FunctionEnd

View File

@ -8,12 +8,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 290
// Id's are bound by 291
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 289 47
EntryPoint Fragment 4 "main" 290 47
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"
@ -39,8 +39,8 @@ Linked fragment stage:
Name 276 "gl_FragColor"
Name 279 "u"
Name 282 "blend"
Name 288 "scale"
Name 289 "t"
Name 289 "scale"
Name 290 "t"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -103,9 +103,9 @@ Linked fragment stage:
279(u): 278(ptr) Variable UniformConstant
281: TypePointer UniformConstant 6(float)
282(blend): 281(ptr) Variable UniformConstant
287: TypePointer UniformConstant 45(fvec2)
288(scale): 287(ptr) Variable UniformConstant
289(t): 46(ptr) Variable Input
288: TypePointer UniformConstant 45(fvec2)
289(scale): 288(ptr) Variable UniformConstant
290(t): 46(ptr) Variable Input
4(main): 2 Function None 3
5: Label
8(blendscale): 7(ptr) Variable Function
@ -370,7 +370,8 @@ Linked fragment stage:
283: 6(float) Load 282(blend)
284: 6(float) Load 8(blendscale)
285: 6(float) FMul 283 284
286: 22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 285
Store 276(gl_FragColor) 286
286: 22(fvec4) CompositeConstruct 285 285 285 285
287: 22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 286
Store 276(gl_FragColor) 287
Return
FunctionEnd

View File

@ -2,5 +2,5 @@
// For the version, it uses the latest git tag followed by the number of commits.
// For the date, it uses the current date (when then script is run).
#define GLSLANG_REVISION "SPIRV99.844"
#define GLSLANG_REVISION "SPIRV99.845"
#define GLSLANG_DATE "13-Dec-2015"