得到這個值的小數部分
float fract(float x)
vec2 fract(vec2 x)
vec3 fract(vec3 x)
vec4 fract(vec4 x)
![fract(x).png][1]
y = fract(x);
得到兩個值的模,其實就是餘數
y = mod(x,1.5);
下取整
y = floor(x);
上取整
float ceil(float x)
vec2 ceil(vec2 x)
vec3 ceil(vec3 x)
vec4 ceil(vec4 x)
y = ceil(x);
階躍函式,或者階梯函式。如果給出的x小於edge,直接返回0,如果大於edge,返回1
在兩個值之間執行hermite插值
float smoothstep(float edge0, float edge1, float x)
vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x)
vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x)
vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x)
vec2 smoothstep(float edge0, float edge1, vec2 x)
vec3 smoothstep(float edge0, float edge1, vec3 x)
vec4 smoothstep(float edge0, float edge1, vec4 x)
edge0 是低的邊,edge1 高邊,x 插值數
gentype t; /* or gendtype t; */
t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
return t * t * (3.0 - 2.0 * t);
也就是在0和1之間,進行簡單的平滑處理
和lerp一樣。就是簡單的按a,和1-a混合
float mix(float x, float y, float a)
vec2 mix(vec2 x, vec2 y, vec2 a)
vec3 mix(vec3 x, vec3 y, vec3 a)
vec4 mix(vec4 x, vec4 y, vec4 a)
vec2 mix(vec2 x, vec2 y, float a)
vec3 mix(vec3 x, vec3 y, float a)
vec4 mix(vec4 x, vec4 y, float a)
shader內建函式
一般預設都用弧度 radians degree 角度變弧度 degrees radian 弧度變角度 sin angle cos angle tan angle asin x arc sine,返回弧度 pi 2,pi 2 acos x arc cosine,返回弧度 0,pi atan y,x a...
步兵 shader 基礎篇
引用上文連線中的圖,渲染是乙個線性流程,他是在不停各個環節處理接收到的資料,然後輸出。首先建立一堆頂點資料,然後頂點著色器對處理這些資料,輸出給圖元裝配器連線成圖形,然後在輸出給幾何著色器可對圖形進行處理,再光柵化成畫素模式,輸出給片段著色器 計算每乙個畫素的最終顏色,最後混合疊加輸出到到螢幕上。值...
Shader基礎(渲染管線)
目的 將空間中的3d物體轉換成螢幕中的2d影象進行顯示出來 渲染繪圖管線流程 1.頂點處理 座標系的轉換 乙個模型有自身的方向 前方,上方,右方等 和中心點,既本地座標系 將這個模型放到場景當中,通過場景中的世界座標原點和世界座標的方向,計算出當前模型的世界座標,從本地座標系轉換到世界座標系 乙個模...