文檔:手冊:1-4-0:3.1.2 渲染通路(Pass)

 文檔原址:http://ogre3d.cn/wiki/index.php?title=%E6%96%87%E6%A1%A3:%E6%89%8B%E5%86%8C:1-4-0:3.1.2_%E6%B8%B2%E6%9F%93%E9%80%9A%E8%B7%AF%EF%BC%88Pass%EF%BC%89

 

文檔:手冊:1-4-0:3.1.2 渲染通路(Pass)

出自Ogre3D開放資源地帶

跳轉到: 導航, 搜索

3.1.2 渲染通路(Pass)

一個渲染通路就是幾何問題裏的一次渲染;一個帶有一整套渲染屬性的渲染API的一次調用。一個技術可以包含有1到16個渲染通路,當然,渲染通路用得越多,技術在渲染的時候開銷越大。

爲了清楚識別使用的到底是哪個渲染通路,渲染通路常常被起個名字,當然,也可以不起,名字並不是必需的。腳本中沒有名字的渲染通路將會以渲染通路索引號爲名。例如:在一個技術裏,第一個渲染通路索引號是index 0,所以,如果腳本中沒有對它命名,那麼它的名字就是“0”。一個技術中的渲染通路的名字必須是唯一的,否則,最後一個渲染通路的結果就會是所有相同名字的渲染通路的效果的融合。如果發生這種事,一個警告消息就會發到Ogre.log中。而且,命名渲染通路還有助於複製材質和修改已經存在的渲染通路:(詳見3.1.11 材質拷貝部分)

渲染通路有一套全局屬性(如下所述),0或多個紋理單元入口,:(詳見3.1.3 紋理單元部分),以及可選的對於頂點程序或片斷程序的引用(詳見3.1.9 在渲染通路中使用頂點程序和片斷程序部分)。

下面介紹在.material腳本中“渲染通路”部分能夠使用的一些屬性:

  • ambient
  • diffuse
  • specular
  • emissive
  • scene_blend
  • depth_check
  • depth_write
  • depth_func
  • depth_bias
  • alpha_rejection
  • cull_hardware
  • cull_software
  • lighting
  • shading
  • polygon_mode
  • fog_override
  • colour_write
  • max_lights
  • start_light
  • iteration
  • point_size
  • point_sprites
  • point_size_attenuation
  • point_size_min
  • point_size_max

屬性詳解

ambient

設置此渲染通路中周圍環境的反射係數。當asm,CG,HLSL(High Level Shader Language高級渲染語言)使用時,該屬性無效。與GLSL()一起使用時,渲染器可以讀OpenGL材質狀態。

格式: ambient (<red> <green> <blue> [<alpha>]| vertexcolour)
數值的取值範圍在0.0到1.0之間。
示例: ambient 0.0 0.8 0.0

渲染通路的基本顏色取決於各頂點紅色,綠色和藍色光的反射量。此屬性決定了反射多少環境光(無目標的全局光)。也可以如在網格中定義的一樣,通過使用關鍵字vertexcolour而不是使用顏色值,使環境反射係數跟蹤頂點顏色。默認值是全白的,意思就是物體整個完全被照亮。如果你想要看見散射和鏡面反射的效果,就要減少這個屬性的相關數值,或者改變顏色的混合,使物體有一個不是白色的基礎色。如果使用了'lighting off'屬性將動態光照關閉了或者任何紋理層有'colour_op replace'屬性,那麼“ambient”這個屬性無效。

默認: ambient 1.0 1.0 1.0 1.0

diffuse

