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博客

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Obsidian使用200+插件与70+种主题分享

主题资源 下载方式一: 网盘下载 密码:a3eu 下载方式二: 链接:https://pan.baidu.com/s/1fOgP8lY29sYxkUAbTlQQCw 提取码:qhxa 下载解压打开红色框文件夹 上面的是插件,下面的是主题 以下介绍安装主题 打开Obsidi…

一个可商用私有化部署的基于JAVA的chat-gpt网站

目录 介绍一、核心功能1、智能对话2、AI绘画3、知识库4、一键思维导图5、应用广场6、GPTS 二、后台管理功能1、网站自定义2、多账号登录支持3、商品及会员系统4、模型配置5、兑换码生成6、三方商户用户打通 结语 介绍 java语言的私有化部署的商用网站还是比较少的 这里给大家介…

DNF的概念和操作命令

yum是linux系统中基于rpm包管理的一种软件管理工具。 在dnf.conf文件中,我们可以配置某个网络服务器位软件源仓库。配置的方法,就是用vim编辑/etc/dnf/dnf.conf这个文件。

学Python,可以做哪些月入过万的兼职?

如果学了Python不做全职工作,那么可以靠哪些兼职赚到钱? 今天我们就来看看一位有着4年开发经验的老鸟的分析回答,希望对你有所帮助。 emmm… 以我差不多四年的 Python 使用经验来看,大概可以按以下这些路子来赚到钱,…

算法基础杂项

目录 1算法最优解 2.时间复杂度排序 3.对数器 1算法最优解 1.首先,保证时间复杂度最低 2.其次,保证空间复杂度最低 3.常数项低不低,一般没人管 2.时间复杂度排序 3.对数器 import java.util.Arrays;public class Test {public static …

Matlab|面向低碳经济运行目标的多微网能量互联优化调度

目录 主要内容 优化流程 部分程序 结果一览 下载链接 主要内容 该程序为多微网协同优化调度模型,系统在保障综合效益的基础上,调度时优先协调微网与微网之间的能量流动,将与大电网的互联交互作为备用,降低微网与大电…

Java八股文(XXL-JOB)

Java八股文のXXL-JOB XXL-JOB XXL-JOB xxl-job 是什么?它的主要作用是什么? xxl-job 是一款分布式任务调度平台,用于解决分布式系统中的定时任务和异步任务调度问题。 它提供了任务的注册、调度、执行和监控等功能,能够帮助开发者…

JavaScript进阶:js的一些学习笔记-4

文章目录 1. 拷贝1. 浅拷贝2. 深拷贝 2. 异常处理 1. 拷贝 这里指的拷贝是指拷贝引用类型的数据(对象) 1. 浅拷贝 拷贝对象:Object.assign() 或者 {…obj} 展开运算符 const obj {name:liuze,age:23 } const o {...obj}; o.age 22; console.log(o); console.…

埃隆·马斯克开源Grok的“难言之隐”与“野望”

2024年3月18日,马斯克兑现前几天的诺言,正式对Grok大模型进行开源。根据开源信息显示:Grok模型的Transformer达到64层,大小为314B;用户可以将Grok用于商业用途(免费),并且进行修改和…

4.1_4 文件的物理结构

文章目录 4.1_4 文件的物理结构(一)文件块、磁盘块(二)文件分配方式——连续分配(三)文件分配方式——链接分配(1)链接分配——隐式链接(2)链接分配——显式链…

AI+权重衰退

AI权重衰退 1权重衰退2代码实现 2丢弃法 1权重衰退 AI权重衰退是指在人工智能(AI)领域中的一种技术或方法,用于训练机器学习模型时对权重进行惩罚或调整,以避免过拟合现象的发生。 在机器学习中,过拟合是指模型在训练…

linux(Ubuntu22) 一篇带你学会Linux,详细篇

Linux 简介 精通Linux,自带python,系统开源 电脑可安装双系统 c盘安装win D盘安装linux 在一套硬件上只能同时运行一个操作系统 虚拟机 模拟真实环境 在虚拟机内运行操作系统 需要硬件支持虚拟化 开启VT-X VM…