opengl - 像素化 UV 坐标时是否可以解决舍入问题?
问题描述
我正在开发一个块状体素游戏。我从0fps文章中实现了平滑着色,效果很好。
今天我决定通过像素化来让它变得不那么平滑。构成三角形带(四边形)的每个顶点都有一个vec4 shadows
. 我只是使用 UV 坐标在这 4 个阴影点之间进行双线性插值,否则这些坐标将用于纹理。
float pixelize(float x) { return floor(x*BLOCK_DIMENSION) / BLOCK_DIMENSION; }
float linear(float u, float a, float b) { return a + u*(b - a); }
float bilinear()
{
float v0 = linear(pixelize(texUV.x), shadows.x, shadows.y);
float v1 = linear(pixelize(texUV.x), shadows.z, shadows.w);
return linear(pixelize(texUV.y), v0, v1);
}
但无论我多么努力地捏造它(添加 0.125f 或 0.5f 或其他),我都无法让它完美。像素化偏移 1(注意左侧有 4 个阴影,右侧有 3 个阴影);阴影不是对称的。
有可能解决这个问题吗?
解决方案
推荐阅读
- python-3.8 - Python,带有基本身份验证的 HTTPS GET/POST
- azure-devops - 使用“NuGet Authenticate”任务发布管道元数据
- javascript - Javascript管道没有捕获我抛出的错误
- bash - 脚本中 mkdir 和 mktemp 之间的区别
- html - 为什么我的 html-css backgrpung 图像重复?
- javascript - Mongoimport 特定格式
- python - SQL Server 锁定行读取和更新在 Python 中不起作用
- python - 导入时间的脚本执行时间 --> 结果的单位是什么?
- python - RNN 中的最后一层 - Dense、LSTM、GRU ......?
- python - 大熊猫 NaN 与 nan 的比较