Vertex Shader: یہ کیا ہے، کام اور اصول کار

مصنف: IT Sectr اشاعت: 2026-06-11 مطالعے کا وقت: 10 منٹ

Vertex Shader گرافکس پائپ لائن کا ایک پروگرام قابل مرحلہ ہے جو 3D ماڈل کے ہر ورٹیکس کو آزادانہ طور پر پروسیس کرتا ہے۔ Khronos Group، 2025 کے مطابق، ورٹیکس شیڈر ان پٹ کے طور پر ورٹیکس کی خصوصیات — کوآرڈینیٹ، نارملز، رنگ اور ٹیکسچر کوآرڈینیٹ — وصول کرتا ہے اور انہیں طے شدہ منطق کے مطابق تبدیل کرتا ہے۔ Vertex Shader ہر ورٹیکس کے لیے آزادانہ طور پر عملدرآمد کرتا ہے، جس سے GPU کے ہزاروں کوروں پر حسابات کو مؤثر طریقے سے متوازی کیا جا سکتا ہے۔

خلاصہ

  • Vertex Shader GPU کا ایک پروگرام قابل مرحلہ ہے جو 3D ماڈل کے ہر ورٹیکس کو آزادانہ طور پر پروسیس کرتا ہے۔
  • کوآرڈینیٹ تبدیلی آبجیکٹ اسپیس سے اسکرین اسپیس میں ورٹیکس شیڈر کا بنیادی کام ہے۔
  • OpenGL ES 3.0 اور Metal Shading Language ورٹیکس شیڈر لکھنے کے لیے معیاری APIs فراہم کرتے ہیں۔
  • کارکردگی ورٹیکس کی تعداد اور شیڈر کوڈ کی پیچیدگی پر منحصر ہے۔
  • Skinning اور ورٹیکس مارفنگ — GPU پر ورٹیکس شیڈر میں لاگو ہونے والے عام کام۔

Vertex Shader کیا ہے؟

Vertex Shader گرافکس پائپ لائن کا ایک پروگرام قابل مرحلہ ہے جو 3D ماڈل کے ہر ورٹیکس کو انفرادی طور پر پروسیس کرتا ہے۔ ورٹیکس تین جہتی خلا میں ایک نقطہ ہے جس میں خصوصیات ہوتی ہیں: xyz کوآرڈینیٹ، نارملز، رنگ اور UV ٹیکسچر کوآرڈینیٹ۔

فکسڈ فنکشن پائپ لائن کے برعکس جہاں تبدیلیاں ایک سخت الگورتھم کے مطابق کی جاتی تھیں، Vertex Shader ڈیولپر کو ورٹیکس تبدیلی پر مکمل کنٹرول دیتا ہے۔ یہ GPU کی جانب پروسڈیورل اینیمیشن، ماڈل کی اخترتی، کنکال skinning اور کسی بھی ریاضیاتی تبدیلی کو لاگو کرنے کی اجازت دیتا ہے۔

گرافکس پائپ لائن میں Vertex Shader کا مقام

OpenGL ES گرافکس پائپ لائن میں ان پٹ ڈیٹا سے حتمی تصویر تک مراحل کا ایک سلسلہ شامل ہے۔ Vertex Shader ورٹیکس اسمبلی مرحلے کے بعد اور راسٹرائزیشن مرحلے سے پہلے واقع ہے۔ CPU سے ورٹیکس بفر کے ذریعے بھیجا گیا ہر ورٹیکس Vertex Shader سے بالکل ایک بار گزرتا ہے، اور نتیجہ پرائمیٹو اسمبلی کے لیے اگلے مرحلے کو بھیج دیا جاتا ہے۔

پائپ لائن مرحلہمقصد
Vertex SpecificationVBO سے ورٹیکس ڈیٹا اور خصوصیات کی منتقلی
Vertex Shaderہر ورٹیکس کی پروسیسنگ، کوآرڈینیٹ تبدیلی
Tessellationذیلی پرائمیٹو میں جیومیٹری کی اختیاری تقسیم
Geometry Shaderپرائمیٹو کی اختیاری تخلیق یا ہٹانا
Rasterizationبھرنے کے لیے پرائمیٹو کو فریگمنٹس میں تبدیل کرنا

Vertex Shader کیسے کام کرتا ہے؟

