d19dfcade32800652af41c9c37f2f5227afe5764
[mesa.git] / src / gallium / auxiliary / tgsi / tgsi-instruction-set.txt
1 TGSI Instruction Specification
2 ==============================
3 ==============================
4
5
6 1 Instruction Set Operations
7 =============================
8
9
10 1.1 GL_NV_vertex_program
11 -------------------------
12
13
14 1.1.1 ARL - Address Register Load
15
16 dst.x = floor(src.x)
17 dst.y = floor(src.y)
18 dst.z = floor(src.z)
19 dst.w = floor(src.w)
20
21
22 1.1.2 MOV - Move
23
24 dst.x = src.x
25 dst.y = src.y
26 dst.z = src.z
27 dst.w = src.w
28
29
30 1.1.3 LIT - Light Coefficients
31
32 dst.x = 1.0
33 dst.y = max(src.x, 0.0)
34 dst.z = (src.x > 0.0) ? pow(max(src.y, 0.0), clamp(src.w, -128.0, 128.0)) : 0.0
35 dst.w = 1.0
36
37
38 1.1.4 RCP - Reciprocal
39
40 dst.x = 1.0 / src.x
41 dst.y = 1.0 / src.x
42 dst.z = 1.0 / src.x
43 dst.w = 1.0 / src.x
44
45
46 1.1.5 RSQ - Reciprocal Square Root
47
48 dst.x = 1.0 / sqrt(abs(src.x))
49 dst.y = 1.0 / sqrt(abs(src.x))
50 dst.z = 1.0 / sqrt(abs(src.x))
51 dst.w = 1.0 / sqrt(abs(src.x))
52
53
54 1.1.6 EXP - Approximate Exponential Base 2
55
56 dst.x = pow(2.0, floor(src.x))
57 dst.y = src.x - floor(src.x)
58 dst.z = pow(2.0, src.x)
59 dst.w = 1.0
60
61
62 1.1.7 LOG - Approximate Logarithm Base 2
63
64 dst.x = floor(lg2(abs(src.x)))
65 dst.y = abs(src.x) / pow(2.0, floor(lg2(abs(src.x))))
66 dst.z = lg2(abs(src.x))
67 dst.w = 1.0
68
69
70 1.1.8 MUL - Multiply
71
72 dst.x = src0.x * src1.x
73 dst.y = src0.y * src1.y
74 dst.z = src0.z * src1.z
75 dst.w = src0.w * src1.w
76
77
78 1.1.9 ADD - Add
79
80 dst.x = src0.x + src1.x
81 dst.y = src0.y + src1.y
82 dst.z = src0.z + src1.z
83 dst.w = src0.w + src1.w
84
85
86 1.1.10 DP3 - 3-component Dot Product
87
88 dst.x = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z
89 dst.y = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z
90 dst.z = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z
91 dst.w = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z
92
93
94 1.1.11 DP4 - 4-component Dot Product
95
96 dst.x = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z + src0.w * src1.w
97 dst.y = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z + src0.w * src1.w
98 dst.z = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z + src0.w * src1.w
99 dst.w = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z + src0.w * src1.w
100
101
102 1.1.12 DST - Distance Vector
103
104 dst.x = 1.0
105 dst.y = src0.y * src1.y
106 dst.z = src0.z
107 dst.w = src1.w
108
109
110 1.1.13 MIN - Minimum
111
112 dst.x = min(src0.x, src1.x)
113 dst.y = min(src0.y, src1.y)
114 dst.z = min(src0.z, src1.z)
115 dst.w = min(src0.w, src1.w)
116
117
118 1.1.14 MAX - Maximum
119
120 dst.x = max(src0.x, src1.x)
121 dst.y = max(src0.y, src1.y)
122 dst.z = max(src0.z, src1.z)
123 dst.w = max(src0.w, src1.w)
124
125
126 1.1.15 SLT - Set On Less Than
127
128 dst.x = (src0.x < src1.x) ? 1.0 : 0.0
129 dst.y = (src0.y < src1.y) ? 1.0 : 0.0
130 dst.z = (src0.z < src1.z) ? 1.0 : 0.0
131 dst.w = (src0.w < src1.w) ? 1.0 : 0.0
132
133
134 1.1.16 SGE - Set On Greater Equal Than
135
136 dst.x = (src0.x >= src1.x) ? 1.0 : 0.0
137 dst.y = (src0.y >= src1.y) ? 1.0 : 0.0
138 dst.z = (src0.z >= src1.z) ? 1.0 : 0.0
139 dst.w = (src0.w >= src1.w) ? 1.0 : 0.0
140
141
142 1.1.17 MAD - Multiply And Add
143
144 dst.x = src0.x * src1.x + src2.x
145 dst.y = src0.y * src1.y + src2.y
146 dst.z = src0.z * src1.z + src2.z
147 dst.w = src0.w * src1.w + src2.w
148
149
150 1.2 GL_ATI_fragment_shader
151 ---------------------------
152
153
154 1.2.1 SUB - Subtract
155
156 dst.x = src0.x - src1.x
157 dst.y = src0.y - src1.y
158 dst.z = src0.z - src1.z
159 dst.w = src0.w - src1.w
160
161
162 1.2.2 DOT3 - 3-component Dot Product
163
164 Alias for DP3.
165
166
167 1.2.3 DOT4 - 4-component Dot Product
168
169 Alias for DP4.
170
171
172 1.2.4 LERP - Linear Interpolate
173
174 dst.x = src0.x * (src1.x - src2.x) + src2.x
175 dst.y = src0.y * (src1.y - src2.y) + src2.y
176 dst.z = src0.z * (src1.z - src2.z) + src2.z
177 dst.w = src0.w * (src1.w - src2.w) + src2.w
178
179
180 1.2.5 CND - Condition
181
182 dst.x = (src2.x > 0.5) ? src0.x : src1.x
183 dst.y = (src2.y > 0.5) ? src0.y : src1.y
184 dst.z = (src2.z > 0.5) ? src0.z : src1.z
185 dst.w = (src2.w > 0.5) ? src0.w : src1.w
186
187
188 1.2.6 CND0 - Condition Zero
189
190 dst.x = (src2.x >= 0.0) ? src0.x : src1.x
191 dst.y = (src2.y >= 0.0) ? src0.y : src1.y
192 dst.z = (src2.z >= 0.0) ? src0.z : src1.z
193 dst.w = (src2.w >= 0.0) ? src0.w : src1.w
194
195
196 1.2.7 DOT2ADD - 2-component Dot Product And Add
197
198 dst.x = src0.x * src1.x + src0.y * src1.y + src2.x
199 dst.y = src0.x * src1.x + src0.y * src1.y + src2.x
200 dst.z = src0.x * src1.x + src0.y * src1.y + src2.x
201 dst.w = src0.x * src1.x + src0.y * src1.y + src2.x
202
203
204 1.3 GL_EXT_vertex_shader
205 -------------------------
206
207
208 1.3.1 INDEX - Array Lookup
209
210 Considered for removal from language.
211
212
213 1.3.2 NEGATE - Negate
214
215 Considered for removal from language.
216
217
218 1.3.3 MADD - Multiply And Add
219
220 Alias for MAD.
221
222
223 1.3.4 FRAC - Fraction
224
225 dst.x = src.x - floor(src.x)
226 dst.y = src.y - floor(src.y)
227 dst.z = src.z - floor(src.z)
228 dst.w = src.w - floor(src.w)
229
230
231 1.3.5 SETGE - Set On Greater Equal
232
233 Alias for SGE.
234
235
236 1.3.6 SETLT - Set On Less Than
237
238 Alias for SLT.
239
240
241 1.3.7 CLAMP - Clamp
242
243 dst.x = clamp(src0.x, src1.x, src2.x)
244 dst.y = clamp(src0.y, src1.y, src2.y)
245 dst.z = clamp(src0.z, src1.z, src2.z)
246 dst.w = clamp(src0.w, src1.w, src2.w)
247
248
249 1.3.8 FLOOR - Floor
250
251 dst.x = floor(src.x)
252 dst.y = floor(src.y)
253 dst.z = floor(src.z)
254 dst.w = floor(src.w)
255
256
257 1.3.9 ROUND - Round
258
259 dst.x = round(src.x)
260 dst.y = round(src.y)
261 dst.z = round(src.z)
262 dst.w = round(src.w)
263
264
265 1.3.10 EXPBASE2 - Exponent Base 2
266
267 dst.x = pow(2.0, src.x)
268 dst.y = pow(2.0, src.x)
269 dst.z = pow(2.0, src.x)
270 dst.w = pow(2.0, src.x)
271
272
273 1.3.11 LOGBASE2 - Logarithm Base 2
274
275 dst.x = lg2(src.x)
276 dst.y = lg2(src.x)
277 dst.z = lg2(src.x)
278 dst.w = lg2(src.x)
279
280
281 1.3.12 POWER - Power
282
283 dst.x = pow(src0.x, src1.x)
284 dst.y = pow(src0.x, src1.x)
285 dst.z = pow(src0.x, src1.x)
286 dst.w = pow(src0.x, src1.x)
287
288
289 1.3.13 RECIP - Reciprocal
290
291 Alias for RCP.
292
293
294 1.3.14 RECIPSQRT - Reciprocal Square Root
295
296 Alias for RSQ.
297
298
299 1.3.15 CROSSPRODUCT - Cross Product
300
301 dst.x = src0.y * src1.z - src1.y * src0.z
302 dst.y = src0.z * src1.x - src1.z * src0.x
303 dst.z = src0.x * src1.y - src1.x * src0.y
304 dst.w = 1.0
305
306
307 1.3.16 MULTIPLYMATRIX - Multiply Matrix
308
309 Considered for removal from language.
310
311
312 1.4 GL_NV_vertex_program1_1
313 ----------------------------
314
315
316 1.4.1 ABS - Absolute
317
318 dst.x = abs(src.x)
319 dst.y = abs(src.y)
320 dst.z = abs(src.z)
321 dst.w = abs(src.w)
322
323
324 1.4.2 RCC - Reciprocal Clamped
325
326 dst.x = (1.0 / src.x) > 0.0 ? clamp(1.0 / src.x, 5.42101e-020, 1.884467e+019) : clamp(1.0 / src.x, -1.884467e+019, -5.42101e-020)
327 dst.y = (1.0 / src.x) > 0.0 ? clamp(1.0 / src.x, 5.42101e-020, 1.884467e+019) : clamp(1.0 / src.x, -1.884467e+019, -5.42101e-020)
328 dst.z = (1.0 / src.x) > 0.0 ? clamp(1.0 / src.x, 5.42101e-020, 1.884467e+019) : clamp(1.0 / src.x, -1.884467e+019, -5.42101e-020)
329 dst.w = (1.0 / src.x) > 0.0 ? clamp(1.0 / src.x, 5.42101e-020, 1.884467e+019) : clamp(1.0 / src.x, -1.884467e+019, -5.42101e-020)
330
331
332 1.4.3 DPH - Homogeneous Dot Product
333
334 dst.x = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z + src1.w
335 dst.y = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z + src1.w
336 dst.z = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z + src1.w
337 dst.w = src0.x * src1.x + src0.y * src1.y + src0.z * src1.z + src1.w
338
339
340 1.5 GL_NV_fragment_program
341 ---------------------------
342
343
344 1.5.1 COS - Cosine
345
346 dst.x = cos(src.x)
347 dst.y = cos(src.x)
348 dst.z = cos(src.x)
349 dst.w = cos(src.w)
350
351
352 1.5.2 DDX - Derivative Relative To X
353
354 dst.x = partialx(src.x)
355 dst.y = partialx(src.y)
356 dst.z = partialx(src.z)
357 dst.w = partialx(src.w)
358
359
360 1.5.3 DDY - Derivative Relative To Y
361
362 dst.x = partialy(src.x)
363 dst.y = partialy(src.y)
364 dst.z = partialy(src.z)
365 dst.w = partialy(src.w)
366
367
368 1.5.4 EX2 - Exponential Base 2
369
370 Alias for EXPBASE2.
371
372
373 1.5.5 FLR - Floor
374
375 Alias for FLOOR.
376
377
378 1.5.6 FRC - Fraction
379
380 Alias for FRAC.
381
382
383 1.5.7 KILP - Predicated Discard
384
385 TBD
386
387
388 1.5.8 LG2 - Logarithm Base 2
389
390 Alias for LOGBASE2.
391
392
393 1.5.9 LRP - Linear Interpolate
394
395 Alias for LERP.
396
397
398 1.5.10 PK2H - Pack Two 16-bit Floats
399
400 TBD
401
402
403 1.5.11 PK2US - Pack Two Unsigned 16-bit Scalars
404
405 TBD
406
407
408 1.5.12 PK4B - Pack Four Signed 8-bit Scalars
409
410 TBD
411
412
413 1.5.13 PK4UB - Pack Four Unsigned 8-bit Scalars
414
415 TBD
416
417
418 1.5.14 POW - Power
419
420 Alias for POWER.
421
422
423 1.5.15 RFL - Reflection Vector
424
425 dst.x = 2.0 * (src0.x * src1.x + src0.y * src1.y + src0.z * src1.z) / (src0.x * src0.x + src0.y * src0.y + src0.z * src0.z) * src0.x - src1.x
426 dst.y = 2.0 * (src0.x * src1.x + src0.y * src1.y + src0.z * src1.z) / (src0.x * src0.x + src0.y * src0.y + src0.z * src0.z) * src0.y - src1.y
427 dst.z = 2.0 * (src0.x * src1.x + src0.y * src1.y + src0.z * src1.z) / (src0.x * src0.x + src0.y * src0.y + src0.z * src0.z) * src0.z - src1.z
428 dst.w = 1.0
429
430
431 1.5.16 SEQ - Set On Equal
432
433 dst.x = (src0.x == src1.x) ? 1.0 : 0.0
434 dst.y = (src0.y == src1.y) ? 1.0 : 0.0
435 dst.z = (src0.z == src1.z) ? 1.0 : 0.0
436 dst.w = (src0.w == src1.w) ? 1.0 : 0.0
437
438
439 1.5.17 SFL - Set On False
440
441 dst.x = 0.0
442 dst.y = 0.0
443 dst.z = 0.0
444 dst.w = 0.0
445
446
447 1.5.18 SGT - Set On Greater Than
448
449 dst.x = (src0.x > src1.x) ? 1.0 : 0.0
450 dst.y = (src0.y > src1.y) ? 1.0 : 0.0
451 dst.z = (src0.z > src1.z) ? 1.0 : 0.0
452 dst.w = (src0.w > src1.w) ? 1.0 : 0.0
453
454
455 1.5.19 SIN - Sine
456
457 dst.x = sin(src.x)
458 dst.y = sin(src.x)
459 dst.z = sin(src.x)
460 dst.w = sin(src.w)
461
462
463 1.5.20 SLE - Set On Less Equal Than
464
465 dst.x = (src0.x <= src1.x) ? 1.0 : 0.0
466 dst.y = (src0.y <= src1.y) ? 1.0 : 0.0
467 dst.z = (src0.z <= src1.z) ? 1.0 : 0.0
468 dst.w = (src0.w <= src1.w) ? 1.0 : 0.0
469
470
471 1.5.21 SNE - Set On Not Equal
472
473 dst.x = (src0.x != src1.x) ? 1.0 : 0.0
474 dst.y = (src0.y != src1.y) ? 1.0 : 0.0
475 dst.z = (src0.z != src1.z) ? 1.0 : 0.0
476 dst.w = (src0.w != src1.w) ? 1.0 : 0.0
477
478
479 1.5.22 STR - Set On True
480
481 dst.x = 1.0
482 dst.y = 1.0
483 dst.z = 1.0
484 dst.w = 1.0
485
486
487 1.5.23 TEX - Texture Lookup
488
489 TBD
490
491
492 1.5.24 TXD - Texture Lookup with Derivatives
493
494 TBD
495
496
497 1.5.25 TXP - Projective Texture Lookup
498
499 TBD
500
501
502 1.5.26 UP2H - Unpack Two 16-Bit Floats
503
504 TBD
505
506
507 1.5.27 UP2US - Unpack Two Unsigned 16-Bit Scalars
508
509 TBD
510
511
512 1.5.28 UP4B - Unpack Four Signed 8-Bit Values
513
514 TBD
515
516
517 1.5.29 UP4UB - Unpack Four Unsigned 8-Bit Scalars
518
519 TBD
520
521
522 1.5.30 X2D - 2D Coordinate Transformation
523
524 dst.x = src0.x + src1.x * src2.x + src1.y * src2.y
525 dst.y = src0.y + src1.x * src2.z + src1.y * src2.w
526 dst.z = src0.x + src1.x * src2.x + src1.y * src2.y
527 dst.w = src0.y + src1.x * src2.z + src1.y * src2.w
528
529
530 1.6 GL_NV_vertex_program2
531 --------------------------
532
533
534 1.6.1 ARA - Address Register Add
535
536 TBD
537
538
539 1.6.2 ARR - Address Register Load With Round
540
541 dst.x = round(src.x)
542 dst.y = round(src.y)
543 dst.z = round(src.z)
544 dst.w = round(src.w)
545
546
547 1.6.3 BRA - Branch
548
549 TBD
550
551
552 1.6.4 CAL - Subroutine Call
553
554 push(pc)
555 pc = target
556
557
558 1.6.5 RET - Subroutine Call Return
559
560 pc = pop()
561
562
563 1.6.6 SSG - Set Sign
564
565 dst.x = (src.x > 0.0) ? 1.0 : (src.x < 0.0) ? -1.0 : 0.0
566 dst.y = (src.y > 0.0) ? 1.0 : (src.y < 0.0) ? -1.0 : 0.0
567 dst.z = (src.z > 0.0) ? 1.0 : (src.z < 0.0) ? -1.0 : 0.0
568 dst.w = (src.w > 0.0) ? 1.0 : (src.w < 0.0) ? -1.0 : 0.0
569
570
571 1.7 GL_ARB_vertex_program
572 --------------------------
573
574
575 1.7.1 SWZ - Extended Swizzle
576
577 dst.x = src.x
578 dst.y = src.y
579 dst.z = src.z
580 dst.w = src.w
581
582
583 1.7.2 XPD - Cross Product
584
585 Alias for CROSSPRODUCT.
586
587
588 1.8 GL_ARB_fragment_program
589 ----------------------------
590
591
592 1.8.1 CMP - Compare
593
594 dst.x = (src0.x < 0.0) ? src1.x : src2.x
595 dst.y = (src0.y < 0.0) ? src1.y : src2.y
596 dst.z = (src0.z < 0.0) ? src1.z : src2.z
597 dst.w = (src0.w < 0.0) ? src1.w : src2.w
598
599
600 1.8.2 KIL - Conditional Discard
601
602 TBD
603
604
605 1.8.3 SCS - Sine Cosine
606
607 dst.x = cos(src.x)
608 dst.y = sin(src.x)
609 dst.z = 0.0
610 dst.y = 1.0
611
612
613 1.8.4 TXB - Texture Lookup With Bias
614
615 TBD
616
617
618 1.9 GL_NV_fragment_program2
619 ----------------------------
620
621
622 1.9.1 NRM - 3-component Vector Normalise
623
624 dst.x = src.x / (src.x * src.x + src.y * src.y + src.z * src.z)
625 dst.y = src.y / (src.x * src.x + src.y * src.y + src.z * src.z)
626 dst.z = src.z / (src.x * src.x + src.y * src.y + src.z * src.z)
627 dst.w = 1.0
628
629
630 1.9.2 DIV - Divide
631
632 dst.x = src0.x / src1.x
633 dst.y = src0.y / src1.y
634 dst.z = src0.z / src1.z
635 dst.w = src0.w / src1.w
636
637
638 1.9.3 DP2 - 2-component Dot Product
639
640 dst.x = src0.x * src1.x + src0.y * src1.y
641 dst.y = src0.x * src1.x + src0.y * src1.y
642 dst.z = src0.x * src1.x + src0.y * src1.y
643 dst.w = src0.x * src1.x + src0.y * src1.y
644
645
646 1.9.4 DP2A - 2-component Dot Product And Add
647
648 Alias for DOT2ADD.
649
650
651 1.9.5 TXL - Texture Lookup With LOD
652
653 TBD
654
655
656 1.9.6 BRK - Break
657
658 TBD
659
660
661 1.9.7 IF - If
662
663 TBD
664
665
666 1.9.8 LOOP - Loop
667
668 TBD
669
670
671 1.9.9 REP - Repeat
672
673 TBD
674
675
676 1.9.10 ELSE - Else
677
678 TBD
679
680
681 1.9.11 ENDIF - End If
682
683 TBD
684
685
686 1.9.12 ENDLOOP - End Loop
687
688 TBD
689
690
691 1.9.13 ENDREP - End Repeat
692
693 TBD
694
695
696 1.10 GL_NV_vertex_program3
697 ---------------------------
698
699
700 1.10.1 PUSHA - Push Address Register On Stack
701
702 push(src.x)
703 push(src.y)
704 push(src.z)
705 push(src.w)
706
707
708 1.10.2 POPA - Pop Address Register From Stack
709
710 dst.w = pop()
711 dst.z = pop()
712 dst.y = pop()
713 dst.x = pop()
714
715
716 1.11 GL_NV_gpu_program4
717 ------------------------
718
719
720 1.11.1 CEIL - Ceiling
721
722 dst.x = ceil(src.x)
723 dst.y = ceil(src.y)
724 dst.z = ceil(src.z)
725 dst.w = ceil(src.w)
726
727
728 1.11.2 I2F - Integer To Float
729
730 dst.x = (float) src.x
731 dst.y = (float) src.y
732 dst.z = (float) src.z
733 dst.w = (float) src.w
734
735
736 1.11.3 NOT - Bitwise Not
737
738 dst.x = ~src.x
739 dst.y = ~src.y
740 dst.z = ~src.z
741 dst.w = ~src.w
742
743
744 1.11.4 TRUNC - Truncate
745
746 dst.x = trunc(src.x)
747 dst.y = trunc(src.y)
748 dst.z = trunc(src.z)
749 dst.w = trunc(src.w)
750
751
752 1.11.5 SHL - Shift Left
753
754 dst.x = src0.x << src1.x
755 dst.y = src0.y << src1.x
756 dst.z = src0.z << src1.x
757 dst.w = src0.w << src1.x
758
759
760 1.11.6 SHR - Shift Right
761
762 dst.x = src0.x >> src1.x
763 dst.y = src0.y >> src1.x
764 dst.z = src0.z >> src1.x
765 dst.w = src0.w >> src1.x
766
767
768 1.11.7 AND - Bitwise And
769
770 dst.x = src0.x & src1.x
771 dst.y = src0.y & src1.y
772 dst.z = src0.z & src1.z
773 dst.w = src0.w & src1.w
774
775
776 1.11.8 OR - Bitwise Or
777
778 dst.x = src0.x | src1.x
779 dst.y = src0.y | src1.y
780 dst.z = src0.z | src1.z
781 dst.w = src0.w | src1.w
782
783
784 1.11.9 MOD - Modulus
785
786 dst.x = src0.x % src1.x
787 dst.y = src0.y % src1.y
788 dst.z = src0.z % src1.z
789 dst.w = src0.w % src1.w
790
791
792 1.11.10 XOR - Bitwise Xor
793
794 dst.x = src0.x ^ src1.x
795 dst.y = src0.y ^ src1.y
796 dst.z = src0.z ^ src1.z
797 dst.w = src0.w ^ src1.w
798
799
800 1.11.11 SAD - Sum Of Absolute Differences
801
802 dst.x = abs(src0.x - src1.x) + src2.x
803 dst.y = abs(src0.y - src1.y) + src2.y
804 dst.z = abs(src0.z - src1.z) + src2.z
805 dst.w = abs(src0.w - src1.w) + src2.w
806
807
808 1.11.12 TXF - Texel Fetch
809
810 TBD
811
812
813 1.11.13 TXQ - Texture Size Query
814
815 TBD
816
817
818 1.11.14 CONT - Continue
819
820 TBD
821
822
823 1.12 GL_NV_geometry_program4
824 -----------------------------
825
826
827 1.12.1 EMIT - Emit
828
829 TBD
830
831
832 1.12.2 ENDPRIM - End Primitive
833
834 TBD
835
836
837 1.13 GLSL
838 ----------
839
840
841 1.13.1 BGNLOOP2 - Begin Loop
842
843 TBD
844
845
846 1.13.2 BGNSUB - Begin Subroutine
847
848 TBD
849
850
851 1.13.3 ENDLOOP2 - End Loop
852
853 TBD
854
855
856 1.13.4 ENDSUB - End Subroutine
857
858 TBD
859
860
861 1.13.5 INT - Truncate
862
863 Alias for TRUNC.
864
865
866 1.13.6 NOISE1 - 1D Noise
867
868 TBD
869
870
871 1.13.7 NOISE2 - 2D Noise
872
873 TBD
874
875
876 1.13.8 NOISE3 - 3D Noise
877
878 TBD
879
880
881 1.13.9 NOISE4 - 4D Noise
882
883 TBD
884
885
886 1.13.10 NOP - No Operation
887
888 Do nothing.
889
890
891 1.14 ps_1_1
892 ------------
893
894
895 1.14.1 TEXKILL - Conditional Discard
896
897 Alias for KIL.
898
899
900 1.15 ps_1_4
901 ------------
902
903
904 1.15.1 TEXLD - Texture Lookup
905
906 Alias for TEX.
907
908
909 1.16 ps_2_0
910 ------------
911
912
913 1.16.1 M4X4 - Multiply Matrix
914
915 Alias for MULTIPLYMATRIX.
916
917
918 1.16.2 M4X3 - Multiply Matrix
919
920 Considered for removal from language.
921
922
923 1.16.3 M3X4 - Multiply Matrix
924
925 Considered for removal from language.
926
927
928 1.16.4 M3X3 - Multiply Matrix
929
930 Considered for removal from language.
931
932
933 1.16.5 M3X2 - Multiply Matrix
934
935 Considered for removal from language.
936
937
938 1.16.6 CRS - Cross Product
939
940 Alias for XPD.
941
942
943 1.16.7 NRM4 - 4-component Vector Normalise
944
945 dst.x = src.x / (src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w)
946 dst.y = src.y / (src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w)
947 dst.z = src.z / (src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w)
948 dst.w = src.w / (src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w)
949
950
951 1.16.8 SINCOS - Sine Cosine
952
953 Alias for SCS.
954
955
956 1.16.9 TEXLDB - Texture Lookup With Bias
957
958 Alias for TXB.
959
960
961 1.16.10 DP2ADD - 2-component Dot Product And Add
962
963 Alias for DP2A.
964
965
966 1.17 ps_2_x
967 ------------
968
969
970 1.17.1 CALL - Subroutine Call
971
972 Alias for CAL.
973
974
975 1.17.2 CALLNZ - Subroutine Call If Not Zero
976
977 TBD
978
979
980 1.17.3 IFC - If
981
982 TBD
983
984
985 1.17.4 BREAK - Break
986
987 Alias for BRK.
988
989
990 1.17.5 BREAKC - Break Conditional
991
992 TBD
993
994
995 1.17.6 DSX - Derivative Relative To X
996
997 Alias for DDX.
998
999
1000 1.17.7 DSY - Derivative Relative To Y
1001
1002 Alias for DDY.
1003
1004
1005 1.17.8 TEXLDD - Texture Lookup with Derivatives
1006
1007 Alias for TXD.
1008
1009
1010 1.18 vs_1_1
1011 ------------
1012
1013
1014 1.18.1 EXPP - Approximate Exponential Base 2
1015
1016 Alias for EXP.
1017
1018
1019 1.18.2 LOGP - Logarithm Base 2
1020
1021 Alias for LG2.
1022