对数/线性 Z 缓冲区阴影贴图

2024-04-12

问题在于,伪影出现在距离很远的阴影中。我想尝试制作一个对数深度缓冲区,但我不明白应该在哪里完成以及如何完成......我对全向阴影贴图使用点光源方法

顶点着色器:

#version 460 core
layout (location = 0) in vec3 aPos;

uniform mat4 model;
uniform float zCoef;
//out vec4 pos;

void main() {
    gl_Position = model * vec4(aPos, 1.0f);
//    gl_Position.z = log2(max(1e-6, gl_Position.w + 1.0)) * zCoef - 1.0;
//    gl_Position.z *= gl_Position.w;
}

几何着色器:

#version 460 core
layout (triangles) in;
layout (triangle_strip, max_vertices = 18) out;

uniform mat4 shadowMatrices[6];
uniform float zCoef;

out vec4 FragPos; // FragPos from GS (output per emitvertex)

void main()
{
    for(int face = 0; face < 6; ++face)
    {
        gl_Layer = face; // встроенная переменная, указывающая на то, какую грань мы рендерим
        for(int i = 0; i < 3; ++i) // для каждой вершины треугольника
        {
            FragPos = gl_in[i].gl_Position;
            gl_Position = shadowMatrices[face] * FragPos;
//            gl_Position.z = log2(max(1e-6, gl_Position.w + 1.0)) * zCoef - 1.0;
//            gl_Position.z *= gl_Position.w;
            EmitVertex();
        }
        EndPrimitive();
    }
}

片段着色器:

#version 460 core
in vec4 FragPos;

uniform vec3 lightPos;
uniform float farPlane;
uniform float zCoef;

void main() {
    float lightDistance = length(FragPos.xyz - lightPos);

    lightDistance = lightDistance / farPlane;

    gl_FragDepth = lightDistance;
}

伙计们,请帮助我,我尝试使用线性化深度,但它也不起作用..


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对数/线性 Z 缓冲区阴影贴图 的相关文章

随机推荐

  • 架构:API 作为网站和移动应用程序的核心

    我对完整的架构理念有不同的问题 我希望有丰富经验的人可以帮助我 因为我几乎陷入了所有可能性之中 我正计划重写一个社区网站 我们的客户希望将来使用本机移动应用程序 所以我需要考虑到这一点 因此 我决定创建一个基于 PHP 框架 Kohana
  • 为什么 Final 字典不能用作 TypedDict 中的文字?

    我正在尝试完成以下任务 请参阅 from typing import TypedDict Final account schema Final name str email str Account TypedDict Account acc
  • $.mobile.activePage 属性到底是如何工作的?

    我正在尝试如下 document bind pageshow function e data console log page spots console log mobile activePage if mobile activePage
  • Flask框架:MVC模式

    Flask框架天然支持MVC模式吗 我应该将应用程序的哪些部分视为模型 什么部分视为视图 什么部分视为控制器 通常 根据我的经验 Flask 应用程序如下所示 main dir app1 init py api py models py s
  • 使用 ServicePointManager 固定 Xamarin SSL/TLS

    我们正在使用 Xamarin 开发一款移动应用程序 最初将在 Android 和 iOS 上运行 并计划将来移植到 Windows Phone 如果使用它的 3 个人尖叫得足够大声的话 正在传输的数据的性质以及该应用程序将允许的操作 SSO
  • ServiceMix 中 Apache-Camel 路由的管理和监控

    作为 Camel 和 ServiceMix 的用户 我经常需要监控这些工具以进行开发 我主要使用 JConsole 从 ServiceMix 和 Camel 访问 MBean 它为 ESB 开发人员提供了一些非常有用的指标 我还使用 kar
  • 两种长宽比的两种布局(4:3 和 16:9) - 自动更改

    下列的Microsoft 规模指南 http msdn microsoft com en us library windows apps hh780612 aspx有一部分说 设计固定布局时 首先为基线分辨率设计布局 1024x768 和
  • Webpack 提供了一个数组作为配置

    在这个 webpack 入门套件中https github com webpack react starter https github com webpack react starter我看到 webpack production con
  • 按标准从 pandas 数据框(或 numpy ndarray?)中选择

    我发现自己正在编写这种模式a lot tmp
  • 成功后动态改变EndDialog中的RTF内容

    多亏了这个question https stackoverflow com a 33679439 1076116 我能够执行自定义操作来临时更新和动态修改 MSI 数据库 简而言之 我正在做 CustomAction public stat
  • 使用参数作为用户定义变量?

    我们在非 GUI 模式下运行测试 并传入各种参数 如服务器 端口 线程等 我们还希望在 GUI 模式下运行测试 并能够在 GUI 中更改这些参数 我想做的是使用 2 个用户定义的变量对象 其中一个包含我们可以编辑的静态数据 另一个包含参数
  • 返回结构体数组还是结构体指针数组?

    如果您需要退回struct从函数中 您通常会返回一个指向struct反而 如果您想返回结构数组 建议 返回结构体数组 指向第一个元素的指针 或者返回一个结构体指针数组 我为以下两个选项画了一个图表 1 2 给出以下结构定义 struct v
  • 小型 ARM 微控制器的 RTOS 内核之间的可量化差异 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有许多不同的 RTOS 可用于微控制器 我专门寻找支持 ARM Cortex M 处理器的 RTOS 另外 我对闭源解决方案不感兴趣 试图从网站
  • 离线、跨选项卡通信(仅限 JavaScript)

    是否可以找到某些网站的国外实例 Ofc 这些是独立打开的选项卡 不是通过 window open 我需要阻止用户打开 2 个选项卡 并向之前打开的选项卡发送消息以告知无法打开 2 个选项卡 2个独立的选项卡可能会破坏页面离线存储和webSQ
  • GLubyte 与 GLshort 指数

    查看 OpenGL 中顶点数组的文档 我发现用于索引的两种最常见的内存类型是 GLubyte GL UNSIGNED BYTE 和 GLshort GL SHORT 我想知道使用两者作为索引是否有任何实际区别 谢谢 龙鹩莺 GL UNSIG
  • iOS 中键盘出现时将 UIView 向上移动

    我有一个 UIView 它不在 UIScrollView 内 我想在键盘出现时向上移动我的视图 在我尝试使用此解决方案之前 当键盘存在时 如何使 UITextField 向上移动 https stackoverflow com questi
  • 如何在 Swift 中优雅地检查 .first(where:) 闭包中的 case 枚举?

    假设我有这个枚举 enum Item case foo String case bar String 以及它的列表 let items Item foo aa bar bb 我想找到first foo其中的一项 这就是我所做的 items
  • SignTool.exe 偶尔会失败,退出代码为 1

    作为构建系统的一部分 我们使用带有证书的 Signtool exe 在构建二进制文件后对其进行签名 偶尔 很难说什么时候会发作 签名失败 error MSB3073 The command C Program Files Microsoft
  • 如何在具有不同画布大小的 ggplot2 绘图网格中保持一致的轴缩放

    编辑 清除描述和代码示例 添加绘图 我有一个数据集 其中包含几种动物的位置 我为每只动物创建了位置散点图网格 因为图的 x y 是距离 所以我想使每个图本身的 x y 保持相同的比例 因此距离没有失真 和跨图 这样我可以比较具有相同比例的不
  • 对数/线性 Z 缓冲区阴影贴图

    问题在于 伪影出现在距离很远的阴影中 我想尝试制作一个对数深度缓冲区 但我不明白应该在哪里完成以及如何完成 我对全向阴影贴图使用点光源方法 顶点着色器 version 460 core layout location 0 in vec3 a