অ্যাট্রিবিউট এবং ইউনিফর্ম ভেরিয়েবল

বাফার এবং ভেরিয়েবল ম্যানেজমেন্ট - ওয়েবজিএল (WebGL) - Web Development

272

অ্যাট্রিবিউট ভেরিয়েবল

ওয়েবজিএল (WebGL) এ অ্যাট্রিবিউট ভেরিয়েবলগুলি এমন ভেরিয়েবল যা শেডার (Shader) প্রোগ্রামে পাঠানো ডাটা বা ইনপুট হিসেবে কাজ করে। এগুলো সাধারণত ভেরটেক্স শেডারে ব্যবহৃত হয় এবং গ্রাফিক্স রেন্ডারিং এর জন্য গুরুত্বপূর্ণ ডাটা (যেমন: পয়েন্ট, ভেক্টর, কালার, টেক্সচার কোঅর্ডিনেটস) প্রদান করে।

উদাহরণ:

attribute vec3 aPosition;  // অ্যাট্রিবিউট ভেরিয়েবল (পদাঙ্কের স্থান)
attribute vec4 aColor;     // অ্যাট্রিবিউট ভেরিয়েবল (কালার)

এখানে, aPosition এবং aColor অ্যাট্রিবিউট ভেরিয়েবলস। এগুলো ওয়েবজিএল প্রোগ্রাম থেকে ভেরটেক্স শেডারে ডাটা পাঠাতে ব্যবহৃত হয়।

অ্যাট্রিবিউট ভেরিয়েবলের গুরুত্ব:

  • ভেরটেক্স পজিশন: ওয়েবজিএল ব্যবহার করে 3D অবজেক্টের ভেরটেক্স পজিশন বা অবস্থান পাঠানোর জন্য অ্যাট্রিবিউট ভেরিয়েবল ব্যবহার করা হয়।
  • অন্যান্য ভিজ্যুয়াল ডাটা: কালার, টেক্সচার কোঅর্ডিনেট, নরমাল ভেক্টর, ইত্যাদি তথ্যও অ্যাট্রিবিউট ভেরিয়েবলের মাধ্যমে পাঠানো হয়।

অ্যাট্রিবিউট ভেরিয়েবল সেটআপ উদাহরণ:

var positionAttributeLocation = gl.getAttribLocation(program, "aPosition");
var colorAttributeLocation = gl.getAttribLocation(program, "aColor");

gl.vertexAttribPointer(positionAttributeLocation, 3, gl.FLOAT, false, 0, 0);
gl.vertexAttribPointer(colorAttributeLocation, 4, gl.FLOAT, false, 0, 0);

এখানে, getAttribLocation ব্যবহার করে শেডারে অ্যাট্রিবিউট ভেরিয়েবলগুলির অবস্থান পাওয়া যায় এবং vertexAttribPointer ব্যবহার করে ডাটা আর্গুমেন্টগুলি সেট করা হয়।


ইউনিফর্ম ভেরিয়েবল

ওয়েবজিএল (WebGL) এ ইউনিফর্ম ভেরিয়েবলগুলি এমন ভেরিয়েবল যা শেডার প্রোগ্রামের মধ্যে একাধিক ভেরটেক্স বা ফ্র্যাগমেন্ট শেডারের জন্য একক মান ব্যবহার হয়। এগুলো সাধারণত সেই সব ডাটা উপস্থাপন করতে ব্যবহৃত হয়, যা সমস্ত ভেরটেক্স বা পিক্সেলের জন্য একই থাকে, যেমন: প্রজেকশন ম্যাট্রিক্স, মডেল ম্যাট্রিক্স, লাইট সোর্স পজিশন ইত্যাদি।

উদাহরণ:

uniform mat4 uModelViewMatrix;  // ইউনিফর্ম ভেরিয়েবল (মডেল ভিউ ম্যাট্রিক্স)
uniform vec3 uLightPosition;    // ইউনিফর্ম ভেরিয়েবল (লাইট পজিশন)

এখানে, uModelViewMatrix এবং uLightPosition হল ইউনিফর্ম ভেরিয়েবল, যেগুলি ওয়েবজিএল শেডারে একসাথে সমস্ত ভেরটেক্স বা ফ্র্যাগমেন্ট শেডারে শেয়ার করা ডাটা প্রদান করে।

ইউনিফর্ম ভেরিয়েবল সেটআপ উদাহরণ:

var modelViewMatrixLocation = gl.getUniformLocation(program, "uModelViewMatrix");
var lightPositionLocation = gl.getUniformLocation(program, "uLightPosition");

gl.uniformMatrix4fv(modelViewMatrixLocation, false, modelViewMatrix);
gl.uniform3fv(lightPositionLocation, lightPosition);

এখানে, getUniformLocation ব্যবহার করে শেডারে ইউনিফর্ম ভেরিয়েবলগুলির অবস্থান পাওয়া যায়, এবং uniformMatrix4fv বা uniform3fv ফাংশনের মাধ্যমে মান সেট করা হয়।


অ্যাট্রিবিউট এবং ইউনিফর্ম ভেরিয়েবলের মধ্যে পার্থক্য

  • অ্যাট্রিবিউট ভেরিয়েবল:
    • সাধারণত ভেরটেক্স শেডারে ব্যবহৃত হয়।
    • প্রতি ভেরটেক্সের জন্য আলাদা মান থাকতে পারে।
    • ডাটা শেডারে ইনপুট হিসেবে আসে।
  • ইউনিফর্ম ভেরিয়েবল:
    • সাধারণত ফ্র্যাগমেন্ট শেডারে ব্যবহৃত হয়।
    • সমস্ত ভেরটেক্স বা পিক্সেলের জন্য একই মান থাকে।
    • ডাটা শেডারে কনফিগারেশন বা সেটিংস হিসেবে আসে।

এইভাবে, ওয়েবজিএল ডেভেলপমেন্টে অ্যাট্রিবিউট এবং ইউনিফর্ম ভেরিয়েবল ব্যবহার করে ডাটা পাস এবং শেডার প্রোগ্রাম পরিচালনা করা হয়। এগুলি ওয়েবজিএল অ্যাপ্লিকেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ গ্রাফিক্স রেন্ডারিং প্রক্রিয়ায় প্রতিটি ভেরটেক্স বা পিক্সেলের ডাটা কিভাবে পরিচালিত হবে তা নির্ভর করে এই ভেরিয়েবলের উপর।

Content added By
Promotion

Are you sure to start over?

Loading...