Open knightforyou opened 8 months ago
Signed Distance Fields(有符号的距离场):符号距离域是一种不同的存储(通常是单色)位图数据的方式。 位图中的每个像素并不代表该点的强度,而是代表与源图像中最近的非黑色像素的距离。形状外的像素有正的距离值,而形状内的像素有负的距离值,因此名字中的 "符号 "部分。
由于距离场的源数据一般都是单色的,所以其作用有限,然而有一种应用特别适合距离场,那就是绘制文字及颜色缺少变化的场景。《黑神话·悟空》里使用了SDF来实现了诸多效果。
now.sdf = 999999; if(now in object){ now.sdf = 0; }else{ foreach(near in nearPixel(now)){ now.sdf = min(now.sdf,near.sdf + distance(now,near)); } } //near表示附近像素点,now表示当前像素,near.sdf表示near的SDF值,distance表示两点之间距离。https://zhuanlan.zhihu.com/p/337944099
Bitmap 存储各点的颜色 A B1 B2 B3 C A = (0,0,0),C = (1,1,1) B1 = A * 0.75 + C * 0.25 = (0.25,0.25,0.25) B2 = A * 0.5 + C * 0.5 = (0.5,0.5,0.5) B3 = A * 0.25 + C *0.75 = (0.75,0.75,0.75) //无实际意义的颜色 SDF,存储距离原点的距离 A B1 B2 B3 C A = (0,0),C = (4,0) B1 = A * 0.75 + C * 0.25 = (1,0) B2 = A * 0.5 + C * 0.5 = (2,0) B3 = A * 0.25 + C *0.75 = (3,0) //B1 B2 B3 "正确"的与原点之间的距离
位图颜色是标量,而SDF像素点存的是有方向的矢量,通过计算还原图片,但本质上是操作向量;所以放大的过程本质上是向量重建的过程,并不损失精度,从而可以实现光滑放大。
half4 col = half4(1,1,1,1); half a1 = lerp(color1.r , color2.r, _SDFLerp); col.a = smoothstep(0.5, 0.5 - _SmoothDelta , a1); //在shader中简单的插值,得到比较理想的过渡效果 // Shader 是一种在图形渲染中用于计算光影效果的计算机程序。它是基于 OpenGL API 的一个重要组成部分,能够实现包括纹理、阴影、反射、透明度等在内的各种效果。
1、SDF方面的知识:SDF的圆角问题以及多通道SDF的参考资料:https://zhuanlan.zhihu.com/p/398656596 2、Signed Distance Fields(有符号的距离场):https://zhuanlan.zhihu.com/p/357606643 3、Signed Distance Field:https://zhuanlan.zhihu.com/p/337944099 4、GAMES101-现代计算机图形学入门-闫令琪:https://www.bilibili.com/video/BV1X7411F744/?p=6 5、SDF(signed distance field)基础理论和计算:https://zhuanlan.zhihu.com/p/536530019 6、SDF (Signed Distance Field) 相关内容:https://blog.csdn.net/Game_jqd/article/details/121708448
SDF学习
Signed Distance Fields(有符号的距离场):符号距离域是一种不同的存储(通常是单色)位图数据的方式。 位图中的每个像素并不代表该点的强度,而是代表与源图像中最近的非黑色像素的距离。形状外的像素有正的距离值,而形状内的像素有负的距离值,因此名字中的 "符号 "部分。
距离场的应用
由于距离场的源数据一般都是单色的,所以其作用有限,然而有一种应用特别适合距离场,那就是绘制文字及颜色缺少变化的场景。《黑神话·悟空》里使用了SDF来实现了诸多效果。
SDF生成算法 - 8ssedt
bitmap与SDF:光滑放大
位图颜色是标量,而SDF像素点存的是有方向的矢量,通过计算还原图片,但本质上是操作向量;所以放大的过程本质上是向量重建的过程,并不损失精度,从而可以实现光滑放大。
实现图像之间的平滑过渡
1、SDF方面的知识:SDF的圆角问题以及多通道SDF的参考资料:https://zhuanlan.zhihu.com/p/398656596 2、Signed Distance Fields(有符号的距离场):https://zhuanlan.zhihu.com/p/357606643 3、Signed Distance Field:https://zhuanlan.zhihu.com/p/337944099 4、GAMES101-现代计算机图形学入门-闫令琪:https://www.bilibili.com/video/BV1X7411F744/?p=6 5、SDF(signed distance field)基础理论和计算:https://zhuanlan.zhihu.com/p/536530019 6、SDF (Signed Distance Field) 相关内容:https://blog.csdn.net/Game_jqd/article/details/121708448