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

Preview:

DESCRIPTION

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

Citation preview

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

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

مقدمه و معرفی

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

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

اهداف پروژه•

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

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

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

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

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

دمو•

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

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

•Deferred Rendering

•DirectX 10/11 API

نوشتن موتور؟

مزایا

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

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

معایب

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

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

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.

Deferred Rendering?

معایب

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

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

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

API مانند( ها DirectX 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

DirectX 10+?

معایب

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

نیز باشد(

DirectX 10+?

آینده

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

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

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

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

تکنولوژی های متداول بازی های مدرن•– 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, …

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ا نمایش شیدرها را به نحو مناسب پشتیبانی کنند

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ه •

موتور گرافیک

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

(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)تکسچرهاو...( هنگام

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

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

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

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

Exporting Solutions

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

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

از آنها

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

ضروری است

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)...عدم وجود تکسچر و ،

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)

Deferred Rendering - GBuffer

Material(Not viewable)

Color

Depth Normals

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

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!)

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, ….

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 !

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

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.

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

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

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.)

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

Shadows – PSSM

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

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

In Development

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

• Terrain:

Terrain

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

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

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

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

شده است

دمو

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

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

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

سوال؟

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

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

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

jobs@tochalco.com

پایان

Recommended