Shader中表示式和控制語句

2021-07-31 06:27:45 字數 1121 閱讀 4805

新手寫shader時經常困惑在shader那些語法能用,那些不能用,很糾結,下面就對shader中表示式和控制語句進行一些總結:

cg中有6種關係操作符:「<」、「<=」、「!=」、「==」、「>=」、「>」,這個就不用說明含義了吧。

cg語言表示式允許對向量使用關係操作,例如:

float3 a=float3(0.5,0.1,0.9);

float3 b=float3(0.6,-0.1,2.0);

bool3 c=a跟c#操作類似。

cg中數學操作符有:乘法,/除法,-減法或取反,+加法,%取餘;++,–,=,/=,+=,-=;

cg 語言中的移位操作符,功能和 c 語言中的一樣,也可以作用在向量上,但是向量型別必須是 int 型別

int2 a = int2(0.0,0.0);

int2 b = a>>1;

可以使用 cg 語言中的 swizzle 操作符( . )將乙個向量的成員取出組成乙個新的向量。

swizzle 操作符後接 x 、 y 、 z 、 w ,

分別表示原始向量的第乙個、第二個、第三個、第四個元素; swizzle 操作符後接

r 、 g 、 b 和 a 的含義與前者等同。

例如:

float4(a, b, c, d).xyz 等價於 float3(a, b, c)

float4(a, b, c, d).xyy 等價於 float3(a, b, b)

float4(a, b, c, d).wzyx 等價於 float4(d, c, b, a)

float4(a, b, c, d).w 等價於 float d

swizzle 操作符只能對結構體和向量使用,不能對陣列使用

expr1 ? expr2 : expr3;
條件語句有: if 、 if-else ;迴圈語句有: while 、 for 。 break語句可以和在 for 語句中使用。 switch 、 case 和 default 在 cg 中作為保留關鍵字存在,但

是它們目前不被任何 profile 所支援。

建議:像迴圈語句這種控制語句盡量不要用,如果死迴圈就不好了,再說也沒必要在shader中去迴圈啥。

cron中表示式

cron表示式詳解 乙個cron表示式有至少6個 也可能7個 有空格分隔的時間元素。按順序依次為 1 秒 0 59 2 分鐘 0 59 3 小時 0 23 4 天 0 31 5 月 0 11 6 星期 1 7 1 sun 或 sun,mon,tue,wed,thu,fri,sat 7.年份 1970...

thinkPHP SQL語句中表示式查詢的格式

對於那些要實現模糊判斷的查詢,比如大於 等於 小於之類的sql查詢,可以使用表示式查詢方式。查詢表示式格式 map 欄位名 array 表示式 查詢條件 表示式含義 eq等於 neq不等於 gt大於 egt大於等於 lt小於 elt小於等於 not like 中間無空格 模糊查詢 not betwe...

Python中 表示式和 is 的區別

x y表示兩個物件的值相同,x is y表示兩者是同乙個物件 例1 x和y是兩個列表,它們的值相同,但不是同乙個物件 x 1,2,3 y 1,2,3 x y true x is y false 例2 x和y是同乙個物件 x 1,2,3 y x x is y true 例3 字典是無序的,所以x和y的...