ue motion blur
使用多instance绘制,只使用vertex index的方式来
记得同事来问的时候,motion blur有一部是要根据一个范围内的最大最小velocity差来判断使用哪一种motion blur的策略,但是因为这个范围一开始是固定死的,所以在动静态物的边缘会留下一些残影的线条。这里就需要根据velocity来动态的确定这个范围,即在边缘这个范围要扩大。
ue的实现还蛮妙的,通过instance draw来实现一个,即每个tile只传递顶点的index,具体矩形的大小由velocity确定,这个大小会作为depth写入深度图,通过深度覆盖来保留更大的范围的值。
1 | void VelocityScatterVS( |
shader 性能考虑
- if for
- hi-z 一个 pass 做完
hi-z要生成多个mipmap level的depth贴图,现在是一个level一个draw call完成的, 其实是用同步可以完成一个draw call绘制所有