আমি শেডার ব্যবহার করে প্রভাবটির সদৃশ করার চেষ্টা করেছি।
শ্যাডর00 কেন্দ্র: https://www.shadertoy.com/view/XsXSz2
Shader01 পাশ: https://www.shadertoy.com/view/4sXSz2
:) আপনি যেমন বাইট 56 বলেছিলেন, তিনটি প্লেন সেট আপ করতে পারেন। শেডার ১০০ এর সাথে সরাসরি ক্যামেরার মুখোমুখি একটি বিমান এবং তারপরে শ্যাডার0১ এর সাথে দুটি বিমান, র্যান্ডি গৌল হিসাবে উল্লিখিত, শীর্ষে / নীচে অভিন্নভাবে গভীরতার মায়া দেওয়ার জন্য স্কেল করা হয়েছে।
তাদের, আমার বিশ্বাস, বিশ্বাসযোগ্য হওয়ার জন্য পর্যাপ্ত 3D চেহারা দেওয়া উচিত।
দু'টি শেডারই আপনার ইউটিউব লিঙ্কের মতো ঠিক একই রকম নয় (এছাড়াও এগুলি মোটামুটি খসড়াও বেশি)। তবে আমি বিশ্বাস করি যে এই শেডারগুলি আশা করি, আপনাকে নিজের সংস্করণ তৈরি করতে একটি জায়গা দিতে পারে।
টিউটোরিয়াল: কীভাবে একটি সাধারণ স্ট্রাইপ প্যাটার্ন তৈরি করা যায়।
প্লেনের প্রতিটি পয়েন্টের সমন্বয় থাকে। শেডার এফেক্ট তৈরির চেষ্টাটি মূলত বিমানটিতে 2D গণিতটি ভিজ্যুয়ালাইজ করা। এখানে একটি সহজ উদাহরণ উপস্থাপন করা যাক।
//This shader will visualize coordinates
vec2 uv = gl_FragCoord.xy / iResolution.xy;
gl_FragColor = vec4(uv.x,uv.y,0,1);
রঙের বর্ণটি x স্থানাঙ্কের প্রতিনিধিত্ব করবে এবং সবুজ রঙ y স্থানাঙ্কের প্রতিনিধিত্ব করবে। আপাতত, আমরা সহজতম শেডার এফেক্ট তৈরি করতে চাই; একটি স্ট্রাইপ আমাদের এই টিউটোরিয়ালটির জন্য uv.y মান প্রয়োজন হবে না।
vec2 uv = gl_FragCoord.xy / iResolution.xy;
gl_FragColor = vec4(uv.x,0,0,1);
আপনি দেখতে পাচ্ছেন যে ডান দিকের দিকে যাওয়ার সাথে সাথে লাল রঙটি তীব্র হয়ে ওঠে। এর কারণ আপনি ডান দিকে যাওয়ার সময় স্থানাঙ্কের x মান বেশি হয়; বাম প্রান্তের x স্থানাঙ্ক 0 থেকে শুরু হয় এবং ডান প্রান্তের x স্থানাঙ্ক 1 হয়।
যেহেতু আমাদের এই প্রাথমিক বোঝাপড়া আছে আসুন কিছু "স্বজ্ঞাত" চেষ্টা করি
vec2 uv = gl_FragCoord.xy / iResolution.xy;
float color = 0.0;
if(uv.x < .5 ) color= 1.0 ;
gl_FragColor = vec4(color,0,0,1);
সেখানে আপনার স্ট্রিপ প্যাটার্ন রয়েছে। অপেক্ষা করুন ... এটি বেশ ঠিক দেখাচ্ছে না। হ্যাঁ এটি কেবল লাল এবং কালো। স্ট্রাইপ প্যাটার্নটিতে মাত্র দুটি রঙের বিভাগ থাকে। সেখানে ...!
vec2 uv = gl_FragCoord.xy / iResolution.xy;
float color = 0.0;
if(uv.x < .2 ||(uv.x >.4 && uv.x < .6) || (uv.x > .8 && uv.x <1.0 )) color= 1.0 ;
gl_FragColor = vec4(color,0,0,1);
কিন্তু আমরা যদি এন স্ট্রিপ এর নম্বর করতে চান?
আমি যেটি প্রদর্শন করার চেষ্টা করছি তা হ'ল যদি আপনি প্রচলিত প্রোগ্রামিং "লজিক" এর সাথে শ্যাডার প্রোগ্রামিংয়ের সাথে যোগাযোগ করার চেষ্টা করেন তবে আপনি ব্যর্থ হওয়ার সম্ভাবনা রয়েছে। যখন শ্যাডারের কথা আসে তখন এটি গণিত সম্পর্কে about
গণিতের কথা বললে, এমন প্যাটার্নটি কী যে সর্বাধিক "স্ট্রিপ" ধরণের সাদৃশ্যযুক্ত? অন্য কথায়, স্ট্রিপের মতো সমীকরণটি কী? হ্যাঁ. Y = sin (এক্স)। তবে আমাদের এক্স মানটি 0.0 ~ 1.0 থেকে শুরু করে যদি আমরা ওয়াই = পাপ (এক্স) ব্যবহার করতে চান তবে আমরা আমাদের x মানটি 0.0 ~ 6.28 (যা মোটামুটি 2 পিআই) থেকে শুরু করতে চাই
vec2 uv = gl_FragCoord.xy / iResolution.xy;
float x = uv.x * 2.0 *PI;
float y = sin(x);
gl_FragColor = vec4(y,0,0,1);
একটি সমীকরণ দ্বারা উত্পন্ন প্যাটার্নের ক্ষেত্রে এখন আমাদের কাছে "স্ট্রিপ" রয়েছে have কেন আমাদের এই পদ্ধতির গ্রহণ করা উচিত? এটি কেবল দ্রুত হতে পারে না, তবে এটি এন সংখ্যার স্ট্রাইপের সংখ্যাগুলি "যদি" শর্তাবলী লেখার প্রয়োজনীয়তাও দূর করে। যদি আমরা একাধিক স্ট্রাইপ পেতে চাইতাম, তবে কেবলমাত্র সর্বাধিক এক্স মান আরও বাড়িয়ে আমরা প্যাটার্নটি প্রসারিত করতে পারি।
vec2 uv = gl_FragCoord.xy / iResolution.xy;
float x = uv.x * (2.0 *PI * 10.0); //ta dan!
float y = sin(x);
gl_FragColor = vec4(y,0,0,1);
আপনি বলতে পারেন যে এই শেডারটি প্রারম্ভিক শেডার থেকে নিখুঁত স্ট্রাইপ তৈরি করে না, তবে সত্যই, আপনাকে যা করার দরকার তা হল আরও উপযুক্ত ফিটনেস সমীকরণ লিখতে!
vec2 uv = gl_FragCoord.xy / iResolution.xy;
float x = uv.x * (2.0 *PI * 10.0);
float y = sin(x) / abs(sin(x) );
gl_FragColor = vec4(y,0,0,1);
Weeee ~~~
পরবর্তী: কীভাবে একটি .েউয়ের স্ট্রাইপ প্যাটার্ন তৈরি করবেন।