Mahdi_Rashed
Well-Known Member
هـــــــــــی . دیشب بلاخره بعد از کلی زحمت تونستم بخشی از GI رو که پدیده ی بازتاب نور از سطح هست رو طوری برنامه نویسی کنم که با سیستمهای معمولی قابل پردازش باشه . حالا چرا این پست رو زدم ؟ چون اولین باز که برای ساخت GI real time اقدام کردم به جای استفاده از متدهای رایج موتورهای طراحی بازی اومدم از معادلات واقعی نور استفاده کردم . معادلاتی که توی راهنمای نرم افزار و پلاگین Maxwell و Vray و چند تا راهنمای دیگه استفاده کردم .
این معادلات شامل پدیده ی تابش از منبع نوری و برخورد و مداخله و تفکیک نوری بود . معادلات نوری در این حالت دارای ضرب 3 زیگما با توان n و بازه 0 تا بینهایت هستن . یعنی اگه عدد نوری که بسته های انرژی نور با فوتون رو تشکیل میدن بره بالای 1000000000 دیگه مصیبتی پیش میاد که نگو . اول اینطوری برنامه نویسی کردم و دیدم روی سیستم چهار هسته 9000 سرعت fps رسید به 12 تا 16 و حجم پردازش CPU و GPU از حد مجاز برای نور بالاتر رفت و 90 درصد و بعضی وقتا بیشتر رو پر کرد . پس عاقلانه نبود استفاده از این سیستم نوری چون نیازمند یک ابر رایانه بود برای محاسبه هر فریم .
اما برای حل این چه کار کنیم ؟؟؟ نمیدونم
برای حلش من از راه شاید ابتکاری خودم استفاده کردم .
اول اومدم مقیاس واحد و انرژی فوتون جدیدی رو تعریف کردم که مقدار او خیلی کمتر از حالت معمولی بود . همچنین به جای عدد بینهایت در بازه ی معادله 1000 واحد بیشتر از بیشترین انرژی قابل محاسبه موتور طراحی بازی در نظر گرفتم . چرا ؟ چون اول 800 واحد بوبرنامه نویسی د و موتور باگ میداد و احتمالاً به علت پردازش های تصادفی بود . بعد از این واحدی که برای انرژی فوتون تعریف کردم رو با انرژی و واحد اصلی فوتون نوری هماهنگ کردم . میدونید چطوری ؟ ها ها ها نمیگم
چون من برای واحد خودم یک ظریب محابسه داشتم یک Unit Convertor متن باز رو یک کم تغییر دادم تا ضریب انرژی خودم و واحد اصلی بهش اضافه بشه بعد کار هماهنگ کردن رو شروع کردم . مثلاً برای هر 10000 فوتون 0.1 فوتون در نظر گرفته بهش ولی انرژی نوری اون و شرت تابش فرقی نکنه ( مثلاً ) .
حالا با جایگزینی مقدار جدید به جای مقدار اصلی بازه ها خیلی کم میشه . یک کار دیگه هم که مهمه مقدار نهایی و تعداد اعشار هست . اعداد اعشای بیشتر از 3 واحد لازم نیست تا محاسبه بشن چون وقتی 2 عدد اول اعشار محاسبه بشن شما 89 درصد به جواب و دقت اصی نزدیک میشین . حالا 3 تا هم باشه مشکلی پیش نمیاد ولی 4 تا که بشه 25 درصد به صورت خیلی غیر طبیعی به باز پردازشی اضافه میشه .
اما برای تبدیل مقدار و ضریب اصلی به ضریب جدید باید چند خط که نه یه عالمه خط برنامه نویسی بشه . مال من 1700 خط مفید شد . چون باید یک سیستم پایه نور با ضریب جدید برنامه نویسی بشه . این برنامه در قالب C# Advanced حجم زیادی نداره و روی پردازش اثر محسوسی نمیذاره . مدل آماده هم هست که میتونید توی DirectX SDK پیدا کنید یا به طور مستقیم از سایت XNA Game Studio دانلود کنید .
حالا برای جایگزینی یک همچین معادلات نوری در بازی قاعدتاً نباید مشکلی داشته باشید . نه مشکل از قبیل باگ شناسایی متد برنامه نویسی نه مشکل از قبیل بار پردازشی . خودتون امتحان کنید و اگه مشکلی داشتید همینجا بگین
اینم تست موتور من و دستانم هست که اسمش Main Core Game Engine هست . 70 درصد برنامه نویسی اون با متدهای جدید و شخصی هست و نسخه ی اصلی اون شهریور ماه کامل میشه . این کلیپ 16 ثانیه هست با حجم 4 مگ . البته یک سوتی هم دادیم که خورشید هست . اون عکسه و اصلاً جالب نشده . بنابراین از توجه به خورشید خودداری کنید . سیستم نوری داخل این تست دقیقاً به روشی که گفته شد برنامه نویسی شده ولی هنوز تستیه و خیلی کار داره .
دانلود تست موتور طراحی بازی Main Core
لینک مستقیه . میتونید با راست کلیک دانلودش کنید یا این که اگه Quick Time player رو دارید توی مرورگر ببینید .
ممنون . موفق باشید همگان
این معادلات شامل پدیده ی تابش از منبع نوری و برخورد و مداخله و تفکیک نوری بود . معادلات نوری در این حالت دارای ضرب 3 زیگما با توان n و بازه 0 تا بینهایت هستن . یعنی اگه عدد نوری که بسته های انرژی نور با فوتون رو تشکیل میدن بره بالای 1000000000 دیگه مصیبتی پیش میاد که نگو . اول اینطوری برنامه نویسی کردم و دیدم روی سیستم چهار هسته 9000 سرعت fps رسید به 12 تا 16 و حجم پردازش CPU و GPU از حد مجاز برای نور بالاتر رفت و 90 درصد و بعضی وقتا بیشتر رو پر کرد . پس عاقلانه نبود استفاده از این سیستم نوری چون نیازمند یک ابر رایانه بود برای محاسبه هر فریم .
اما برای حل این چه کار کنیم ؟؟؟ نمیدونم