設置此渲染通路中漫反射係數。當asm,CG,HLSL(High Level Shader Language,高級渲染語言)使用時,該屬性無效。與GLSL(OpenGL's Shader Language,OpenGL的渲染語言)一起使用時,渲染器可以讀OpenGL材質狀態。

格式: diffuse (<red> <green> <blue> [<alpha>]| vertexcolour)
數值的取值範圍在0.0到1.0之間。
示例: diffuse 1.0 0.5 0.5

渲染通路的基本顏色取決於各頂點紅色,綠色和藍色光的反射量。此屬性決定了反射多少四散光(來自場景中光照類實例的光)。也可以像在網格里一樣定義,用vertexcolour關鍵字而不是用顏色值,令四散反射係數追蹤頂點顏色。默認值是全白,意思就是物體反射所能接收到的所有白光。如果使用了'lighting off'屬性將動態光照被關閉了或者任何紋理層有'colour_op replace'屬性,那麼“ambient”這個屬性無效。

Default: diffuse 1.0 1.0 1.0 1.0

specular

設置此渲染通路中鏡面反射顏色的反射係數。當asm,CG,HLSL(High Level Shader Language,高級渲染語言)使用時,該屬性無效。與GLSL(OpenGL's Shader Language,OpenGL的渲染語言)一起使用時,渲染器可以讀OpenGL材質狀態。

格式: specular (<red> <green> <blue> [<alpha>]| vertexcolour) <shininess>
數值的取值範圍在0.0到1.0之間。閃耀值(shininess)可以是任意比0大的值。
示例: specular 1.0 1.0 1.0 12.5

渲染通路的基本顏色取決於各頂點紅色,綠色和藍色光的反射量。此屬性決定了反射多少鏡面光(來自場景中光照類實例的高光)。也可以像在網格里一樣定義,用vertexcolour關鍵字而不是用顏色值,令鏡面反射係數追蹤頂點顏色。默認值沒有鏡面反光。鏡面反射的這種高光取決於顏色參數,閃耀值的設置大小。閃耀值設置得越高,高光就越耀眼。閃耀值在0.0到1.0之間時,使用要小心,因爲這會引起高光顏色會被應用到有使用這種高光屬性材質的整個平面。這樣的話,當對該平面的視角發生改變的時候,會發生特別噁心的閃爍。閃耀值在1到128之間時,在DirectX和OpenGL渲染器上都表現良好。如果使用了'lighting off'屬性將動態光照被關閉了或者任何紋理層有'colour_op replace'屬性,那麼“ambient”這個屬性無效。

默認: specular 0.0 0.0 0.0 0.0 0.0

emissive

設置一個物體自發光的量。當asm,CG,HLSL(High Level Shader Language,高級渲染語言)使用時,該屬性無效。與GLSL(OpenGL's Shader Language,OpenGL的渲染語言)一起使用時,渲染器可以讀OpenGL材質狀態。

格式: emissive (<red> <green> <blue> [<alpha>]| vertexcolour)
數值的取值範圍在0.0到1.0之間。
示例: emissive 1.0 0.0 0.0

如果一個物體是自發光的,那麼它就不需要外界的光去照亮它,無論是環境光還是其它的光,就好像有自己的環境光一樣。然而,其實這個屬性並不像名字所暗示的那樣,這個物體對場景中的其他物體來說並不是一個光源(如果你想讓它成爲一個光源,你需要創建一個光源然後將光源放在這個物體的中心上)。也可以像在網格里一樣定義,用vertexcolour關鍵字而不是用顏色值,令這樣放射出來的顏色追蹤頂點顏色。如果使用了'lighting off'屬性將動態光照被關閉了或者任何紋理層有'colour_op replace'屬性,那麼“ambient”這個屬性無效。

默認: emissive 0.0 0.0 0.0 0.0

scene_blend

設置此渲染通路與場景中現有的內容混合的方式。紋理單元入口所見的那個紋理混合操作被看作是紋理層之間的混合,而這個混合是將此渲染通路的輸出結果與當前渲染目標的內容相結合。所以,這種混合就允許物體透明和其他特殊效果。有兩種形式可供選擇使用:一是使用預定義混合形式;二是使用自定義的辦法,源因數和目標因數都有你自己DIY。

格式1: scene_blend <add|modulate|alpha_blend|colour_blend>
示例: scene_blend add

這是一個比較簡單的形式,常用的混合形式由一個參數枚舉出來,可用的混合形式參數如下:

  • add
渲染輸出的顏色和亮度一起疊加到場景中,用在爆炸、閃光、閃電、鬼魂等地方效果很好。相當於“scene_blend one one”
  • modulate
另一種將渲染輸出加到場景內容中,一般用於給場景着色和加深場景顏色。對於濃煙瀰漫的玻璃,半透明的物體等,有很好的使用效果。相當於“scene_blend dest_colour zero”。
  • colour_blend
基於輸入文件的亮度給場景着色,但是並不加深顏色。相當於“scene_blend src_colour one_minus_src_colour”。
  • alpha_blend
渲染輸出的alpha值被用作遮罩。相當於“scene_blend src_alpha one_minus_src_alpha”
格式2: scene_blend <src_factor> <dest_factor>
示例: scene_blend one one_minus_dest_alpha

這種格式允許你通過設置源和目標因數,從而完全控制混合操作。最終被寫入渲染目標的顏色結果是(texture * sourceFactor) + (scene_pixel * destFactor)。兩個參數的可選值如下:

one
常數值1.0
zero
常數值0.0
dest_colour
已存在的像素顏色
src_colour
紋理像素顏色
one_minus_dest_colour
1 -(dest_colour)
one_minus_src_colour
1 -(src_colour)
dest_alpha
已存在的像素alpha值
src_alpha
紋理像素alpha值
one_minus_dest_alpha
1 -(dest_alpha)
one_minus_src_alpha
1 -(src_alpha)
默認: scene_blend one zero (這句意爲不透明的)

depth_check

設置此渲染通路的深度緩衝檢測的狀態是打開狀態還是關閉狀態。

格式: depth_check <on|off>

如果深度緩衝檢測處於打開狀態,則無論何時一個像素要想寫入畫面緩衝,深度緩衝檢測就檢查這個像素是否比在那一點的其它像素都要靠前。如果不是,那麼這個像素就不寫入。如果深度緩衝檢測關閉了,則無論之前渲染的結果,一律寫入這個像素。更高級的配置還可參看depth_func

默認: depth_check on

depth_write

設置此渲染通路的深度緩衝寫入的狀態是打開狀態還是關閉狀態。

格式: depth_write <on|off>

如果深度緩衝寫入處於打開狀態,無論何時一個像素想要寫入畫面緩衝,深度緩衝都會更新那個像素的深度值,因此,如果將來的像素在這個像素的後面,就會影響將來的渲染操作。如果這一屬性被關閉了,那麼像素就不會更新深度緩衝。一般來說,這一屬性是打開的,但是,當你渲染靜態背景或者位於場景後部的一系列透明物體以便它們能夠彼此正確地重疊時,也可以關閉。

默認: depth_write on

depth_func

當深度檢測打開時,設置用於比較深度值的函數。

格式: depth_func <func>

如果深度檢測處於打開狀態(參看depth_check),那麼將要寫入的像素的深度值與緩衝區中現有內容的深度值會發生比較。一般來說,這種比較是小於等於,例如:將要寫入的像素比現有內容距離我們更近(或相等)。可能的函數如下:

always_fail
永遠不向渲染目標寫入像素
always_pass
總是將像素寫入渲染目標
less
如果將要寫入的像素的深度小於現在緩衝區內容的深度,則寫入
less_equal
如果將要寫入的像素的深度小於等於現在緩衝區內容的深度,則寫入
equal
如果將要寫入的像素的深度等於現在緩衝區內容的深度,則寫入
not_equal
如果將要寫入的像素的深度不等於現在緩衝區內容的深度,則寫入
greater_equal
如果將要寫入的像素的深度大於等於現在緩衝區內容的深度,則寫入
greater
如果將要寫入的像素的深度大於現在緩衝區內容的深度,則寫入
默認: depth_func less_equal

depth_bias

設置此渲染通路的深度值的偏向。可用於使共面的多邊形中的一個位於其它之上。例如:印製花紋圖案。

格式: depth_bias <constant_bias> [<slopescale_bias>]

深度偏向值最終由偏向常數(constant_bias)*最小可觀察的深度(minObservableDepth)+最大坡度(maxSlope)*坡度偏向(slopescale_bias)共同決定。坡度偏向與多邊形到鏡頭的角度有關,形成相應的偏向值,但是在一些時間比較早的硬件上,這被忽略了。偏向常數是形成最小深度值的一個因素,所以1的價值就在於一點一點地緩慢地推進深度。

alpha_rejection

設置此項,可以使用alpha作爲一個閥值,令渲染通路拒絕來自管線的像素。

格式: alpha_rejection <function> <value>
示例: alpha_rejection greater_equal 128

如上例所示,拒絕所有來自管線的alpha值大於等於128的像素。 function參數可以選擇在depth_function屬性的參數列表中所列的參數。value參數理論上可以是0到255之間的任意數,但是考慮到硬件兼容性,最好限制在0到128之間。

默認: alpha_rejection always_pass

cull_hardware

設置此渲染通路的硬件裁剪模式。

格式: cull_hardware <clockwise|anticlockwise|none>

硬件渲染引擎裁剪三角形的典型方法是基於三角形頂點的環繞順序。頂點環繞順序又與渲染操作中頂點傳送和編號的方向有關,從鏡頭中看到的有可能是順時針的也可能是逆時針的。如果選擇了'cull_hardware clockwise'設置,則所有從鏡頭看順時針順序的三角形被硬件剪裁掉。顯然,'anticlockwise'設置裁剪掉逆時針順序的三角形。'none'設置關閉硬件裁剪,即所有三角形都渲染(用於渲染雙側道路)。

默認: cull_hardware clockwise

默認值與OpenGL的默認值相同,與Direct3D的默認值相反(因爲OGRE與OpenGL一樣使用右手座標系)。

cull_software

設置此渲染通路的軟件裁剪模式。

格式: cull_software <back|front|none>

在某些情形下,引擎也會在將幾何體送往硬件渲染前進行軟件裁剪。此設置僅在場景管理器使用它時起效(因爲最好用在大量平面的世界幾何體,而不是移動的幾何體,因爲用於移動的物體上代價會很大),但是如果在送入硬件之前可以有效裁剪的話還是可以使用的。在這種情況下,裁剪就要基於面向鏡頭的是三角形的背面還是正面——這個定義是基於面法向的(即:垂直於多邊形平面且標示出正面方向的向量)。因爲OGRE期望平面的逆時針方向爲正向,所以軟件裁剪'cull_software back'相當於硬件裁剪'cull_hardware clockwise'設置,也是爲什麼這兩個作爲默認設置的原因。雖然反映裁剪方式的命名是不同的,但是由於多數時候面法向都是預先計算好的且不一定是OGRE期望的方式,因此如果你有使用你自定義的面法向的場景管理器,也可以設置'cull_hardware none'然後完全基於你的面法向進行軟件裁剪。

默認: cull_software back

lighting

設置動態光照是處於打開狀態還是關閉狀態。如果光照被關閉,那麼所有使用此渲染通路的物體將被完全照亮。如果使用了頂點程序,則此屬性無效。

格式: lighting <on|off>

關閉動態光照會使得任何環境光、漫反射光、鏡面反射光、放射光和陰影屬性都成爲了多餘的。當打開光照時,物體按照頂點的法向被照亮。

默認: lighting on

shading

設置此渲染通路中爲表現動態光照而使用的各種陰影形式。

格式: shading <flat|gouraud|phong>

當動態光照打開時,效果就在每個頂點處生成顏色值。這些值是否全平面插入(如何插入)就依賴於這個屬性設置。

flat
無插值參與。每個平面的陰影由平面上第一個頂點的顏色決定。
gouraud
平面上每個頂點的顏色採用線性插入。
phong
在全平面上插入頂點法線向量,被用於決定每個像素的顏色。能夠得到更加自然的光照效果,但是代價也相應更高,在高級應用中表現更好。並不是所有硬件都支持此屬性。
默認: shading gouraud

polygon_mode

設置多邊形應該如何被柵格化。例如:它們應該是被填充後畫出來,還是作爲點(只有頂點)、線(只有外邊框)畫出來。

格式: polygon_mode <solid|wireframe|points>
solid
一般情況——填充多邊形
wireframe
多邊形只畫外邊框
points
只畫每個多邊形的點
默認: polygon_mode solid

fog_override

這個屬性告訴渲染通路是否撤銷場景的霧設置,而強制執行此渲染通路它自己的設置。當場景中其他的物體被霧遮擋,而你不想讓霧影響某些物體時非常有用。當然反之亦然。注意這隻影響固定功能霧——原來的場景霧參數仍然被送入渲染器,使用fog_params參數綁定(這就允許你關閉固定功能霧,轉而在渲染器中計算;如果你想關閉陰影霧,你可以通過陰影參數關閉它。)

格式: fog_override <override?> [<type> <colour> <density> <start> <end>]
默認: fog_override false

如果你指定第一個參數爲真,並給出了其餘參數,就表明你要告訴渲染通路如果在使用這些霧設置和使用場景設置之間選擇的話,優先選擇使用這些霧設置。如果你指定第一個參數爲真,但沒給出其餘參數,就表明你要告訴渲染通路不使用任何霧設置,無論場景如何設置。以下是參數的解釋:

type
none = 沒有霧,相當於使用'fog_override true'。
linear = 線性霧,從 <start> 開始到 <end> 結束的這一段距離有霧。
exp = 霧以幾何方式增加(fog = 1/e^(distance * density)), 使用濃度 <density> 參數控制。
exp2 = 霧以幾何的二次方增加,更加快速(fog = 1/e^(distance * density)^2),使用濃度 <density> 參數控制。
colour
3個0到1之間的符點數組成的序列,表示紅色、綠色、藍色的亮度。
density
用於'exp'或者'exp2'霧類型的濃度參數。雖不用於線性模式,但是也必須寫上,作爲佔位符。
start
線性霧距離鏡頭的開始距離。在其它模式下,儘管不用這個參數,也必須寫上,作爲佔位符。
end
線性霧距離鏡頭的結束距離。在其它模式下,儘管不用這個參數,也必須寫上,作爲佔位符。
示例: fog_override true exp 1 1 1 0.002 100 10000

colour_write

設置此渲染通路的顏色寫入是打開還是關閉的。

格式: colour_write <on|off>

如果顏色寫入被關閉,那麼此渲染通路中沒有可見像素寫入屏幕。你也許認爲這沒什麼用,但是如果你關閉顏色寫入並且合理利用其他一些小的渲染設置,你可以使用這個渲染通路在執行後續的填充顏色數據的渲染通路之前初始化深度緩衝區。這樣可以極大地提升效果,尤其是當你使用複雜的片斷程序的時候,因爲如果深度檢測失敗了,片斷程序根本就不會運行。

默認: colour_write on

start_light

設置此渲染通路使用的首個光源。

格式: start_light <number>

你可以使用這個屬性設置此渲染通路的光源的開始位置。換句話說,如果你設置start_light爲2,那麼被處理的第一個光源就是實際列表中的第三個光源。例如,你可以利用這個選項,使用不同的渲染通路處理第一組的幾個光源對第二組的幾個光源,或者使用它與iteration選項協作,從列表的給定點開始迭代(例如,在第一個渲染通路里處理頭兩個光源,然後從此開始每次兩個光源重複進行)

默認: start_light 0

max_lights

設置此渲染通路使用的光源的最大數量。

格式: max_lights <number>

光源的最大數量由渲染系統設定,通常爲8,常用於渲染固定功能材質。當你要使用可編程管線(詳見3.1.9 在渲染通路中使用頂點程序和片斷程序部分),這個限制依賴於你要運行的程序。如果你使用'iteration once_per_light'(詳見下面 iteration),則它的有效性僅限於你想使用的渲染通路的數量。但是,無論你使用哪種方法,都要應用max_lights限制。

默認: max_lights 8

iteration

設置此渲染通路是否被迭代,多次重複執行。

格式 1: iteration <once | once_per_light> [lightType]
格式 2: iteration <number> [<per_light> [lightType]]
格式 3: iteration <number> [<per_n_lights> <num_lights> [lightType]]

示例:

iteration once
渲染通路只執行一次,默認設置。
iteration once_per_light point
渲染通路每個光源點執行一次。
iteration 5
此渲染通路的渲染狀態將被建立,並且繪圖調用將執行5次。
iteration 5 per_light point
此渲染通路的渲染狀態將被建立,並且繪圖調用將每個光源點各執行5次。
iteration 1 per_n_lights 2 point
此渲染通路的渲染狀態將被建立,並且繪圖調用將每2個光源點執行5次。

依照默認設置,渲染通路只執行一次。但是,如果你使用可編程管線,或者你希望超出支持的光源數量限制,你或許想要使用once_per_light選項。在這種情況下,只有光源0被使用,每次使用不同的光源作爲光源0,渲染通路執行多次。顯然,這會使渲染通路的代價很高,但是,考慮1到n個光源的每像素光照效果,這可能是唯一達到這種效果的辦法。

使用數字代替“once”表示建立渲染狀態後渲染通路的一次以上的迭代執行。渲染狀態在初始化建立後就不再改變,所以對於使用需要迭代多次相同渲染狀態的可編程渲染,重複的繪圖調用是非常快速和理想的。例如,皮毛、動作模糊、特殊濾鏡等渲染。

如果你使用了once_per_light,你也應該在此渲染通路之前的技術裏增加一個環境渲染通路,否則,當這個物體附近沒有光源時,它就不會被渲染;即使你的場景裏沒有環境光時,這也是很重要的,因爲原本你仍然是想要顯示物體的輪廓的。

此屬性的光源類型參數僅在你使用once_per_light、per_light或者per_n_light時應用,且還限制運行單一類型光源('點光源'、'方向光源'或'斑光源')的渲染通路。如下面的例子所示,這個渲染通路將會每個電光源執行一次。如果你能估計到將要處理的光源類型,這會是有用的,因爲當你要寫一個頂點/片斷程序時,它會很容易。至少點光源和方向光源可以用一種方法處理。

默認: iteration once

示例:使用了一個在第二次渲染通路中包含10次迭代操作用以生成皮毛的簡單的皮毛渲染材質腳本

// GLSL simple Fur
vertex_program GLSLDemo/FurVS glsl 
{ 
  source fur.vert 
  default_params
  {
    param_named_auto lightPosition light_position_object_space 0
    param_named_auto eyePosition camera_position_object_space
    param_named_auto passNumber pass_number
    param_named_auto multiPassNumber pass_iteration_number
    param_named furLength float 0.15
  }
} 
fragment_program GLSLDemo/FurFS glsl 
{ 
  source fur.frag 
  default_params
  {
    param_named Ka float 0.2
    param_named Kd float 0.5
    param_named Ks float 0.0
    param_named furTU int 0
  }
} 
material Fur
{ 
  technique GLSL
  { 
    pass base_coat
    { 
      ambient 0.7 0.7 0.7
      diffuse 0.5 0.8 0.5
      specular 1.0 1.0 1.0 1.5
      vertex_program_ref GLSLDemo/FurVS
      {
      }
      fragment_program_ref GLSLDemo/FurFS 
      { 
      } 
      texture_unit
      {
        texture Fur.tga
        tex_coord_set 0
        filtering trilinear
      }
    } 
    pass grow_fur
    { 
      ambient 0.7 0.7 0.7
      diffuse 0.8 1.0 0.8
      specular 1.0 1.0 1.0 64
      depth_write off
      scene_blend src_alpha one
      iteration 10    
      vertex_program_ref GLSLDemo/FurVS
      {
      }
      fragment_program_ref GLSLDemo/FurFS
      {
      }
      texture_unit
      {
        texture Fur.tga
        tex_coord_set 0
        filtering trilinear
      }
    } 
  } 
}

注意:使用GPU程序自動參數pass_number和pass_iteration_number告訴頂點或片斷程序渲染通路數量和迭代數。

point_size

此設置允許你在渲染一個點列或者一個point sprites列時改變點的大小。這個命令的插值依賴於point_size_attenuation選項——如果是關閉的(默認情況),點的大小是屏幕像素的大小;如果是打開的,表現爲標準化屏幕座標(屏幕高爲1.0)。

注意:某些設備有其所支持的點的大小的上限——相同的顯卡不同的應用程序接口可能不同!不要相信點的大小,因爲那些屏幕上很大的點可能僅限於某些顯卡。最高像素的範圍從64像素到256像素。

格式: point_size <size>
默認: point_size 1.0

point_sprites

這個設置指定此渲染通路的硬件point sprites渲染是否打開。如果打開了,意味着一個點列被作爲一個四元組列渲染而不是作爲一列點渲染。如果你使用了公告板集並且只需要使用基於公告板的大小相同的點,使用這個選項是非常有用的。你也可以在任何其它點列渲染中使用這個屬性。

格式: point_sprites <on|off>
默認: point_sprites off

point_size_attenuation

定義點的大小是否根據視覺空間距離增加而衰減,以及以何種方式衰減。當你使用point sprites時,這個選項特別有用,因爲它定義了當遠離鏡頭時,應如何減小尺寸。你也可以關閉這個選項,使point sprites成爲一個常數的屏幕尺寸(像點一樣),或者打開這個選項,使之隨距離而改變。

如果你打開了這個選項,你只要提供最後3個參數。衰減方程爲點的大小乘以1 / (constant + linear * dist + quadratic * d^2);因此關閉這個選項就相當於(constant = 1, linear = 0, quadratic = 0)且標準透視縮減是(constant = 0, linear = 1, quadratic = 0)。後者假設你指定打開這個選項但未給出後3個參數。

注意衰減的結果應限於點尺寸的最小和最大值之間(詳見下面介紹)。

格式: point_size_attenuation <on|off> [constant linear quadratic]
默認: point_size_attenuation off 

point_size_min

設置點衰減(詳見上面point_size_attenuation)的最小值。細節詳見上面point_size。

格式: point_size_min <size>
默認: point_size_min 0

point_size_max

設置點衰減(詳見上面point_size_attenuation)的最大值。細節詳見上面point_size。 0值意味着將最大值設置爲當前顯卡所支持的最大值。

格式: point_size_max <size>
默認: point_size_max 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章