我正在尝试与片段着色器中的三角形进行光线交叉,如果它发生碰撞,我将在纹理中绘制一个黑点,如果没有碰撞,我将绘制纹理颜色。但它没有效果,我不知道有什么办法解决它。
它是地面的着色器并且具有来自顶点的几何体的坐标,该几何体将在地面着色器之后绘制。颜色也来自顶点着色器,光点是一个 vec3,在空间中有一个点,我想创建一条从片段位置到光点的光线,看看它是否与我创建的几何体发生碰撞在代码中。在我需要查看纹理中的交点是否为 alpha 之后,这将是下一个问题,现在我需要查看地面中几何体的阴影。
#version 330 core
#define INTERSECT_EPSILON 0.0001
out vec4 FragColor;
in vec2 TexCoord;
in vec3 geometryP;
in vec3 lampP;
in vec3 colorP;
in vec3 imagePos;
//texture samplers
uniform sampler2D groundTexture;
uniform sampler2D treeTexture;
struct Ray
{
vec3 Origin;
vec3 Direction;
};
float dot(vec3 firstPoint, vec3 secondPoint)
{
return (firstPoint.x * secondPoint.x + firstPoint.y * secondPoint.y + firstPoint.z * secondPoint.z);
}
vec3 cross(vec3 firstPoint, vec3 secondPoint)
{
vec3 crossResult;
crossResult.x = firstPoint.y*secondPoint.z - firstPoint.z*secondPoint.y;
crossResult.y = firstPoint.z*secondPoint.x …Run Code Online (Sandbox Code Playgroud)