科技版本課件PPT_第1頁(yè)
科技版本課件PPT_第2頁(yè)
科技版本課件PPT_第3頁(yè)
科技版本課件PPT_第4頁(yè)
科技版本課件PPT_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Adam SchaefferMicrosoft CorporationSESSION CODE: WPH308Consistent sets of hardware capabilities defined by MicrosoftResolutionTouch InputCPU / GPURAMHardware keyboard is optionalLow level controlStraight to the metalRaw performance tuningHigh level abstractionRely on compiler and runtimeDeveloper pr

2、oductivityPowerful and expressiveType safety reduces hard-to-track-down bugsReflectionInitializer syntaxGreat tooling (IntelliSense)Similar enough to C that learning and porting are easyBlazingly fast compilesC#Usually within a few percent of native performanceAwesome generational garbage collection

3、Performance shootout: Raymond Chen vs. Rico Marianihttp:/ delta between managed and native.NET Compact FrameworkSimplistic mark-and-sweep garbage collectionXbox is not a general purpose computerUnforgiving in-order CPU architectureRequires custom VMX instructions for optimal math perfSecurity archit

4、ecture poses challenges for jitted codeIn between Windows and Xbox 360.NET Compact FrameworkKeep an eye on garbage collection!ARMv7 CPUMore forgiving toward jitted codeARM jitter is more mature than PPCInstance methodInterfaceDelegate / eventReflectionVirtual methodC+ allows independent choice of.NE

5、T types dictate their allocation and usage semanticsData typeThe memory in which a type lives (placement new)How a type instance is referenced (T, T*, T&, const T&)Value typesint, bool, struct, Vector3Reference typesclass, array, string, delegate, boxed value typesOft-repeated wisdomValue ty

6、pes live on the stackReference types live on the heapValue types live wherever they are declaredReference types have two piecesMemory allocated from the heapA pointer to this heap memoryThat is subtly incorrectBy default, prefer class over structureUse struct for things that areSmall (= 16 bytes)Sho

7、rt livedPass large structures by referenceMatrix a, b, c;c = Matrix.Multiply(a, b); / copies 192 bytes!Matrix.Multiply(ref a, ref b, out c);C+.NETAllocateInitially fast, becoming slower as fragmentation increasesVery fast, apart from periodic garbage collectionsFreeFastInstantaneousFragmentationIncr

8、eases over timeNoneCache coherencyRequires custom allocatorsThings allocated close in time are also close in physical locationGarbage collection is not optionalCant have type safety without automatic memory managementTriggered per megabyte of allocation1Starts with root references (stack variables,

9、statics)2Recursively follows all references to see what other objects can be reached3Anything we didnt reach must be garbage4Compacts the heap, sliding live objects down to fill holes5Frameworks designed for performanceFrameworks designed for performanceMake it run Less OftenIf you never allocate, G

10、C will never runMake it Finish QuicklyCollection time is proportional to how many object references must be traversedUse object poolsSimple heap = fast collectionUse value types and integer handlesExplicitly forces a garbage collectionUse wisely to give yourself more headroomAfter loadingDuring paus

11、es in gameplayDont call every frame!Beware of boxingstring vs. StringBuilderUse WeakReference to track GC frequencyhttp:/ CLR Profiler on WindowsSee MIX10 talk: “Development and Debugging Tools for Windows Phone 7 Series”Use .NET Reflector to peek behind the curtainhttp:/www.red- hardware accelerate

12、d 2D sprite drawingBasicEffectSkinnedEffectEnvironmentMapEffectAlphaTestEffectDualTextureEffect0-3 directional lightsBlinn-Phong shadingOptional textureOptional fogOptional vertex colorBasicEffectVertex CostPixel CostNo lighting51One vertex light401Three vertex lights601Three pixel lights1850+ Textu

13、re+1+2+ Fog+4+2DualTextureEffectFor lightmaps, detail textures, decalsBlends two texturesSeparate texture coordinatesModulate 2X combine mode (A*B*2)Good visuals at low pixel costVertex CostPixel CostTwo Textures76+ Fog+4+2For billboards and impostersAdds alpha test operations (pixel kill)Standard b

14、lending is free with all effectsOnly need alpha test if you want to disable depth/stencil writesAlphaTestEffectVertex CostPixel Cost, =, 66=, !=610+ Fog+4+2SkinnedEffectFor animated models and instancingGame code animates bones on CPUVertex skinning performed by GPUUp to 72 bonesOne, two, or four we

15、ights per vertexVertex CostPixel CostOne vertex light554Three vertex lights754Three pixel lights3351+ Two bones+7+0+ Four bones+13+0+ Fog+0+2EnvironmentMapEffectOooh, shiny!Diffuse texture + cube environment mapCheap way to fake many complex lightsFresnel term simulates behavior when light reaches a

16、 surface and some reflects, some penetratesVertex CostPixel CostOne light326Three lights366+ Fresnel+7+0+ Specular+0+2+ Fog+0+2FramerateNumberof PixelsPixel CostFramerate 30 hz refresh rate No point updating faster than the display! Game.TargetElapsedTime = TimeSpan.FromSeconds(1f / 30);Pixel Cost P

17、refer cheaper effects Minimize overdrawMany known algorithms:Distance, frustum, BSP, sort front to backImplement “overdraw x-ray mode” Draw untextured with additive blendingBrighter areas indicate overdrawNumberof Pixels 800 x480 is 25% more pixels than Xbox 1Great for textToo many pixels for intens

18、ive games800 x480 = 384,000 pixels600 x360 = 216,000 pixels (56%) Dedicated hardware scaler Does not consume any GPU Higher quality than bilinear upsamplingAvoidPreferRenderTargetUsage.PreserveContentsRenderTargetUsage.DiscardContentsdevice.BlendState = new BlendState .;/ At startupstatic BlendState myState = new BlendState .;/ Per frameDevice.BlendState = myState;VertexBuffer.SetData(.)device.DrawUserPrimitives(.);/ orDynamicVertexBuffer.SetData(., SetDataOptions.NoOverwrite);Great

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論