在一些應用中,高質量的過濾是至關重要的,可以用畫素shader**執行任何過濾。gpu著色程式不用於cpu的主要之處在於:一般來說,cpu數學操作比紋理訪問更快,而在gpu中恰恰相反。影象過濾的目的很簡單:對於給你的輸入影象a,我們想要建立新的影象b。把源影象a變換到目標影象b的操作就是影象濾波。最一般的變換是調整影象大小,銳化,變化顏色,模糊影象等。
源畫素的圖案和它們對影象b畫素的相對貢獻,就稱為過濾核心(kernel)。把核心應用到源影象的過程叫做卷積。如果核心只是把畫素簡單的進行平均,我們稱這個模型為盒式濾波器。
我們可以把kernel作為引數直接代入shader,如下圖所示及**所示。
通過輔助影象,我們可以進行優化。充分利用紋理中的rgba通道,可以呼叫乙個tex2d函式訪問四個相鄰畫素而不必調整紋理索引。現在的卷積shader變得很短:
float4 convolve3x3grayhps(vertexoutput in,
uniform sampler2d graymap,
uniform sampler2d neighbormap,
uniform sampler2d cornermap,
uniform float w00, uniform float w01, uniform float w02,
uniform float w10, uniform float w11, uniform float w12,
uniform float w20, uniform float w21, uniform float w22,
uniform float sum) : color
本文隨後介紹了雙立方過濾等其他過濾技術以及反走樣的理論,這裡就不細講了。
可以寫乙個函式為每個取樣畫素計算過濾值,但是因為在過濾範圍中不需要高頻精度,所以查詢表就能工作得很好,可以簡單地把這些數值寫進小的浮點紋理,不但精度適當,而且查詢速度快(典型的空間換時間)。
高質量設計的特徵
高質量的設計具有很多常見的特徵。如果你能實現所有這些目標,你的設計就真的非常好了。這些目標之間有時會相互牴觸,但這也正是設計中的挑戰所在 在一系列相互競爭的目標之中做出一套最好的折中方案。有些高質量設計的特徵也同樣是 高質量程式的特徵,如可靠性和效能等。而有些則只是設計範疇內的特徵。下面就列出一些設...
高質量的子程式
1.什麼是子程式?子程式是為實現乙個特定的目的而編寫的乙個可被呼叫的方法或過程。2.建立子程式的理由 除此之外還有很多其他的理由比如 隔離複雜度,隱藏實現細節,限制變化帶來的影響,隱藏全域性資料,形成 控制點,促成可重用 達到特定的重構牧的等等。在子程式層上設計 內聚性 指子程式中各種操作之間聯絡的...
高質量的 LaTeX CJK 模板
記錄乙個比較好的latex模版。mac下latex輸入中文方法 tex program xelatex tex ts program xelatex tex encoding utf 8 unicode documentclass 12pt usepackage 最新的mactex都有 setrom...