command buffer

هي طريقة لاضافة مزيد من العمليات في ال rendering pipeline هذه العمليات كلها موجودة في الكلاسس CommandBuffer ثم بعد ذلك بامكانك اضافتها لل camera او ال light او حتى تنفيذها مباشرة عن طريق Graphics

Camera.AddCommandBuffer
Light.AddCommandBuffer
Graphics.ExecuteCommandBuffer

يمكن اضافة ال command buffer في اي مكان داخل ال rendering pipeline كما موضح في الصورة لقراءة المزيد … “command buffer”

الكاميرا في unity (الجزء الأول)

culling

وهي عملية تحديد الكائنات التي سوف يتم رسمها

Camera.main.cullingMask = LayerMask.GetMask (new[] {"layer1"});//تحدديد الطبقات التي تراها الكاميرا
float[] distances = new float[32];// تحديد مسافة الرؤية لكل طبقة
distances[LayerMask.NameToLayer("layer1")] = 3;
Camera.main.layerCullDistances = distances;
Camera.main.layerCullSpherical = true;// تحديد نوع مقياس المسافة عن الكاميرا بالاعتماد على العمق "فولس" او بحساب المسافة بين موقع الكائن والكاميرا "اون"

culling matrix

Camera.main.cullingMatrix = cullingCamera.projectionMatrix * cullingCamera.worldToCameraMatrix;

 Camera.main.ResetCullingMatrix ();// for disable culling matrix

افترض ان لديك كاميرا اخرى اسمها cullingCamera واردت فقط ان ترى العناصر التي تراها الكاميرا الأخرى دون ان تلعب في ابعادها بالنسبة للكاميرا الاصلية وهذا مايقوم به الكود السابق . لقراءة المزيد … “الكاميرا في unity (الجزء الأول)”

برمجة ال shader باستخدام ال CG الدرس السابع

Discard

بامكانك عمل discard للبكسل داخل برنامج ال fragment وهذا يؤدي الى عدم رسم البكسل .

fixed4 frag(VertexOutput vo):COLOR
{
	fixed4 col;
	if(vo.norm.z>=0)
		col = tex2D(tex,vo.tex);
	else
		col = tex2D(tex2,vo.tex);
				
	if(col.w<=0.5)discard;
	return col;
}

لقراءة المزيد … “برمجة ال shader باستخدام ال CG الدرس السابع”

برمجة ال shader باستخدام ال CG الدرس السادس

بعد الخروج من برنامج ال vertex هناك عمليات وحسابات تتم قبل الوصول الى برنامج ال fragment  ومن هذه العمليات ال culling and depth test
نكتب هذه الأوامر داخل ال pass   لقراءة المزيد … “برمجة ال shader باستخدام ال CG الدرس السادس”

برمجة ال shader باستخدام ال CG الدرس الخامس

في نهاية الدرس الأول من دروس ال cg كتبنا الكود التالي

float4 vert(float4 pos:POSITION):SV_POSITION
{
	return mul(UNITY_MATRIX_MVP,pos);
}

fixed4 frag(void):COLOR
{
	return fixed4(1,1,1,1);
}

موضوعنا في هذا الدرس يتمحور حول سطر واحد

mul(UNITY_MATRIX_MVP,pos);

حيث قمنا بنقل احداثيات ال vertex من local الى احداثيات ال viewport , وهي في الحقيقة مجموعة مصفوفات نضربها في ال vertex . لقراءة المزيد … “برمجة ال shader باستخدام ال CG الدرس الخامس”

برمجة ال shader باستخدام ال CG الدرس الرابع

في هذه المقالة سوف نتعرف على اهم عملية على ال vertices وهو استخدام مصفوفة ال transforming مع النقاط والمتجهات ومتجهات ال normal .
بالنسبة لكل كائن هناك مصفوفتان تساعدانه في حساب نقاطه ومتجهاته الاولى local to world وهي المصفوفة التي ضربناها بنقاطه ليصل للمكان الذي هو حاليا فيه وفي حال كان هناك local داخل local فانك تبدا بضرب المصفوفات بالنقطة من اصغر local الى ان تصل الى ال world ,  والثانية world to local وهي المعكوس الضربي للمصوفة local to world . لقراءة المزيد … “برمجة ال shader باستخدام ال CG الدرس الرابع”

برمجة ال shader باستخدام ال CG الدرس الثالث

انواع المتغيرات

float - a 32bit floating point number
half - a 16bit floating point number
int - a 32bit integer
fixed - a 12bit fixed point number
bool - a boolean variable
sampler* - represent a texture object sampler2D sampler1D sampler3D

يمكنك استخدام جميع هذه الانواع ك vectors او matrix باستثناء *sampler لقراءة المزيد … “برمجة ال shader باستخدام ال CG الدرس الثالث”

برمجة ال shader باستخدام ال CG الدرس الثاني

في المثال الأخير من الدرس السابق جعلنا لون المكعب ابيض بان يرجع ال fragment اللون

fixed4(1,1,1,1)

اما في هذا الدرس سوف نتعامل مع ال uniform نفس المثال السابق مع تعديل بسيط لقراءة المزيد … “برمجة ال shader باستخدام ال CG الدرس الثاني”

برمجة ال shader باستخدام ال CG الدرس الأول

قبل ان نبدا في البرمجة علينا ان نفهم قليلا ال rendering pipeline وقد تحدث عنه مسبقا في هذا الدرس سوف افصل هنا في بعض الامور النظرية قبل ان نبدا البرمجة . لقراءة المزيد … “برمجة ال shader باستخدام ال CG الدرس الأول”

مقدمة في ال Rendering Pipeline

كأول مقال في تطوير الألعاب سوف اتطرق كيف تحدث معالجة البيانات حتى تظهر لنا صورة على الشاشة وبدون تفصيل في بعض الامور لان بعضها تحتاج مقالات حتى نغطيها .
الهدف من جميع العمليات القادمة هو تحويل البيانات الرقمية الى صورة 2d يمكن مشاهدتها على الشاشة ومن هنا نبدأ بال cpu حيث نحسب النقاط (vertices) و ونضيف لها خصائص مثل positions و  indices  و  vertices uv , vertices colors او texture mapping وبعض المعلومات الهندسية ونحدد طريقة ارتباط هذه النقاط ببعضها مثلثات او خطوط . لقراءة المزيد … “مقدمة في ال Rendering Pipeline”