আমি বর্তমানে একটি 2 ডি গেম নিয়ে কাজ করছি এবং আমার বর্তমান কাজটি নির্বাচিত বস্তুর রূপরেখা তৈরি করা।
আমি সম্পূর্ণরূপে রানটাইম করতে ব্লার শেডার ব্যবহার করি। আমি প্রথমে উল্লম্ব গাউসিয়ান ব্লার শেডার ব্যবহার করে আমার স্প্রিট আঁকছি, তারপরে আমি এটি একটি অনুভূমিক গাউসিয়ান ব্লার শেডার দিয়ে আঁকছি, এবং তারপরে আমি সাধারণত আমার স্প্রাইট আঁকছি।
আমার ব্লার শেডারটি এখানে: নমুনা টেক্সচারস্যাম্পলার: রেজিস্টার (এস 0);
#define SAMPLE_COUNT 15
float2 SampleOffsets[SAMPLE_COUNT];
float SampleWeights[SAMPLE_COUNT];
float4 PixelShaderFunction(float2 texCoord : TEXCOORD0) : COLOR0
{
float4 c = 0;
// Combine a number of weighted image filter taps.
for (int i = 0; i < SAMPLE_COUNT; i++)
{
c += tex2D(TextureSampler, texCoord + SampleOffsets[i]) * SampleWeights[i];
}
return c;
}
স্যাম্পলওফিটগুলি অফসেটগুলি আমাকে রাউন্ডিং পিক্সেল পরীক্ষা করার অনুমতি দেয় স্যাম্পেলওয়েটগুলি গাউসিয়ান ফাংশন ( http://en.wikedia.org/wiki/Gauss_blur ) দিয়ে ওজন গণনা করা হয়
ফলাফল এখানে:
এটি খুব খারাপ, বেশ মসৃণ নয়, তবে খেলায় যথেষ্ট দৃশ্যমান নয় ... তবে আমি বেধটি নিয়ন্ত্রণ করতে সক্ষম হতে চাই (এটি আরও বড় করতে), এবং এটি আলফাতে ফেইড করার আগে একটি প্রথম অস্বচ্ছ রূপরেখা যুক্ত করতে (তৈরি করতে) এটি আরও দৃশ্যমান)। এবং আমার মনে হয় গাউসিয়ান ব্লার সম্ভবত আমার কাজটির জন্য যতটা ভেবেছিল ঠিক ততটা ভাল নয় :)
আর একটি ধারণা হ'ল এটি .png থেকে স্বয়ংক্রিয়ভাবে উত্পন্ন করা হয় (এটিকে স্বয়ংক্রিয় করতে কোনও ফটোশপ স্ক্রিপ্ট ব্যবহার করে)। আমাকে কেবল একটি কাস্টম রঙ দিয়ে আউটলাইন পিক্সেলগুলি পূরণ করতে হবে, উদাহরণস্বরূপ রেড উপাদানটিতে আলফা মানটি সংরক্ষণ করে এবং অন্যান্য সমস্ত উপাদানকে 0 তে সেট করা উচিত Then
float4 PixelShaderFunction2(float2 texCoord : TEXCOORD0) : COLOR0
{
float4 color = tex2D(TextureSampler, texCoord);
float4 newColor = 0;
if (color.a == 0 && color.r != 0)
{
color.a = color.r;
// Blue outline
color.b = 1;
}
}
সমস্যাটি হ'ল, আমি আমার স্প্রাইটের জন্য ডিএক্সটি 5 সংক্ষেপণ ব্যবহার করছি, তাই আমি নিশ্চিত হতে পারি না যে আমার শেডারটিতে আমি যে রঙটি পেয়ে যাব তা আমার লেখা ঠিক একই রকম হবে। এ কারণেই আমি চেষ্টা করেও দেখিনি ... কিছু ভাবনা?
কোন পরামর্শ স্বাগত হবে :)