python/retrace: Use colors on windows console.
[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 - Exponential 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 discard
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 pc = target
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 if (src.x < 0.0 || src.y < 0.0 || src.z < 0.0 || src.w < 0.0)
603 discard
604 endif
605
606
607 1.8.3 SCS - Sine Cosine
608
609 dst.x = cos(src.x)
610 dst.y = sin(src.x)
611 dst.z = 0.0
612 dst.y = 1.0
613
614
615 1.8.4 TXB - Texture Lookup With Bias
616
617 TBD
618
619
620 1.9 GL_NV_fragment_program2
621 ----------------------------
622
623
624 1.9.1 NRM - 3-component Vector Normalise
625
626 dst.x = src.x / (src.x * src.x + src.y * src.y + src.z * src.z)
627 dst.y = src.y / (src.x * src.x + src.y * src.y + src.z * src.z)
628 dst.z = src.z / (src.x * src.x + src.y * src.y + src.z * src.z)
629 dst.w = 1.0
630
631
632 1.9.2 DIV - Divide
633
634 dst.x = src0.x / src1.x
635 dst.y = src0.y / src1.y
636 dst.z = src0.z / src1.z
637 dst.w = src0.w / src1.w
638
639
640 1.9.3 DP2 - 2-component Dot Product
641
642 dst.x = src0.x * src1.x + src0.y * src1.y
643 dst.y = src0.x * src1.x + src0.y * src1.y
644 dst.z = src0.x * src1.x + src0.y * src1.y
645 dst.w = src0.x * src1.x + src0.y * src1.y
646
647
648 1.9.4 DP2A - 2-component Dot Product And Add
649
650 Alias for DOT2ADD.
651
652
653 1.9.5 TXL - Texture Lookup With LOD
654
655 TBD
656
657
658 1.9.6 BRK - Break
659
660 TBD
661
662
663 1.9.7 IF - If
664
665 TBD
666
667
668 1.9.8 LOOP - Loop
669
670 TBD
671
672
673 1.9.9 REP - Repeat
674
675 TBD
676
677
678 1.9.10 ELSE - Else
679
680 TBD
681
682
683 1.9.11 ENDIF - End If
684
685 TBD
686
687
688 1.9.12 ENDLOOP - End Loop
689
690 TBD
691
692
693 1.9.13 ENDREP - End Repeat
694
695 TBD
696
697
698 1.10 GL_NV_vertex_program3
699 ---------------------------
700
701
702 1.10.1 PUSHA - Push Address Register On Stack
703
704 push(src.x)
705 push(src.y)
706 push(src.z)
707 push(src.w)
708
709
710 1.10.2 POPA - Pop Address Register From Stack
711
712 dst.w = pop()
713 dst.z = pop()
714 dst.y = pop()
715 dst.x = pop()
716
717
718 1.11 GL_NV_gpu_program4
719 ------------------------
720
721
722 1.11.1 CEIL - Ceiling
723
724 dst.x = ceil(src.x)
725 dst.y = ceil(src.y)
726 dst.z = ceil(src.z)
727 dst.w = ceil(src.w)
728
729
730 1.11.2 I2F - Integer To Float
731
732 dst.x = (float) src.x
733 dst.y = (float) src.y
734 dst.z = (float) src.z
735 dst.w = (float) src.w
736
737
738 1.11.3 NOT - Bitwise Not
739
740 dst.x = ~src.x
741 dst.y = ~src.y
742 dst.z = ~src.z
743 dst.w = ~src.w
744
745
746 1.11.4 TRUNC - Truncate
747
748 dst.x = trunc(src.x)
749 dst.y = trunc(src.y)
750 dst.z = trunc(src.z)
751 dst.w = trunc(src.w)
752
753
754 1.11.5 SHL - Shift Left
755
756 dst.x = src0.x << src1.x
757 dst.y = src0.y << src1.x
758 dst.z = src0.z << src1.x
759 dst.w = src0.w << src1.x
760
761
762 1.11.6 SHR - Shift Right
763
764 dst.x = src0.x >> src1.x
765 dst.y = src0.y >> src1.x
766 dst.z = src0.z >> src1.x
767 dst.w = src0.w >> src1.x
768
769
770 1.11.7 AND - Bitwise And
771
772 dst.x = src0.x & src1.x
773 dst.y = src0.y & src1.y
774 dst.z = src0.z & src1.z
775 dst.w = src0.w & src1.w
776
777
778 1.11.8 OR - Bitwise Or
779
780 dst.x = src0.x | src1.x
781 dst.y = src0.y | src1.y
782 dst.z = src0.z | src1.z
783 dst.w = src0.w | src1.w
784
785
786 1.11.9 MOD - Modulus
787
788 dst.x = src0.x % src1.x
789 dst.y = src0.y % src1.y
790 dst.z = src0.z % src1.z
791 dst.w = src0.w % src1.w
792
793
794 1.11.10 XOR - Bitwise Xor
795
796 dst.x = src0.x ^ src1.x
797 dst.y = src0.y ^ src1.y
798 dst.z = src0.z ^ src1.z
799 dst.w = src0.w ^ src1.w
800
801
802 1.11.11 SAD - Sum Of Absolute Differences
803
804 dst.x = abs(src0.x - src1.x) + src2.x
805 dst.y = abs(src0.y - src1.y) + src2.y
806 dst.z = abs(src0.z - src1.z) + src2.z
807 dst.w = abs(src0.w - src1.w) + src2.w
808
809
810 1.11.12 TXF - Texel Fetch
811
812 TBD
813
814
815 1.11.13 TXQ - Texture Size Query
816
817 TBD
818
819
820 1.11.14 CONT - Continue
821
822 TBD
823
824
825 1.12 GL_NV_geometry_program4
826 -----------------------------
827
828
829 1.12.1 EMIT - Emit
830
831 TBD
832
833
834 1.12.2 ENDPRIM - End Primitive
835
836 TBD
837
838
839 1.13 GLSL
840 ----------
841
842
843 1.13.1 BGNLOOP2 - Begin Loop
844
845 TBD
846
847
848 1.13.2 BGNSUB - Begin Subroutine
849
850 TBD
851
852
853 1.13.3 ENDLOOP2 - End Loop
854
855 TBD
856
857
858 1.13.4 ENDSUB - End Subroutine
859
860 TBD
861
862
863 1.13.5 INT - Truncate
864
865 Alias for TRUNC.
866
867
868 1.13.6 NOISE1 - 1D Noise
869
870 TBD
871
872
873 1.13.7 NOISE2 - 2D Noise
874
875 TBD
876
877
878 1.13.8 NOISE3 - 3D Noise
879
880 TBD
881
882
883 1.13.9 NOISE4 - 4D Noise
884
885 TBD
886
887
888 1.13.10 NOP - No Operation
889
890 Do nothing.
891
892
893 1.14 ps_1_1
894 ------------
895
896
897 1.14.1 TEXKILL - Conditional Discard
898
899 Alias for KIL.
900
901
902 1.15 ps_1_4
903 ------------
904
905
906 1.15.1 TEXLD - Texture Lookup
907
908 Alias for TEX.
909
910
911 1.16 ps_2_0
912 ------------
913
914
915 1.16.1 M4X4 - Multiply Matrix
916
917 Alias for MULTIPLYMATRIX.
918
919
920 1.16.2 M4X3 - Multiply Matrix
921
922 Considered for removal from language.
923
924
925 1.16.3 M3X4 - Multiply Matrix
926
927 Considered for removal from language.
928
929
930 1.16.4 M3X3 - Multiply Matrix
931
932 Considered for removal from language.
933
934
935 1.16.5 M3X2 - Multiply Matrix
936
937 Considered for removal from language.
938
939
940 1.16.6 CRS - Cross Product
941
942 Alias for XPD.
943
944
945 1.16.7 NRM4 - 4-component Vector Normalise
946
947 dst.x = src.x / (src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w)
948 dst.y = src.y / (src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w)
949 dst.z = src.z / (src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w)
950 dst.w = src.w / (src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w)
951
952
953 1.16.8 SINCOS - Sine Cosine
954
955 Alias for SCS.
956
957
958 1.16.9 TEXLDB - Texture Lookup With Bias
959
960 Alias for TXB.
961
962
963 1.16.10 DP2ADD - 2-component Dot Product And Add
964
965 Alias for DP2A.
966
967
968 1.17 ps_2_x
969 ------------
970
971
972 1.17.1 CALL - Subroutine Call
973
974 Alias for CAL.
975
976
977 1.17.2 CALLNZ - Subroutine Call If Not Zero
978
979 TBD
980
981
982 1.17.3 IFC - If
983
984 TBD
985
986
987 1.17.4 BREAK - Break
988
989 Alias for BRK.
990
991
992 1.17.5 BREAKC - Break Conditional
993
994 TBD
995
996
997 1.17.6 DSX - Derivative Relative To X
998
999 Alias for DDX.
1000
1001
1002 1.17.7 DSY - Derivative Relative To Y
1003
1004 Alias for DDY.
1005
1006
1007 1.17.8 TEXLDD - Texture Lookup with Derivatives
1008
1009 Alias for TXD.
1010
1011
1012 1.18 vs_1_1
1013 ------------
1014
1015
1016 1.18.1 EXPP - Approximate Exponential Base 2
1017
1018 Alias for EXP.
1019
1020
1021 1.18.2 LOGP - Logarithm Base 2
1022
1023 Alias for LG2.
1024
1025
1026 1.19 vs_2_0
1027 ------------
1028
1029
1030 1.19.1 SGN - Set Sign
1031
1032 Alias for SSG.
1033
1034
1035 1.19.2 MOVA - Move Address Register
1036
1037 Alias for ARR.
1038
1039
1040 2 Explanation of symbols used
1041 ==============================
1042
1043
1044 2.1 Functions
1045 --------------
1046
1047
1048 abs(x) Absolute value of x.
1049 |x|
1050 (x < 0.0) ? -x : x
1051
1052 ceil(x) Ceiling of x.
1053
1054 clamp(x,y,z) Clamp x between y and z.
1055 (x < y) ? y : (x > z) ? z : x
1056
1057 cos(x) Cosine of x.
1058
1059 floor(x) Floor of x.
1060
1061 lg2(x) Logarithm base 2 of x.
1062
1063 max(x,y) Maximum of x and y.
1064 (x > y) ? x : y
1065
1066 min(x,y) Minimum of x and y.
1067 (x < y) ? x : y
1068
1069 partialx(x) Derivative of x relative to fragment's X.
1070
1071 partialy(x) Derivative of x relative to fragment's Y.
1072
1073 pop() Pop from stack.
1074
1075 pow(x,y) Raise x to power of y.
1076
1077 push(x) Push x on stack.
1078
1079 round(x) Round x.
1080
1081 sin(x) Sine of x.
1082
1083 sqrt(x) Square root of x.
1084
1085 trunc(x) Truncate x.
1086
1087
1088 2.2 Keywords
1089 -------------
1090
1091
1092 discard Discard fragment.
1093
1094 dst First destination register.
1095
1096 dst0 First destination register.
1097
1098 pc Program counter.
1099
1100 src First source register.
1101
1102 src0 First source register.
1103
1104 src1 Second source register.
1105
1106 src2 Third source register.
1107
1108 target Label of target instruction.
1109