Vertex Shader CPU کوڈ میں ترتیب دیے گئے ورٹیکس ایٹریبیوٹ پوائنٹرز کے ذریعے ورٹیکس بفر (VBO) سے ورٹیکس خصوصیات وصول کرتا ہے۔ ڈیولپر GLSL (OpenGL Shading Language) یا اس کے مساوی زبان میں شیڈر کوڈ لکھتا ہے، جسے GPU ڈرائیور مخصوص چپ کے لیے مشین ہدایات میں کمپائل کرتا ہے۔

ورٹیکس پروسیسنگ کا بہاؤ

ہر ورٹیکس کے لیے، Vertex Shader ترتیب وار تین آپریشنز انجام دیتا ہے: ان پٹ خصوصیات پڑھنا — ڈیولپر کے طے کردہ تبدیلیاں لاگو کرنا — آؤٹ پٹ متغیرات میں نتائج لکھنا۔ کم از کم مطلوبہ آؤٹ پٹ کلپ اسپیس میں ورٹیکس پوزیشن (gl_Position) ہے۔ دیگر تمام آؤٹ پٹ ڈیٹا (رنگ، نارملز، ٹیکسچر کوآرڈینیٹ) انٹرپولیٹ ہوتا ہے اور اگلے مرحلے — Fragment Shader کو بھیج دیا جاتا ہے۔

glsl
#version 300 es
in vec3 aPosition;
in vec2 aTexCoord;
uniform mat4 uMVP;
out vec2 vTexCoord;

void main() {
    gl_Position = uMVP * vec4(aPosition, 1.0);
    vTexCoord = aTexCoord;
}

Vertex Shader کے اہم کام

Vertex Shader جیومیٹری تبدیلی سے متعلق گرافکس پائپ لائن کے کاموں کی ایک وسیع رینج حل کرتا ہے۔ ہر کام ویکٹرز اور میٹرکسز پر ریاضیاتی کارروائیوں کے ذریعے لاگو کیا جاتا ہے، جو ہزاروں ورٹیکس کے لیے بیک وقت متوازی طور پر انجام دیا جاتا ہے۔

MVP کے ذریعے کوآرڈینیٹ تبدیلی

بنیادی اور سب سے عام کام ورٹیکس کوآرڈینیٹس کو model، view اور projection (MVP) میٹرکسز سے ضرب دینا ہے۔ MVP میٹرکس ورٹیکس کو مقامی ماڈل اسپیس سے کلپ اسپیس میں تبدیل کرتا ہے، جسے پھر پائپ لائن کے خودکار مراحل میں نارملائز کیا جاتا ہے اور اسکرین کوآرڈینیٹس میں تبدیل کیا جاتا ہے۔

کنکال اینیمیشن (Skinning)

اینیمیٹڈ کرداروں کے لیے، Vertex Shader کنکال اینیمیشن (skinning) لاگو کرتا ہے۔ ہر ورٹیکس مخصوص وزن کے ساتھ متعدد ہڈیوں سے منسلک ہوتا ہے۔ Vertex blending — منسلک ہڈیوں سے تبدیلیوں کا وزنی مجموعہ — کنکال کے حرکت کرنے پر کردار کی جلد کو ہموار طریقے سے مسخ کرنے کی اجازت دیتا ہے۔

پروسڈیورل جیومیٹری اخترتی

Vertex Shader CPU کی شرکت کے بغیر وقت یا دیگر uniform پیرامیٹرز کی بنیاد پر جیومیٹری کو تبدیل کر سکتا ہے۔ Wave deformation، پرلن شور کی منتقلی اور پانی کی لہر کے اثرات — یہ تمام اثرات RAM سے جیومیٹری دوبارہ لوڈ کیے بغیر ورٹیکس شیڈر میں لاگو ہوتے ہیں۔

Vertex Shader بمقابلہ Fragment Shader: فرق

اگرچہ دونوں قسم کے شیڈر گرافکس پائپ لائن کے پروگرام قابل مراحل ہیں، Vertex Shader اور Fragment Shader بنیادی طور پر مختلف کام حل کرتے ہیں اور تصویر پروسیسنگ کے مختلف مراحل میں کام کرتے ہیں۔

