আমি কীভাবে আমার আউটলাইন গ্লো এফেক্টে এলিয়াসিং হ্রাস করতে পারি?


42

আমি বাম 4 মৃত গেমটিতে জ্বলজ্বলীয় রূপরেখা প্রভাবটি প্রতিলিপি দেওয়ার চেষ্টা করছি। প্রভাবটি কোনও অবজেক্টের আউটলাইনটি আলোকিত করে তোলে, এমনকি যখন অবজেক্টটি অন্তর্ভুক্ত থাকে। এখানে প্রভাবটির একটি স্ক্রিনশট রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

আমি আমার ওপেনজিএল ভিত্তিক প্রোগ্রামে এই প্রভাবটি প্রতিলিপি করতে কিছুটা সক্ষম হয়েছি। আমি বর্তমানে এটি করছি:

  • এমন একটি রঙ এবং গভীরতার টেক্সচার তৈরি করুন যা ঝলমলে জিনিসগুলি উপস্থাপনের জন্য পর্দার আকারের অর্ধেক
  • গ্লো রঙ / গভীরতার টেক্সচার সাফ করুন। রঙ কালো হয়ে গেছে is
  • প্রতিটি আলোকিত বস্তুর জন্য, এটি একটি শক্ত রঙ হিসাবে গ্লো টেক্সচারে রেন্ডার করুন
  • গ্লো টেক্সচারে একটি বিভাজ্য গাউসিয়ান ব্লার সম্পাদন করুন
  • সম্পূর্ণ রেজোলিউশনের দৃশ্যটিকে স্বাভাবিক হিসাবে রেন্ডার করুন
  • অতিরিক্ত দৃশ্যের সাথে দৃশ্যের সাথে সাধারণ দৃশ্যের সাথে মিশ্রিত করুন তবে কেবল অস্পষ্ট রূপরেখা রেখে অবজেক্টটি মাস্ক করতে গ্লো গভীরতার টেক্সচারটি ব্যবহার করুন।

এখানে আমার পদ্ধতির স্ক্রিনশট দেওয়া হল:

এখানে চিত্র বর্ণনা লিখুন

এখানে খণ্ডের শেডারটি দৃশ্যের সাথে আলোকিত জমিনকে একত্রিত করেছে:

uniform sampler2D glowColorTex;
uniform sampler2D glowDepthTex;
uniform sampler2D sceneColorTex;
void main()
{
    vec2 uv = gl_TexCoord[0].st;

    vec4 color = texture2D( sceneColorTex, uv);

    float depth = texture2D( glowDepthTex, uv).r;
    if(depth == 1.0) {
        color += 2.0 * texture2D( glowColorTex, uv);
    }

    gl_FragColor = color;
}

আপনি দেখতে পাচ্ছেন, এটি বেশিরভাগ অংশের জন্য কাজ করছে বলে মনে হচ্ছে, তবে রূপরেখায় এলিয়াসিংটি খুব খারাপ।

বাহ্যরেখার অভ্যন্তরীণ প্রান্তটি মসৃণ করার জন্য কারও কি কোনও পরামর্শ আছে?

আমি কি প্রতি পিক্সেলের প্রতিবেশী গভীরতার মানগুলিকে নমুনা দিচ্ছি এবং গভীরতার মানগুলির সংখ্যার উপর ভিত্তি করে আলোককে স্কেল করব?

বা এর চেয়ে আরও ভাল কোনও পদ্ধতির সাহায্যে মসৃণ ফলাফল পাওয়া যাবে?

উত্তর:


13

কম-রেজোলিউশন গভীরতার বাফারের বিরুদ্ধে এটি পরীক্ষা করার পরিবর্তে আপনি স্টেনসিল পরীক্ষাটি ব্যবহার করতে পারেন। সাধারণ দৃশ্যের রেন্ডার করার সময়, আপনি কেবল সেই অবজেক্টটি রেন্ডার করুন যা স্টেনসিল বাফারে জ্বলতে হবে (গভীরতা-পরীক্ষা ছাড়াই, আমি মনে করি) এবং তারপরে পুরো গ্লো টেক্সচারটি মিশ্রিত করুন, তবে স্টেনসিল-পরীক্ষাটি কেবল সেখানে পাস করার জন্য স্টেনসিল-পরীক্ষা কনফিগার করুন where সেট করা হয়নি, সুতরাং উচ্চ-রেজোলিউশন অবজেক্টটি মাস্কিং করুন।

এইভাবে আপনি আসল বস্তুর যথাযথ সিলুয়েট পাবেন, অন্যদিকে প্রান্তটি মসৃণ করলেই কেবল আনুমানিক ফলাফল পাওয়া যায়, তবে সম্ভবত এটি আপনার পক্ষে যথেষ্ট।


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