GAMES101 学习 2

Lecture 7:Shading 1(lllumination,Shading and Graphics Pipeline)

Visibility / occlusion 解决可见性和遮挡的问题

可见性,Z-buffering

Z-Buffer 深度缓存

Idea:

  • Store current min. z-value for each sample (pixel)
  • Needs an additional buffer for depth values
  •  -- frame buffer stores color values
  •  -- depth buffer (z-buffer)store depth  

利用深度缓存的想法维护遮挡信息,维护深度缓存算法即可,与顺序无关

更新示例

--对于MSAA来说,深度缓存应该针对的是采样点而不是像素点 

shading:着色

引入明暗的不同,引入颜色的不同

给物体施加材质的过程。包括光照和texture。

Blinn-Phong Reflectance Model  

specular高光:与观察方向有关  镜面反射相关
diffuse漫反射:与观察方向无关,光线打过来,均匀地反射到四面八方。比如墙面
ambient环境光:间接光照,可以设置为常数

着色具有局部性,比如下面这张图,它只考虑了光照和自己,不考虑其他物体的存在,没有阴影

漫反射 Diffuse Reflection


光线考虑衰减,I/r^2,实际衰减的是irradiance(单位面积的光的power)

max的作用,如果点乘是负数的话没有物理意义,所以直接记为0

物体有颜色是因为会吸收一部分颜色光,然后反射不吸收的颜色光。

考虑每一点有不同的吸收率 就是图中的系数 kd (表示成三通道的rgb)

不管从哪里观测,看到的应该都一样,因为漫反射是均匀的射向四面八方

Lecture 8: Shading 2 (Shading ,Pipeline and Texture Mapping)

高光 Specular Term(Blinn-Phong)

简化了吸收的计算--Blinn-Phong 还是一个经验模型

指数p的作用是为了更合理的模拟

常用的p是 150 ~ 200

环境光 Ambient Term

常数

着色频率

顶点求法线  -- 与这个顶点有关系的所有三角形的发现求平均,也可以加权平均(三角形大小不一样)

Graphics (Real - time Rendering) Pipeline  实时渲染管线

如何从场景到一张图,经历的过程就是管线 

图形渲染管线

  • 三维空间顶点经过mvp矩阵变换,变成屏幕空间的顶点。
  • 屏幕空间的顶点,经过三角形处理,组成三角形。
  • 三角形经过光栅化,变成fragment(片元)。
  • fragment经过shading,计算光照、纹理映射(比如采用布林冯模型、微表面模型,就在此处进行相应的计算),变成fragment。
  • 带材质的fragment经过framebuffer(比如深度处理),变成屏幕上的图像。


*具体过程是,先进行mv矩阵变换,然后对顶点进行着色(包括法向量、纹理坐标、颜色等),之后投影矩阵变换,得到一个标准化立方体(正交投影得到标准立方体好理解,但其实透视投影得到的也是标准立方体,经过压缩之后的),之后经过视锥剔除这一步操作,避免不必要的时间消耗,此时得到的还是标准化立方体,顶点的坐标还是三维的,然后经过视口变换,得到对应屏幕大小的二维图像,此时的顶点包括所有需要的信息(包括法向量、纹理坐标、颜色等)。然后进入光栅化阶段,先进行三角形处理,对顶点与顶点之间做插值,然后做光栅化,对应到像素,然后做shadding(包括纹理映射),对像素着色,之后做可视化处理、alpha测试、模板测试等,上屏到显示设备

GPU -- 高度并行化的处理器

纹理映射

*重心坐标,用来做插值

参考文章:GAMES101 梳理 / 个人向图形学笔记-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/467236.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EPSON X1G005441020416 TG2016SMN高精度温补晶振

日本爱普生晶振是全球领先的晶振产品生产商,旗下的温补晶振(TXCO)是EPSON晶振公司产品中的重要产品线之一,其产品一直跟随产品需求变化,不断的更新,EPSON晶体晶振类产品主要包括32.768K时钟晶体MHz无源晶体,有源晶振,温补晶振等产品,且相对于业界同类厂家…

力扣思路题:最长特殊序列1

int findLUSlength(char * a, char * b){int alenstrlen(a),blenstrlen(b);if (strcmp(a,b)0)return -1;return alen>blen?alen:blen; }

Java后端八股----JVM篇

上图中线程1,2如果资源被抢占了,则程序计数器记录一下执行的行号,等到资源就绪后会从记录的行号继续向后执行。 Java8把静态变量以及常量放到了线程的本地内存原空间中(避免放在堆中不可控)。 👆图中第二种情况不太容易出现…

如何让图片放大后清晰度不变?

如何让图片放大后清晰度不变?在数字图像处理领域,保持图片放大后清晰度不变是一项具有挑战性的任务。传统的放大方法往往会导致图像模糊、失真,影响观感质量。然而,随着技术的不断进步,现在已经有了一些先进的方法和算…

代码随想录刷题笔记 Day 52 | 打家劫舍 No.198 | 打家劫舍 II No.213 | 打家劫舍III No.337

文章目录 Day 5201. 打家劫舍&#xff08;No. 198&#xff09;<1> 题目<2> 笔记<3> 代码 02. 打家劫舍 II&#xff08;No. 213&#xff09;<1> 题目<2> 笔记<3> 代码 03.打家劫舍III&#xff08;No. 337&#xff09;<1> 题目<2&g…

【GameFramework框架内置模块】8、文件系统(File System)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

