ورود

View Full Version : سوال: شیدرها و تکنیک ها در دایرکت ایکس



Vahid_67
سه شنبه 28 دی 1389, 12:58 عصر
سلام


آیا شیدرها و تکنیکها مختص به ورژن های DX هستند؟یعنی مثلا شیدری هست که فقط روی ورژن 11 اجرا بشه و روی 9 و 10 اجرا نشه؟
اگه آره باید برای حل ین مشکل چیکار کرد؟

مثلا توی سمپل های DX11 یه تکنیک هست که هرچی دوربین از مش دورتر میشه ، تعداد مثلثهای اون مش هم کمتر میشه و برعکس.شبیه این تکنیک و توی بازی JustCause2 روی ترین بازی میشه دید البته مطمئن نیستم که دقیقا همینه ولی این بازی روی XP اجرا نمیشه.

hi.alir
سه شنبه 28 دی 1389, 15:21 عصر
هر ورژن DX شیدر مخصوص خودش رو داره. البته همشون HLSL هستند ولی خود HLSL ورژن خاصی داره.
مثلا Directx 9 با HLSL ورژن های 1 و 2 و 3 کار می کنه.
Directx 10 با HLSL فقط ورژن 4.
Directx 10.1 فقط ورژن 4.1.
Directx 11 فقط ورژن 5.

یه سر به این دو تا صفحه بزن اطلاعات خوبی می تونی در مورد Directx به دست بیاری:
http://msdn.microsoft.com/en-us/directx/default.aspx
http://en.wikipedia.org/wiki/DirectX

vice_city
شنبه 14 اسفند 1389, 08:36 صبح
سلام به دوستان
توی یه شیدر dx10 دیدم که بعد از توضیح زیر:
// Renders scene to render target using D3D10 Techniques

توابع و دستوراتی مثل این اومدن:

technique10 RenderTerrain_Inside
{
pass P0
{
SetVertexShader( CompileShader( vs_4_0, ShootRayVS( ) ) );
SetGeometryShader( NULL );
SetPixelShader( CompileShader( ps_4_0, ShootRayPS( false, false, false, false ) ) );

SetRasterizerState( Solid );
SetBlendState( DisableBlending, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
SetDepthStencilState( EnableDepth, 0 );
}
}

که توی همشون "technique10" هست.سوالم اینه اگه بجای این دستورات از دستورات dx9 استفاده کنیم (البته منظورم فقط جایگزینی نیست) میشه این شیدر رو توی dx9 استفاده کرد؟
کلا آیا میشه یه شیدر رو دوبار نوشت تا توی دو ورژن ازش اسفاده کرد؟اگه آره این خوبه یا نه منظورم اینه که ممکنه با هم فرق داشته باشن.
شاید سوالی که پرسیدم سوال خوبی نباشه ولی ذهنمو مشغول کرده .مثلا بازی dirt2 که با dx11 نوشتنش ، من هم رو xp هم 7 اجراش کردم ولی هیچ تفاوتی وجود نداشت با اینکه روی xp با dx9 اجرا میشد و روی 7 با 11.فکر کردم که سازنده برای ساپورت هردو ورژن اومده شیدرهاشو برای هردو ورژن نوشته.اگه این امکانپذیر باشه پس تفاوت اصلی ورژن شیدرها تو چیه؟

سپول
شنبه 14 اسفند 1389, 20:50 عصر
بله برنامه نویس ها برای هر دو نسخه شیدرهای خاص رو می نویسند، البته در صورتی که از ویژگی های سخت افزار جدید بخواهند استفاده کنند
اگه از ویژگی های سخت افزار نخواهید استفاده کنید ، همون شیدرهای d3d9 - model 3.0 رو در directx11 لود می کنند.

فرقشون هم زیاده، اما بازی سازها هنوز زیاد استفاده نمی کنند.
اون هم به خاطر اینکه همچنان تا 1-2 سال دیگه موتورها در اصل بر پایه سخت افزارهای dx9 ساخته می شوند، دلیلش هم بازی های کنسولی هستند که به علت محبوبیت و فروش بیشتر بازی های pc رو هم تحت تاثیر قرار دادند و در واقع باعت جلوگیری از پیشرفت تکنولوژی شدن. در حال حاضر بیشتر بازی ها رو اول روی کنسول درست می کنند سپس نسخه pc هم اگه در کار باشه می دن. این باعث می شه که بازی سازها به خاطر بازار ضعیف pc، وقت کافی رو نگذارن و پیشرفت چندانی روی سخت افزار قدرتمند pc نبینید.
با اومدن نسل جدید کنسول ها و احتمالا ساختار سخت افزار اونها که احتمالا شبیه directx11 ، GpuComputing و تعداد core ها و حافظه بیشتر خواهد بود، احتمالا شاهد یک جهش خفن خواهیم بود، چه در pc چه در کنسول .
استارتش هم خورده، نمونش هم :

http://www.bazicenter.com/news/2276