日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shader 4 杂 一些和函数名词、数据结构

發(fā)布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shader 4 杂 一些和函数名词、数据结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Normal:? 法線

Normao mapping: 法線貼圖

Lighting mapping: 光照貼圖

Bump mapping:???? 凹凸貼圖;模擬粗糙外表面的技術。 FX-Water simple.shader中即用到了。模擬波浪效果。

Rim lighting: 邊緣光照; 在對象的邊緣部分增加亮度。

Base Texture, 基礎紋理。

Detail Texture,細節(jié)紋理。與base texture使用相同的uv,但是在material中的Tiling值不同。

Cubemap:立方圖

Cubemap reflection,立方圖反射。


Lambert: 漫反射的lightmodel




cg函數(shù):數(shù)學、幾何、紋理映射、偏導、調(diào)試幾大類。

from?? wenku.baidu.com/link?url=5lj1AuzFz6YEZDt72eHEIooI42GhwA_hL0_YO6N827tmzqYV85kNqL7WXmvZZ5JJv7GZiYXaIZKAKSY2Rnaf8IdpL2HiwzsiCydgdOcUfWu

tex2D:? Tex2D(sampler2D?tex,?float2?s),二維紋理查詢。 返回四元向量值。? 紋理映射函數(shù)都返回四元向量值。

mul: 矩陣乘法


UnpackNormal: U3D的標準法線解壓函數(shù); 在UnityCG.cginc中。



unity3d 定制的表面著色器(Surface Shader)的標準輸出結(jié)構(gòu)是這樣的:struct SurfaceOutput { half3 Albedo; //反射率 half3 Normal; //法線 half3 Emission; //自發(fā)光,用于增強物體自身的亮度,使之看起來好像可以自己發(fā)光 half Specular; //鏡面 half Gloss; //光澤 half Alpha; //透明 }; #pragma surfacesurfaceFunction lightModel [optionalparams]

surfaceFunction -表示Cg函數(shù)中有表面著色器(surface shader)代碼。這個函數(shù)的格式應該是這樣:void surf (InputIN,inout SurfaceOutput o),Input是你自己定義的結(jié)構(gòu)。Input結(jié)構(gòu)中應該包含所有紋理坐標(texturecoordinates)和和表面函數(shù)(surfaceFunction)所需要的額外的必需變量。

lightModel-在光照模式中使用。內(nèi)置的是Lambert (diffuse)和 BlinnPhong(specular)。


//vertex shader的輸入struct appdata_base { float4 vertex : POSITION; //頂點位置 float3 normal : NORMAL; //法線方向 float4 texcoord : TEXCOORD0;//紋理坐標。。?};

// scroll bump wavesfloat4 temp;//四元向量xyzwv.vertex.xzxz表示去除vertex的x z x z四個分量組成一個新的向量; 計算后給temp賦值。temp.xyzw = v.vertex.xzxz * _WaveScale / unity_Scale.w + _WaveOffset;o.bumpuv[0] = temp.xy * float2(.4, .45);o.bumpuv[1] = temp.wz;



from

http://hi.baidu.com/stupidboys1027/item/e6ac3cbb4faccbd684dd799a

語意輸入,語意輸出, uniform

根據(jù)語意將參數(shù)與頂點的信息綁定。

很明顯地看到,入口變量中有三種不同類型的參數(shù):語義型輸入?yún)?shù),語義型輸出參數(shù),uniform輸入?yún)?shù)。首先我們來理解“語義”,這個詞的真正含義,其實,更準確地說我們應該把它叫“綁定語義”(Binding Semantics),從Binding這個詞我們就能想像得到,POSITION這個語義,它就是用來把pInitial 這個參數(shù)與外部環(huán)境(OpenGL)中的頂點位置向量綁在一起。輸出語義也是這樣的原理。讓我們來回答開始時提出的問題:從哪里來,到哪里處。1、從哪里來。 現(xiàn)在讓我們假設,OpenGL在對頂點進行渲染之前,在程序中都自動生成了這樣一個數(shù)據(jù)結(jié)構(gòu)struct vertex; 這個數(shù)據(jù)結(jié)構(gòu)包含了vertex.position, vertex.normal, vertex.color, vertex.texcoord.等等所有與頂點相關的狀態(tài)信息。而這些信息都是公開的,能夠被外部函數(shù)所引用。所以,CG中的語義型輸入?yún)?shù)的值就是從這些信息中自動獲取。如例子中的“float4 pInitial : POSITION”,通過POSITION這個綁定語義,把pInitial這個變量與vertex.position這個信息綁定在一起,于是pInitial就被賦值了。這是不是和C++中的引用一樣的原理呢? 注意:輸入?yún)?shù)是只讀的。 2、到哪里去? 如果知道了從哪里來,那么到哪里去也很好理解,(out float3 color : COLOR),有個OUT在前面作修飾的參數(shù)就是語義型輸出參數(shù)。這里通過COLOR這個綁定語義,把color向量與vertex.color這個值綁定在一起。在CG的代碼中,經(jīng)過一系列的運算和處理之后,最終得到頂點的新的顏色,把這個顏色值重新返回給OpenGL的頂點屬性中,OpenGL再通過讀取該屬性對頂點進行渲染。總的來說,語義型參數(shù)的輸入與輸出都是由CG自動完成,程序要做的只是把它與對應的語義綁定。說了那么多,還有一個uniform輸入?yún)?shù),我們還沒有說。如果說語義型參數(shù)是CG自動處理的,那么uniform型參數(shù)就是要程序員在程序中為它賦值的。

http://blog.sina.com.cn/s/blog_63507a56010115gr.html




from cg users manual

float2 * float2; 對應分量相乘后得到的向量。 不是叉乘。

dot, 點乘, 得到的是標量。 對應分量相乘后的和值。

標量與向量相乘, 是將向量的每個分量乘以標量后得到的新向量。 (向量放縮了。)

mul, 矩陣乘法; 矩陣乘以向量、 或者矩陣相乘。

Swizzle operator:

-------float3(a,b,c).zyx yields float3(c, b, a)

-------float4(a,bc,d).xxyy yields float4(a,a,b,b)

Texture Lookups 需要兩個參數(shù): Texture sampler, texture coordinate

--------texture sampler:?? sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampleRECT.

--------tex2D/RECT/CUBE, nonprojective

--------text2D/RECT/CUBEproj, projective texture lookup


float, 32bit浮點數(shù), s23e8 + 1bit

halft, 16bit,??????????????? s10e5

int, 32 bit integer

fixed, 12bit

bool,

sampler*, texture object的HANDLE。

string

向量、矩陣。



mul(MVP, pos)---->將vertex的postion轉(zhuǎn)化為屏幕上的坐標

tex2D(texture, texcoordinate)--------->Output the color taken from our texture

vertex的輸出 是 fragment的輸入


屏幕繪制過程:
1) 屏幕繪制到temporary texture中; 而不是通常的screen buffer
2) temporary texture 會經(jīng)過filter的處理。
3) 處理結(jié)果放到screen buffer中準備繪制到屏幕上顯示給用戶

總結(jié)

以上是生活随笔為你收集整理的shader 4 杂 一些和函数名词、数据结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。