如何解决网络中IP地址发生冲突故障?

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记&#xff0c;未经本人许可&#xff0c;请勿转载&#xff0c;如发现本笔记内容的错误还望各位不吝赐教&#xff08;笔记内容可能有误怕产生错误引导&#xff09;。 1、个人IP地址冲突解决方案 首先winR&#xff0c;调出…

Centos strema 9 环境部署Glusterfs9

本文档只是创建复制卷&#xff0c;分布式卷&#xff0c;分布式复制卷&#xff0c;纠删卷 操作系统 内核 角色 Ip地址 说明 CentOS Stream 9 x86_64 5.14.0-427.el9.x86_64 客户端 client 192.168.80.119 挂载存储业务机器 CentOS Stream 9 x86_64 5.14.0-427.el9.x8…

Fiddler不仅可以抓包,还可以做接口测试喔

前言 Fiddler最大的优势在于抓包&#xff0c;我们大部分使用的功能也在抓包的功能上&#xff0c;Fiddler做接口测试也是非常方便的。对应没有接口测试文档的时候&#xff0c;可以直接抓完包后&#xff0c;copy请求参数&#xff0c;修改下就可以了。 Composer简介 点开右侧Co…

【推荐系统】NCF神经协同过滤

NCF框架 NCF框架是本文要实现的3个模型的主体结构。 首先是输入层&#xff0c;分别包含两个特征向量 v u v_u vu​和 v i v_i vi​&#xff0c;描述了用户u和物品i。输入仅由一个用户向量和一个物品向量构成&#xff0c;它们分别是以one-hot编码的二值化稀疏向量。 接着是Em…

章节2:单词本该这样记

为什么我们记不住单词&#xff1f; 单词不是被胡编乱造出来的&#xff0c;单词是有规律的&#xff0c;单词是符合人类的逻辑的。 单词实际意思结构意义历史文化 我们要怎么记单词&#xff1f; 掌握单词的结构规律了解与单词有关的历史文化灵活巧计&#xff0c;不要太拘泥于…

MySQL的insert-on-duplicate语句详解

一、insert-on-duplicate语句语法 注意&#xff1a;ON DUPLICATE KEY UPDATE只是 MySQL的特有语法&#xff0c;并不是SQL标准语法&#xff01; INSERT INTO … ON DUPLICATE KEY UPDATE 是 MySQL 中一种用于插入数据并处理重复键冲突的语法。 这个语法适用于在 insert的时候…

MindGraph:文字生成知识图

欢迎来到MindGraph&#xff0c;这是一个概念验证、开源的、以API为先的基于图形的项目&#xff0c;旨在通过自然语言的交互&#xff08;输入和输出&#xff09;来构建和定制CRM解决方案。该原型旨在便于集成和扩展。以下是关于X的公告&#xff0c;提供更多背景信息。开始之前&a…

iOS报错-Command PhaseScriptExecution failed with a nonzero exit code

问题&#xff1a;iOS debug没问题&#xff0c;一打包就报错&#xff1a; Command PhaseScriptExecution failed with a nonzero exit code 解决方法如下&#xff1a; 在项目的Pods目录下&#xff0c;找到Targets Support Files->Pods-xxxx-frameworks.sh 如下&#xff1a…

C语言数组—二维数组

二维数组的创建 //数组创建 int arr[3][4]; //三行四列&#xff0c;存放整型变量 double arr[2][4];二维数组的初始化 我们如果这样初始化&#xff0c;效果是什么样的呢 int arr[3][4] { 1,2,3,4,5,6,7,8,9,10,11,12 };那如果我们不写满十二个呢 int arr[3][4] { 1,2,3,4…

数据可信流通:从运维信任到技术信任

1.数据可信流通概念 "数据可信流通"通常指的是确保数据在不同系统、应用程序或者组织之间的传输和交换过程中的可信性、完整性和安全性。在数据流通的过程中&#xff0c;确保数据的真实性、完整性和保密性是非常重要的&#xff0c;尤其是涉及到敏感信息或者重要数据…

Day21:实现退出功能、开发账号设置、检查登录状态

实现退出功能 将登录凭证修改为失效状态。跳转至网站首页。 数据访问层 不用写了&#xff0c;已经有了updateStatus方法&#xff1b; 业务层 UserService public void logout(String ticket) {loginTicketMapper.updateStatus(ticket, 1);}Controller层 RequestMapping(p…

glib交叉编译

Glib交叉编译 逸一时&#xff0c;误一世。 —— 田所浩二「夏夜银梦」 交叉编译 GLib 涉及到在一个平台上生成能够在另一个平台上运行的目标文件。在这种情况下&#xff0c;我们将会在一台主机&#xff08;通常是开发机器&#xff09;上使用交叉编译工具链来构建 GLib 库&#…

Linux:git的基础操作

git的下载 版本控制系统一般分为两种&#xff0c;集中式版本控制系统&#xff0c;分布式版本控制系统 什么是集中式版本控制系统&#xff1a;版本库集中存放在中央服务器&#xff0c;工作时候使用自己的电脑&#xff0c;当工作时候在中央服务器上拉取最新版本的代码&#xff0c…

微服务:高并发带来的问题的容错方案

1.相关脚本&#xff08;陈天狼&#xff09; 启动nacos客户端&#xff1a; startup.cmd -m standalone 启动sentinel控制台&#xff1a; # 直接使⽤jar命令启动项⽬(控制台本身是⼀个SpringBoot项⽬) java -Dserver.port8080 -Dcsp.sentinel.dashboard.serverlocalhost:808…