celestia/shaders/sample_nv.fp
2004-03-23 18:23:21 +00:00

87 lines
4.3 KiB
GLSL

!!FP1.0
# attributes
# f[WPOS] Position of the fragment center. (x,y,z,1/w)
# f[COL0] Interpolated primary color (r,g,b,a)
# f[COL1] Interpolated secondary color (r,g,b,a)
# f[FOGC] Interpolated fog distance/coord (z,0,0,0)
# f[TEX0] Texture coordinate (unit 0) (s,t,r,q)
# f[TEX1] Texture coordinate (unit 1) (s,t,r,q)
# f[TEX2] Texture coordinate (unit 2) (s,t,r,q)
# f[TEX3] Texture coordinate (unit 3) (s,t,r,q)
# f[TEX4] Texture coordinate (unit 4) (s,t,r,q)
# f[TEX5] Texture coordinate (unit 5) (s,t,r,q)
# f[TEX6] Texture coordinate (unit 6) (s,t,r,q)
# f[TEX7] Texture coordinate (unit 7) (s,t,r,q)
# temp registers
# R0-R31 Four 32-bit (fp32) floating point values (s.e8.m23)
# H0-H63 Four 16-bit (fp16) floating point values (s.e5.m10)
# output registers
# o[COLR] Final RGBA fragment color, fp32 format
# o[COLH] Final RGBA fragment color, fp16 format
# o[DEPR] Final fragment depth value, fp32 format
# named constants
# DEFINE pi = 3.1415926535;
# DEFINE color = {0.2, 0.5, 0.8, 1.0};
# named local parameters
# DECLARE fog_color1;
# DECLARE fog_color2 = {0.3, 0.6, 0.9, 0.1};
# numbered parameters
# A numbered local parameter is accessed by a fragment program as members of
# an array called "p". For example, the instruction
# MOV R0, p[31];
# copies the contents of numbered local parameter 31 into temporary register R0
# Instruction summary
# ADD[RHX][C][_SAT] v,v v add
# COS[RH ][C][_SAT] s ssss cosine
# DDX[RH ][C][_SAT] v v derivative relative to x
# DDY[RH ][C][_SAT] v v derivative relative to y
# DP3[RHX][C][_SAT] v,v ssss 3-component dot product
# DP4[RHX][C][_SAT] v,v ssss 4-component dot product
# DST[RH ][C][_SAT] v,v v distance vector
# EX2[RH ][C][_SAT] s ssss exponential base 2
# FLR[RHX][C][_SAT] v v floor
# FRC[RHX][C][_SAT] v v fraction
# KIL none none conditionally discard fragment
# LG2[RH ][C][_SAT] s ssss logarithm base 2
# LIT[RH ][C][_SAT] v v compute light coefficients
# LRP[RHX][C][_SAT] v,v,v v linear interpolation
# MAD[RHX][C][_SAT] v,v,v v multiply and add
# MAX[RHX][C][_SAT] v,v v maximum
# MIN[RHX][C][_SAT] v,v v minimum
# MOV[RHX][C][_SAT] v v move
# MUL[RHX][C][_SAT] v,v v multiply
# PK2H v ssss pack two 16-bit floats
# PK2US v ssss pack two unsigned 16-bit scalars
# PK4B v ssss pack four signed 8-bit scalars
# PK4UB v ssss pack four unsigned 8-bit scalars
# POW[RH ][C][_SAT] s,s ssss exponentiation (x^y)
# RCP[RH ][C][_SAT] s ssss reciprocal
# RFL[RH ][C][_SAT] v,v v reflection vector
# RSQ[RH ][C][_SAT] s ssss reciprocal square root
# SEQ[RHX][C][_SAT] v,v v set on equal
# SFL[RHX][C][_SAT] v,v v set on false
# SGE[RHX][C][_SAT] v,v v set on greater than or equal
# SGT[RHX][C][_SAT] v,v v set on greater than
# SIN[RH ][C][_SAT] s ssss sine
# SLE[RHX][C][_SAT] v,v v set on less than or equal
# SLT[RHX][C][_SAT] v,v v set on less than
# SNE[RHX][C][_SAT] v,v v set on not equal
# STR[RHX][C][_SAT] v,v v set on true
# SUB[RHX][C][_SAT] v,v v subtract
# TEX[C][_SAT] v v texture lookup
# TXD[C][_SAT] v,v,v v texture lookup w/partials
# TXP[C][_SAT] v v projective texture lookup
# UP2H[C][_SAT] s v unpack two 16-bit floats
# UP2US[C][_SAT] s v unpack two unsigned 16-bit scalars
# UP4B[C][_SAT] s v unpack four signed 8-bit scalars
# UP4UB[C][_SAT] s v unpack four unsigned 8-bit scalars
# X2D[RH ][C][_SAT] v,v,v v 2D coordinate transformation