前一篇**msdn的一篇文章,具體介紹了glsl到hlsl的參考。本來是想用unity shader復shadertoy(裡面那些神奇的shader。shadertoy裡面的shader都是用webgl呈現的,用的都是opengl,我寫shader使用的是cg,但hlsl和cg基本都差不多,一般我看都沒有介紹glsl到cg的轉換,了解glsl到hlsl也就行了。
為什麼我在msdn詳盡的介紹之後還寫乙個續篇呢?有兩個想介紹的東西。
(1)glsl與unity shader中對應矩陣
首先,我知道這是乙個基礎知識沒學明白才會產生的問題。學乙個知識不能僅僅限於程式設計會用方面,還要懂得原理,否則一旦出了某個熟悉的程式設計環境就束手無策了,痛的領悟。下面的這個矩陣對應真的很基礎,而我還是仔細看了才明白對應關係,如果你也不知道可以參考一下。
gl_position = projectionmatrix * viewmatrix * modelmatrix * vec4(position, 1.0);
o.pos = mul(unity_matrix_mvp, v.position);
這個矩陣變換就對應unity中的mvp啊,因為用mvp習慣了,一下子單獨看沒聯想起來,我還查了一下。
(2)如果你不想逐個改,也可以寫幾個define巨集,這樣,很多時候就能直接用你的glsl**啦,算是比較通用。下面**來自csdn某位大神上傳的shadertoy的一些shader的unity shader實現。
#include "unitycg.cginc"
#pragma target 3.0
#define vec2 float2
#define vec3 float3
#define vec4 float4
#define mat2 float2x2
#define iglobaltime _time.y
#define mod fmod
#define mix lerp
#define atan atan2
#define fract frac
#define texture2d tex2d
// 螢幕的尺寸
#define iresolution _screenparams
// 螢幕中的座標,以pixel為單位
#define gl_fragcoord ((_iparam.srcpos.xy/_iparam.srcpos.w)*_screenparams.xy)
一般加上這些,可以直接把glsl**複製過來用了,按需求寫巨集吧。
以後要多多學習圖形學的基本知識呀。
HLSL初級教程 結語,參考資料
結語 至此,hlsl 初級內容介紹完畢,相信讀者已經對hlsl 著色器 effect 等概念有了比較深入的理解,並且掌握了hlsl 程式設計的基本方法,文章中裁去了對hlsl 文件,教程配套程式原始碼放在 希望本教程能夠幫助大家穿越hlsl 之門,進入豐富多彩的direct3d 渲染世界。參考資料 ...
GLSL 參考GIMP原始碼實現色彩平衡調節
修圖工具中的色彩平衡一般用來根據亮度等級調整中顏色的偏色,調整偏色涉及到加色原理和減色原理 其實我們通過三原色加色原理的就可以知道,紅色的對比色是青色,藍色的對比色是黃色,綠色的對比色是品紅,這樣說可能不太直觀,其實我們只要試一下,把的r值整體提高,會偏紅 廢話 降低r值,會偏青色,g通道和b通道同...
GPU程式設計之GLSL(二)
首先我們需要有乙個c 的工程 共包含5個檔案 乙個主工程檔案,兩個負責讀寫的,乙個頂點著色器,乙個片段著色器 目前這個程式執行的結果為 乙個旋轉的茶壺 下一節會講有關opengl與著色器的通訊問題。各個檔案 如下 第乙個即為主工程檔案 include include include include ...