मैं अंतरिक्ष से एक ग्रहों के वायुमंडलीय बिखरने को लागू करने की प्रक्रिया में हूं। मैं एक प्रारंभिक बिंदु के रूप में http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter16.html से सीन ओ'नील के शेड का उपयोग कर रहा हूं ।
मैं बहुत ज्यादा एक ही SkyFromSpace शेडर साथ छोड़कर fCameraAngle से संबंधित के रूप में यहाँ के रूप में GroundFromSpace शेडर करने का विरोध समस्या: http://www.gamedev.net/topic/621187-sean-oneils-atmospheric-scattering/
जब मैं fCameraAngle = 1
आंतरिक लूप में उपयोग नहीं कर रहा हूं तो मुझे अंतरिक्ष छायादार से आकाश के साथ अजीब कलाकृतियां मिलती हैं । इन कलाकृतियों का कारण क्या है? कलाकृतियां तब गायब हो जाती हैं जब fCameraAngle को सीमित कर दिया जाता है। मुझे ओ'नील के सैंडबॉक्स ( http://sponeil.net/downloads.htm ) में मौजूद धुंध की कमी लगती है।
कैमरा स्थिति X = 0, Y = 0, Z = 500। बाईं ओर ग्राउंडफ्रॉमस्पेस, दाईं ओर स्काईफ्रॉमस्पेस।
कैमरा स्थिति X = 500, Y = 500, Z = 500। बाईं ओर ग्राउंडफ्रॉमस्पेस, दाईं ओर स्काईफ्रॉमस्पेस।
मैंने पाया है कि कैमरा कोण स्रोत के आधार पर बहुत अलग तरीके से नियंत्रित होता है:
स्काइफ्रोमस्पेसशेयर में कैमरे के कोण में मूल शेड्स के रूप में गणना की जाती है:
float fCameraAngle = dot(v3Ray, v3SamplePoint) / fHeight;
जबकि अंतरिक्ष shader से जमीन में कैमरा कोण की गणना इस प्रकार की जाती है:
float fCameraAngle = dot(-v3Ray, v3Pos) / length(v3Pos);
हालांकि, विभिन्न स्रोत किरण की उपेक्षा के साथ ऑनलाइन टिंकर करते हैं। ऐसा क्यों है?
यहाँ एक C # Windows.Forms प्रोजेक्ट है जो समस्या को प्रदर्शित करता है और जो मैंने चित्र बनाने के लिए उपयोग किया है: https://github.com/ollipekka/At वायुमंडलीयसंस्कृति परीक्षण /
अपडेट: मुझे ओ'नील की साइट पर पाए गए स्कैटरसीपीयू प्रोजेक्ट से पता चला है कि कैमरा किरण को तब उपेक्षित किया जाता है जब कैमरा बिंदु से ऊपर छाया हुआ हो ताकि कैमरा से बिंदु पर बिखरने की गणना की जाए।
वास्तव में किरण दिशा बदलने से कलाकृतियों को हटा दिया जाता है, लेकिन अन्य समस्याओं का वर्णन यहाँ किया गया है:
इसके अलावा, स्कैटरसीपीयू परियोजना में, ओ'नील गार्ड उन स्थितियों के खिलाफ है जहां प्रकाश के लिए ऑप्टिकल गहराई शून्य से कम है:
float fLightDepth = Scale(fLightAngle, fScaleDepth);
if (fLightDepth < float.Epsilon)
{
continue;
}
जैसा कि टिप्पणियों में बताया गया है, इन नई कलाकृतियों के साथ यह अभी भी सवाल छोड़ता है, उन छवियों के साथ क्या गलत है जहां कैमरा 500, 500, 500 पर स्थित है? ऐसा लगता है कि प्रभामंडल ग्रह के पूरी तरह से गलत हिस्से पर केंद्रित है। एक उम्मीद करता है कि प्रकाश उस स्थान के करीब होगा जहां सूरज ग्रह को हिट करना चाहिए, बजाय इसके कि यह दिन से रात में बदलता है।
इस अद्यतन में परिवर्तन को प्रतिबिंबित करने के लिए गिटब प्रोजेक्ट को अपडेट किया गया है।