Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> ساخت بازی با نرم افزار Unity -> سوال و جواب:> shaders
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه 1, 2, 3, 4  بعدي

سوال و جواب:> shaders
نويسنده
پيغام
Parham
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 4 شنبه 28 دي 1390
تعداد ارسالها: 408
محل سكونت: somewhere behind a lot of troubles...


4 شنبه 17 خرداد 1391 - 14:26
پاسخ بصورت نقل قول
سلام.
من تازه دارم کد نویسی با C# رو تو یونیتی یاد میگیرم...
چیز زیادی هم بلد نیستم... Question
می خواستم یکم (کمه کم که نه...یه عالمه) راجع به شیدرز توضیحاتی بدین تا بتونم از داکیومنشن ها یه چیزی بفهمم...
من منتظرم... Rolling Eyes

_________________
برای رسیدن به موفقیت آسانسوری وجود ندارد،باید پله پله بالا رفت؛
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


تاريخ عضويت: 2 شنبه 23 آذر 1388
تعداد ارسالها: 1034


4 شنبه 17 خرداد 1391 - 15:10
پاسخ بصورت نقل قول
سلام

Parham,

چه توضيحي ؟ سوالت خيلي كلي هست ...
مبحث شيدر نسبتا پيچيده هست و اگه بخوايد كار درست حسابي انجام بديد حتما بايد برنامه نويسي گرافيك رو از پايه شروع كنيد ...
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
Parham
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 4 شنبه 28 دي 1390
تعداد ارسالها: 408
محل سكونت: somewhere behind a lot of troubles...


4 شنبه 17 خرداد 1391 - 20:54
پاسخ بصورت نقل قول
یک سوال کوچک تر...اصلا شیدر چیه،چه وظیفه ای داره...یک برنامه نویس چطور میتونه ایجادش کنه؟
به سه بخش کوچک تر تقسیم شد... Wink

_________________
برای رسیدن به موفقیت آسانسوری وجود ندارد،باید پله پله بالا رفت؛
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


تاريخ عضويت: 2 شنبه 23 آذر 1388
تعداد ارسالها: 1034


4 شنبه 17 خرداد 1391 - 22:48
پاسخ بصورت نقل قول
Parham,

خب هنوز هم کلی هست ! جواب اين سوال ها با يه جستجو پيدا ميشه راحت !

1- اما بهرحال شيدر قطعه كدي هست كه روي GPU اجرا ميشه ...
قبل از بوجود اومدن شیدرها ، GPU ها فقط یکسری محاسبات معمولی میتونستن انجام بدن و شما به عنوان برنامه نویس فقط میتونستی از اونها استفاده کنی و این یه محدودیت بزرگ بود ، این روش به عنوان Fixed Function Pipeline شناخته میشه
اما با شیدر و Programable Pipeline برنامه نویس میتونه این محاسبات رو خودش انجام بده و افکت های خودش رو بوجود بیاره ، برا همین 2 نوع شیدر بوجود اومد Pixel/Fragment Shader و Vertex Shader ... با Vertex Shader شما میتونی محاسبات ورتکس ها ( مختصات ، رنگ ، مختصات UV و ... ) رو به صورت دلخواه انجام بدی و با Pixel یا عبارت درسترش Fragment Shader محاسبات فرگمنت ها رو ...
یه نوع دیگه شیدر بنام Geometry Shader بعد اینها هم بوجود اومد که محدودیت های Vertex Shader رو جبران میکنه چون شما نمیتونستی ورتکس ها رو کم و زیاد کنی اما با Geometry Shader اینکار رو میشه انجام داد و تکنیک ها و متد های رندری مثل Tesselation به وجود اومد که اگه اطلاع داشته باشید میدونید که خیلی خفن هست ...
2- پس وظيفه شيدر انجام محاسبات گرافيكي هست تو يه جمله

3- نحوه ایجادش هم اگه منظورت یونیتی هست که تو پنل project راست کلیک کن و گزینه Create Shader اینها فک کنم باشه ، یزن و بعد یه فایل درست میشه و بعدم بازش کن ... ضمن اینکه اون چیزی که تو یونیتی به عنوان شیدر میبینید ... شیدر + Shader system خود یونیتی بنام ShaderLab هست ...
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
Parham
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 4 شنبه 28 دي 1390
تعداد ارسالها: 408
محل سكونت: somewhere behind a lot of troubles...


5 شنبه 18 خرداد 1391 - 12:32
پاسخ بصورت نقل قول
ببین من هنوز درک نکردم که شیدر دقیقا چیکار مکنه...گشتم دیدم معناش میشه:سایه رنگ زن... Shocked
آیا این شیدر ربطی به تکسچرینگ یا مپینگ داره؟
اصلا اینها رو ول کن...برو سراغ programable pipeline...یعنی چی؟منظور از افکت هایی که خود برنامه نوس به وجود میاره چیه؟
(ببخشید زیاد عجیب و غریب سوال می کنم...فرض می کنیم من هیچی از یونیتی حالیم نیست...واقعا هم نیست... Wink )

