में अर्द्ध पारदर्शी क्षेत्र को सही ढंग से प्रस्तुत करना मैं एकता में एक अंतरिक्ष अन्वेषण खेल बना रहा हूं और मुझे अर्द्ध पारदर्शिता के साथ दो समस्याएं हैं।यूनिटी 5
प्रत्येक ग्रह दो गोलाकारों से बना होता है: एक संयुक्त सतह और बादल परत है, दूसरा (थोड़ा बड़ा त्रिज्या वाला) क्षैतिज 'चमक' को सामने के चेहरों को खींचकर और अल्फा को बाहरी किनारे की तरफ घुमाकर दिखाता है क्षेत्र। यह सबसे अच्छा काम कर रहा है, लेकिन निम्नलिखित दो समस्याओं के साथ:
1) मेरे कस्टम सतह शेडर में, जब मैं #pragma परिभाषा में अल्फा कीवर्ड का उपयोग करता हूं, अल्फा को प्रस्तुत क्षेत्र में फ़ैक्टर किया जाता है, लेकिन 'चमक' क्षेत्र कुछ हज़ार इकाइयों की दूरी पर गायब हो जाता है। यदि मैं अल्फा कीवर्ड शामिल नहीं करता हूं, तो क्षेत्र किनारे की ओर फीका नहीं है, लेकिन यह दूरी पर प्रस्तुत करता है।
2) सभी रेंडरटाइप, क्यूई, जेड्राइट और जेडप्थ विकल्पों को आजमाने के बावजूद, सतह क्षेत्र और 'चमक' क्षेत्र z-fight हैं; गेम यह तय नहीं कर सकता कि कौन से बहुभुज निकट हैं - चमक के क्षेत्र में चेहरों के नजदीक तथ्य को कम किया जाना चाहिए। मैंने प्लेयर कैमरे से चमकदार क्षेत्र को दूर करने और उसी अनुपात से अपने त्रिज्या का विस्तार करने की भी कोशिश की है, लेकिन मैं अभी भी, गोलाकारों के बीच ज़ेड-फाइटिंग प्राप्त कर रहा हूं!
क्या कोई ऐसी सेटिंग है जो मुझे याद आ रही है जो 'चमक' क्षेत्र को सतह के क्षेत्र के पीछे हमेशा खींचा जा सकेगा (बशर्ते मैंने ऊपर वर्णित ZWrite, ZDepth के सभी संयोजनों को आजमाया है) और क्या कोई तरीका है अल्फा-सक्षम ऑब्जेक्ट रखने के लिए दूरी पर गायब नहीं है?
मुझे यह पता लगाना प्रतीत नहीं होता है, इसलिए किसी भी मदद की सराहना की जाएगी!
संपादित
यहाँ मेरी 'चमक क्षेत्र' के लिए शेडर कोड है। सामने के चेहरे को खींचा जाता है। मैंने ऑफ़सेट कीवर्ड को कैमरे से आगे खींचे गए बहुभुजों को 'धक्का' देने का भी प्रयास किया है। और मैंने उन सभी टैग, जेड्राइट और जेडटेस्ट विकल्पों को आजमाया है जिन्हें मैं ढूंढने में सक्षम हूं। शेडर एक टिंट रंग, माहौल घनत्व नाव और सूरज दिशा वेक्टर ...
Shader "Custom/planet glow" {
Properties {
_glowTint ("Glow Tint", Color) = (0.5,0.8,1,1)
_atmosphereMix ("Atmosphere Mix", float) = 0
_sunDirection ("Sun Direction", Vector) = (0, 0, 0, 0)
}
SubShader {
Tags { "RenderType" = "Opaque" "Queue" = "Geometry" }
Cull Front // I want only the far faces to render (behind the actual planet surface)
Offset 10000, 10000
ZWrite On // Off also tried
ZTest LEqual // I have tried various other options here, incombination with changing this setting in the planet surface shader
CGPROGRAM
#pragma surface surf Lambert alpha
#pragma target 4.0
struct Input {
float3 viewDir;
};
fixed4 _glowTint;
float _atmosphereMix;
float4 _sunDirection;
void surf (Input IN, inout SurfaceOutput o) {
_sunDirection = normalize(_sunDirection);
o.Albedo = _glowTint;
float cameraNormalDP = saturate(dot(normalize(IN.viewDir), -o.Normal) * 4.5);
float sunNormalDP = saturate(dot(normalize(-_sunDirection), -o.Normal) * 2);
o.Alpha = _atmosphereMix * sunNormalDP * (cameraNormalDP * cameraNormalDP * cameraNormalDP); // makes the edge fade 'faster'
o.Emission = _glowTint;
}
ENDCG
}
FallBack "Diffuse"
}
क्या आप एलओडी का उपयोग करते हैं? एलओडी 250 की तरह? यदि हां इसे हटा दें। –
कोई एलओडी शामिल नहीं है। यद्यपि सूचक के लिए धन्यवाद। – moosefetcher
क्या आप यहां अपने शेडर्स कोड शामिल कर सकते हैं? मैं इस प्रभाव के कारण कुछ भी नहीं सोच सकता। इसके अलावा, आधिकारिक एकता मैनुअल में सूचीबद्ध नहीं होने के बावजूद, ZTest Off एक मान्य विकल्प है। – HalpPlz