OpenGL ES 3 0片段著色器(四)

2021-09-07 03:27:48 字數 1538 閱讀 7310

片段著色器流程圖

片段著色器(fragment shader)實現了乙個通用的可程式設計操作片段的方法.片段著色器執行由

光柵化生成的每個片段。

• shader program(著色器程式)—片段著色器程式原始碼或描述將在該片段上可以執行的操作。

• input variables(輸入變數)—光柵化階段使用插補技術為片段著色器產生頂點著色器的輸出

• uniforms—片段著色器的常量資料

• samplers—uniforms使用的具體型別,在紋理(texture)中被片段著色器使用

片段著色可以丟棄片段或生成乙個或多個顏色值作為輸出。通常情況下,片段著色輸出乙個

單一的顏色值,除了渲染到多個渲染目標。在後一種情況下,每乙個顏色值是每個渲染目標

的輸出。光柵化所產生的顏色、深度、模板和螢幕座標位置(xw,yw),成為對每個片段的

操作階段的opengl es 3輸入。

#version 300

es precision mediump

float;

invec4 v_color;

outvec4 fragcolor;

void

main()

precision mediump float

設定預設精度

in vec4 v_color

輸入顏色屬性。

out vec4 fragcolor

輸出顏色屬性

fragcolor = v_color

片段著色器的輸入是被傳遞到片段著色前通過圖元線性插值。

每個片段執行的操作流程

•• pixel ownership test—這個測試決定在幀緩衝區中某點(xw,yw)的畫素當前是否被 opengl es 所有,這個測試准許視窗作業系統去控制幀緩衝區中的畫素是否屬於opengl es context,例如視窗檢測到opengl es 的幀緩衝區被另乙個視窗遮擋,視窗系統可以決定遮 擋opengl es 的內容,不顯示。

•• scissor test——測試(xw,yw)是否在剪下矩陣內,如果在矩陣外,片段被丟棄。 模板深度測試—決定輸入的片段是否應該被丟棄

•• stencil and depth tests—測試在模板上執行輸入片段的深度值,決定輸入的片段是否

應該被丟棄

•• blending—混合新產生的片段顏色和儲存在顏色緩衝區中的顏色

•• dithering—被使用在用幾種顏色的組合模擬出大範圍內的多種色彩模式 per-fragment 階段最後,片段顏色、深度值、模板值是否被寫入幀緩衝區還要依靠各自的

掩 碼位是否被使用,例如,顏色緩衝區能設定紅色是否能被寫入顏色緩衝區。

在最後,被丟棄片段的顏色、深度和模板值被寫入到幀緩衝區。opengl es提供了乙個介面來讀取幀的畫素。

OpenGL ES 3 0頂點著色器(一)

opengl es 3.0流程圖 1.vertex shader 頂點著色器 頂點著色實現了一種通用的可程式設計方法操作頂點。頂點著色器的輸入包括以下幾個 shader program.程式的頂點著色程式源 或可執行程式,描述將在頂點上執行的操作。vertex shader inputs or at...

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

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 入門練習 0...

頂點著色器 片段著色器

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