1 / 43

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

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

hollis
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. مقدمه و معرفی • موضوع و سبک بازی • فن آوری های مورد استفاده • اهداف پروژه • وبلاگ توسعه بازی: http://www.tochalco.com/blog

  4. تاریخچه موتور • تکرار اول: ارتفاء موتور موجود • تکرار دوم: تبدیل به DirectX10/11 • تکرار سوم: Deferred Rendering • دمو

  5. تصمیمات استراتژیک • نوشتن موتور از پایه • Deferred Rendering • DirectX 10/11 API

  6. نوشتن موتور؟ • مزایا • طبق تحقیقات انجام شده اکثر (حدودا 75%) بازیهای AAA دنیا با موتور داخلی تولید شده اند (اطلاعات و مستندات این تحقیق در وبلاگ پروژه موجود است) • عدم وابستگی، توسعه آسانتر، انعطاف پذیری • معایب • زمان و هزینه بالا • ریسک بسیار بالا • عدم وجود تخصص و تجربه کافی ”نوشتن موتور، اختراع دوباره چرخ نیست“

  7. Deferred Rendering? • مزایا • قابلیت رندر تعداد زیادی نور دینامیک • کاهش ترکیب شیدرها مخصوصاً در نور پردازی • وجود اطلاعات لازم برای پیاده سازی افکت های 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.

  8. Deferred Rendering? • معایب • نیاز به Fill-rate بالا به علت وجود چندین GBuffer بزرگ، به خصوص روی کارت های ضعیف • عدم توانایی در رندر اشیاء شفاف (Transparency) • مشکلات در Anti Aliasing • عدم انعطاف پذیری در تنوع متریال • با در نظر گرفتن مزایا و معایب ذکر شده، در بلند مدت با پیشرفت سخت افزارهای گرافیکی و انطباق و سازگاری بهتر API ها (مانند DirectX 10+) آینده این روش روشن تر است و معایب آن قابل حل خواهند بود.

  9. DirectX 10+? • مزایا • Multi-Threaded Rendering • قابلیت fallback روی سخت افزارهای قدیمی تر (Feature Level) • 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

  10. DirectX 10+? • معایب • عدم پشتیبانی در سیستم عامل های پایین تر از VistaWindows • عدم پشتیبانی در سخت افزارهای قدیمی تر • مشکل تر (حرفه ای تر) شدن برنامه نویسی (این مورد می تواند مزیت نیز باشد)

  11. DirectX 10+? • آینده • آمار از سایت Steam :http://store.steampowered.com/hwsurvey/ با توجه موارد ذکر شده، در زمان اتمام پروژه سخت افزارها و سیستم عامل مورد نیاز متداول خواهند بود و سرمایه گذاری روی این API نوعی آینده نگری است.

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

  13. Shaders • دوران Fixed Pipeline مدتهاست گذشته است • D3D10+ فقط از شیدرها پشتیبانی می کند • اکثر افکت های نامبرده شده فقط توسط شیدر قابل پیاده سازی می باشند • آرتیست باید با شیدرها و ابزارهای مربوطه آشنایی داشته باشند (ShaderFX, Mental Mill, FXComposer, RenderMonkey) • Pipeline ها و موتورهای گرافیکی باید تولید، انتقال و نمایش شیدرها را به نحو مناسب پشتیبانی کنند

  14. نکات مهم در طراحی Pipeline • سرعت انتقال محتوا از نرم افزارهای تولید محتوای سه بعدی (3dsmax, maya,…) به موتور بازی • کوتاه و ساده بودن چرخه تکرار بین موتور و نرم افزار سه بعدی • هر فردی با ابزارهای مختص خودش راحتتر است و ترجیحا مراحل باید در همان نرم افزارهای مورد استفاده انجام شود • کاهش احتمال خطای انسانی با حذف مراحل میانی در فرآیند انتقال محتوا و همچنین خودکار سازی آنها (اجتناب از انجام مراحل دستی) • آنچه هنرمند در ابزار طراحی خود می بیند با آنچه در موتور گرافیک ترسیم می شود یکسان باشد (WYSIWYG) • قابلیت اعمال فرآیندهای بهینه سازی به صورت خودکار در هر قسمت از Pipeline فراهم باشد • انعطاف پذیر باشد و تغییرات مورد نظر در Pipeline به سادگی قابل اجرا باشد • سیستم متریال یکپارچه برای انتقال متریال اجسام از نرم افزار سه بعدی به موتور گرافیک

  15. راهکار موتور توچال • سه نوع شیدر (Deferred، Forward، Forward:3dsmax) • ShaderAuthor tool • Shader Repository • 3dsmax Exporter برای فرمت سه بعدی خاص موتور بازی • پشتیبانی از COLLADA ، فرمت مبادله محتوا • مدل همانطور که در نرم افزارهای سه بعدی دیده می شود، در موتور نمایش داده شود WYSIWYG • پیاده سازی سیستم متریال یکپارچه برای 3dsmax و موتور گرافیک (FX material) • قابلیت پردازش، بهینه سازی محتوا و فایلهای مربوطه (تکسچرهاو...) هنگام Export به صورت خودکار

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

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

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

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

  20. Exporting Solutions • روش ها و فرمت های متداول (FBXو Colladaوx mesh...) مشکلات • Game /GPU Friendly نبودن این فرمتها • وجود اطلاعات اضافه بسیار زیاد • نیاز به پردازش قابل توجه هنگام لود یا توسط برنامه واسط • کند بودن خواندن آنها • مشکلات اساسی در خواندن متریال های مبتنی بر شیدر و پشتیبانی ناقص از آنها • اکثر موتورهای مطرح فرمت خاص خود را دارند • برای ایجاد یک Pipleline مناسب وجود Exporter سودمند و گاهاً ضروری است

  21. Tochal Exporter • تفاوت نحوه ذخیره سازی اطلاعات صحنه در max و موتور (GPU Friendliness) • فرمت خاص طراحی شده قابل ذخیره و بارگذاری به صورت متنی xml و باینری • قابلیت تبدیل تکسچرها به فرمت dds با فشرده سازی های مختلف • قابلیت انتخاب اطلاعات مختلف ورتکس های (POSITION, NORMAL, TEXCOORD,…) • قابلیت ذخیره سازی Skin و Boneو Hierarchy • ذخیره کلیه شیدرها و پارامترهای مورد استفاده • قابلیت تبدیل متریال های عادی به سیستم شیدر موتور توچال • تشخیص و اعلام خطاهای مهم (تکسچرهای بزرگ، مشکلات Mesh, Skin، عدم وجود تکسچر و...)

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

  23. Deferred Rendering - GBuffer Depth Normals Material (Not viewable) Color

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

  25. 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  Gbuffer (Material) AmbientColor SpecularColor SpecularFallout Illumination … Materials[] Material Id • Get Material Id • Read back from Materials[] • Maximum 4096 mtls (16bit) • Read from tbuffer (Fast!) (Lighting Phase) (Draw phase) Mesh

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

  27. 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 !

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

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

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

  31. Shadows – PSSM 2 Reference: Fan Zhang, Haniqiu Sun, Oskari Nyman, GPU Gems 3 – Chapter 10 Fan Zhang PSSM Page : http://appsrv.cse.cuhk.edu.hk/~fzhang/pssm_project/ PSSM Frustum splitting scheme

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

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

  34. Shadows – PSSM

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

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

  37. In Development • Skinning/Animation: • Hardware accelerated (no actual bone limit in D3D10) • Havok Animation • Terrain:

  38. Terrain • وقت نشد این قسمت را کامل کنیم  • الگوریتم رندر و LOD مشابه Geo-MipMap • با الهام از روش استفاده شده در موتور FrostBite (BFBC, BFBC2) • برای تولید متریال زمین از روشهای پیشرفته Shader Splatting و ویرایشگر Node Based مانند Terragen2 و World Machineو... اما به صورت Real-time استفاده شده است

  39. دمو • برنامه نویس: سپهر تقدیسیان علی سیداف • گرافیست: مهام بری بهزاد حسین زاده

  40. سوال؟

  41. اطلاعات پروژه • وبلاگ توسعه بازی: http://www.tochalco.com/blog • فرصت های شغلی موجود برای نیروهای برنامه نویس، گرافیست،... (تماس از طریق ایمیل) jobs@tochalco.com

  42. پایان

More Related