_________________
برای رسیدن به موفقیت آسانسوری وجود ندارد،باید پله پله بالا رفت؛
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
AshkaN_666i
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 5 شنبه 27 آبان 1389
تعداد ارسالها: 951
محل سكونت: NoWhere Land


5 شنبه 18 خرداد 1391 - 13:29
پاسخ بصورت نقل قول
Parham, ببین فرض کن, می خوای تو بازیت یه اقیانوس طراحی کنی! مدل اقیانوس یه plane معمولیه ( یه سطح صاف ), ولی با شیدر میتونی حالت موج, بازتاب نور و ... رو به plane نسبت بدی تا مثل اقیانوس واقعی به نظر برسه! ( دیگه از این ساده تر نمیشه گفت! )

مثلاً تو این تصویر دو نوع شیدر مختلف رو میبینی که به جسم نسبت داده شده!



یا همون شیدر اقیانوس که گفتم:




کلاً از شیدر برای ساخت افکتای گرافیکی استفاده میشه!
منظور از افکت هایی که خود برنامه نویس ایجاد می کنه هم همینه دیگه, یعنی شما خودت با کدنویسی شیدر می نویسی!

اگه هم می خوای از پایه شروع کنی, به نظر من برو سراغ DirectX و مبحثی به نام HLSL!

_________________
-

If you say pls, because it is shorter than "please", I will say no, because it is shorter than yes
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Parham
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 4 شنبه 28 دي 1390
تعداد ارسالها: 408
محل سكونت: somewhere behind a lot of troubles...


جمعه 19 خرداد 1391 - 10:17
پاسخ بصورت نقل قول
سلام.
دمت گرم اشکان...این شد یه چیزی...من توی پروژه ی انگری بوتس یونیتی شیدر ها رو دیدم...فکر کنم با زبان سی نوشته شده بود...در زبان که فرقی ندهره نوشتن شیدر ها احیانا؟ Shocked
(ممکنه یکم اعصابتون خورد بشه...ولی ببخشید...هیچی از این نمی دونم. Mad )
با سپاس فراوان.

_________________
برای رسیدن به موفقیت آسانسوری وجود ندارد،باید پله پله بالا رفت؛
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
AshkaN_666i
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 5 شنبه 27 آبان 1389
تعداد ارسالها: 951
محل سكونت: NoWhere Land


جمعه 19 خرداد 1391 - 11:13
پاسخ بصورت نقل قول
Parham, شیدر زبون خودش رو داره! یعنی مثلاً شما بازیتون رو با #C می نویسی, اما شیدر هاتون رو با زبون خود شیدر!

این یه نمونه کد شیدر تو یونیتیه:

كد:
Shader "Custom/NewShader" {
   Properties {
      _MainTex ("Base (RGB)", 2D) = "white" {}
   }
   SubShader {
      Tags { "RenderType"="Opaque" }
      LOD 200
      
      CULL false
      
      CGPROGRAM
      #pragma surface surf Lambert

      sampler2D _MainTex;

      struct Input {
         float2 uv_MainTex;
      };

      void surf (Input IN, inout SurfaceOutput o) {
         half4 c = tex2D (_MainTex, IN.uv_MainTex);
         o.Albedo = c.rgb;
         o.Alpha = c.a;
      }
      ENDCG
   }
   FallBack "Diffuse"
}

_________________
-

If you say pls, because it is shorter than "please", I will say no, because it is shorter than yes
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Parham
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 4 شنبه 28 دي 1390
تعداد ارسالها: 408
محل سكونت: somewhere behind a lot of troubles...


جمعه 19 خرداد 1391 - 11:48
پاسخ بصورت نقل قول
سپاس...جالب شد... Cool
چند سوال دیگه:>
1.این زبان اسمش چیه(اصلا اسم خاصی داره؟یا همونHigh Level Shader Languageه)
2.این زبان کامپایلر خاصی داره؟(توسط ویژوال استودیو پشتیبانی میشه؟)
---------
و اینکه من این زبان رو ترکیبی از سینتکس جاوا اسکریپت و سی ++ میبینم...درسته Shocked

_________________
برای رسیدن به موفقیت آسانسوری وجود ندارد،باید پله پله بالا رفت؛
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
AshkaN_666i
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 5 شنبه 27 آبان 1389
تعداد ارسالها: 951
محل سكونت: NoWhere Land


جمعه 19 خرداد 1391 - 13:25
پاسخ بصورت نقل قول
Parham, خب بستگی داره از چه شیدری استفاده کنی, مثلاً تو OpenGL شیدر GLSL هست که بر پایه سینتکس های زبان C ساخته میشه, حتی یه جا خوندم که خیلی وقتا از اسمبلی برای نوشتن شیدر استفاده می کنن!

کلاً خیلی از زبونا به هم شبیهن, مثلاً لوآ به نظر من تقریباً ترکیبی از C و بیسیکه!

اصولاً شیدر به صورت تک برنامه ساخته نمیشه که احتیاج به کامپایلر یا اینترپریتر خاصی داشته باشه! ( همراه با DirectX و ...استفاده میشه )

_________________
-

If you say pls, because it is shorter than "please", I will say no, because it is shorter than yes
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 4 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد
برو به صفحه 1, 2, 3, 4  بعدي


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |