43
اک پ دان ز ی ام ه پ ب

به نام یزدان پاک

  • Upload
    hollis

  • View
    46

  • Download
    0

Embed Size (px)

DESCRIPTION

به نام یزدان پاک. گرافیک در بازی ایمان پولادین Pipeline. مقدمه و معرفی. موضوع و سبک بازی فن آوری های مورد استفاده اهداف پروژه وبلاگ توسعه بازی: http://www.tochalco.com/blog. تاریخچه موتور. تکرار اول: ارتفاء موتور موجود تکرار دوم: تبدیل به DirectX10/11 تکرار سوم: Deferred Rendering - PowerPoint PPT Presentation

Citation preview

Page 1: به نام یزدان پاک

به نام یزدان پاک

Page 2: به نام یزدان پاک

Pipelineگرافیک در بازی ایمان پوالدین

Page 3: به نام یزدان پاک
Page 4: به نام یزدان پاک

مقدمه و معرفی

موضوع و سبک بازی•

فن آوری های مورد استفاده•

اهداف پروژه•

وبالگ توسعه بازی:•http://www.tochalco.com/blog

Page 5: به نام یزدان پاک

تاریخچه موتور

تکرار اول: ارتفاء موتور موجود•

DirectX10/11تکرار دوم: تبدیل به •

Deferred Renderingتکرار سوم: •

دمو•

Page 6: به نام یزدان پاک

تصمیمات استراتژیک

نوشتن موتور از پایه•

•Deferred Rendering

•DirectX 10/11 API

Page 7: به نام یزدان پاک

نوشتن موتور؟

مزایا

دنیا با موتور داخلی تولید شده اند AAA( بازیهای %75حدودا طبق تحقیقات انجام شده اکثر )•موجود است(وبالگ پروژه این تحقیق در مستندات)اطالعات و

عدم وابستگی، توسعه آسانتر، انعطاف پذیری•

معایب

زمان و هزینه باال•ریسک بسیار باال•عدم وجود تخصص و تجربه کافی•

“نوشتن موتور، اختراع دوباره چرخ نیست”

Page 8: به نام یزدان پاک

Deferred Rendering?

مزایا

قابلیت رندر تعداد زیادی نور دینامیک •Z در نور پردازی• کاهش ترکیب شیدرها مخصوصا Post Process (Depth of Field, SSAO، Motionوجود اطالعات الزم برای پیاده سازی افکت های •

Blur، Soft Particles) به علت وجود Gbufferدارا بودن سرعتی خطی به نسبت تعداد نورها •

• O = Number of Objects• L = Number of Lights• Forward: (O*L) Draws, example: 1000 objects + 20 lights = 20000 draw calls• Deferred: (O + L) Draws, example: 1000 objects + 20 lights = 1020 draw calls

با اعمال شیدرها فقط روی پیکسلهایی که دیده pixel processingصرفه جویی در زمان •میشوند

: استفاده می کنندdeferredاکثر موتورهای مطرح از نور پردازی •• CryEngine2, Rockstar RAGE (GTA4, Red dead redemption), X-Ray engine (Stalker),

Metro2033, Dead Space engine, KillZone2, 3, … and the list is growing.

Page 9: به نام یزدان پاک

Deferred Rendering?

معایب

بزرگ، به خصوص روی GBuffer باال به علت وجود چندین Fill-rateنیاز به •کارت های ضعیف

(Transparencyعدم توانایی در رندر اشیاء شفاف )•Anti Aliasingمشکالت در •عدم انعطاف پذیری در تنوع متریال•

با در نظر گرفتن مزایا و معایب ذکر شده، در بلند مدت با پیشرفت سخت افزارهای گرافیکی و انطباق و سازگاری بهتر

API مانند( ها DirectX 10+ ) آینده این روش روشن تر است ومعایب آن قابل حل خواهند بود.

Page 10: به نام یزدان پاک

DirectX 10+?

مزایا

•Multi-Threaded Rendering(Feature Level روی سخت افزارهای قدیمی تر )fallbackقابلیت ••New texture compression formats•Hardware Tessellation•New helpful shader instructions (SampleCmpLevel, Load, Gather, Bitwise,

…)•New Render target formats, UINT (Raw)•Geometry Shaders (Cubemap rendering)•Compute Shaders (PostProcessing, GPU computing)•Cleaner and Faster API•Texture Arrays

Page 11: به نام یزدان پاک

DirectX 10+?

معایب

Vista Windowsعدم پشتیبانی در سیستم عامل های پایین تر از •عدم پشتیبانی در سخت افزارهای قدیمی تر•مشکل تر )حرفه ای تر( شدن برنامه نویسی )این مورد می تواند مزیت •

نیز باشد(

Page 12: به نام یزدان پاک

DirectX 10+?

آینده

/Steam : http://store.steampowered.com/hwsurveyآمار از سایت •

با توجه موارد ذکر شده، در زمان اتمام پروژه سخت افزارها و سیستم عامل مورد نیاز متداول خواهند بود و

نوعی آینده نگری است.APIسرمایه گذاری روی این

Page 13: به نام یزدان پاک

گرافیک بازی های مدرن

تکنولوژی های متداول بازی های مدرن•– Big, Dynamic, Interactive worlds– Per-Pixel lighting, Diffuse, Normal, Specular, Ambient,

Illumination, Reflection, Displacement Maps– HDR Tonemapping, Bloom– Motion Blur– Depth of Field– Skeletal, Morph animation– Shadows– Effects: Decals, Particles, Water, …

Page 14: به نام یزدان پاک

Shaders

مدتهاست گذشته استFixed Pipelineدوران ••D3D10+فقط از شیدرها پشتیبانی می کند قابjل • توسjط شjیدر نjامبرده شjده فقjط هjای افکت اکjثر

پیاده سازی می باشندآرتیسjت بایjد بjا شjیدرها و ابزارهjای مربوطjه آشjنایی داشjته •

( ,ShaderFX, Mental Mill, FXComposerباشند RenderMonkey)

•Pipeline و انتقjال تولیjد، بایjد گjرافیکی موتورهjای و هjا نمایش شیدرها را به نحو مناسب پشتیبانی کنند

Page 15: به نام یزدان پاک

Pipelineنکات مهم در طراحی

,3dsmax, mayaسرعت انتقjال محتjوا از نjرم افزارهjای تولیjد محتjوای سjه بعjدی )•( به موتور بازی…

کوتاه و ساده بودن چرخه تکرار بین موتور و نرم افزار سه بعدی•هر فjردی بjا ابزارهjای مختص خjودش راحتjتر اسjت و ترجیحjا مراحjل بایjد در همjان •

نرم افزارهای مورد استفاده انجام شودکاهش احتمjال خطjای انسjانی بjا حjذف مراحjل میjانی در فرآینjد انتقjال محتjوا و •

همچنین خودکار سازی آنها )اجتناب از انجام مراحل دستی(آنچjه هنرمنjد در ابjزار طjراحی خjود می بینjد بjا آنچjه در موتjور گرافیjک ترسjیم می •

(WYSIWYGشود یکسان باشد )از • قسjمت هjر در خودکjار صjورت بjه سjازی بهینjه فرآینjدهای اعمjال قابلیت

Pipelineفراهم باشد به سادگی قابل اجرا باشدPipelineانعطاف پذیر باشد و تغییرات مورد نظر در •سیسjتم متریjال یکپارچjه بjرای انتقjال متریjال اجسjام از نjرم افjزار سjه بعjدی بjه •

موتور گرافیک

Page 16: به نام یزدان پاک

راهکار موتور توچال

(Deferred، Forward، Forward:3dsmaxسه نوع شیدر )••ShaderAuthor tool•Shader Repository•3dsmax Exporterبرای فرمت سه بعدی خاص موتور بازی ، فرمت مبادله محتواCOLLADAپشتیبانی از •مدل همjانطور کjه در نjرم افزارهjای سjه بعjدی دیjده می شjود، •

WYSIWYGدر موتور نمایش داده شود بjرای • یکپارچjه متریjال موتjور 3dsmaxپیjاده سjازی سیسjتم و

(FX materialگرافیک )مربوطjه • فایلهjای و محتjوا سjازی بهینjه پjردازش، قابلیت

به صورت خودکارExport)تکسچرهاو...( هنگام

Page 17: به نام یزدان پاک

راهکار موتور توچال

Page 18: به نام یزدان پاک

راهکار موتور توچال

Page 19: به نام یزدان پاک

راهکار موتور توچال

Page 20: به نام یزدان پاک

راهکار موتور توچال

Page 21: به نام یزدان پاک

Exporting Solutions

...(x meshوColladaو FBXروش ها و فرمت های متداول )•مشکالت

–Game /GPU Friendlyنبودن این فرمتها وجود اطالعات اضافه بسیار زیاد–نیاز به پردازش قابل توجه هنگام لود یا توسط برنامه واسط–کند بودن خواندن آنها–مشکالت اساسی در خواندن متریال های مبتنی بر شیدر و پشتیبانی ناقص –

از آنها

اکثر موتورهای مطرح فرمت خاص خود را دارند•Exporter Z مناسب وجود Piplelineبرای ایجاد یک • سودمند و گاها

ضروری است

Page 22: به نام یزدان پاک

Tochal Exporter

GPU و موتjور )maxتفjاوت نحjوه ذخjیره سjازی اطالعjات صjحنه در •Friendliness)

