তরঙ্গ রিপল প্রভাব?


9

আমি বেশ কিছুদিন ধরে একটি টাওয়ার-প্রতিরক্ষা গেমের সাথে কাজ করছি এবং এখনও পর্যন্ত আমি ফলাফলগুলি নিয়ে সত্যই সন্তুষ্ট। তবে আমি যুক্ত করতে চাই একটি জিনিস আছে।

আমি উইন্ডোজ ফোন 7 এর জন্য জিওডিফেন্সের একটি ভিডিও এখানে দেখেছি: http://www.youtube.com/watch?v=YhPr4A4LRPQ

লক্ষ্য করুন কীভাবে (যখন একটি ইউনিট মারা যায় বা একটি অনুমান একটি ইউনিটকে আঘাত করে), ব্যাকগ্রাউন্ডটি একধরনের তরঙ্গ প্রভাবের মধ্যে ছড়িয়ে পড়ে।

আমি কীভাবে সমতুল্য করতে পারি? আমি ভাবছি যে আমার একরকম বহু শীর্ষকোনা দিয়ে তৈরি কোয়াড সহ ভার্টেক্স শ্যাডারে এটি করা দরকার।

তোমার ডাক কি?

সম্পাদনা এটি লক্ষণীয় গুরুত্বপূর্ণ যে আমার এক্সএনএ গেমটি উইন্ডোজ ফোনের জন্য তৈরি করা হয়নি, তবে উইন্ডোজ পিসিগুলির জন্য।

উত্তর:


8

সমস্যাটি হ'ল উইন্ডোজ ফোনে এক্সএনএ-তে কাস্টম শেডার সমর্থন নেই - সুতরাং আপনি একটি ভার্টেক্স শেডার বা পিক্সেল শেডার লিখতে পারবেন না । তবে, আপনি ক্যাটালিন জিমার দ্বারা বর্ণিত একটি কৌশল ব্যবহার করতে পারেন যা একই প্রভাব অর্জনের জন্য একটি ভার্টেক্স গ্রিডকে বিকৃত করে।

আপনি যদি উইন্ডোজ ফোন 7 লক্ষ্য করে না নিচ্ছেন তবে আপনি আমার ব্লগে বর্ণিত একটি কৌশল ব্যবহার করতে পারেন । এতে সম্পর্কিত বিটগুলি অনুলিপি করা:

এই বিকৃতিগুলির জন্য 2 টি চিত্রের প্রয়োজন। প্রথমত আপনার পুরো দৃশ্যটি রেন্ডার টার্গেট হিসাবে (যেমন টেক্সচার 2 ডি) পাশাপাশি বিকৃতি রেন্ডার লক্ষ্য হিসাবে প্রয়োজন। সাধারণত আপনি বিকৃতি লক্ষ্য পূরণ করতে একটি কণা সিস্টেম ব্যবহার করবেন; বিশেষ বিকৃতি স্প্রিট ব্যবহার করে (নীচে উদাহরণস্বরূপ)।

বিকৃতি লক্ষ্য (এবং বিকৃতি স্প্রিটস) এর প্রতিটি রঙের উপাদান নীচের প্রতিনিধিত্ব করে:

  • আর : ডিএক্স: এক্স অফসেট - চ (এক্স) = 2x-1 ম্যাপিং ([0.0f, 1.0f] থেকে [-1.0f, 1.0f])।
  • জি : ডাই: ওয়াই অফসেট - চ (এক্স) = 2 এক্স -1 ম্যাপিং।
  • বি : এম: জেড শক্তি - চ (এক্স) = এক্স ম্যাপিং।

একটি স্প্রাইটের একটি ভাল উদাহরণ যা একটি রিপলের জন্য ব্যবহৃত হত:

রিপল স্প্রাইট

