正片疊低後圖像邊緣有白邊

在做項目的時候,要做一個正片疊低的效果,當做完後發現一個不可思議的效果。圖片邊緣有描邊,如下


最後在webglRender中添加了該屬性後, var renderer = new THREE.WebGLRenderer({premultipliedAlpha: false}) 後完美解決,解決後效果如下


那麼這個屬性到底是幹什麼呢,,下面是我的一些理解:

premultipleliedAlpha 渲染器是否會假定顏色,預乘alpha,默認爲true。

在源代碼WebGLState.js中看到這樣的代碼後,但還是不理解,

setClear: function ( r, g, b, a, premultipliedAlpha ) {

   if ( premultipliedAlpha === true ) {

      r *= a; g *= a; b *= a;

   }

   color.set( r, g, b, a );
經過測試對比,

材質如下

var material = new THREE.MeshBasicMaterial({
     color : 0xffffff,
     transparent:true,
     opacity : 1
});

當屬性值爲false時的效果如下


當爲true時;效果如下:

(完全白色,看不見)

所以,我明白了,,雖然讓面的原理還不是很懂,但經過正片疊低的算法,黑色會隱藏,白色會顯示,這樣就完美解決黑邊的問題。






發佈了27 篇原創文章 · 獲贊 13 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章