আমি এইচএলএসএল এর বাক্য গঠনটি বুঝতে পারি, উদাহরণস্বরূপ আসুন আমি এটি আমার এইচএলএসএল হিসাবে ভান করি:
struct VOut
{
float4 position : SV_POSITION;
float4 color : COLOR;
};
VOut VShader(float4 position : POSITION, float4 color : COLOR)
{
VOut output;
output.position = position;
output.position.xy *= 0.7f; // "shrink" the vertex on the x and y axes
output.color = color;
return output;
}
float4 PShader(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET
{
return color;
}
এবং আমি এটি এই মত সংকলন:
D3DX11CompileFromFile(L"shaders.hlsl", 0, 0, "VShader", "vs_5_0", 0, 0, 0, &VS, 0, 0);
D3DX11CompileFromFile(L"shaders.hlsl", 0, 0, "PShader", "ps_5_0", 0, 0, 0, &PS, 0, 0);
এটি কীভাবে পছন্দ করে ... পরিবর্তন করতে জানেন ... আমি এইচএলএসএল এবং পর্দার আসল পিক্সেল / উল্লম্বের মধ্যে পাইপলাইনটি ঠিক কী তা নিয়ে বিভ্রান্ত।
এগুলি কি আসলে তাদের "প্রয়োগ" করে?
dev->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &pVS);
dev->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), NULL, &pPS);
// set the shader objects
devcon->VSSetShader(pVS, 0, 0);
devcon->PSSetShader(pPS, 0, 0);
মনে রাখবেন আমি এই জিনিসগুলিতে আক্ষরিক শুরুর মতো। কেউ কি ব্যাখ্যা করতে পারে যে এটি কি করছে? আমি ধরে নিচ্ছি যে শীর্ষবিন্দু এইচএলএসএল ফাংশনটি প্রতিটি প্রান্তিকের মধ্য দিয়ে যায় এবং তারপরে ফাংশনে আমার যা কিছু আছে সেগুলিতে সেগুলি পরিবর্তন করে, এবং আউটপুটটি কী পরিবর্তন হয়েছিল ... এবং একইভাবে পিক্সেল শেডারটির জন্য?
আরেকটি বিভ্রান্তি, আমি জানি যে একটি পিক্সেল কী, এবং আমি বুঝতে পারি যে একটি ভার্টেক্স কী ... তবে পিক্সেল শেডারটি ঠিক কী করে?