粒子系统
2017-03-12 01:42:33 0 举报
AI智能生成
粒子系统是一种计算机图形技术,用于模拟和渲染大量的小型对象,如烟雾、火焰、雨滴等。这些对象被称为”粒子”,它们可以具有各种属性,如颜色、形状、速度和生命周期。粒子系统通常用于创建复杂的视觉效果,如爆炸、火焰、水流等。在计算机游戏中,粒子系统也常用于模拟环境效果,如风、雪、雨等。粒子系统的优点是可以通过简单的规则生成复杂的视觉效果,而不需要计算每个对象的细节。但是,由于需要处理大量的小型对象,所以粒子系统的计算量通常很大。
作者其他创作
大纲/内容
分享
编译项目
cmake
common
android
github:Android-cmake
GfxDevice
opengl es
glVertexAttribPointer
定义一组通用顶点属性数据
硬件抽象层
OpenGL/OpenGLES
专题一:顶点
顶点数组
优化
State Cache
Buffer Recycle
OpenGL Object Model
smoke/fire/explosion/dust/fog
性能
overdraw
填充率(fillrate)
特征(nebulous/soft)
low image frequency
without sharp edge
低分辨率的off-screen Render Target
Depth Testing
实现算法
1. 正常渲染普通物体到frame buffer
2. Downsample Depth Buffer
3. 渲染粒子到off-screen Render Target,使用downsample的depth buffer进行Z-test
4. 把off-screen RT合成到frame Buffer, upsampling
pixel shader
opt for soft particles
获取depth Buffer
dx9,不能直接获取depth Buffer
MRT
所有target的深度必须相同(dx9)
不支持MSAA(dx9)
独立pass
直接以off-screen的分辨率, 省去downsample
多一个pass消耗
dx10, 直接获取depth buffer
SRV
Downsampling depth
point sampling depth
出现"Halo"
静止
颜色反差大
maximun of depth sampling
物体会出现更多的轮廓锯齿被particle填充,particle和物体更"接近"
only expedient hack, 没有理论支持,只是比halos looks better
依然会有一些较小的halos, 不过当线性差值blend到frame buffer后可基本忽略
Alpha Blending
Alpha Blend enable
Src Blend : Src Alpha
Dest Blend : OneMinusSrcAlpha
Src Alpha : 0
Dest Alpha : OneMinusSrcAlpha
降低前景物体边缘锯齿
Mixed-Resolution Rendering
edge-dectection, 存储在off-screen RT
stencil buffer (stencil enable for all pixel, 除了discard的edge)
full-screen分辨率再绘制一次粒子
VDM
Native Render
Unity5x图形渲染简化移植
统一抽象层
GfxDevice
VBO
DynamicVBO
GfxBuffer
VertextBuffer
IndexBuffer
平台相关
D3D9
D3DVERTEXELEMENT9
IDirect3DVertexDeclaration9
D3DDECLTYPE
OpenGL ES 2.0
OpenGL ES 3.0
Unity5x数学库
Matrix
Vector
Mesh
Unity5x粒子系统简化和优化
Unity5x多线程框架
图形渲染层优化
Material/Shader
todo
Collision
FixedTime
Prewarm
EmissionType
概念
Unity
Fence
VertexDeclaration
Android
SufaceFlinger
GPU Particle
opengles 2.0
stateless
MRT extension
NV_draw_buffers
opengles 3.0
Multiple render target
PBDR冲突?
more
geomerty shader
opengles 3.2
compute shader
opengles 3.1 && unity 5.6
gpu instancing
Unity 5.4
0 条评论
下一页