Texture Mapping Unit چیست ؟


Texture Mapping ، به فارسی "نگاشت بافت" یا "نقشه برداری بافت" در علوم کامپیوتر، متدی برای اضافه کردن جزئیات، بافت سطح (یک تصویر بیت مپ) یا رنگ، به مدل ها سه بعدی ساخته شده توسط کامپیوتر (CG) است که در سال 1974 توسط آقای "ادوین کتمول" یکی از بنیانگذاران استدیو انیمیشن "پیکسار"، ابداع شده است.

به طور کل، نگاشت بافت پروسه ای برای تعیین موقعیت دقیق اعمال یک بافت است. یک بافت (Texture) از مجموعه ای از پیکسل ها (که همچنین "تیکسل" نیز نامیده می شوند) تشکیل شده است که هر کدام محدوده یا مختصات خاصی را (با توجه به طول و عرض بافت) پر می کنند. سپس این مختصات به صورت مقادیر های 0 و 1 در طول محور های u (عرض) و v (طول) نگاشت خواهند شد. این پروسه، نگاشت UV نامیده می شود. هر بار که شما یک چندضلعی را رندر می کنید، یک مختصات UV برای هر راس مثلث محاسبه می شود. این سه مختصات تعیین می کننند که چگونه یک بافت به وسیله ی "سایه زن" (Shader) به چندضلعی اعمال شود.

Texture Mapping Unit یا به اختصار TMU بخشی در واحد های پردازش گرافیکی (GPU) های مدرن است که وظیفه نگاشت بافت را برعهده دارد. TMU قابلیت تغییر اندازه و چرخاندن تصاویر بیت مپ (BitMap) برای استفاده در سطوح اشیاء سه بعدی را دارد. در کارت گرافیک های مدرن، این پروسه به صورت یک مرحله ی مجزا در خط لوله های پردازش قرار داده شده است؛ همانطور که در ابتدای معرفی این فناوری، در یک پردازنده ی مجزا قرار داده شده بود.

منبع : Wikipedia - MSDN

به اشتراک گذاری حافظه بین متغیر ها (C++)


به یاد روزهایی که 64 کیلوبایت، مقدار زیادی حافظه برای کامپیوتر تلقی می شد، C++ امکانی برای به اشتراک گذاری حافظه بین متغیر ها فراهم کرده است. به این معنی که متغیر ها میتوانند بلوک های یکسانی از حافظه را به صورت غیر هم زمان در اختیار داشته باشند. این ویژگی Union (اجتماع) نامیده می شود و چهار وضعیت کلی برای استفاده از آن وجود دارد.

- میتوانید این کار را به گونه ای انجام دهید که (برای مثال) متغیر A بلوکی از حافظه را اشغال می کند که سپس هنگامی که به متغیر A نیازی نیست به وسیله ی متغیر B اشغال می شود. همین کار را میتوان با استفاده از اختصاص حافظه به صورت دینامیک (پویا) انجام داد و نتیجه ی یکسان گرفت.

- یا می توانید در برنامه شرایطی داشته باشید که در آن آرایه ی بزرگی از اطلاعات نیاز است ولی دقیقا نمیدانید که آن از چه نوعی خواهد بود؛ که این جا نیز می توانید این کار را با اشاره گر ها و اختصاص حافظه به صورت دینامیک انجام دهید.

- استفاده دیگری از Union میتوانید این باشد که شما الان، و سپس دوباره، _ هنگامی که میخواهید نوع یکسانی از اطلاعات را به دو یا چند شیوه ی دیگر تفسیر کنید_، به آن احتیاج داشته باشید. برای مثال هنگامی که یک متغیر از نوع long در اختیار داشته باشید و بخواهید با آن به صورت دو متغیر short رفتار کنید.

- میتوان از union به صورت وسیله ای برای فرستادن یک شی یا متغیر که دقیقا نوعش را نمی دانید، استفاده کنید. union میتواند متبعی برای ذخیره هر نوع مختلف باشد.

برای تعریف یک اجتماع از کلمه ی کلیدی union استفاده می کنیم. برای فهم بهتر یک مثال ساده را می بینیم :


union ShareVars
{
   double dValue;
   long lValue;
};


در بالا یک نوع union با نام ShareVars تعریف شده که اجازه می دهد دو متغیر dValue و lValue بلوک های یکسانی از حافظه را اشغال کنند. نام union معمولا "نام برچسب" (tag name) نامیده می شود. میبینید که تعریف بالا شبیه به تعریف یک کلاس است؛ اما هنوز نمونه ای از این union ایجاد نشده است، در نتیجه هیچ متغیری در حال حاضر وجود ندارد. هنگامی که union تعریف شد، میتوانید نمونه های (اشیائی) از آن ایجاد کنید. در زیر یک نمونه از union بالا با نام myVars ایجاد شده است.


