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

歡迎訪問 默认站点!

默认站点

當前位置: 首頁 >

光栅化坐标映射公式

發布時間:2023/12/4 35 豆豆
默认站点 收集整理的這篇文章主要介紹了 光栅化坐标映射公式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Direct3D中投影空間內的點坐標與屏幕上(或視口內)點的對應關系,
設屏幕大小為w×h,屏幕左上角像素的中心被定義為(0,0),整個屏幕是從(-0.5,-0.5)-(w-0.5,h-0.5),
像素
將投影空間內的x軸上區間(-1.0-1/w, 1.0-1/w]均勻分成w份,每份長度2/w,
將投影空間內的y軸上區間(-1.0-1/h, 1.0-1/h]均勻分成h份,每份長度2/h。
例如最左側的像素點的對應的橫坐標區間為(-1.0-1/w,-1.0+1/w],依次類推。
對于更一般的情況有
光柵化公式 投影空間坐標(x,y) -> 屏幕像素坐標(Sx,Sy)
Sx = x * (w/2) + (w/2)?? [1]
Sy = y * (-h/2) + (h/2)? [2]

以上是光柵化時的規律,在紋理采樣時,Direct3D使用如下公式
采樣公式 紋理坐標(u,v) -> 圖素坐標(Tx,Ty)
Tx = u*w - 0.5? [3]
Ty = v*h - 0.5? [4]

如果需要將一張圖的左上角(最左上角圖素的左上角)對應到屏幕的左上角
有些人可能會將左上角Vertex的投影空間坐標設置為(-1.0,1.0),其實這是不對的,我們可以用光柵化公式推導一下,
當(x,y) = (-1.0,1.0)時,
Sx = x * (w/2) + (w/2) = 0
Sy = y * (-h/2) + (h/2) = 0
而(Sx,Sy)=(0,0)并不是屏幕的左上角,而是屏幕左上角像素的中心,屏幕的左上角坐標應該是(-0.5,-0.5)

x * (w/2) + (w/2) = -0.5
y * (-h/2) + (h/2) = -0.5
可得,
x = -1 -1/w
y = 1 + 1/h
這才是正確的Vertex的投影空間坐標

結合光柵化公式和采樣公式我們還可以推導一下ShadowMap中采樣深度圖的紋理坐標,首先明確問題:
即,已知深度圖上一點是由投影空間坐標(x,y)光柵化成的,現在要采樣該點,計算(u,v),用(x,y)表示。

解:只需將建立方程讓紋理坐標對應的圖素坐標=屏幕像素坐標(即深度圖上的圖素坐標)
Tx = Sx
Ty = Sy
將[1],[2],[3],[4]式代入可解得,
u = x * 0.5 + (0.5 + 0.5/w)

v = y * -0.5 + (0.5 + 0.5/h)

結論:

屏幕坐標系:

Tx = Sx
Ty = Sy

Sx = x * (w/2) + (w/2)????????????? ?? [1]

Sy = y * (-h/2) + (h/2)???????????????? [2]

深度圖紋理坐標系:

u = x * 0.5 + (0.5 + 0.5/w)

v = y * -0.5 + (0.5 + 0.5/h)

投影空間坐標(x,y)深度圖上一點是由投影空間坐標(x,y)光柵化成的
參考:http://www.gesoftfactory.com/developer/Textures.htm

總結

以上是默认站点為你收集整理的光栅化坐标映射公式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得默认站点網站內容還不錯,歡迎將默认站点推薦給好友。