রিপলের ফলাফল নির্ধারণ করা তরঙ্গগুলি একসাথে যুক্ত করার মতোই সহজ (ম্যাপিংয়ের বিষয়টি মাথায় রেখে আপনাকে প্রথমে [-1.0f, 1.0f] এ সম্পাদন করা প্রয়োজন); কারণ বাস্তবে তরঙ্গগুলিও যুক্ত হয় এটি ঠিক কাজ করে - আপনি বাস্তব তরঙ্গগুলির খুব ভাল আনুমানিকতা পাবেন।

আপনার দুটি রেন্ডার লক্ষ্যমাত্রা হয়ে গেলে আপনি নীচের শেডারটি ব্যবহার করতে পারেন:

Texture InputTexture; // The distortion map.
Texture LastTexture; // The actual rendered scene.

sampler inputTexture = sampler_state
{
    texture = <InputTexture>;
    magFilter = POINT;
    minFilter = POINT;
    mipFilter = POINT;
};

sampler lastTexture = sampler_state
{
    texture = <LastTexture>;
    magFilter = LINEAR;
    minFilter = LINEAR;
    mipFilter = LINEAR;
    addressU = CLAMP;
    addressV = CLAMP;
};

struct VS_OUTPUT
{
    float4 Position : POSITION;
    float2 TexCoords : TEXCOORD0;
};

float4 Distort (VS_OUTPUT Input)
{
    float4 color1;
    float4 color2;
    float2 coords;
    float mul;

    coords = Input.TexCoords;
    color1 = tex2D(inputTexture, coords);

    // 0.1 seems to work nicely.
    mul = (color1.b * 0.1);

    coords.x += (color1.r * mul) - mul / 2;
    coords.y += (color1.g * mul) - mul / 2;

    color2 = tex2D(lastTexture, coords);

    return color2;
}

float4 RunEffects (VS_OUTPUT Input) : COLOR0
{
    float4 color;

    color = Distort(Input);

    return color;
}

technique Main
{
    pass P0
    {
        PixelShader = compile ps_2_0 RunEffects();
    }
}

এটি চূড়ান্ত প্রভাব:

রিপল ইফেক্ট

এই কৌশলটি 3 ডি গেমগুলির জন্যও কাজ করা উচিত; যদিও আপনাকে আরও চিন্তাধারা কণার শেডার এবং বিকৃতি শেডারে উত্সর্গ করতে হতে পারে।


আমি উইন্ডোজ ফোনের জন্য গেমটি তৈরি করছি না। আমি আমার প্রশ্ন আপডেট করেছি।
ম্যাথিয়াস লাইককেগার্ড লরেঞ্জেন

@ ম্যাথিয়াসলাইক্কেগার্ড লরেনজেন আমি আমার ব্লগ থেকে কিছু বিষয়বস্তু তুলেছি এবং উত্তরে রেখেছি, আশা করি এটি আপনাকে একটি ভাল সূচনা পয়েন্ট দেয়।
জনাথন ডিকিনসন

ফোনের উদাহরণটি দুর্দান্ত এবং আমি ঠিক যা করার চেষ্টা করছি। দুর্ভাগ্যক্রমে, আমি প্রভাবটি বিশ্বের সাথে সরে যেতে চাই, এবং স্ক্রিনের স্থানাঙ্কের উপর ভিত্তি করে না। এটা কি সম্ভব?
ম্যাথিয়াস লাইককেগার্ড লরেনজেন

@ ম্যাথিয়াসলাইক্কেগার্ড লরেনজেন এটি অবশ্যই সম্ভব, তবে এটি অবিশ্বাস্যভাবে ব্যয়বহুল হবে - সেক্ষেত্রে আমি আপনাকে আমার সমাধানের দিকে যাওয়ার পরামর্শ দিই। আমি যদি কোডটি খুঁজে পাই তবে আমি আপনাকে মেইল ​​করব; যতক্ষণ আপনি আমার কোনও শিল্পকর্ম না ব্যবহার করার প্রতিশ্রুতি দিচ্ছেন :)।
জনাথন ডিকিনসন

@ জোনাথন ডিকিনসন আপনি দয়া করে আমাদের আপডেট হওয়া এক্সএনএ 4 কোড সরবরাহ করতে পারেন?
আমির রেজায়ে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.