خصوصیتVertex ShaderFragment Shader
ان پٹ ڈیٹاVBO سے ورٹیکس خصوصیاتVS سے انٹرپولیٹڈ ڈیٹا
کالز کی تعدادورٹیکس کی تعدادفریگمنٹس کی تعداد
بنیادی کامجیومیٹری تبدیلیپکسل رنگ کا حساب
حسابی بوجھجیومیٹری کی پیچیدگیاسکرین ریزولوشن
ٹیکسچر تک رسائیمحدود (texture lookup کے ذریعے)مکمل رسائی

بنیادی فرق کال فریکوئنسی ہے۔ Vertex Shader ہر ورٹیکس کے لیے ایک بار کال کیا جاتا ہے، جبکہ Fragment Shader ہر فریگمنٹ (پکسل) کے لیے کال کیا جاتا ہے۔ ہائی ریزولوشن منظر میں، Fragment Shader کالز کی تعداد Vertex Shader کالز سے ہزاروں گنا زیادہ ہوتی ہے، جس سے پکسل شیڈر کی اصلاح اور بھی اہم ہو جاتی ہے۔

Vertex Shader کی کارکردگی اور اصلاح

Vertex Shader کی کارکردگی ریئل ٹائم ایپلیکیشنز کے لیے انتہائی اہم ہے، خاص طور پر محدود بجلی کی کھپت والی موبائل ڈیولپمنٹ میں۔ کارکردگی کے اہم عوامل ورٹیکس کی تعداد، شیڈر کوڈ کی پیچیدگی اور GPU میموری بینڈوتھ ہیں۔

کارکردگی کو متاثر کرنے والے عوامل

  • ورٹیکس شمار — فی فریم GPU کو بھیجے جانے والے ورٹیکس کی تعداد۔ لاکھوں پولی گون والے ماڈل ورٹیکس شیڈر پر زیادہ بوجھ ڈالتے ہیں۔
  • شیڈر پیچیدگی — شیڈر میں ہدایات کی تعداد۔ نیسٹڈ لوپس اور مشروط برانچنگ (divergence) SIMD یونٹس کی متوازی کارکردگی کو کم کرتی ہے۔
  • بینڈوتھ — ویڈیو میموری سے ورٹیکس ڈیٹا پڑھنے کی رفتار۔ خصوصیات کا فارمیٹ (float32، float16، نارملائزڈ انٹیجر) براہ راست تھرو پٹ کو متاثر کرتا ہے۔

ورٹیکس شیڈر کی اصلاح کے طریقے

Vertex Shader پر بوجھ کم کرنے کے لیے درج ذیل طریقے استعمال کیے جاتے ہیں۔ Level of Detail (LOD) — کیمرہ آبجیکٹ سے دور جانے پر ماڈل کے آسان ورژن پر سوئچ کرنا۔ Instancing — ایک ڈرا کال میں مختلف تبدیلی میٹرکس کے ساتھ ایک ہی جیومیٹری کو کئی بار کھینچنا۔

glsl
// Instancing سپورٹ کے ساتھ Vertex Shader
in vec3 aPosition;
in mat4 aInstanceMatrix;
uniform mat4 uViewProjection;

void main() {
    vec4 worldPos = aInstanceMatrix * vec4(aPosition, 1.0);
    gl_Position = uViewProjection * worldPos;
}

Vertex Shader کوڈ کی مثالیں

Vertex Shader مختلف گرافکس APIs میں ایک جیسی منطق رکھتا ہے لیکن مختلف نحو اور نام رکھنے کے اصول رکھتا ہے۔ آئیے OpenGL ES 3.0 کے لیے GLSL میں اور iOS اور macOS کے لیے Metal Shading Language میں بنیادی ورٹیکس شیڈر کے نفاذ کو دیکھتے ہیں۔

OpenGL ES 3.0 کے لیے GLSL کی مثال

glsl
#version 300 es
in vec4 position;
in vec3 normal;
in vec2 texcoord;

uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
uniform mat3 normalMatrix;

out vec3 vNormal;
out vec2 vTexCoord;
out vec3 vPosition;

void main() {
    vec4 mvPosition = modelViewMatrix * position;
    vPosition = mvPosition.xyz;
    vNormal = normalMatrix * normal;
    vTexCoord = texcoord;
    gl_Position = projectionMatrix * mvPosition;
}

Metal Shading Language کی مثال

cpp
#include <metal_stdlib>
using namespace metal;

