首页 > 其他分享 >games101一些问题及思考

games101一些问题及思考

时间:2023-10-18 21:44:29浏览次数:37  
标签:Space 矩阵 线性插值 像素 思考 纹理 空间 一些 games101

games101一些问题及思考

1. 透视投影为什么z值变大

从透视投影矩阵可以看出z会变大,但从直观上怎么想呢。

想象一段向无穷远处延伸的铁轨,假设有100m,但照片中前一半明显不足50m,后一段明显多于50m,可以体会到近平面和远平面之间的点都会向远平面压缩,使得出现近大远小的情况。

2. 各个空间以及变换之间的关系

**模型空间(Model Space) => M矩阵 => 世界空间(World Space) => V矩阵 => 视觉空间(以摄像机为中心)(View Space) => P矩阵 => 裁剪空间 (Clip Space) => Vertex Shader结束 => 透视除法 => 标准化设备空间(NDC) => 视口变换 => 屏幕空间(Screen Space) => 进入Fragmen Shader **

3. 纹理过小与过大

过小:对于一个高分辨率的背景应用一个低分辨率的纹理,屏幕上的临近几个像素点可能会映射到同一个纹理(由于纹理太小导致映射的纹理坐标被四舍五入),此时使用双线性插值

过大:近处一个像素覆盖的纹理较小,而远处一个像素覆盖的纹理较大,纹理过大会导致走样(近处锯齿,远处摩尔纹),此时可使用超采样,但效率较低。引用Mipmap

Mipmap:允许快速、近似的正方形范围查询

image-20230811111800351

首先存储类似以上的纹理图片,多使用1/3的存储空间,在一个屏幕像素覆盖纹理较大时既可查询在哪层图片时是一个像素(先用当前点与上右两个点映射计算出当前像素覆盖的大致范围,层数=log2L),对于非整数层,对D层与D+1层做双线性插值,再在层与层之间做线性插值(即三线性插值)。

image-20230811112913860

但由于可能对应的是一个较不规则的图形,正方形的近似效果不佳,会产生模糊的效果,此时可采用各向异性过滤,在Mipmap的基础上多存储了只拉伸长和只拉伸宽的纹理,这样可以查询矩形区域而不止是正方形。

image-20230811114224099

标签:Space,矩阵,线性插值,像素,思考,纹理,空间,一些,games101
From: https://www.cnblogs.com/zhangfirst1/p/17773420.html

相关文章

  • Kafka Broker一些特性
    4.1无状态的KafkaBroker:1.Broker没有副本机制,一旦broker宕机,该broker的消息将都不可用。2.Broker不保存订阅者的状态,由订阅者自己保存。3.无状态导致消息的删除成为难题(可能删除的消息正在被订阅),kafka采用基于时间的SLA(服务水平保证),消息保存一定时间(通常为7天)后会被删除。......
  • pytorch一些准备工作
    conda常用指令激活以及退出当前虚拟环境condaactivatexxxcondadeactivate创建以及删除condacreate-nxxxpython=3.8condaremove-nxxx查看当前虚拟环境有哪些condainfo--envs查看当前环境中有哪些库condalist安装与更新包condainstallnump......
  • 易语言关于微信收款监控软件写法的思考
    想写微信收款监控,正规途径是企业认证申请sdk。可是这个确实是有门槛的,好像每年都要交不少的钱,好像是,具体我也不记得了。如果能够监控收款,就可以利用微信写自动成交工具。很多卖虚拟的,就可以实现自动发卡。所以很多人就想走其他的捷径,看能不能绕过官方,自己监控。最简单的......
  • Day3 链表的一些基本练习
    Day3链表的基础练习最基本的删除节点Lc203我习惯的还是弄一个新的dummyhead,然后如果是要找的节点,就删除,删除完记得delete。//代码没什么好看的,主要就是熟悉链表的写法classSolution{public:ListNode*removeElements(ListNode*head,intval){ListNode......
  • ABP中关于Swagger的一些配置
    Abp集成Swagger官方文档,请参考SwaggerIntegrationAspNetCore配置Swagger,请参考Swashbuckle.AspNetCore本文的项目环境是AspNetCore6.0+Volo.Abp.Swashbuckle6.0.2Abp中默认的基础配置如下:publicoverridevoidConfigureServices(ServiceConfigurati......
  • fastify-sensible fastify 一些工具类插件
    fastify-sensible是来自官方的一个插件,提供了一些默认实现(实际上就是一些方便的工具类)方便使用说明对于基于fastify开发的一些接口服务,通用的http状态码,以及异常处理fastify-sensible是一个很不错的工具包参考资料https://github.com/fastify/fastify-sensible......
  • sys用户在sys.user$中的一些特殊现象浅析
    在Oracle数据库中,一般我们使用sys.user或dba_users去监控/检查用户密码是否快过期,另外,它还能监控新用户的创建时间、账号密码过期、账号修改时间等,dba_user其实是一个系统视图,它的数据来源于sys.user$等基础表。dba_user的定义如下所示:CREATE FORCE VIEW "SYS"."DBA_USERS" (......
  • 开发中常用的一些git命令及顺序性
    从远程仓库拉取代码:gitclone 仓库地址同步远程所有分支到本地(在任何已有分支下执行都行):gitremoteupdateorigin--prune  (如果要单独同步远程某个分支,则执行gitremoteupdateorigin远程分支名--prune,然后在vscode中左下角点击切换到该远程分支,则会在本地同步一......
  • 回归测试的实践与思考
    上周写了一篇关于测试过程效率演变的文章,其中聊了很多过程改进的方法。比如:需求阶段应该做好评审和风险预案;研发阶段应该做好质量卡点,持续集成流水线以及为研发自测做好辅助工作;测试阶段的重点是测试计划和质量门禁,同时关注线上的发布质量,通过线上巡检和监控,持续提升测试过程效率......
  • MYSQL:由一条慢查询引入思考 (MYSQL8)
    原文地址:https://mp.csdn.net/mp_blog/creation/editor/130300178​ 开始之前,我们先思考以下几个问题(下文将围绕以下三个问题展开):1.什么是慢查询,查询多少秒以上算是慢查询?2.如何解决慢查询和如何避免慢查询?3.提升查询性能必知必会 目录一、慢查询1.1 什么是慢查询?......