بjه صjورت • بارگjذاری و ذخjیره قابjل فرمت خjاص طjراحی شjده و باینریxmlمتنی

فjرمت • بjه تکسjچرها تبjدیل هjای ddsقابلیت سjازی فشjرده بjا مختلف

•( های ورتکس مختلف اطالعات انتخاب ,POSITIONقابلیت NORMAL, TEXCOORD…,)

Hierarchyو Bone و Skinقابلیت ذخیره سازی •ذخیره کلیه شیدرها و پارامترهای مورد استفاده•قابلیت تبدیل متریال های عادی به سیستم شیدر موتور توچال•مشjکالت • بjزرگ، )تکسjچرهای مهم خطاهjای اعالم و تشjخیص

Mesh, Skin)...عدم وجود تکسچر و ،

Page 23: به نام یزدان پاک

Tochal Exporter

• Artists work with common image formats like TGA, PNG, JPG, …

• Texture Compression:– Diffuse (No alpha): BC1 (DXT1), 6:1 RGB– Diffuse (With Alpha): BC2 (DXT3) / BC3(DXT5), 4:1 (RGBA)– Normal : BC5 (ATI2N) (D3D10 hw only), 4:1 (RG)– Specular: BC4 (ATI1N) (D3D10 hw only), 4:1 (R)– Ambient: BC4 (ATI1N) (D3D10 hw only), 4:1 (R)

Page 24: به نام یزدان پاک

Deferred Rendering - GBuffer

Material(Not viewable)

Color

Depth Normals

Page 25: به نام یزدان پاک

Deferred Rendering – Gbuffer 2

• Depth : Depth Buffer - D32 (FLOAT)– Read depth value from depth buffer (zbuffer)– Reconstruct position (view space) from depth

• Normals : R16_G16 => X,Y (FLOAT)– Read Normal(x,y)– Normal.z = sqrt(1.0f – x*x – y*y)

• Color: R8_G8_B8 (Albedo), A8 (Specular Intensity)• Materials: Encoded UINT32

Page 26: به نام یزدان پاک

Deferred Rendering – Materials

• Material : UINT32 – Bits (16…31) : Material Id– Bits(9…15) : Ambient Multiplier– Bits(0…8) : Reserved ! – We have bitwise operations in D3D10

Mesh(Draw phase)

(Lighting Phase)

Materials[]AmbientColorSpecularColorSpecularFalloutIllumination…

Material Id

Gbuffer (Material)

• Get Material Id• Read back from Materials[]• Maximum 4096 mtls (16bit)• Read from tbuffer (Fast!)

Page 27: به نام یزدان پاک

Deferred Rendering - Transparency

• Impossible with deferred rendering• Render alpha blended objects with conventional forward

rendering. • Transparency rendering is a hack afterall!

– Sort from back to front– DepthEnable = TRUE– DepthWriteEnable = FALSE– Draw()

• Exciting !!! Fast Order independent transparency (true transparency) possible with D3D11 + CS

– http://developer.amd.com/gpu_assets/OIT%20and%20Indirect%20Illumination%20using%20DX11%20Linked%20Lists_forweb.ppsx

– In near future: Icy caves, translucent creatures, glass houses, ….

Page 28: به نام یزدان پاک

Deferred Rendering - AA

• MSAA + Deferred Rendering not possible with D3d9, used edge detecting/bluring post process effects, which is lame and slow !

• Possible with D3d10 but still tricky• Better and faster with D3d10.1

– Draw Gbuffer to multiple MSAA render targets– Use geometry shader edge detection or centeroid sampling– Mark edges– In lighting phase, for each marked edge, calculate 2x/4x/8x samples.

For none marked edge, calculate for 1 sample.

We are still working on it !

Page 29: به نام یزدان پاک

Deferred Rendering - Lighting

• Tile based deferred lighting– Andrew Lauritzen -

http://visual-computing.intel-research.net/art/publications/deferred_rendering/lauritzen_deferred_shading_siggraph_2010.pptx