struct VertexIn {
    float3 position [[attribute(0)]];
    float3 normal   [[attribute(1)]];
};

struct VertexOut {
    float4 position [[position]];
    float3 worldNormal;
};

vertex VertexOut
vertexMain(VertexIn in [[stage_in]],
           constant float4x4& mvp [[buffer(1)]]) {
    VertexOut out;
    out.position = mvp * float4(in.position, 1.0);
    out.worldNormal = in.normal;
    return out;
}

اکثر پوچھے گئے سوالات

سادہ الفاظ میں Vertex Shader کیا ہے؟

Vertex Shader GPU پر ایک پروگرام ہے جو 3D ماڈل کے ہر ورٹیکس کو پروسیس کرتا ہے اور اس کے کوآرڈینیٹس کو اسکرین کوآرڈینیٹس میں تبدیل کرتا ہے۔ ماڈل کو نقطوں کے جال کے طور پر تصور کریں؛ ورٹیکس شیڈر طے شدہ ریاضیاتی قوانین کے مطابق ان نقطوں کو حرکت دیتا ہے۔

Vertex Shader Fragment Shader سے کیسے مختلف ہے؟

Vertex Shader ورٹیکس پروسیس کرتا ہے اور جیومیٹری کے لیے ذمہ دار ہے، جبکہ Fragment Shader ہر پکسل کا رنگ متعین کرتا ہے۔ پہلا ہر ورٹیکس (ہزاروں) کے لیے کال کیا جاتا ہے، دوسرا ہر پکسل (لاکھوں) کے لیے۔

Vertex Shader کن زبانوں میں لکھا جاتا ہے؟

Vertex Shader گرافکس API کے مطابق زبان میں لکھا جاتا ہے: OpenGL ES کے لیے GLSL، iOS/macOS پر Metal API کے لیے Metal Shading Language، Direct3D کے لیے HLSL۔ تصوراتی طور پر، یہ سب ورٹیکس پر ایک ہی کارروائیاں انجام دیتے ہیں۔

Vertex Shader کارکردگی کو کیسے متاثر کرتا ہے؟

ورٹیکس شیڈر کی پیچیدگی براہ راست FPS کو متاثر کرتی ہے: فی ورٹیکس زیادہ ہدایات = زیادہ پروسیسنگ وقت۔ اصلاح میں LOD کے ذریعے ورٹیکس کی تعداد کم کرنا، instancing کا استعمال اور شیڈر کوڈ میں مشروط برانچنگ کو کم کرنا شامل ہے۔

گیمز میں Vertex Shader کون سے کام حل کرتا ہے؟

گیمز میں اہم کام: MVP میٹرکس کے ذریعے کوآرڈینیٹ تبدیلی، اینیمیٹڈ کرداروں کا skinning، کپڑوں اور بالوں کی پروسڈیورل اخترتی، چہرے کے تاثرات کے درمیان مارفنگ اور GPU اینیمیشن کے ساتھ پارٹیکل اثرات۔

خلاصہ

  • Vertex Shader گرافکس پائپ لائن کا ایک پروگرام قابل مرحلہ ہے جو 3D ماڈل کے ہر ورٹیکس کو آزادانہ طور پر پروسیس کرتا ہے۔
  • بنیادی کام — MVP میٹرکس کے ذریعے ورٹیکس کوآرڈینیٹس کو مقامی اسپیس سے اسکرین اسپیس میں تبدیل کرنا۔
  • Vertex Shader متعدد GPU کوروں پر متوازی طور پر عملدرآمد کرتا ہے، لاکھوں ورٹیکس کے ساتھ اعلی کارکردگی فراہم کرتا ہے۔
  • Skinning، مارفنگ اور پروسڈیورل اینیمیشن CPU کی شرکت کے بغیر ورٹیکس شیڈر میں لاگو ہوتے ہیں۔
  • Vertex Shader کی کالز کی تعداد ورٹیکس کی تعداد کے برابر ہے — Fragment Shader کالز سے نمایاں طور پر کم۔
  • اصلاح میں LOD ماڈل، instancing اور شیڈر کوڈ میں برانچنگ کو کم کرنا شامل ہے۔
  • GLSL اور Metal Shading Language موبائل ڈیولپمنٹ میں ورٹیکس شیڈر کے لیے اہم زبانیں ہیں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں