में 2.0 मेरा मुख्य सवाल के साथ शुरू करने के लिए>:पिक्सेल Shader मॉडल FireMonkey
मैं अपने FireMonkey अनुप्रयोगों में पिक्सेल शेडर मॉडल 3, 4 या 5 का उपयोग कर सकते हैं?
मैं अपने फ़ायरमॉन्की प्रोग्राम में गतिशील रूप से पिक्सेल शेडर्स बनाने में सक्षम होना चाहता हूं। ऐसा करने के लिए, अब मैं fxc.exe का उपयोग कर एक पिक्सेल शेडर संकलित करता हूं जो डायरेक्टएक्स एसडीके के साथ आता है, और संकलित कोड को मेरे TShaderFilter वंशज में लोड करता है। यह ठीक काम करता है (अगर आपको दिलचस्पी है कि मैं ऐसा कैसे करता हूं तो मुझे बताएं)।
हालांकि, अगर मैं लक्ष्य प्रोफ़ाइल के रूप में ps_2_0
के साथ संकलित करता हूं तो मैं केवल काम करने के लिए चीजें प्राप्त कर सकता हूं।
मैं वर्तमान में शेडर मॉडल 2.0 की सीमाओं में चल रहा हूं। उदाहरण के लिए लूप को कंपाइलर द्वारा अनलॉक किया जाता प्रतीत होता है, और स्तर 2 शेडर्स में आपके पास अधिकतम संख्या में निर्देश हो सकते हैं। इसके कारण, संभावनाओं की संख्या बहुत सीमित है।
उदाहरण: नीचे शेडर कोड एक मैंडलब्रॉट भग्न पैदा करता है। अगर मैं Iterations
बहुत अधिक सेट करता हूं, तो यह संकलित नहीं होता है। त्रुटि संदेश:
error X5608: Compiled shader code uses too many arithmetic instruction slots (78). Max. allowed by the target (ps_2_0) is 64.
#define Iterations 12
float2 Pan;
float Zoom;
float Aspect;
float4 main(float2 texCoord : TEXCOORD0) : COLOR0
{
float2 c = (texCoord - 0.5) * Zoom * float2(1, Aspect) - Pan;
float2 v = 0;
for (int n = 0; n < Iterations; n++)
{
v = float2(v.x * v.x - v.y * v.y, v.x * v.y * 2) + c;
}
return (dot(v, v) > 1) ? 1 : 0;
}
शेडर मॉडल ps_3_0 मैं और अधिक पुनरावृत्तियों के साथ संकलन कर सकते हैं, लेकिन संकलित शेडर साथ
FireMonkey में काम करने के लिए प्रतीत नहीं होता। मुझे कोई त्रुटि संदेश नहीं मिला है; परिणामस्वरूप मुझे बस एक लाल छवि मिलती है।
यहाँ किसी को भी यह कैसे चारों ओर पाने के लिए पर कोई विचार है करता है, या FireMonkey बस मेरी ग्राफिक्स कार्ड की पूरी क्षमता का उपयोग करने में सक्षम नहीं है?
नोट, मैंने देखा है कि फायरमोन्की के लिए न्यूनतम आवश्यकता शेडर स्तर 2.0 के साथ एक ग्राफिक्स कार्ड है, लेकिन यह स्पष्ट नहीं है कि इसका मतलब है कि आप शेडर स्तर 3 या उच्चतर का उपयोग नहीं कर सकते हैं।
+1, दिलचस्प सवाल! मुझे यह पढ़ने में दिलचस्पी होगी कि आप कैसे संकलन कर रहे हैं और शेडर्स का उपयोग भी कर रहे हैं। –