আপনি কীভাবে ক্রোম্যাটিক বিভেদ বাস্তবায়ন করবেন?


22

আপনি ছায়ার সাথে ক্রোম্যাটিক ক্ষয়রূপের প্রভাব কীভাবে বাস্তবায়ন করবেন ?

প্রতিটি রঙের জন্য বিভিন্ন ফোকাস দূরত্ব সহ বিশ্বের রেন্ডারিং সমস্যার সমাধান করবে (সম্ভবত কেবলমাত্র একটি গভীরতার রেন্ডারিং পাস ব্যবহার করে)?


আপনি ক্রোম্যাটিক অভ্যাসটি বাস্তবায়ন করতে চান কেন?
ashes999

3
পুষ্প অর্জনের সাথে আপনি একইভাবে এগিয়ে যেতে পারেন। আপনার স্বাভাবিক দৃশ্যের এটি 3 টি অস্পষ্ট সংস্করণের সাথে একত্রিত করা উচিত; এই তিনটি টেক্সচারের প্রতিটিকে মূলত তিনটি মূল রঙে টিন্ট করা উচিত .. অবশ্যই, যদি আপনি 3 টেক্সচারের জন্য বিভিন্ন অস্পষ্ট কৌশল ব্যবহার করেন (উদাহরণস্বরূপ বিভিন্ন কৌণিক অফসেটের সাথে দিকনির্দেশক ঝাপসা কৌশলটি করতে পারে) vari
teodron

3
@ অ্যাসেস৯৯৯ - বাস্তবতার স্পর্শ যোগ করার জন্য সম্ভবত কোনও স্নাইপার স্কোপ বা অন্যান্য দীর্ঘ লেন্স? ক্রোমাটিক বিভাজন অনেকগুলি যৌগিক লেন্স ডিজাইনের একটি শিল্পকর্ম।
কিথস

আপনি যে লেন্সের মাধ্যমে গেমটি দেখা হচ্ছে তার ফলে ঘটে যাওয়া কোনও ক্ষয়ক্ষতি রোধ করতে আপনি ক্রোমাটিক বিভেদ বাস্তবায়ন করতেও পারেন। উদাহরণস্বরূপ, ওকুলাস রিফ্টের সাথে খেলানো খেলায় ভিউটির প্রান্তে ক্রোম্যাটিক ক্ষয় করা ভাল ধারণা।
জোসেফ ম্যানসফিল্ড

উত্তর:


22

ক্রোম্যাটিক বিচ্যুতি ঘটে যখন কোনও লেন্স প্রতিটি রঙ একই ফোকাল পয়েন্টে ফোকাস করতে না পারে। এই প্রভাবটিকে জাল করার একটি সহজ উপায় এবং দ্রুত পূর্ণ-স্ক্রিন পোস্ট-প্রক্রিয়া হিসাবে রেন্ডার করার জন্য হ'ল প্রতিটি খণ্ডের শেডারে একটি রঙের চ্যানেলে একটি অফসেট প্রয়োগ করা।

প্রতিটি চ্যানেলের জন্য আলাদা অফসেট ব্যবহার করে আপনি পছন্দসই প্রভাবটির একটি যুক্তিসঙ্গত ফ্যাসিমাইল অর্জন করতে পারেন। এই কৌশলটির একটি উদাহরণ এখানে পাওয়া যাবে ; খণ্ড শ্যাডারটি দেখতে এরকম কিছু দেখবে:

void main () {
    // Previously, you'd have rendered your complete scene into a texture
    // bound to "fullScreenTexture."
    vec4 rValue = texture2D(fullscreenTexture, gl_TexCoords[0] - rOffset);  
    vec4 gValue = texture2D(fullscreenTexture, gl_TexCoords[0] - gOffset);
    vec4 bValue = texture2D(fullscreenTexture, gl_TexCoords[0] - bOffset);  

    // Combine the offset colors.
    gl_FragColor = vec4(rValue.r, gValue.g, bValue.b, 1.0);
}

এই সহজ হ্যাকটি ক্রোম্যাটিক ক্ষয়টি একটি লেন্সের প্রভাব হিসাবে বিবেচনা করে না, যদিও: আরও ভাল সিমুলেশন পেতে, আপনি লেন্স হিসাবে কাজ করার জন্য কিছু দিতে চান। এটি কীভাবে আপনি প্রতিচ্ছবি বা অপসারণকারী বস্তুগুলিকে রেন্ডার করেন তার অনুরূপ। ফলস্বরূপ, একটি সাধারণ প্রতিবিম্ব / রিফ্রাকশন শেডার ক্রোমাটিক ক্ষয়িষ্ণু প্রয়োগের ভিত্তি হতে পারে।

সাধারণত, আপনি একটি দৃশ্য ভেক্টর এবং কিছু সংজ্ঞায়িত উপর ভিত্তি করে একটি একক প্রতিসরণ ভেক্টর গনা চাই প্রতিসরণ সূচক , GLSL এর ব্যবহার প্রতিসৃত একটি প্রান্তবিন্দু shader মধ্যে ফাংশন:

void main () {
    // ...

    // RefractionVector is a varying vec3.
    // 'ratio' is the ratio of the two indices of refraction.
    RefractionVector = refract(incidentVector, normalVector, ratio);

    // ...
}

তারপরে আপনি কিউব টেক্সচারের চেহারা (পরিবেশের মানচিত্রে) সঞ্চালনের জন্য ফ্রেগমেন্ট শেডারে সেই ভেক্টরটি ব্যবহার করবেন। সাধারণত এটি প্রতিবিম্বের প্রভাবের পাশাপাশি সম্পন্ন হয় এবং সংযুক্ত একটি ফ্রেসেল শব্দ ব্যবহার করা হয় ।

ক্রোম্যাটিক ক্ষতিকারক অনুকরণ করার জন্য, আপনি ভার্টেক্স শ্যাডারে প্রতিবিম্বের বিভিন্ন সূচকগুলির মধ্য দিয়ে তিনটি পৃথক প্রতিসরণ ভেক্টর গণনা সম্পাদন করতে পারেন :

void main () {
    // ...

    // RefractionVector is a varying vec3, as above.
    // 'ratioR,' et cetera, is the ratio of indices of refraction for
    // the red, green and blue components respectively.
    RedRefractionVector = refract(incidentVector, normalVector, ratioR);
    GreenRefractionVector = refract(incidentVector, normalVector, ratioG);
    BlueRefractionVector = refract(incidentVector, normalVector, ratioB);

    // ...
}

এই তিনটি ভিন্ন ভিন্ন ভেক্টর তিনটি ভিন্ন কিউব মানচিত্রের লুক্কুলি সঞ্চালনের জন্য ব্যবহার করা যেতে পারে, যা সাধারণ উদাহরণে রঙগুলি কীভাবে মিশ্রিত করা হয়েছিল তার অনুরূপ মিশ্রিত করা যেতে পারে:

void main () {
    vec3 color;
    color.r = vec3(textureCube(EnvironmentMap, RedRefractionVector)).r;
    color.g = vec3(textureCube(EnvironmentMap, GreenRefractionVector)).g;
    color.b = vec3(textureCube(EnvironmentMap, BlueRefractionVector)).b;

    gl_FragColor = vec4(color, 1.0);
}

আরও বিশদের জন্য ওপেনজিএল অরেঞ্জ বই উপলভ্য এবং এতে বুনিয়াদী প্রতিবিম্ব এবং অপসারণ প্রভাবগুলির পাশাপাশি ক্রোম্যাটিক ক্ষয় প্রভাবের উদাহরণ রয়েছে।


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