গ্রেস্কেলে পুরো দৃশ্য ম্লান করা


20

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

উত্তর:


23

এটি করার সবচেয়ে সহজ উপায় এটির জন্য শেডার তৈরি করা (নীচের কোডটি দেখুন)। রেন্ডার টার্গেটে সবকিছু আঁকুন, তারপরে আপনার পিছনের বাফারে আঁকতে শেডারটি ব্যবহার করুন

প্লেয়ারটি মারা যাওয়ার পরে আপনার গেম কোড রেকর্ডে, তারপরে রেন্ডারগুলিতে 1 (পূর্ণ বর্ণ) এবং 0 (পূর্ণ ধূসর-স্কেল) এর মধ্যে একটি শেডার প্যারামিটার রেন্ডার করে
CurrentTime-DeadTime / FadeTime

float ColourAmount;
Texture coloredTexture;

sampler coloredTextureSampler = sampler_state
{
    texture = <coloredTexture>;
};

float4 GreyscalePixelShaderFunction(float2 textureCoordinate : TEXCOORD0) : COLOR0
{
    float4 color = tex2D(coloredTextureSampler, textureCoordinate); 
    float3 colrgb = color.rgb;
    float greycolor = dot(colrgb, float3(0.3, 0.59, 0.11));

    colrgb.rgb = lerp(dot(greycolor, float3(0.3, 0.59, 0.11)), colrgb, ColourAmount);

    return float4(colrgb.rgb, color.a);
}

technique Grayscale
{
    pass GreyscalePass
    {
        PixelShader = compile ps_2_0 GreyscalePixelShaderFunction();
    }
}

০.০, ০.০৯ এবং ০.০১ এর কারণ হ'ল মানব চোখ বর্ণের সাথে সমান আচরণ করে না, এই মানগুলি আরও ভাল গ্রেস্কেল চিত্র দেয়।


কিছুক্ষণ আগে আমি আরজিবি ধূসর রূপান্তরিত করেছিলাম তবে একটি নির্ভরযোগ্য উত্স খুঁজে পাইনি তাই আমি সবেমাত্র 1.0 / 3,1.0 / 3,1.0 / 3 ব্যবহার করেছি ... আপনি কি সংখ্যার ধ্রুবক 0.2,0.59,0.11 এর জন্য কোনও উত্স সরবরাহ করতে পারেন?
ট্র্যাভর বয়ড স্মিথ

আমি কোডটি কোথা থেকে পেয়েছি তা সন্ধান করার চেষ্টা করছি, তবে এটি সন্ধান করতে পারিনি। এখানে একটি ভালভ বিকাশকারী পৃষ্ঠা যা বিভিন্ন (তবে অস্পষ্টভাবে অনুরূপ) মানগুলি (0.222, 0.707, 0.071) ব্যবহার করে।
জর্জি ডেকেট

1
মানগুলির জন্য এখানে একটি উল্লেখ রয়েছে যা ভালভ সংখ্যাগুলি সমর্থন করে তবে উভয়কেই তালিকাভুক্ত করে। poynton.com/notes/colour_and_gamma/ ColorFAQ.html#RTFToC9
অ্যাডাম

1
আছে: Stackoverflow উপর greyscale কোফিসিয়েন্টস সম্পর্কে একটি প্রশ্ন আছে stackoverflow.com/questions/5311774/...
Exilyth

আমি নিশ্চিত করতে পারি যে এই
শেডারটি

0

সম্পাদনা

এটি নিয়ে চিন্তা করার পরে, যদি আপনি কোনও কিছুর উপরে কোনও আভা না রেখে থাকেন তবে গ্রাফিক্সের মূল রঙগুলি ব্যবহার করে আপনার ঠিক যেমন থাকতে পারে (যেমন আমি নীচে লিখে রাখি) আপনার আঁকা বস্তুর সমস্ত রঙ সাদা হিসাবে নির্ধারিত কালার ভেরিয়েবল সেটকে সেট করে। (রঙ নোটিন্ট = রঙ।ওয়াইট;) এবং তারপরে লেয়ার্প করুন যে প্লেয়ারের জীবন যদি শূন্যের সমান হয়। নোন্টিন্ট রঙের সাথে আঁকা প্রতিটি বস্তু আস্তে আস্তে পরিবর্তিত হবে (নীচে উল্লিখিত আপনার অন্তরঙ্গ রেট অনুসারে) আপনি যেদিকে এটি লিপিং করছেন to

তবে আপনার যদি বিভিন্ন অবজেক্টে আলাদা আলাদা চিহ্ন থাকে তবে নীচের ফোরচ লুপটি কাজ করতে পারে

সম্পাদনা শেষ করুন

আমার সীমিত জ্ঞানে আমি এটি চেষ্টা করব: নির্দিষ্ট অবজেক্ট আঁকতে আপনি যে রঙগুলি ব্যবহার করেন তা ঘোষণা করুন, প্রাক্তন। রঙের রঙের রঙ = রঙ B ব্রাউন, তারপরে আপনার গেমের সমস্ত রঙের তালিকাতে যুক্ত করুন।

public static Color catColor = Color.Brown;
List<Color> colorList = new List<Color>(){ catColor }; // and other colors
float interpolation = 0f;
float interpolationRate = .01f;
.
.
.
if(playerLives == 0) 
{
   interpolation += interpolationRate;
   if (interpolation >= 1)
      {interpolation = 1;}

   foreach(Color c in colorList)
   {
      Color.Lerp(c, Color.Gray, interpolation);
   }
}

এমন কোনও আইটেমের জন্য আপনি এটি করতে পারেন যা আপনি কোনও রঙিন ছাড়াই আঁকেন এবং রঙটি Lerp করুন a হোয়াইট একটি কালার। গ্রে। (নাম দিন যে রঙ NoTint = রঙের মতো কিছু। সাদা, এবং এটি আপনার সমস্ত টানা বস্তুর উপর রাখুন)

আমি সম্ভবত আশা করি এটির থেকে আরও ভাল উপায় আছে!


1
-1 এটি পুরো পর্দাটিকে একটি শক্ত রঙে বিবর্ণ করবে, গ্রেস্কেলকে পরিণত করবে না। গ্রেস্কেল একটি বর্ণকে তার উজ্জ্বলতার সাথে পরিমাপ করে (রঙটি বিভিন্ন বর্ণকে বিভিন্ন উজ্জ্বলতা হিসাবে দেখায়), এটি কোনও রঙ এবং ধূসর (যা এখনও রঙ ধারণ করে) এর মধ্যে অর্ধেক পথ নয়।
ডপপেলগ্র্রেনার

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