• Divide screen in tiles• Cull screen space lights with each tile• Do deferred lighting• Repeat for next tile

Page 30: به نام یزدان پاک

Deferred Rendering - Performance• Scene ~ 350k triangles – PSSM Shadows• Intel Core2 E5300 (low-end)• ATI – 4850 (mid-range)• 200 Lights - 1024x768 – 133fps• 100 Lights – 1024x768 – 200fps• 1000 Lights – 1024x768 – 31 fps• 1 Light (sun) – 1024x768 – 302 fps• Still room for more optimization• Isn’t it NICE ?!

– Throw dynamic lights everywhere. Explosions, gun fire, car head lights, city lights, etc.

Page 31: به نام یزدان پاک

Shadows - PSSM

• PSSM is just Cascaded shadow maps with efficient frustum spliting scheme– Split view frustum in N parts with PSSM splitting scheme– Adjust imaginary sun position on the bounding sphere of

the world– Detect shadow caster/receiver objects in each split from

light’s point of view– Draw shadow maps for each split (total N shadow maps)– When rendering objects, read back from proper shadow

map within position range

Page 32: به نام یزدان پاک

Shadows – PSSM 2

Reference: Fan Zhang, Haniqiu Sun, Oskari Nyman, GPU Gems 3 – Chapter 10Fan Zhang PSSM Page :

http://appsrv.cse.cuhk.edu.hk/~fzhang/pssm_project/

PSSM Frustum splitting scheme

Page 33: به نام یزدان پاک

Shadows – PSSM 3• PROS

– Best looking shadows on big outdoor environments– Preseves shadow quality within the whole view range– Used in many big games : Red dead redemption, Assassin’s Creed,

KillZone2, Battlefield2, …

• CONS– Very GPU/CPU intensive (usually 3-4 big shadow map renders, and 3-4

shadow map read backs with branching, culling, etc.)

Page 34: به نام یزدان پاک

Shadows – PSSM – Speed Problem

• Here comes D3D10 !• Used methods presented in GPU Gems 3• Using D3D10 specific stuff

– Texture Arrays, SampleCmpLevelZero() – Geometry shaders– D3D10 Instancing– Branching (also applicable to D3d9 sm3.0 hw)

• With the help of D3D10 : Generating 4 CSM shadow maps from …

80 Objects ~ 400 Draw calls

4 Render target changes

80 Objects~ 100 Draw calls

1 Render target change~ 3x speed increase

D3D9 D3D10/10.1

Page 35: به نام یزدان پاک

Shadows – PSSM

Page 36: به نام یزدان پاک

Shadows – PSSM – What else?

• Anti-Jittering: we currently do additional simple 4-tap PCF sampling (not good enough). mixing with variance shadow maps (or even MSAA shadow maps) would be nicer.

• What else needs to be done ? A lot !– Stabilize jitters– Better fitting of split frustums to shadow maps– Peter-Panning, Shadow acne– More optimization (especially on CPU side)

4-Tap PCF

Peter-Panning

Page 37: به نام یزدان پاک

In Development

• HDR: – 64bit Float format– Histogram generation. (Median method used in HL2)– Tonemapping– Bloom

• Particles :– Deferred particles (smaller buffer, less fill-rate intensive)– Soft particles

Page 38: به نام یزدان پاک

In Development

• Skinning/Animation:– Hardware accelerated (no actual bone limit in D3D10)– Havok Animation

• Terrain:

Page 39: به نام یزدان پاک

Terrain

وقت نشد این قسمت را کامل کنیم •

Geo-MipMap مشابه LODالگوریتم رندر و •موتور • در شده استفاده روش از الهام FrostBiteبا

(BFBC, BFBC2) Shaderبرای تولید متریال زمین از روشهای پیشرفته •

Splatting گرjو ویرایش Node Based دjمانن Terragen2 و World Machine ورتjه صjا بjو... امReal-time تفادهjاس

شده است

Page 40: به نام یزدان پاک

دمو

برنامه نویس: •سپهر تقدیسیانعلی سیداف

گرافیست:•مهام بری

بهزاد حسین زاده

Page 41: به نام یزدان پاک

سوال؟

Page 42: به نام یزدان پاک

اطالعات پروژه

وبالگ توسعه بازی:•http://www.tochalco.com/blog

فرصت های شغلی موجود برای نیروهای برنامه •نویس، گرافیست،... )تماس از طریق ایمیل(

[email protected]

Page 43: به نام یزدان پاک

پایان