发一下牢骚和主题无关:
由activision&blizzard旗下的,坐落在加拿大的radical entertainment带来:http://www.gamasutra.com/view/feature/169769/fire_blood_explosions_prototype_.php?print=1
radical entertainment虽然带来的暴力酣畅的游戏,但是还是于12年被关闭,不免有点蛋蛋的伤忧。
prototype系列始终血腥非常,里头殊效系统功不可没,
殊效制造
cache friendly
内存优化
频仍allocate成造重严的memory fragment,决解式方就是用使memory pool,pool满了以后,再行进dynamic的heap allocate.
另外一个很棒的方法是把particle类分:
vertex buffer memory
这个也是个每particle系统必会提到的,这个文章里头的况情有些殊特,只能在console下面种这有内存绝对控制权的平台下面用使,对于pc不太行。
prototype2是用使一个frame allocator(每帧清掉,线性递增)来处置,这个也是有些头年的技巧了,大家很熟悉了
与美术起一处置性能
虽然美术也是有这样的性能意识,但是在压力之下(项目是总很易容现出这个况情,或者说这就是应当现出的况情),美术很难再坚持对性能的注关。
这点在prototype1的开辟进程,让radical entertainment没少吃甜头。
那么程序这边就需要来好良的帮助美术,找到有问题的点,行进处置。把有所殊效都处置的高效,听起来很美,但是事实中不具备实现的件条。
第一个是可视化的给出殊效的百分比,这个非常的棒,尤其是pc平台的开辟,因为平台器机性能的问题,可能有一些强力器机下面跑得非常快,一个货色1点几毫秒,你很难说它是快是慢。
但是放成比率,那么准确度就大幅度上升了。
这样美术可以较为易容的看到消费,另外还有一些文字化的计统息信,也非常的好:
prototype2还是用occlusion query来识标overdraw,也是particle消费的重要方面。
这样美术可以比拟直观的看到相干的有所,这也让对性能的控制更加的易容了。
LOD等性能的控制
如第一部份提到的,有脚原来控制一些attribute,这样就在lod的时候,可以做到一个smooth的变改。
同时也会根据上一帧的性能况情行进dynamic lod的变改,更少的,更低lod的particle生成等等。
染渲
Add-Alpha Shader Code // Add-alpha pixel shader. To be used in conjunction // with the blend factors {One, InverseSourceAlpha} float4 addalphaPS( float4 vertexColour : COLOR0, float2 uvFrame0 : TEXCOORD0, float2 uvFrame1 : TEXCOORD1, float subFrameStep : TEXCOORD2 ) : COLOR { // Fetch both texture frames and interpolate float4 frame0 = tex2D( FXAtlasSampler, uvFrame0 ); float4 frame1 = tex2D( FXAtlasSampler, uvFrame1 ); float4 tex = lerp(frame0, frame1, subFrameStep); // Pre-multiply the texture alpha. For alpha-blended particles, // this achieves the same effect as a SourceAlpha blend factor float3 preMultipliedColour = tex.rgb * tex.a; float3 colourOut = vertexColour.rgb * preMultipliedColour; // The vertex alpha controls whether the particle is alpha // blended or additive; 0 = additive, 1 = alpha blended, // or an intermediate value for a mix of both float alphaOut = vertexColour.a * tex.a; return float4( colourOut, alphaOut ); }
文章结束给大家分享下程序员的一些笑话语录: 警告
有一个小伙子在一个办公大楼的门口抽着烟,一个妇女路过他身边,并对他 说, “你知道不知道这个东西会危害你的健康?我是说, 你有没有注意到香烟 盒上的那个警告(Warning)?”
小伙子说,“没事儿,我是一个程序员”。
那妇女说,“这又怎样?”
程序员说,“我们从来不关心 Warning,只关心 Error”