Linq

هي لغة استعلام تستخدم مع اي مصدر بيانات لتبحث فيه وتجلب لك النتائج . (A query is an expression that retrieves data from a data source)
لنفترض ان لدينا البيانات التالية لقراءة المزيد … “Linq”



التصنيف : c#

Tasks in C#

بما ان unity اصبح يدعم c# version 6,7 فاصبح من اللازم التحدث عن الكلاسس System.Threading.Tasks.Task وهو ماسوف يفيدنا في عمل ال multithreads بدلا من استخدام الكلاسس Thread و ThreadPool
في الحقيقة من السهل العمل على ThreadPool  اكثر من Task ولكن يعيبه انه ليس بامكانك التاكد من حالة الthread هل تم الانتهاء منه وماهي نتيجته لهذا قامت c# بتقديم الكلاسس Task وهي مهمة يجب ان يقوم بها ويعيد نتيجة بامكانك الوصول لها بعد التاكد من ان الحسابات قد انتهت  . لقراءة المزيد … “Tasks in C#”

التعابير النظامية Regular Expressions

الموضوع له علاقة بالذكاء الاصطناعي وهو البحث في النصوص عن طريق pattern هذا ال pattern تحكمه صيغ كتابة تحدد طريقة البحث (Regular Expressions) ثم يتم اضافة input وهو النص الذي يبحث بداخله ال pattern ويعيد النصوص المطابقة له (Matches) او true or false في حال وجد نص يطابقه (IsMatch) او عمليات مثل Split او Replace . لقراءة المزيد … “التعابير النظامية Regular Expressions”



التصنيف : c#
كلمات مفتاحية :

ايقاف عمل ال method حتى … (yield instruction)

بامكانك ايقاف عمل method حتى يتحقق شرط ما وهذا ما يعرف في unity باسم coroutine . الفكرة قائمة على استخدام yield return لايقاف العمل على ال method مؤقتا او yield break لانهاء عمل ال method وهي فكرة متأصلة في c# ولكن unity طورتها لتؤدي الغرض المطلوب منها . لقراءة المزيد … “ايقاف عمل ال method حتى … (yield instruction)”



التصنيف : unity
كلمات مفتاحية :

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 الدرس الثامن

stencil هي ذاكرة تساعدك في عمل mask  للبكسل نتيجته ام انه يرسمه او يعمل discard له .
ذاكرة stencil في الغالب يوفر لكل بكسل هناك ٨ بتات تحتفظ بقيمة رقمية بحيث تستخدمها عمليات الرسم اللاحقة في المقارنة وتحديد ما اذا كان سوف يتم رسمه او لا . لقراءة المزيد … “برمجة ال shader باستخدام ال CG الدرس الثامن”

برمجة ال 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 الدرس الخامس”