新手向:如何理解OpenGL中着色器,渲染管线,光栅化等概念
首先,光柵化(Rasterize/rasteriztion)。?
這個(gè)詞兒Adobe官方翻譯成柵格化或者像素化。沒錯(cuò),就是把矢量圖形轉(zhuǎn)化成像素點(diǎn)兒的過程。我們屏幕上顯示的畫面都是由像素組成,而三維物體都是點(diǎn)線面構(gòu)成的。要讓點(diǎn)線面,變成能在屏幕上顯示的像素,就需要Rasterize這個(gè)過程。就是從矢量的點(diǎn)線面的描述,變成像素的描述。?
如下圖,這是一個(gè)放大了1200%的屏幕,前面是告訴計(jì)算機(jī)我有一個(gè)圓形,后面就是計(jì)算機(jī)把圓形轉(zhuǎn)換成可以顯示的像素點(diǎn)。這個(gè)過程就是Rasterize。
渲染管線(Pipeline)?
這個(gè)翻譯尤其不接地氣,簡直就是直譯(pipe管子line線路)。Pipeline是輸送管道的意思。其實(shí)是指三維渲染的過程中顯卡執(zhí)行的、從幾何體到最終渲染圖像的、數(shù)據(jù)傳輸處理計(jì)算的過程。
著色器(Shader)?
這個(gè)翻譯的挺好。畫畫的時(shí)候我們經(jīng)常有這么一個(gè)過程:先打線稿,再上色。著色器就是用來做這個(gè)工作的。?
通常著色器分兩種:?
1頂點(diǎn)著色器(vertex shader)這個(gè)是告訴電腦如何打線稿的——如何處理頂點(diǎn)、法線等的數(shù)據(jù)的小程序。?
2片面著色器(fragment shader)這個(gè)是告訴電腦如何上色的——如何處理光、陰影、遮擋、環(huán)境等等對物體表面的影響,最終生成一副圖像的小程序。?
采用了這兩種著色器小程序 的 數(shù)據(jù)傳輸處理計(jì)算的渲染過程,稱之為 可編程管線。?
3fragment shader:它在DX中實(shí)際上叫做pixel shader,也就是像素著色器。而OGL中沒有這么叫的原因,是考慮到在這個(gè)著色過程中后還有深度測試和Alpha測試,這些過程可能將被著色的像素再次舍棄掉——因此這個(gè)著色過程處理的只是“候選的像素”,而非最終呈現(xiàn)的像素值。候選者嘛,所以改個(gè)名字叫做fragment~~
總結(jié)
以上是生活随笔為你收集整理的新手向:如何理解OpenGL中着色器,渲染管线,光栅化等概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在linux中 要删除abc目录,操作系
- 下一篇: NSIS 查找文件是否存在,并设置安装路