برای حلش من از راه شاید ابتکاری خودم استفاده کردم .
اول اومدم مقیاس واحد و انرژی فوتون جدیدی رو تعریف کردم که مقدار او خیلی کمتر از حالت معمولی بود . همچنین به جای عدد بینهایت در بازه ی معادله 1000 واحد بیشتر از بیشترین انرژی قابل محاسبه موتور طراحی بازی در نظر گرفتم . چرا ؟ چون اول 800 واحد بوبرنامه نویسی د و موتور باگ میداد و احتمالاً به علت پردازش های تصادفی بود . بعد از این واحدی که برای انرژی فوتون تعریف کردم رو با انرژی و واحد اصلی فوتون نوری هماهنگ کردم . میدونید چطوری ؟ ها ها ها نمیگم
چون من برای واحد خودم یک ظریب محابسه داشتم یک Unit Convertor متن باز رو یک کم تغییر دادم تا ضریب انرژی خودم و واحد اصلی بهش اضافه بشه بعد کار هماهنگ کردن رو شروع کردم . مثلاً برای هر 10000 فوتون 0.1 فوتون در نظر گرفته بهش ولی انرژی نوری اون و شرت تابش فرقی نکنه ( مثلاً ) .
حالا با جایگزینی مقدار جدید به جای مقدار اصلی بازه ها خیلی کم میشه . یک کار دیگه هم که مهمه مقدار نهایی و تعداد اعشار هست . اعداد اعشای بیشتر از 3 واحد لازم نیست تا محاسبه بشن چون وقتی 2 عدد اول اعشار محاسبه بشن شما 89 درصد به جواب و دقت اصی نزدیک میشین . حالا 3 تا هم باشه مشکلی پیش نمیاد ولی 4 تا که بشه 25 درصد به صورت خیلی غیر طبیعی به باز پردازشی اضافه میشه .
اما برای تبدیل مقدار و ضریب اصلی به ضریب جدید باید چند خط که نه یه عالمه خط برنامه نویسی بشه . مال من 1700 خط مفید شد . چون باید یک سیستم پایه نور با ضریب جدید برنامه نویسی بشه . این برنامه در قالب C# Advanced حجم زیادی نداره و روی پردازش اثر محسوسی نمیذاره . مدل آماده هم هست که میتونید توی DirectX SDK پیدا کنید یا به طور مستقیم از سایت XNA Game Studio دانلود کنید .
حالا برای جایگزینی یک همچین معادلات نوری در بازی قاعدتاً نباید مشکلی داشته باشید . نه مشکل از قبیل باگ شناسایی متد برنامه نویسی نه مشکل از قبیل بار پردازشی . خودتون امتحان کنید و اگه مشکلی داشتید همینجا بگین
اینم تست موتور من و دستانم هست که اسمش Main Core Game Engine هست . 70 درصد برنامه نویسی اون با متدهای جدید و شخصی هست و نسخه ی اصلی اون شهریور ماه کامل میشه . این کلیپ 16 ثانیه هست با حجم 4 مگ . البته یک سوتی هم دادیم که خورشید هست . اون عکسه و اصلاً جالب نشده . بنابراین از توجه به خورشید خودداری کنید . سیستم نوری داخل این تست دقیقاً به روشی که گفته شد برنامه نویسی شده ولی هنوز تستیه و خیلی کار داره .
دانلود تست موتور طراحی بازی Main Core
لینک مستقیه . میتونید با راست کلیک دانلودش کنید یا این که اگه Quick Time player رو دارید توی مرورگر ببینید .
ممنون . موفق باشید همگان
