OpenGL ES 著色器 片斷著色器詳解

2021-09-12 09:47:31 字數 1628 閱讀 3850

opengl es _ 入門_01

opengl es _ 入門_02

opengl es _ 入門_03

opengl es _ 入門_04

opengl es _ 入門_05

opengl es _ 入門練習_01

opengl es _ 入門練習_02

opengl es _ 入門練習_03

opengl es _ 入門練習_04

opengl es _ 入門練習_05

opengl es _ 入門練習_06

opengl es _ 著色器 _ 介紹

opengl es _ 著色器 _ 程式

opengl es _ 著色器 _ 語法

opengl es_著色器_紋理影象

opengl es_著色器_預處理

opengl es_著色器_頂點著色器詳解

opengl es_著色器_片斷著色器詳解

opengl es_著色器_實戰01

opengl es_著色器_實戰02

opengl es_著色器_實戰03

學習是一件開心的額事情

本節學習目標

輸入值和輸出值

片段著色器內建變數

輸入值:片段著色器接受頂點管線最終輸出的迭代值,這些值包括片段的位置,已解析的主顏色和輔助顏色,一系列的紋理座標以及片段的霧座標距離。

下面這個**,將是對這些變數的詳細介紹

|變數|型別|描述|

|---|

|gl_fragcoord|vec4|片斷的位置,包含z成分,它表示固定功能所計算的深度值,唯讀|

|glfrontfacing|bool|唯讀,指定這個片段是否屬於乙個正面圖元|

|gl_color|vec4|片段著色器的主色|

|gl_secondcolor|vec4|片段的輔助顏色|

|gl_texcoord[n]|vec4|片段的第n紋理座標|

|gl_fogfragcoord|float|片段的霧座標|要麼指定為視覺空間中的圖元的z座標,或者差值霧座標|

|gl_pointcoord|vec2|乙個點塊紋理的片斷位置在[0.0,0.1]|範圍中,如果當前圖元並不是點塊紋理或者點塊紋理被禁用|

特殊的輸出值

在片段著色器中,特殊的輸入值經過組合,產生片斷的最終值.

gl_fragcolor 是片斷的最終顏色。

gl_fragdepth 片斷的深度值

gl_fragdata 允許把資料寫入到額外的緩衝區中

如何渲染多個緩衝區

片段著色器可以使用gl_fragdata 陣列,把值同時輸出到多個緩衝區,在陣列元素gl_fragdata[n] 中寫入乙個值將導致這個顏色被寫入到緩衝區中乙個適當的片段中,這個片段位於傳遞給gldrawbuffers()函式的陣列的第n個元素中,片斷著色器把值寫入到gl_fragcolor 或者gl_fragdata 中,但是不能同時寫入到兩者中.

總結

OpenGL ES 著色器指令碼

static char vshaderstr attribute vec4 a position n attribute vec4 a color n varying vec4 v color n void main n n static char fshaderstr ifdef gl es n ...

著色器(Shader)之畫素著色器

畫素著色器實際上就是對每乙個畫素進行光柵化的處理期間,在gpu上運算的一段程式。不同與頂點著色器,畫素著色器不會以軟體的形式來模擬畫素著色器。畫素著色器實質上是取代了固定功能流水線中多重紋理的環節,而且賦予了我們訪問單個畫素以及訪問每乙個畫素紋理座標的能力 多重紋理就是我們同時啟用多層紋理,然後規定...

頂點著色器 片段著色器

一 著色器 著色器只是一種把輸入轉化為輸出的程式。著色器也是一種非常獨立的程式,因為它們之間不能相互通訊 它們之間唯一的溝通只有通過輸入和輸出。在最簡配置下,至少都得有兩個著色器 乙個叫頂點著色器 vertex shader 它將作用於每個頂點上 另乙個叫片段著色器 fragment shader ...