2014-10-12 217 views
1

我一直在嘗試創建具有可增長厚度的內部輪廓着色器。內部輪廓着色器算法

我嘗試了幾件事。

  1. 檢查周圍像素,如果它們是透明的,則將當前像素着色爲黑色(或所選輪廓顏色)。如果我想控制輪廓的厚度,我需要檢查當前像素(北,南,東,西,西北,東北等等)的每個方向上的n個像素,其中n是所需的厚度。儘管如此,我仍然遇到性能問題。

  2. 複製圖像,並縮小圖像以控制輪廓厚度。這個較小的副本之外的任何東西都是黑色的(輪廓顏色),並且裏面的內容被設置爲原始圖像。這隻適用於基本的形狀,但想象一箇中心爲空心的甜甜圈形狀的圖像,縮小圖像將勾勒出外圈,而不是內圈。

  3. 與(2)相同,但不是縮小副本,只需模糊副本(控制厚度),然後修剪任何alpha!= 1的像素。這種方法效果最好,但對於複雜形狀。當我希望它一致時,某些區域會比其他區域更厚。

可能我嘗試其他什麼算法?一般的做法是什麼,Photoshop如何實現它?我的第一個算法是三者中最精確的算法,但由於它需要循環,所以我無法使它適用於像素着色器2。

+1

可否給我一個解釋的downvote,這樣我至少可以提高我的問題? – Infodayne 2014-10-12 06:09:01

+1

也許你不清楚你要求什麼。聽起來你對你嘗試過的方法的結果感到不滿意,並且想要一個替代方案(我不是downvoter)。 – GuyRT 2014-10-12 09:07:19

回答

0

您可以創建另一個網格,即「孔」或「網內」。即在原始網格內無處不在所需半徑的網格。

然後將其渲染到模板緩衝區,然後在未設置模板位的情況下使用輪廓顏色渲染原始網格。 Like in the stencil outlining.

您將需要一個新的「內網」爲每個不同的「內邊框的寬度,因此‘可增長’是很難達到的。