বাহ্যরেখা স্প্রিটস


9

আমি বর্তমানে একটি 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 সংক্ষেপণ ব্যবহার করছি, তাই আমি নিশ্চিত হতে পারি না যে আমার শেডারটিতে আমি যে রঙটি পেয়ে যাব তা আমার লেখা ঠিক একই রকম হবে। এ কারণেই আমি চেষ্টা করেও দেখিনি ... কিছু ভাবনা?

কোন পরামর্শ স্বাগত হবে :)


আপনার শেডারে বেধ এবং আলফা ড্রপ-অফ নিয়ন্ত্রণ করতে সক্ষম হওয়া উচিত। রেফারেন্সের জন্য এটি পোস্ট করতে যত্নশীল?
শেঠ ব্যাটিন

আমি এই নমুনাটি থেকে গাউসিয়ান ব্লার শেডারটি ব্যবহার করেছি: লিঙ্কটি আপনাকে
বিশদভাবে শেডারটি

আমি নিশ্চিত নই যে গাউসিয়ান ব্লার আপনার পক্ষে সঠিক। পরিবর্তে কিছু রেডিয়াল অস্পষ্টতার চেষ্টা করুন।
ব্যবহারকারী1306322

উত্তর:


6

আপনি সম্ভবত যা খুঁজছেন তা হ'ল আপনার গাউসিয়ান অস্পষ্টতার আগে, পরে, এমনকি তার পরে এবং পরে edge হতে পারে সোবেল এজ সনাক্তকরণের কোনও সংস্করণ কাজ করতে পারে। আমি জানি আপনার গেমটি 2 ডি তবে উইকি পৃষ্ঠাটি খুব রুক্ষ হলে এখানে এটি কীভাবে ইউডিকে কাজ করতে হয় তার আরও একটি টিউটোরিয়াল রয়েছে যা আরও ভাল অনুবাদ করতে পারে।

আপনার প্রান্ত সনাক্তকরণের জন্য আলফা চ্যানেলের প্রান্তগুলি কেবল সত্যই খুঁজে পেতে হবে যদি আপনার একটি গতি বৃদ্ধির প্রয়োজন হয়।


মজাদার! আমি এটা চেষ্টা করেছি. ফলাফলটি ভাল ছিল, যখন আমি জুম ইন / আউট করি ...
পিক্সেলগুলি

1
আপনি কি ধরনের শিল্পকলা দেখতে পাচ্ছেন? আপনি একটি ইমেজ প্রদান করতে পারেন?
অ্যালেক্স শেপার্ড

2

পাঠ্যরেখার সাথে আমার পক্ষে যা কাজ হয়েছিল তা হ'ল:

  • বাহ্যরেখার রঙটি চয়ন করুন
  • (X-1, y-1) প্রান্তরেখার রঙ সহ পাঠ্যটি আঁকুন
  • বাহ্যরেখার রঙের সাথে (x + 1, y-1) এ পাঠ্যটি আঁকুন
  • বাহ্যরেখার রঙের সাথে (x-1, y + 1) এ পাঠ্যটি আঁকুন
  • বাহ্যরেখার রঙের সাথে (x + 1, y + 1) এ পাঠ্যটি আঁকুন
  • (X, y) এ পাঠ্যটি আঁকুন

আপনি একই জিনিসটি করতে পারেন - আপনার যা করতে হবে তা হ'ল আপনার বাহ্যরেখার রঙের সাথে বর্ণময় অস্বচ্ছ পিক্সেল দিয়ে স্প্রিট আঁকতে হবে। (স্বচ্ছ মানগুলি বজায় রাখুন যাতে বৃত্তাকার প্রান্তগুলি এখনও গোলাকার দেখায়)।

এটি কাজ করে, একটি আকারযুক্ত সংস্করণ আঁকার চেয়ে আরও ভাল দেখায় এবং এর মধ্যে আরও কিছু দুর্দান্ত বৈশিষ্ট্য রয়েছে (যেমন সাহসের জন্য আউটলাইন আলফা নিয়ন্ত্রণ করতে সক্ষম হওয়া, এবং আপনার স্প্রাইটের চিত্রের কোনও "ছিদ্র" বজায় রাখা) - কেবলমাত্র ব্যর্থতা হ'ল আপনি পারেন ' টি সত্যিই বাহ্যরেখার প্রস্থকে খুব ভালভাবে নিয়ন্ত্রণ করে।


1

আমি এই সমস্ত কিছুর জন্য নতুন ধরনের, কিন্তু এখানে আমার ধারণা:

আপনি অন্য টেক্সচার তৈরি করতে আপনার টেক্সচারের আলফা চ্যানেলটি ব্যবহার করতে পারেন। একটি প্রান্তিক মানের নীচের যে কোনও আলফা মান সম্পূর্ণ স্বচ্ছতে সেট করা হবে। উপরের যে কোনওটি সম্পূর্ণ অস্বচ্ছ হবে a এই নতুন টেক্সচারটি ব্যবহার করে, আপনি আরজিবিতে আপনার পছন্দ মতো যে কোনও মান মান সেট করতে পারেন। আপনার অক্ষরের টেক্সচারের চেয়ে কিছুটা বড় হতে এই নতুন "টেক্সচার" স্কেল করুন। এটি আপনাকে চরিত্রটির চারপাশে একটি দুর্দান্ত কঠিন রঙ দেয়। তারপরে আপনার তৈরি টেক্সচারটির চারপাশে সুন্দর রূপরেখা দেওয়া আভাস দিতে আপনার গাউসিয়ান শেডার দিয়ে সেই রঙটি ব্যবহার করুন। আমি অনুমান করছি যে এটি অন্য টেক্সচার তৈরি না করেই করা যেতে পারে, এবং চরিত্রের টেক্সচারের ভিত্তিতে সমস্ত শেডার হতে হবে।

এটি কি আদৌ বোঝায়?


অবিচ্ছিন্ন আকারগুলি নিয়ে কাজ করার সময় এই পদ্ধতির একটি বড় ত্রুটি রয়েছে। উদাহরণস্বরূপ, যখন ডোনট প্রয়োগ করা হয় কেবল তখন বাইরের প্রান্তটি একটি রূপরেখা পাবে। অন্যান্য রূপরেখা বেধ বিকৃতি উল্লেখ না করে।
ক্রোমস্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.