ShareVars myVars;


خط بالا یک نمونه یا یک شی از union ی که در بالا تعریف کرده اید، ایجاد می کند. همچنین میتوان شی myVars را در درون تعریف union نیز به صورت زیر انجام دهید.

union ShareVars
{
  double dValue;
  long lValue;
  myVars;
};


برای دسترسی به متغیر های union مانند دسترسی به اعضای کلاس، از عملگر دسترسی ( . ) پس از نام شی استفاده می کنیم.


myVars.dValue = 100.545;


خط بالا متغیر dValue را مقدار دهی می کند. اگر در ادامه برنامه متغیر دیگری از union مانند lVaue را به کار ببریم متغیری فعلی override (لغو) می شود. union محدودیتی برای تعداد متغیر های تعریف شده ندارد ولی همواره یکی از آنها در حافظه موجود است. مقدار حافظه ای که توسط union اشغال می شود برابر است با حجم بزرگترین متغیر آن. در مثال بالا حافظه اشغال شده توسط ShareVars برابر است با حجم بزرگترین متغیر آن، یعنی dValue

Ivor Horton's Beginning Visual C++ 2010


تبدیل hexadecimal به Integer و بالعکس (C#)


تبدیل ورودی مبنای 16 (Hexadecimal) به مبنای 10 

decValue : مبنای 10
hexValue : مبنای 16

روش اول :


int decValue = int.Parse (hexValue , System.Globalization.NumberStyles.HexNumber);


روش دوم :


int decValue = Convert.ToInt32 (hexValue, 16);


تبدیل ورودی مبنای 10 (Decimal) به مبنای 16 


string hexValue = decValue.ToString("X");


منبع : StackOverflow.com

رابط ویژوال برای کار با کلاس ها


ویژوال استدیو برای سهولت در ایجاد، دسترسی و ویرایش کلاس دو ابزار مفید به نام های Class View و Class Designer (Class Diagram) را در اختیار برنامه نویسان قرار داده است. در ادامه با این دو ابزار آشنا می شویم.

Class View :



این پنجره را میتوانید در قسمت View در منوی اصلی ویژوال استدیو پیدا کنید، و با استفاده از آن به سرعت به کلاس های برنامه و محتویاتشان دسترسی پیدا کنید یا اطلاعاتی در مورد آنها به دست اورید. البته کارایی این ابزار زمانی که تعداد کلاس های برنامه زیاد باشد بهتر نمایان می شود. همانطور که گفته شد از این پنجره می توانید به راحتی به کلاس ها (کلاس های شخصی و کلاس های از پیش نوشته شده در دات نت) دسترسی پیدا کنید و در صورت نیاز کد هایتان را ویرایش کنید.


Class Designer :


ابزار دوم که به احتمال زیاد برای اکثر افراد کاربردی تر است، Class Designer نام دارد که همان طور که از نامش بر می آید برای رابطی برای ساخت و ویرایش کلاس ها به صورت گرافیکی (ویژوال) است. برای باز کردن این پنجره گزینه ی View Class Diagram را در پنجره ی Solution Explorer انتخاب کنید. در این پنجره و در قسمت Class Details به تمامی کلاس ها و تمامی توابع و مشخصاتشان دسترسی دارید و میتوانید آنها را به دلخواه ویرایش یا حذف کرده یا کلاس ها، توابع، خواص یا توضیحات جدید با استفاده از این رابط گرافیکی (بدون نیاز به نوشتن کد) ایجاد کنید. واضح است که هر تغییری که در قسمت Class Diagram ایجاد کنید در کد ها نیز اعمال می شود و بالعکس، پس انتخاب اینکه از کدام روش برای کار با کلاس ها استفاده کنید بسته به سلیقه ی خودتان است.

آرایه در زبان PHP (مقدمات)


در این پست با مقدمات تعریف و به کار بردن آرایه ها در زبان PHP آشنا می شویم. در PHP آرایه، نوعی است که "مقدار ها" را به "کلید ها" اختصاص می دهد. این نوع میتواند برای کاربرد های مختلفی استفاده شود و به منزله یک لیست، جدول هش، دیکشنری، مجموعه و ... تلقی شود. یکی از روش های ایجاد و مقدار دهی آرایه در زبان پی اچ پی استفاده از تابع array است که نحو آن به صورت زیر است :


$Variable_Name = array (key => value, key => value , .... );


برای مثال فرض کنید میخواهید آرایه ای به نام sample تعریف و مقدار دهی کنید. (قرار دادن کاما بین هر عنصر آرایه، اختیاری است و میتواند حذف شود)


$sample = array (0 => "hello" , 1 => "world", 2 => "!");


حالا برای دسترسی به خانه های آرایه تنها کافی از ایندکس آنها استفاده کنیم. برای مثال در بالا، خانه ی صفرم آرایه ($sample[0]) برابر "hello" می باشد. برای دسترسی به خانه های آرایه نیز از ایندکس آنها در کروشه [ ] استفاده می کنیم. همچنین میتوان آرایه های چند بعدی نیز تعریف و استفاده کرد؛ به این ترتیب که هر عنصر آرایه، خود یک آرایه تعریف شده است. کلید ها میتوانند از نوع صحیح (integer) یا رشته (string) باشند و مقدار ها میتوانند از هر نوعی باشند.

ادامه دارد ...

رقابت بر سر دست یافتن به قدرت پردازش بیشتر


امروزه نیاز روزافزون به قدرت محاسبه بالاتر باعث شده است تا عنوان "سریعترین ابر کامپیوتر جهان" مدت زیادی در اختیار یک کشور یا کمپانی قرار نداشته باشد و معمولا هر ابرکامپیوتر جدید نمیتواند بیش از چند ماه این عنوان را یدک بکشد.
حدود دو سال پیش بود که چین با ساخت ابرکامپیوتر Tianhe-1 توانست مقام اول در جدول سریعترین ابرکامپیوتر ها را به دست آورد؛ پس از آن شرکت فوجیتسو برای کشور ژاپن ابرکامپیوتر K را ساخت که با قدرت بیش از 10 پتافلاپ (هر پتافلاپ معادل 1000 تریلیون محاسبه در ثانیه است) مقام اول را به دست آورد و حالا شرکت IBM دوباره توانسته است با ساخت ابرکامپیوتر Sequoia با قدرت محاسبه بیش از 16 پتافلاپ برای "اداره ی ملی امنیت هسته ای" ایالات متحده (NNSA) به صدر این جدول برگردد. همچنین ابرکامپیوتر Sequoia با مصرف 7.9 مگاوات در مقایسه با ابرکامپیوتر K که 12.6 مگاوات انرژی مصرف می کند، بسیار کم مصرف تر نیز هست. 


برای مشاهده ی جدول 500 ابرکامپیوتر جهان میتوانید سری به سایت Top500 بزنید و اطلاعات کامل را در انجا مشاهده کنید. به هر حال باید دید که محصول جدید IBM تا چه مدت می تواند عنوان نخست خود را حفظ کند.

Lucid Virtu MVP


شاید با فناوری Virtu از شرکت Lucid آشنا باشید، فناوری که وظیفه ی سوئیچ بین کارت گرافیک مجزا و گرافیک یکپارچه نسبت به حجم بار پردازش گرافیکی را برعهده دارد. این فناوری باعث شده بود از طرفی مصرف انرژی تا حد زیادی کاهش یابد و از طرف دیگر در هنگام اجرای بازی های سنگین مشکلی برای کاربر پیش نیاید. چند وقتی است شرکت Lucid نسل جدید این فناوری به نام Virtu MVP را روانه بازار کرده تا سرعت های فریم بالاتری را برای علاقه مندان به کیفیت های بالا رقم بزند.(!)


Virtu MVP پا را از Virtu فراتر گذاشته است و در هنگام نیاز به قدرت پردازش گرافیکی بالا هر دو گرافیک (مجتمع و مجزا) را به کار میگیرد تا قدرت پردازش بالایی و در نتیجه نرخ فریم بالایی را برای شما فراهم کند؛ در این حالت، برخلاف فناوری Virtu که در هنگام نیاز به قدرت پردازش بالا گرافیک مجتمع غیر فعال شده و گرافیک مجزا عمل پردازش را انجام می دهد، هر دو پردازنده در عمل پردازش شریک می شوند تا سرعت پردازش بسیار فراتر از قبل شود. Virtu MVP همان صرفه جویی در مصرف انرژی را به ارمغان می آورد و همچنین در هنگام کارهای گرافیکی سنگین مانند بازی های رایانه ای به طور قابل ملاحظه ای سرعت پردازش اطلاعات بیشتر می کند. 
Virtu MVP برای نسل آینده ی تراشه های Z68 ، H67 و H61 و برخی دیگر از گرافیک های مجتمع اینتل، همچنین برای برخی از نوت بوک ها با پردازنده های AMD طراحی شده است. این فناوری با ویژگی جدیدی به نام HyperFormance همراه است که باعث می شود تا پاسخدهی کلی در بازی های سه بعدی بهبود یابد که این به معنی کاهش لگ (lag) در بازی است.

افزونه PHP برای ویژوال استدیو


PHP Tools یک افزونه رایگان/تجاری برای محیط توسعه ی نرم افزار Visual Studio استکه توسط شرکت Devsense توسعه داده شده است. Php Tools افزونه ای کم حجم برای یکپارچه سازی کد های PHP در ویژال استدیو، با تمرکز بر بهره وری توسعه دهنده است. از ویژگی های کلیدی آن میتوان به موارد زیر اشاره کرد :

- کم حجم بودن
- تکمیل سازی خودکار کد ها (auto completion)
- مسیر یابی سریع
- بررسی خطاهای نحوی
- مستندات PHP یکپارچه
- آوردن PHP به یکی از شناخته شده ترین و محبوب ترین محیط های توسعه نرم افزار




PHP Tools را میتوانید از سایت رسمی آن به قیمت 59 دلار تهیه کنید یا 21 روز از تمامی امکانات آن استفاده کرده و پس از آن به مدت نامحدود (فقط) از امکانات ابتدایی (basic) استفاده کنید.

متغیر ها و ثابت ها در زبان PHP (مقدمات)


در این پست به بررسی اصول استفاده از متغیر ها در زبان PHP خواهیم پرداخت. همان طور که میدانید در زبان PHP برخلاف زبان هایی مانند C++ یا C# نیازی به تعریف کردن متغیر ها نیست؛ تنها علامت "دلار" ($) در ابتدای نام متغیر قرار میگیرد و مشخص می کند که آن یک متغیر است.


"$" + Variable's Name;


برای مثال کد زیر یک متغیر استرینگ به نام Sample ایجاد می کند و مقدار "hello world!" را به آن نسبت می دهد.


$Sample = "hello world!";


برا نام متغیر خود بایستی نکات زیر را در نظر داشته باشید :

- نام متغیر حتما با یک حرف یا اندرلاین (_) شروع می شود.
- پس از حرف اول میتوان از اعداد، لاین (خط تیره) و اندرلاین استفاده کرد.
- نام متغیر به حرف بزرگ و کوچک حساس است.
- نام $this را نمیتوان برای نام متغیر استفاده کرد.

ثابت ها :
برای تعریف "ثابت ها" (Consts) از تابع define استفاده می شود. شکل کلی این تابع به صورت زیر است :


define ('Variable' , "Value");


برای مثال میتوان عدد پی را به شکل زیر به صورت یک "ثابت" تعریف کنید.


define ('Pi' , "3.141592");


ثابت ها را میتوان به بدون علامت دلار ($) به کار برد. برای مثال ثابت بالا را میتوان به صورت زیر به تابع echo برای نمایش در صفحه فرستاد :


echo Pi;


فرستادن متغیر به همراه استرینگ (متن) به خروجی :

تصور کنید که میخواهید یک متغیر مانند "Sample" را به همراه یک استرینگ مانند " hello user" به خروجی بفرستید. در این حالت میتوانید از دو روش زیر برای فرستادن انها به خروجی استفاده کنید.


echo $Sample." hello user";
یا
echo "${Sample} hello world";


در هر صورت مقدار "hello world hello user" در خروجی نمایش داده می شود. ولی نمیتوان دستور های بالا را به صورت زیر به کار برد.


echo "$Sample hello user";

WonderShare Video Edit


WonderShare Video Edit برنامه ای مشابه Windows Movie Maker است که همان طور که از نامش برمی آید برای ویرایش فایل های ویدئویی به کار میرود. این برنامه را میتوان از سایت رسمی آن http://www.wondershare.com به قیمت 40 دلار تهیه کنید یا نسخه ی 30 روزه آن را (برای ویندوز یا مک) دانلود کنید.
اولین نکته در مورد این برنامه سادگی و سهولت کار با آن است. این برنامه بسیاری از ابزار های متداول مانند برجسب ها، افکت ها، برش، ترکیب و... برای ایجاد تغییرات در فایل های ویدئویی را در اختیار شما قرار می دهد. در زیر با برخی از ویژگی های این برنامه آشنا می شویم.

- ترکیب صدا، تصویر و ویدئو
- ایجاد متن
- ایجاد افکت (درخشندگی، نویز ، بلار و ...)
- اپلود مستقیم بر روی youTube
- ذخیره پروژه ها به فرمت های مختلف
- انتخاب فرمت برای بخش در دستگاه های (تلفن همراه یا تبلت) مختلف
- رایت بر روی Dvd
- ضبط صدا
- تغییر کنتراست، درخشندگی، رنگ و سرعت ویدئوها
- چرخاندن یا واران کردن ویدئو ها
- بریدن قسمتی از تصویر (Crop)



اگر نیازمند برنامه ای هستید که به وسیله ی آن کار های ساده ی خود در زمینه ی ویرایش ویدئو را انجام دهید میتوانید WonderShare Video Edit را امتحان کنید؛ ولی اگر به دنیال ویرایگش گری حرفه ای برای کار با ویدئو ها هستید، این برنامه جوابگوی نیاز شما نیست.