出版時間:2006-10 出版社:人民郵電 作者:羅斯特 頁數(shù):352 字數(shù):537000 譯者:天宏工作室
Tag標(biāo)簽:無
內(nèi)容概要
OpenGL著色語言是一種用于OpenGL的高級過程著色語言,它是近年來圖形編程領(lǐng)域中出現(xiàn)的最重要的新型開發(fā)技術(shù)。OpenGL是業(yè)界領(lǐng)先的跨平臺3D圖形API,而OpenGL著色語言允許開發(fā)人員控制圖形處理管理線中最重要的階段。 本書全面覆蓋從算法到API,書中更含豐富的API函數(shù)參考及頂級的案例分析。全書首先闡述了這種高級編程語言的語法和語義,在此基礎(chǔ)上,詳盡介紹了一系列著色器實例,同時對底層算法進行了解釋,透析從固定功能圖形硬件到可編程圖形硬件的新時代轉(zhuǎn)變,探究使用新的OpenGL函數(shù)調(diào)用來創(chuàng)建和操作著色器的方法,最后將該語言與其他著名的商業(yè)著色語言進行了比較?! ”緯笞x者需要具有一定的數(shù)學(xué)知識,適合有興趣編寫著色器的應(yīng)用程序開發(fā)人員,可作為GLSL開發(fā)者的參考手冊。不論專家或著色器編程初學(xué)者,都能在本書中發(fā)現(xiàn)所需的財富。
作者簡介
Randi J.Rost是開發(fā)OpenGl著色語言的3Dlabs公司的多媒體圖形小組的高級經(jīng)理。Randi曾是開發(fā)OpenGl著色語言以及支持該語言的OpenGL API的核心成員,他還是使用這項技術(shù)設(shè)計和實現(xiàn)著色器的首批程序員之一。他參加OpenGL體系結(jié)構(gòu)審核委員會(OpenGl Arhcitecture Review Board)
書籍目錄
第1章 OpenGL基礎(chǔ)知識概述 1.1 OpenGL的歷史 1.2 發(fā)展OpenGL 1.3 執(zhí)行模型 1.4 幀緩沖區(qū) 1.5 狀態(tài) 1.6 處理管線 1.7 繪制幾何對象 1.7.1 指定幾何對象 1.7.2 逐個頂點操作 1.7.3 圖元組裝 1.7.4 圖元處理 1.7.5 柵格化 1.7.6 片元處理 1.7.7 逐個片元的操作 1.7.8 幀緩沖區(qū)操作 1.8 繪制圖像 1.8.1 像素解碼 1.8.2 像素傳輸 1.8.3 柵格化和后端處理 1.8.4 讀取控制 1.9 坐標(biāo)變換 1.10 紋理 1.11 小結(jié) 1.12 參考資料 第2章 基礎(chǔ)知識 2.1 OpenGL著色語言簡介 2.2 為什么要編寫著色器 2.3 OpenGL可編程處理器 2.3.1 頂點處理器 2.3.2 片元處理器 2.4 語言概述 2.4.1 語言的設(shè)計考慮 2.4.2 以C為基礎(chǔ) 2.4.3 對C的增加 2.4.4 來自C++的增加 2.4.5 不受支持的C特性 2.4.6 其他差異 2.5 系統(tǒng)概述 2.5.1 驅(qū)動程序模型 2.5.2 OpenGL著色語言編譯器/鏈接器 2.5.3 OpenGL API擴展 2.6 主要優(yōu)點 2.7 小結(jié) 2.8 參考資料 第3章 語言定義 3.1 著色器對的實例 3.2 數(shù)據(jù)類型 3.2.1 標(biāo)量 3.2.2 矢量 3.2.3 矩陣 3.2.4 取樣器 3.2.5 結(jié)構(gòu) 3.2.6 數(shù)組 3.2.7 Void 3.2.8 聲明和作用域 3.2.9 類型匹配與提升 3.3 初始化器和構(gòu)造函數(shù) 3.4 類型轉(zhuǎn)換 3.5 限定符和著色器接口 3.5.1 Attribute限定符 3.5.2 Uniform限定符 3.5.3 Varying限定符 3.5.4 常量限定符 3.5.5 缺少限定符 3.6 流控制 3.6.1 函數(shù) 3.6.2 調(diào)用約定 3.6.3 內(nèi)置函數(shù) 3.7 操作 3.7.1 索引 3.7.2 混合 3.7.3 按部分操作 3.8 預(yù)處理器 3.9 預(yù)處理器表達式 3.10 錯誤處理 3.11 小結(jié) 3.12 參考資料 第4章 OpenGL可編程管線 4.1 頂點處理器 4.1.1 頂點屬性 4.1.2 一致變量 4.1.3 特殊的輸出變量 4.1.4 內(nèi)置的易變變量 4.1.5 用戶定義的易變變量 4.2 片元處理器 4.2.1 易變變量 4.2.2 一致變量 4.2.3 特殊的輸入變量 4.2.4 特殊的輸出變量 4.3 內(nèi)置一致變量 4.4 內(nèi)置常量 4.5 與OpenGL的固定功能交互 4.5.1 兩側(cè)顏色模式 4.5.2 點大小模式 4.5.3 裁剪 4.5.4 光柵位置 4.5.5 位置不變性 4.5.6 紋理處理 4.6 小結(jié) 4.7 參考資料 第5章 內(nèi)置函數(shù) 5.1 角度和三角函數(shù) 5.2 指數(shù)函數(shù) 5.3 常見函數(shù) 5.4 幾何函數(shù) 5.5 矩陣函數(shù) 5.6 矢量關(guān)系函數(shù) 5.7 紋理訪問函數(shù) 5.8 片元處理函數(shù) 5.9 噪聲函數(shù) 5.10 小結(jié) 5.11 參考資料 第6章 簡單的著色實例 6.1 磚塊著色器簡介 6.2 頂點著色器 6.3 片元著色器 6.4 觀察 6.5 小結(jié) 6.6 參考資料第7章 OpenGL著色語言API 7.1 創(chuàng)建著色器對象 7.2 編譯著色器對象 7.3 鏈接和使用著色器 7.4 清理工作 7.5 查詢函數(shù) 7.6 指定頂點屬性 7.7 指定一致變量 7.8 采樣器 7.9 開發(fā)輔助工具 7.10 與實現(xiàn)有關(guān)的API值 7.11 磚塊著色器的應(yīng)用程序代碼 7.12 小結(jié) 7.13 參考資料 第8章 開發(fā)著色器 8.1 一般原則 8.1.1 理解問題 8.1.2 逐步提高復(fù)雜性 8.1.3 測試和重復(fù) 8.1.4 盡量簡化 8.1.5 模塊化 8.2 性能考慮 8.2.1 考慮計算頻率 8.2.2 分析算法 8.2.3 使用內(nèi)置函數(shù) 8.2.4 使用矢量 8.2.5 使用紋理編寫復(fù)雜函數(shù) 8.2.6 回顧信息日志 8.3 著色器調(diào)試 8.3.1 使用頂點著色器的輸出 8.3.2 使用片元著色器的輸出 8.3.3 使用簡單的幾何對象 8.4 著色器開發(fā)工具 8.4.1 RenderMonkey 8.4.2 OpenGL著色語言編譯器前端 8.5 小結(jié) 8.6 參考資料第9章 傳統(tǒng)著色器 9.1 變換 9.2 光源 9.2.1 定向光源 9.2.2 點光源 9.2.3 聚光燈 9.3 材質(zhì)屬性和光照 9.4 兩側(cè)光照 9.5 無光照 9.6 霧化 9.7 紋理坐標(biāo)生成 9.8 用戶裁剪 9.9 紋理應(yīng)用 9.10 小結(jié) 9.11 參考資料 第10章 存儲的紋理著色器 10.1 從著色器內(nèi)部訪問紋理貼圖 10.2 簡單的紋理處理實例 10.2.1 應(yīng)用程序設(shè)置 10.2.2 頂點著色器 10.2.3 片元著色器 10.3 多重紋理處理實例 10.3.1 應(yīng)用程序設(shè)置 10.3.2 頂點著色器 10.3.3 片元著色器 10.4 環(huán)境貼圖實例 10.4.1 應(yīng)用程序設(shè)置 10.4.2 頂點著色器 10.4.3 片元著色器 10.5 使用BRDF數(shù)據(jù)的多項式紋理貼圖 10.5.1 應(yīng)用程序設(shè)置 10.5.2 頂點著色器 10.5.3 片元著色器 10.6 小結(jié) 10.7 參考資料第11章 程序紋理著色器 11.1 常規(guī)圖案 11.1.1 條紋頂點著色器 11.1.2 條紋片元著色器 11.2 玩具球 11.2.1 應(yīng)用程序設(shè)置 11.2.2 頂點著色器 11.2.3 片元著色器 11.3 網(wǎng)格 11.4 凹凸貼圖 11.4.1 應(yīng)用程序設(shè)置 11.4.2 頂點著色器 11.4.3 片元著色器 11.4.4 法向量貼圖 11.5 小結(jié) 11.6 參考資料第12章 噪聲 12.1 定義噪聲 12.1.1 2D噪聲 12.1.2 更高維度的噪聲 12.1.3 在OpenGL著色器中使用噪聲 12.2 噪聲紋理 12.3 權(quán)衡考慮 12.4 一個簡單的噪聲著色器 12.4.1 應(yīng)用程序設(shè)置 12.4.2 頂點著色器 12.4.3 片元著色器 12.5 擾動 12.5.1 太陽表面著色器 12.5.2 大理石 12.6 花崗巖 12.7 木材 12.7.1 應(yīng)用程序設(shè)置 12.7.2 片元著色器 12.8 小結(jié) 12.9 參考資料 第13章 動畫著色器 13.1 開/關(guān) 13.2 閾值 13.3 轉(zhuǎn)換 13.4 關(guān)鍵幀插值 13.5 其他混合效果 13.6 粒子系統(tǒng) 13.6.1 應(yīng)用程序設(shè)置 13.6.2 紙炮頂點著色器 13.6.3 紙炮片元著色器 13.6.4 進一步增強 13.7 搖擺 13.8 小結(jié) 13.9 參考資料 第14章 反走樣過程紋理 14.1 走樣的原因 14.2 避免走樣 14.3 提高分辨率 14.4 反走樣的條紋實例 14.4.1 生成條紋 14.4.2 分析預(yù)過濾 14.4.3 自適應(yīng)分析預(yù)過濾 14.4.4 分析積分 14.4.5 反走樣的磚塊片元著色器 14.5 頻率限定 14.6 小結(jié) 14.7 參考資料 第15章 反真實著色器 15.1 剖面線實例 15.1.1 應(yīng)用程序設(shè)置 15.1.2 頂點著色器 15.1.3 生成剖面線 15.1.4 獲得一致的線條密度 15.1.5 光照 15.1.6 添加特征 15.1.7 剖面線片元著色器 15.2 技術(shù)示意圖實例 15.2.1 應(yīng)用程序設(shè)置 15.2.2 頂點著色器 15.2.3 片元著色器 15.3 Mandelbrot實例 15.3.1 Mandelbrot set簡介 15.3.2 頂點著色器 15.3.3 片元著色器 15.3.4 Julia set 15.4 小結(jié) 15.5 參考資料 第16章 用于圖像處理的著色器 16.1 幾何圖像變換 16.2 數(shù)學(xué)貼圖 16.3 查找表操作 16.4 顏色空間變換 16.5 圖像內(nèi)插和外插 16.5.1 亮度 16.5.2 對比度 16.5.3 飽和度 16.5.4 銳度 16.6 混合模式 16.6.1 正?!? 16.6.2 平均 16.6.3 溶解 16.6.4 背面 16.6.5 清除 16.6.6 變暗 16.6.7 變亮 16.6.8 正片疊底 16.6.9 屏幕 16.6.10 顏色加深 16.6.11 顏色減淡 16.6.12 疊加 16.6.13 柔光 16.6.14 強光 16.6.15 相加 16.6.16 相減 16.6.17 差值 16.6.18 反差值 16.6.19 排除 16.6.20 不透明度 16.7 卷積 16.7.1 平滑 16.7.2 邊緣檢測 16.7.3 銳化 16.8 小結(jié) 16.9 參考資料 第17章 語言的比較 17.1 著色語言的歷史 17.2 RenderMan 17.3 OpenGL Shader(ISL) 17.4 HLSL 17.5 Cg 17.6 小結(jié) 17.7 參考資料 附錄A 語言的語法 附錄B API函數(shù)參考 glAttachObjectARB glBindAttribLocationARB glCompileShaderARB glCreateProgramObjectARB glCreateShaderObjectARB glDeleteObjectARB glDetachObjectARB glEnableVertexAttribArrayARB glGetActiveAttribARB glGetActiveUniformARB glGetAttachedObjectsARB glGetAttribLocationARB glGetHandleARB glGetinfoLogARB glGetObjectParameterARB glGetShaderSourceARB glGetUniformARB glGetUniformLocationARB glGetVertexAttribARB glGetVertexAttribPointervARB glLinkProgramARB glShaderSourceARB glUniformARB glUseProgramObjectARB glValidateProgramARB glVertexAttribARB glVertexAttribPointerARB 后記
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載