मैं एक GLSL shader को लागू करने की कोशिश कर रहा हूं जो विशेष सापेक्षता लोरेंत्ज़ परिवर्तन को समझने में मदद करता है।
चलो दो अक्ष-संरेखित जड़त्वीय पर्यवेक्षक लेते हैं O
और O'
। प्रेक्षक O'
गति के O
साथ गति wrt पर्यवेक्षक में है v=(v_x,0,0)
।
O'
निर्देशांक के संदर्भ में वर्णित होने पर , एक घटना P' = (x',y',z',ct')
ने निर्देशांक को रूपांतरित कर दिया है(x,y,z,ct)= L (x',y',z',ct')
जहां L एक 4x4 मैट्रिक्स है जिसे लोरेंत्ज़ ट्रांसफॉर्मेशन कहा जाता है जो हमें निर्देशांक में इवेंट P 'के निर्देशांक लिखने में मदद करता है O
।
(विवरण के लिए http://en.wikipedia.org/wiki/Lorentz_transformation#Boost_in_the_x-direction देखें )
मैंने एक पहला प्रारंभिक वर्टेक्स शडर नीचे लिखा है जो लोरेंट्ज़ ट्रांसफ़ॉर्मेशन को हर वर्टेक्स पर वेग को लागू करता है, लेकिन मुझे सही तरीके से काम करने के लिए ट्रांसफ़ॉर्मेशन नहीं मिल सकता है।
vec3 beta= vec3(0.5,0.0,0.0);
float b2 = (beta.x*beta.x + beta.y*beta.y + beta.z*beta.z )+1E-12;
float g=1.0/(sqrt(abs(1.0-b2))+1E-12); // Lorentz factor (boost)
float q=(g-1.0)/b2;
//http://en.wikipedia.org/wiki/Lorentz_transformation#Matrix_forms
vec3 tmpVertex = (gl_ModelViewMatrix*gl_Vertex).xyz;
float w = gl_Vertex.w;
mat4 lorentzTransformation =
mat4(
1.0+beta.x*beta.x*q , beta.x*beta.y*q , beta.x*beta.z*q , beta.x*g ,
beta.y*beta.x*q , 1.0+beta.y*beta.y*q , beta.y*beta.z*q , beta.y*g ,
beta.z*beta.x*q , beta.z*beta.y*q , 1.0+beta.z*beta.z*q , beta.z*g ,
beta.x*g , beta.y*g , beta.z*g , g
);
vec4 vertex2 = (lorentzTransformation)*vec4(tmpVertex,1.0);
gl_Position = gl_ProjectionMatrix*(vec4(vertex2.xyz,1.0) );
यह शेडर प्रत्येक शीर्ष पर लागू होना चाहिए और गैर-रेखीय लोरेंत्ज़ परिवर्तन करना चाहिए, लेकिन यह जो परिवर्तन करता है वह स्पष्ट रूप से उस चीज़ से अलग है जो मैं उम्मीद करता हूं (इस मामले में एक्स-अक्ष पर एक लंबाई-संकुचन)।
क्या किसी ने पहले से ही 3 डी वीडियोगेम के लिए विशेष सापेक्षता shader पर काम किया है?
O
z- अक्ष को नीचे देख रहा है (जबकि 0 ऑब्जर्वर O'
गति के O
साथ गति wrt में है v_x
और इसमें बताई गई वस्तुएं O'
बाकी हैं। मुझे पता है कि इस शीर्ष छायादार में परिवर्तन केवल लंबों के लिए लागू किया जाता है ताकि लाइनों की विकृति खो जाए लेकिन मैं बस इसे समझना और काम करना चाहता हूं। लगता है कि खेल बहुपद पहले से ही इस तरह के बदलाव किए, लेकिन मुझे जो मिला है वह दिलचस्प नहीं है, क्योंकि मुझे एक ही परिणाम मिलता है! bit.ly/MueQqo