1
GLSL中的相对论着色器
我正在尝试实现一个GLSL着色器,该着色器有助于理解相对论的洛伦兹变换。 让我们拿两个与轴对齐的惯性观测器 O和O'。观察者O'处于运动中,观察者O具有速度v=(v_x,0,0)。 用O'坐标描述时,事件P' = (x',y',z',ct')已转换坐标(x,y,z,ct)= L (x',y',z',ct') 其中L是一个称为Lorentz变换的4x4矩阵,它可以帮助我们将事件P'的O坐标写入坐标中。 (有关详细信息,请参见http://en.wikipedia.org/wiki/Lorentz_transformation#Boost_in_the_x方向) 我已经写下了第一个初步的顶点着色器,该着色器在给定每个顶点速度的情况下应用了Lorentz变换,但是我无法使变换正常工作。 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 , …