Tile Based Deferred Rendering
Tile Based Deferred Rendering
Immediate ModeRendering (IMR)
ๆไธ่งๅฝขRasterizing๏ผไปฅๅ็ด ๏ผpixel๏ผไธบๅไฝ่ฟ่กShading็ไผ ็ปๆนๅผใไธ่งๅฝข้่ฟๆตๆฐด็บฟๅๆถ็งปๅจใ่็ตไปฅๅๆตช่ดนmemory bandwidth๏ผEarly Visibility Testๅ่ฝ๏ผไธบไบไฝฟ็จ่ฟไธชๅ่ฝ๏ผไธ่งๅฝข่ฆไปฅๅบๅ็ๆนๅผ่ฟๅ ฅใๅ ๆญค๏ผๅบๅจๅบ็จ้จๅๅฐไธ่งๅฝข่ฟ่กๅ็ฑป๏ผsorting๏ผใ
Tile BasedRendering (TBR)
ๅจEmbeddedไธญๆๆฌๆ้ซ็ๆฏๅ ๅญ็่ฏปๅใๅ ๅญ็่ฏปๅไธ็ต้ๅmemory bandwidthๅฏๅ็ธๅ ณใๆไปฅๅจEmbeddedไธญๆๆๆ็ไผๅๆนๆณไนไธๆฏๅๅฐๅ ๅญ่ฎฟ้ฎ็ๆฌกๆฐใTDRๅบฆไธบไบๅไปฃไปฅๅไฝฟ็จ็ๅฐๅจIMRไธญ็ๅฏ่งไธ่งๅฝขๆ้ๅบๆฅ็Z-buffer๏ผdepth buffer๏ผ่็ ๅ็ๆนๆณใๅฐ่ฆๆธฒๆ็็ป้ขๅๆ่ฎธๅคtile๏ผไปฅtileไธบๅไฝ่ฟ่กrasterizationใ๏ผๆ นๆฎไธๅ็็ณป็ปๆ ๅต๏ผๅญๅจๅๆถ็งปๅจ็tileใไฝๆฏไธๆฏๆๆ็ไธ่งๅฝข้ฝ่ฝๅๆถ้่ฟๆตๆฐด็บฟ่ฟ่ก็งปๅจใ๏ผ๏ผๆฏไธๆฌกๅๅtile็ๆถๅ๏ผ็กฌไปถไผๅๅปบๅ ๆฌๅtileๅจๅ ็ๆๅ ณGeometryๅ่กจ็ๆ้ใไฝฟๅพๅไธชtileๅจ่ฟ่กๆธฒๆ็ๆถๅ๏ผ้ฝๅฏไปฅ่ทๅ็ธๅ ณ็Geometry bufferใ๏ผ่ฟๆ ทไธไฝฟ็จz-buffer๏ผๆน็จtile่ฟ่กๅค็็่ฏ๏ผๅชไฝฟ็จๅจsystem-memoryไธ็intermediate buffer ๅฐฑๅฏไปฅ่งฃๅณไบใ
Tile BasedDeferred Rendering (TBDR)
TDR็ๆน่ฏ็ๆฌใๅจTDR้ไนๅฏไปฅๅฏน็ไธ่ง็้จๅ่ฟ่กShadingๆ่ดดๅพ๏ผTexture Mapping๏ผใๅจTBDRไธญ๏ผGPU้้ข้่ฟๅ็ฑปๆพๅบไธ่งๅฝขๆๅ้กบๅบ๏ผๅฏไปฅๅปๆไธๅฏ่ง็้จๅ๏ผ่ฟไธชๆนๆณ็งฐไธบHidden Surface Removal (HSR)ใๅ ไธบๅปๆไบๆฒกๆๆไน็ไธ่งๅฝข.๏ผๆฏ่ตทTBR๏ผๆดๅ ๅๅฐๅฉ็จไบmemory bandwidthTBDR็ไผ็นๅฆไธ1. ๅ ไธบๆฒกๆZ-buffer๏ผๅ ๅญๅฉ็จ็ๆด้ซ2. ๆฒกๆZ-buffer่ฎฟ้ฎ๏ผๅๅฐๅผ้3. ไธ็จๆ ๅฟๆธฒๆ้กบๅบ๏ผๅฏไปฅๆญฃ็กฎ็ๅค็ๅ้ๆๆๆใ(blendingๆๆ).
Alpha Blending ๅ Alpha Test
Alpha Blending(Alpha Blending) VS Alpha Test(Alpha Test)ๅจไผ ็ปDesktop Gameไฝฟ็จ็้ๆๆ๏ผๆฏ่ตทAlpha Blending๏ผๆดๅปบ่ฎฎไฝฟ็จAlpha Testใๅจไธ้ๆ็ๆ ๅตไธ๏ผๅไธ้ๆ็้ไธ็ฝ๏ผๆ่ฃ็่กฃๆ๏ผๆฏ่ตท็จๆๆฌ้ซ็blending่ฟ่ก่ฎก็ฎ๏ผไธๅฆไฝฟ็จAlpha Test๏ผๅๆถไนๅฏไปฅ็ๅปๅ็ด ่ฎก็ฎ็ๆญฅ้ชคใไฝๆฏๅจMobile Gameไธญ๏ผๅๅฅฝไธๆญค็ธๅ๏ผๆฏ่ตทAlpha Test๏ผๆดๆจ่ไฝฟ็จAlpha Blendingใ ไธบไบ่ฟ่กAlpha Test๏ผPixel Shaderไธญไฝฟ็จไบๅจๆๅๆฏ๏ผif่ฏญๅฅ๏ผใๅจๅฐๅผ็ต่ไธญๅฏไปฅ้ซ้ๅค็Shader็ๅจๆๅๆฏ๏ผไฝๅจ็งปๅจ่ฎพๅคไธๅฏนๅจๆๅๆฏ็ๅค็ๅนถไธๅฅฝใๅ ๆญค๏ผAlpha TestๆไธบไบไฝฟShaderๆง่ฝ้ไฝ็ๅๅ ใ่ไธ๏ผTBDRๆ ๆณ้ซ้ๅค็ๅ็ด ๅฑ่ฝใไนๅๆๅฐ่ฟ็ๅจTBDRไธญ๏ผๆถ้ๅฎDrawCall็Vertex Shader็ปๆ๏ผ็ป่ฟHidden Surface Removalๅ๏ผๅฏนๅฎ้ ไธ่ฝ็ๅฐ็ๅ็ด ่ฟ่กๅค็ใไฝๆฏ่ฟๅชๅฏนไธไฝฟ็จAlpha Test็ๅฎๅ จไธ้ๆ็mesh้็จใๅ ไธบไฝฟ็จAlpha Test็่ฏ๏ผๅจVertexๅค็้ถๆฎตๆ ๆณๅคๆญPolygonๆฏๅฆ่ขซๅฑ่ฝ๏ผๆ ๆณ่ฟ่กDeferredๅค็ใๅจUnity3Dไธญ๏ผไธบไบ้ฒๆญขไธ่ฟฐๆ ๅต็ๅ็๏ผๅจๅฏนๅฎๅ จไธ้ๆ็Object่ฟ่กRenderingๅค็ๅ๏ผAlpha TestๅๅฏนObject่ฟ่กRenderingๅค็ใๆไปฅๆๆกไปถ็ไฝฟ็จAlpha Test็่ฏ๏ผๅนถไธไผๅธฆๆฅไธฅ้็ๅๆใไฝๆฏ๏ผTBDR่ฏ็็ป็ๆ้ ไธๅผๅงๅฐฑไธ้ๅAlpha Test็ๅทฅไฝ๏ผๆไปฅๆๅฅฝไธ่ฆไฝฟ็จAlpha Testใ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, Unity3D์ ๋ด์ฅ Shader ์ค Mobile ์นดํ ๊ณ ๋ฆฌ์๋ ์ํ ํ ์คํธ Shader๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค.ๅ ๆญค๏ผUnity3D็ๅ ็ฝฎShaderไธญ๏ผMobile็ฑปๅซไธญไธๅญๅจAlpha Test ShaderใAlpha Blendingไธๆญค็ธๅ๏ผๆฏๅจๅฐๅผ็ต่ไธ็่ฟ่ก้ๅบฆๆดๅฟซใๅ ถ้่ฟๅ ้จ่ฏปๅๅฏน่ฑกbuffer่ฟ่กAlpha Blending่ฟ็จ็่พๅบใ่ๅจๅฐๅผ็ต่ไธญ่ฆ่ฎฟ้ฎไฝไบDRAM็frame buffer๏ผๅ ็จไบๅคง้็bandwidth.ไฝๆฏๅจTBDRไธญ,่ฟไธช่ฟ็จๅ็ๅจ่ฏ็ๅ ้จ็Memory้๏ผไปฅtileไธบๅไฝ่ฟ่ก๏ผๆไปฅๅค็้ๅบฆๅพๅฟซใ่กฅๅ ่ฏดๆ ๆไปฌๆฅ็ไธไธmesh plan็ๅพ็ใๅฆๅพ๏ผAlpha Blendingๅบๅๅๅคง็่ฏ๏ผๆฏ่ตทๅขๅ mesh้กถ็น๏ผๆดๅฅฝ็ๆนๅผๆฏๅฐๅฎๅ่งฃ๏ผๅๅฐ้ๆ็ๅบๅ๏ผไป่ๆๅฉไบๆดไฝๆง่ฝ็ๆ้ซใ
Render Texture
ๅฆๆไฝฟ็จRender Texture็่ฏ๏ผ Unity3Dไผๅ ้จๆนๅRender Targetใๅจๅฐๅผ็ต่ไธๆนๅRender Target็ๅๆณไนไผ้ไฝๅ ถๆง่ฝใๅ ไธบไธบไบๆนๅRender Target๏ผCPUไผ็ญๅพ GPU็ๅๅบ๏ผๆ็ ดไบไธค่ ็ๅนถๅๅ ณ็ณปใ ่ไธ๏ผๅจTBDR้ไผไบง็ๆดไธฅ้็้ฎ้ขใRender Targetๅๅๆถ๏ผๅจParameter Buffer็ๅ จ้จๆฐๆฎ็ป่ฟๅค็ๅๅFrame Buffer่พๅบ๏ผไธบRender Target็ฉบๅบไบParameter Bufferใไปฅ่ฟ็งๆนๅผ่ฟ่กๆถ๏ผRender Targetๅๅๆถ่ฆๅขๅ deferredๅพช็ฏ็ๅค็ใๅ ๆญค๏ผๅจUnity3D็ๆๅๆบไธญๆRender TextureไฝไธบTarget Textureไฝฟ็จ็่ฏ๏ผไผ้ไฝTBDR็ๅทฅไฝๆ็ใ
ๅพ็ๅๆๅค็ๆๆ(Image post process Effect)
ๆ่ฟ็่ฎพๅคๆง่ฝๆๆๆๅ,ๅฏไปฅไฝฟ็จๅฆ่ฐ่ฒ,Bloomๆๆ็ญๅพ็ๅๆๅค็ๅ่ฝใไฝๆฏ๏ผ่ฟไบๅพ็ๅๆๅค็ๅ่ฝไธ่ฝๆปฅ็จ๏ผๅช่ฝๆ้ๆฉๆง็ไฝฟ็จใ้ฆๅ ๏ผๅพ็ๅๆๅค็ไผๅจๅ ้จๆนๅRender Targetใไฝๆๅคง็้ฎ้ขๆฏbandwidthใๅฐฝ็ฎกๅ็ด ๅค็่ฝๅไนๅพ้่ฆ๏ผไฝๆ้่ฆ็้ฎ้ขๆฏbandwidthใๅพ็ๅๆๅค็ๆRender Targetๅไธบ Pixel Shader็่พๅ ฅ็บน็ใๅ ไธบ่ฟๆถ่พๅ ฅ็Textureไธๆฏ่ฏ็ๅ ้จ็tile๏ผ่ๆฏไฝไธบRender Targetๅ ็จไบๅ ฌ็จMemory๏ผๅ ็จไบๅคง้็ๅธฆๅฎฝใ(ไพ : 1080p)ๆไปฅ๏ผ่ฆๆ ้ๅฐ่ฟ่กๅพ็็ๅๆๅค็ใ
Camera Clear(Clear)
ๅจไปฅๅๅฐๅผ็ต่็ๅพๅฝขๅกไธญ๏ผๆๆฏๅธงๅผๅงๅๆ ๆไธๆธ ้คไนๅ็ๅ ๅฎน๏ผๅณๆฏๅธง็ปๅถๅจไธไธๅธงไนไธ็ๆ ๅตใไฝๆฏ็ฐไปฃ็ๅฐๅผ็ต่ไธๅฎ่ฆ่ฟ่กๆธ ้ค๏ผๆ่ฝไฟ่ฏ็กฌไปถ้ซ้็่ฟ่กใๅจ็งปๅจ่ฎพๅค็TBRไธญไนๆฏๅฆๆญคใๅชๆๆธ ้คๆ่ฝ็ฉบๅบ่ฏ็ๅ ้จ็Buffer,ๅ ้Rendering่ฟ็จใๆไปฅๆ ่ฎบๆฏๅฐๅผ็ต่๏ผ่ฟๆฏ็งปๅจ่ฎพๅค๏ผ้ฝไธๅปบ่ฎฎๅจClear Flagๅฑๆงไธญ้ๆฉDonโt clear้้กนใ
MSAA
ๅจๅฐๅผ็ต่ไธญ๏ผMSAA็ๅผ้ๅพๅคงใๅไธ้ขไธๆ ท๏ผbandwidthๆฏๆๅคง็้ฎ้ขใไพๅฆ๏ผ็จMSAA 2Xๅค็ๅ่พจ็ไธบ1080p็็ป้ข็่ฏ๏ผ้่ฆ็บฆ2160p็bandwidthใๅฆๆไป ไป ๆฏDRAMๅฐฑๅ ็จ้ฃไนๅค็bandwidth๏ผๅผ้ไผๅพๅคงใไฝๆฏ๏ผ็จTBRๆนๅผ็่ฏ๏ผๅค็ๅฏไปฅๅจ่ฏ็ๅ ้จ็ๅบๅไธญๅฎๆใ็จ16x16ๆ32x32ๅคงๅฐ็ๅบๅ่ฟ่กMSAA็ๅค็๏ผไธไผ้ ๆๅพๅคง็ๅผ้ใๅจUnity3Dไธญ๏ผๆ่ดจ้่ฎพ็ฝฎ๏ผQuality Settings๏ผ ็Anti Aliasing่ฎพ็ฝฎไธบ2ๆ4๏ผไพฟๅฏไปฅไฝฟ็จMSAAใ ProfilingUnity3D5ไธญๆฐๅขไบFrame Debugger๏ผๆฏไธๅธง้ฝๅฏไปฅๅจๆธฒๆ่ฟ็จไธญ่ฟ่กDebuggingใๅฏไปฅ้่ฟ่ฟไธชๅ่ฝ๏ผๅพๅฎนๆๅฐ็ๅฐObject็ๆธฒๆ่ฟ็จๅๆนๅค็ๆ ๅตใ ์ด๋ฏธ์ง ์ถ์ฒ : http://docs.unity3d.com/Manual/FrameDebugger.htmlไฝๅฏๆ็ๆฏ๏ผUnity3D็Frame Debuggerๆ ๆณ็ๅฐๆฏไธไธชdraw call(dp)็GPU ๆง่ฝ็่ฏฆ็ปๆ ๅตใๅฏๅนธ่ฟ็ๆฏ๏ผๆฏไธไธชChipset Vendor้ฝๆไพไบไธไธชๅฏไปฅ่ฏฆ็ปๅๆๆธฒๆ่ฟ็จ็ๅทฅๅ ทใAdreno่ฏ็้่ฟAdrenoๅๆๅจ๏ผProfiler๏ผ๏ผMali่ฏ็้่ฟMaliๅๆๅจ๏ผProfiler๏ผๆDS-5๏ผIphone้่ฟXCODE่ฟ่กๅๆใ ์ด๋ฏธ์ง ์ถ์ฒ : http://www.slideshare.net/ozlael/graphics-opt-ndcๅคงๆฆๅชๆไธไธช้ฎ้ขใๅฐฝ็ฎกไฝฟ็จTBRๆนๅผ็่ฏ็ๆฏไธไธชcall้ฝๅฏไปฅ็กฎ่ฎคไธๆฌกๅ ถๆง่ฝ๏ผPerformance๏ผ๏ผไฝๆฏๅนถไธ่ฝ็ด่ง็็ๅฐๆฏไธไธชcall็ๆง่ฝใๅไนๅ่ฏด็้ฃๆ ท๏ผ่ฟ่กdraw call(dp)ๆถ๏ผไธๆฏ็ซๅปๅค็Pixel Shader๏ผ่ๆฏไฝฟ็จ็ๅญ็Parameter Buffer็ปๆใๅ ๆญค๏ผๅจๆๆdraw call(dp)็ปๆไนๅ๏ผๆ็ๆญฃๅฐๅผๅงๆธฒๆ่ฟ็จ๏ผๆไปฅๅนถไธ่ฝ็ๅฐๆฏไธไธชcall็ๅฎ้ ๆง่ฝใๆไปฅๅจX-codeๅๆIphone็ๆธฒๆ่ฟ็จๆถ๏ผๆง่ฝ้กนไผๆพ็คบๆฐๅญ0ใๆๆถๅฏ่ฝไนไผๅบ็ฐไธๆฏ0็ๆฐๅญ๏ผไฝๅบ็ฐ็ๆฐๅญๅนถไธๅผๅพไฟกไปปใๅจ่ฟ็งๆ ๅตไธ๏ผๅช่ฝๅฉ็จๅธง็ๆง่ฝ๏ผPerformance๏ผๆcallๅฝๆถไฝฟ็จ็็บน็็ญไฟกๆฏ่ฟ่กๆจๆตใๅไธ้ขๆๅฐ่ฟ็ไธๆ ท๏ผๅ ๆง่ฝ้กนๆพ็คบไธบ0๏ผๆไปฅIphone็ๅๆไผๆไธไบๆฃๆใ ็ ง็ๅบๅค : http://www.slideshare.net/ozlael/graphics-opt-ndc ็ป้ขๅๅ็็จTBRๆนๅผ่ฟ่กๆธฒๆ๏ผๆธฒๆ่ฟ็จๅจ่ฏ็ๅ ็tile่ฟ่ก๏ผไธไผๅ ็จbandwidthใไฝๆฏ๏ผๅจๅไฝไบDRAM็frame buffer่พๅบtileๆฏ๏ผไธๅฏ้ฟๅ ๅฐ่ฆๅ ็จbandwidthใไธบไบ่็บฆ่ฟ้จๅbandwidth็ๅผ้๏ผ Maliๅ ฌๅธไฝฟ็จไบTransaction Eliminationๆๆฏใๅฆๆ้ๅฐๅไนๅframeๅ็ป้ข็ปๆไธๆ ท็tile๏ผไธๅๆดๆฐtile๏ผๅพช็ฏไฝฟ็จไปฅๅ็tileใ่ฟๆ ทๅฏไปฅๅๅฐ่ฏ็ๅ ๅญๅคๅถๅฐ็ณป็ปๅ ๅญ็้ใไธๅพไธญ็จ็ปฟ่ฒๆ ่ฏ็ๅญๅฐฑๆฏๅพช็ฏไฝฟ็จ็่ฟไธ้จๅใ ์ด๋ฏธ์ง ์ถ์ฒ : http://community.arm.com/ๆไปฅ๏ผๅฆๆไฝฟ็จๅบๅฎๆๅๆบ็่ฏ๏ผๅจไฝฟ็จๅคฉ็ฉบ็็ญ่ๆฏๆถ๏ผๆๅคง็จๅบฆๅฐๅๅฐๅๅๆฏไธ็งๆฏ่พๅฅฝ็ๆนๆณใๅฎ้ ไธ๏ผ่ฟ็งๆนๆณๅจ3Dๆธธๆไธๅบ็จ็ๆ ๅตๅนถไธๅค่ง๏ผๆฏ่พๅคๅบ็จไบ2Dๆธธๆไธญใ