ডিবাগিং শেডার কোড?


13

আমি একটি গেম ইঞ্জিন লিখছি, এবং আমি যখন একটি দৃষ্টিকোণ ক্যামেরা ব্যবহার করি তখন আমি একটি কালো স্ক্রিন পাই। আমি কেন এটি ঠিক তা জিজ্ঞাসা করতে যাচ্ছি না কারণ অনেকগুলি ভাগ করার কোড থাকবে এবং সত্যি বলতে গেলে, আমি মনে করি এটি আপনাকে খুব বিরক্ত করার জন্যও কিছুটা ক্ষুদ্র প্রশ্ন।

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

সুতরাং আমার প্রশ্ন: আমি কীভাবে আমার সমস্যাটি ডিবাগ করব? কেবলমাত্র আমি যা ভাবতে পারি তা হ'ল আমি ক্লায়েন্ট-পার্শ্বের পক্ষে যতগুলি মান পরীক্ষা করতে পারি এবং তারপরে ক্রমানুসারে প্রোগ্রামিং করি তবে আমি তা করে এসেছি এবং কোথাও পাইনি। ভিডিও কার্ডে কী ঘটছে তা আমি দেখতে পাবার কোনও উপায় আছে? আমি ব্যবহার করতে পারে একটি সম্পূর্ণ ভিন্ন কৌশল আছে?

আমি জিএলএসএল সংস্করণ 420 (এবং সেই সংস্করণে নির্দিষ্ট বৈশিষ্ট্যগুলি) ব্যবহার করছি, সুতরাং আমি মনে করি না যে glslDevil এটি একটি বিকল্প, বিবেচনা করে এটি 2010 সালে সর্বশেষ আপডেট হয়েছিল।

সম্পাদনা

আমি কিছু সম্পূর্ণ সম্পর্কযুক্ত ডিবাগিংয়ের মাধ্যমে আমার সমস্যার সমাধান করতে সক্ষম হয়েছি।

উত্তর:


2

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

http://code.google.com/p/glintercept/


এটি দরকারী বলে মনে হচ্ছে না। আমি এটি জিএলএসএল ৪.২০ এডিট-এর সাথে কাজ করে কিনা তা পরীক্ষা করে নেব: কয়েকটি কারণে, আমি মনে করি না এটি কার্যকর হবে। এটি ওপেনজিএল এর অনেকগুলি বৈশিষ্ট্যের উপর নির্ভর করে যা অবনতিযুক্ত এবং এইভাবে আমার শেডার কোডে নেই।
আভি

আহ খুব খারাপ, আমি জানতাম না যে এটি পুরান। যদিও GLSL4.2 এর জন্য কিছু ধরণের ডিবাগার থাকতে হবে। আমি চারপাশে জিজ্ঞাসা করব। এর মধ্যে, এই কাজ করতে পারে? বিকাশকারী.নভিডিয়া
.

শুধুমাত্র সিজি শেডারগুলির জন্য কাজ করে: |
আভি

4

যদিও আমি নিশ্চিত নই, এনভিআইডিআইএ নাইটকে শ্যাডারগুলি ডিবাগ করতে সক্ষম করা উচিত, কমপক্ষে আমি মনে করি এটি কোনও পূর্ববর্তী সংস্করণে জিএলএসএলকে সমর্থন করেছে (যা আপনি খুঁজে পেতে সক্ষম হবেন)। এটি ভিজ্যুয়াল স্টুডিওর সাথে বেশ ঠিকঠাক সংহত করেছে, সহজ নয় তবে দরকারী জিনিসগুলির প্রচুর পরিমাণে রয়েছে, তবে পুরানো সংস্করণগুলিতে আপনাকে একটি জিপিইউ সহ দুটি মেশিনের দরকার পড়ে নেটওয়ার্কের মাধ্যমে শেডার ডিবাগ করার জন্য (যখন সর্বশেষতম সংস্করণ বলছে এটি "স্থানীয়" ডিবাগিংয়ের অনুমতি দেয়) । এছাড়াও, শেডার ডিজাইনার চেক করুন [2] যা একটি দরকারী আইডিই বলে মনে হচ্ছে (তবে জিএলএসএল ডিবাগিংয়ের অভাব রয়েছে)।

[1] http://developer.nvidia.com/content/nvidia-nsight-visual-studio-edition

[২] http://www.opengl.org/sdk/tools/ShaderDesigner/


নোট করুন যে শেডারগুলি ডিবাগ করার জন্য NSight- এর প্রশাসকের অনুমতি প্রয়োজন।
তারকাবিআমরনোলাবস

1

দুর্ভাগ্যক্রমে ওপেনগল ডিবাগ করা সহজ নয়। এখানে আমি দরকারী জিনিসগুলি পেয়েছি:

  • প্রতিটি কল করার পরে glGetError ব্যবহার করুন
  • নতুন ডিবাগ এক্সটেনশনটি ব্যবহার করার চেষ্টা করুন (এআরবি_দেবগ _ ???)
  • প্রতিটি কল করার পরে স্ক্রিনে কী আঁকা তা দেখতে gDebugger ব্যবহার করুন
  • প্রতিটি ওপেনগল কমান্ডের পরে কী ঘটে তা দেখতে অ্যাপিট্রাস ব্যবহার করুন
  • আপনার ইনপুটটির উপর ভিত্তি করে আপনার শেডারকে বিভিন্ন রঙের আউটপুট পরিবর্তন করুন এবং এটি কেন নির্দিষ্ট রঙ দেখায় তা বোঝার চেষ্টা করুন
  • অঙ্কনের ক্ষমতা সীমাবদ্ধ করে এমন প্রতিটি ওপেনগল কার্যকারিতা অক্ষম করুন: কাঁচি পরীক্ষা, গভীরতা পরীক্ষা, ব্যাকফেস কুলিং ইত্যাদি

1
এটি আসলে আমার প্রশ্নের উত্তর দেয় না। এটি ক্লায়েন্ট-সাইড ওপেনজিএল কলগুলি ডিবাগ করার জন্য সহায়ক, তবে শেডার প্রোগ্রামগুলি ডিবাগ করার জন্য নয়। আমি জানি কীভাবে ক্লায়েন্ট-সাইড ওপেনজিএল কলগুলি ডিবাগ করা যায়।
আভি

1

ব্যক্তিগতভাবে আমি এখনও রেন্ডারমনকি ব্যবহার করি। তবে এটি এই সঠিক প্রশ্নের পুরোপুরি উপযুক্ত নয় কারণ এটি কেবলমাত্র একটি বাস্তব অ্যাপ্লিকেশানের একটি মুখ এবং তাই কিছু অদ্ভূত সীমাবদ্ধতা রয়েছে। এটি সমর্থন ছাড়াই ভাল তবে GLSL ডিবাগ করার জন্য আমি এর চেয়ে ভাল আর কিছু পাইনি।


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