相关疑难解决方法(0)

glsl折射被颠倒映射

我正在glsl中实现折射.我正在使用frag着色器中提供的折射功能来获得所需的效果.但是我得到的折射,它的颠倒.我认为这是错误的......任何想法为什么会如此?

这是我在顶点着色器中所做的:

vec3 worldView = normalize(vec3(WorldCameraPosition-worldPos));
refractor = refract(-worldView, worldNorm, Eta); // eta = 0.66;
Run Code Online (Sandbox Code Playgroud)

然后我做的碎片着色器:

vec4 refractColor = textureCube(cubeMap, refractor); 
Run Code Online (Sandbox Code Playgroud)

http://www.cse.ohio-state.edu/~duttas/Images_5542/Capture.PNG http://www.cse.ohio-state.edu/~duttas/Images_5542/Capture.PNG

opengl shader glsl

7
推荐指数
1
解决办法
3830
查看次数

光线追踪:由于相机移动导致的球体失真

我正在从头开始构建光线追踪器。我的问题是:当我更改相机坐标时,球体更改为椭圆形。我不明白为什么会这样。

以下是一些显示文物的图像:

Sphere: 1 1 -1 1.0 (Center, radius)
Camera: 0 0 5 0 0 0 0 1 0 45.0 1.0 (eyepos, lookat, up, foy, aspect)
Run Code Online (Sandbox Code Playgroud)

输入相机 0 0 5 0 0 0 0 1 0 45.0 1.0

但是当我更改相机坐标时,球体看起来扭曲,如下所示:

Camera: -2 -2 2 0 0 0 0 1 0 45.0 1.0
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我不明白出了什么问题。如果有人可以提供帮助那就太好了!

我将 imagePlane 设置如下:

   //Computing u,v,w axes coordinates of Camera as follows:

 {       
        Vector a = Normalize(eye - lookat);  //Camera_eye - Camera_lookAt
        Vector b = up;    //Camera Up Vector 
        m_w = a;
        m_u = b.cross(m_w);
        m_u.normalize();
        m_v = m_w.cross(m_u);
}
Run Code Online (Sandbox Code Playgroud)

之后,我从相机位置(眼睛)计算每个像素的方向,如下所述: …

c++ raytracing

4
推荐指数
1
解决办法
3044
查看次数

标签 统计

c++ ×1

glsl ×1

opengl ×1

raytracing ×1

shader ×1