2012-11-27 51 views
1

我的目標是在柏油路上繪製白色線條。由於道路的特性發生變化,所以不能只有代表瀝青和白線的紋理。 當前的方法是應用瀝青紋理並在其他兩個紋理座標中編碼一些信息。在像素着色器中,讀取這些座標,我決定該片段是否應該是白色的。在紋理頂部繪製程序線,避免在glsl中出現鋸齒

這會導致高水平的別名。這就是我想要解決的問題。

我一直在改變應用smothsetp或線性插值線的「白度」。我也根據距相機的距離改變了寬度和顏色。這有點幫助,但是在很遠的距離,仍然存在醜陋的鋸齒線。

你會怎麼做呢?有紋理表示平滑的白線並訪問紋理元素會更好嗎?我應該使用雙線性濾波器來訪問相鄰的紋素嗎?

+0

您能否詳細介紹一下「道路變化的原因,所以我不能使用代表瀝青和白線的紋理」?爲什麼你不能從預渲染的集合中選擇正確的紋理並將它們拼接在一起?也許我們可以提出一種方法來克服你在這方面遇到的問題,將「白線」問題默認爲普通的紋理。 –

+0

至於實際的問題,你可以嘗試使用Humus(http://www.humus.name/index.php?page=3D&ID=84)勾畫出的貼花技術,但只應用於白線(如你已經覆蓋了瀝青)。 –

+0

謝謝@ Paul-Jan 我會仔細檢查鏈接,看起來很有希望。 至於另一個問題: 道路可以在運行時由用戶編輯(寬度,車道數量,路口,塗漆的簽名......)。 要做到這一點,只能創建一堆紋理並將它們正確地附着在幾何體上,但我認爲改變編碼方式(通過額外的紋理座標傳遞)會更容易和更靈活。我可能在那裏採取了錯誤的做法,但到​​目前爲止,除了別名之外,我一直在取得好成績。 – josepcn

回答

1

你應該簡單地使用2個2座標的紋理。

  1. 小無縫瀝青紋理平鋪在道路多邊形。
  2. 阿爾法織嘜,你會放在這個多邊形的中間(紋理座標偏移)

或者你可以在馬路中間產生額外的多邊形的標記,以避免任何混淆。

爲了使它看起來真實,你可以申請Texture Bombing污垢和裂縫。

+0

謝謝@JAre, 這幾乎是我認爲可以實現的標準方法,但這意味着要重新繪製道路繪圖上的大部分代碼(這仍有可能)。 這樣我就可以深入瞭解着色器上的繪圖: 有沒有一種方法可以通過對紋理進行採樣來獲取瀝青顏色,然後計算該片段是否爲白線的一部分,然後將該結果應用於最終顏色反鋸齒的方式?這可能嗎?如果是這樣,你會說是值得的嗎?將應用後處理AA的幫助?或者可以更好地使用紋理重做整個事物? – josepcn

+0

@ user1854147對於後處理AA,您需要邊緣(正常\深度斜率),對不對?你可以嘗試使它看起來更加清晰後處理。但通常使用標準紋理映射完成。你可以用程序的方式用着色器來完成,但很難寫,甚至更難以延伸。例如,如果從兩側足夠遠(基於紋理座標值),則可以測試片段(在片段着色器中),然後它是白色的。但是通過這種方式,你的着色器可能會變得太胖,特別是如果你使用分支。您也可以將條紋作爲單獨的幾何體與道路上的一小部分實現 – JAre