18號字體html
18號字體放大15倍算法
基於sdf渲染字體放大15倍緩存
相比常規的渲染方式,基於SDF渲染文字可無限放大並保持清晰,幾乎沒有開銷就可實現描邊,發光,抗鋸齒等效果.且它只須要很小的紋理緩存SDF信息便可.工具
所謂SDF(Signed-distance-field),就是將每一個像素存儲的顏色值換成距離文字輪廓最短距離,當像素在文字內,則用正數距離,在文字外則用負數距離,文字輪廓距離則是零,所以只要判斷像素若是是正數,就輸出顏色,不然丟棄顏色便可.字體
該技術由Valve開發半條命2時提出,當時主要用於渲染圖片,以後被普遍用於其餘技術中,用於渲染字體僅是其中一項.3d
相對比常規的渲染方式,除了片斷着色器的差異外,主要差異在於生成的紋理緩存.調試
常規渲染方式的紋理緩存大體以下:htm
一個紋理只存一個字號blog
一個紋理存儲多個字號圖片
它們都有一個共同點:每一個像素存儲的信息都是顏色.而sdf每一個像素存儲的是距離,所以它能提供矢量信息.(怎麼存儲多個字體, 可查看合併圖集)
SDF紋理
SDF渲染字體在網上有不少資料,但我翻遍了百度,只找到一個可運行的文字SDF生成工具,在我反覆調試後,發現這個工具生成的SDF是錯的,無可奈何我只好花20分鐘重寫了一個,算法也簡單,無非就是暴搜+閥值控制,生成4096*4096的SDF,i7 7700k大概須要1分鐘.
描邊
內發光
外發光
效果