计算机图形学 着色(shader) 学习笔记

news2024/11/16 13:22:51

画家算法:从远到近的光栅化,近的物体的着色覆盖远的物体的着色,近的物体的RGB优先 


实际计算机图形学使用的是Z-Buffer深度缓冲

先看地板,地板要渲染的像素先放进二位数组内,接下来要看正方体,正方体与之前地板的像素位置要近,那么将对应的地板像素的二位数组像素给覆盖成正方体的像素吗,如下图:

小正方形内的数字代表距离相机的远近程度,越近的就将远的像素信息给覆盖掉 

r是离光源的半径,离光源越远,Ld(漫反射光源的强度,其他各种光照通过各种反射最后到该位置的亮度强度)值越小,由于n, l为单位向量,n与l的点集就为n的模乘以l的模乘以cos,则角度越小,接触的通光量则越少,则光亮度越弱,由于不考虑光线折射,cos角度大于180的场景(大于180°后点集值为负),所以做了一个max(0, n ^ l)的操作,Kd是漫反射的颜色

上图为颜色强度越来越强的效果图 

现在给Ls(高光向光源强度,最亮的光源到该位置的亮度)增加一个系数p,目的是防止太远的物体也能受到反射光的影响,如下图,将cos的幂提高即可有效满足远处物体不受反射光效果影响的目的

 

最后一个就是收到环境光的影响La,相当于整个环境都存在一个常量的光,让整个场景不至于一点东西都看不见而存在的La

由La(环境光)+ Ld(漫反射光)+ Ls(高光)综合相加而决定的最后的光照强度


渲染管线:

1、通过各种Rotation、Scale、Translation等操作过后生成各个三维的空间

2、通过相机把三维空间位置先压缩到单位为2的正方体内

3、将正方体内的空间通过[ width / 2, 0, 0 width / 2 ]的矩阵将三维空间的X,Y轴上的点变换到屏幕

                                         [ 0, height / 2, 0, height / 2 ]

                                         [ 0, 0, 1, 0 ]

                                         [ 0, 0, 0, 1 ]

4、再次通过Z-Buffer的算法将Z轴的坐标,画到屏幕上

5、通过采样,将要渲染的像素进行标示出来,由于采样会由锯齿,所以通过模糊再采样的形式减少抗锯齿带来的视觉影响。

6、shader着色(考虑环境光、漫反射光、强光影响),将RGB颜色画在各个像素上完成渲染管线


Texture Mapping(纹理映射):

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端路由应该理解的一些前置知识

1. URI和URL 与URI相比,我们更熟悉URL。URL正是使用web浏览器等访问web页面时需要输入的网页地址。比如我们经常输入的 https://www.baidu.com/ 就是 URL 1.1 统一资源标识符 URI是 Uniform Resource Identifier 的缩写。RFC2396分别对这三个单词进行了以下定义: Uniform …

Spring的基础用法

前言 上面的目录内容本文章不一定都会写到,本次的文章将非常简略,主写主要内容,次要内容需要读者有一定的学习基础才可以看懂以及掌握,本文章比较偏向于理论复习,注意是理论,本文章代码不多,代…

【python】异常处理及程序调试(一)

异常类和异常处理 一、程序的错误类型 语法错误:不符合语法规则而产生的错误,如:标识符命名错误,缩进错误,访问未定义的变量等。这类错误在编辑或解释时就会被检测出来,产生这类错误,程序将会…

node.js+uni计算机毕设项目基于微信小程序点餐与结账系统LW(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

2023跨年代码(烟花+自定义文字+背景音乐+雪花+倒计时)

2023年快要到来啦,很高兴这次我们又能一起度过~ 目录 一、前言 二、跨年烟花 三、效果展示 倒计时 2023​编辑 兔圆圆​编辑 四、编码实现 index.html 烟花,雪花,背景音乐,页面样式 index.js 自定义文字 五、获取代码 需…

算法 | 如何通过Math.random()方法实现X平方或更多次方的概率?

前言 本文主要介绍Java中Math.random()方法以及该方法的简单应用。 每种语言都有随机方法,在Java中的随机方法有Math.random()方法、Random类。 Math.random Math.random()方法的返回值的是double类型,其返回值的范围为[0,1),包含0&#…

每日笔记

下周要做一个hmi获取登录码、小程序码的新接口,需要用到新的知识来实现这个功能 接口英文名 getUnlimitedQRCode 功能描述 该接口用于获取小程序码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量…

Es客户端学习

版本:opensearch-rest-high-level-client-2.3.0.jar,httpcore-nio-4.4.11.jar,httpasyncclient-4.1.4.jar 问题背景 初始化es索引逻辑是监听大数据团队消息,然后异步写入es(org.opensearch.client.RestHighLevelClient#bulkAsyn…

七、Kubernetes1.25应用部署、发布的两种方式

1、概述 通过现代的 Web 服务,用户希望应用程序能够 24/7 全天候使用,开发人员希望每天可以多次发布部署新版本的应用程序。 容器化可以帮助软件包达成这些目标,使应用程序能够以简单快速的方式发布和更新,而无需停机。这段话是Ku…

智子商城项目实践开发文档

ZutShop Junior practical training project 在csdn暂存一下开发文档 本人大三做的实训项目,前后端分离。 后端:https://github.com/roydonGuo/ZutShop 前端使用Vue,前端项目地址:https://github.com/roydonGuo/ZutShop-Vue 0. …

python利用json和pyecharts画折线图实例

目录 一.json模块对数据进行处理 二.利用pyecharts画折线图 三.利用pyecharts画美、日、印三国家折线图 四.本文数据集 注:本次实验的数据在文章最后面,我已上传至百度网盘 一.json模块对数据进行处理 上面三个txt文本是这三个国家疫情爆发相关的数据 …

linux有磁盘空间却显示不足 linux中inode使用率过高处理办法

linux中inode使用率过高处理办法 前几天收到监控告警,说Inode节点空间不足,之前没处理过这种问题,所以记录一下处理过程,便于以后查阅。 Inode使用率高并不会影响系统正常运行和新文件的创建,但是当使用率达到100%的…

【Linux】Linux编译器gcc/g++的使用

今天不学习,明天变垃圾。 文章目录一、程序的翻译过程1.预处理(1.2.3把你的代码编译成二进制代码)2.编译(C语言 > 汇编语言)3.汇编(无法被执行的二进制文件,为什么捏?&#xff09…

腾讯云Windows 轻量应用服务器如何搭建 FTP 服务?

本文档介绍如何在 Windows 操作系统的轻量应用服务器上通过 IIS 搭建 FTP 站点。 本文搭建 FTP 服务组成版本如下: Windows 操作系统,本文以系统镜像 Windows Server 2012 为例。IIS:Web 服务器,本文以 IIS 8.5 为例。 步骤1&am…

自行车在线租赁管理系统的设计与实现

自行车在线租赁管理系统 摘 要 随着Internet的不断发展,在线租赁在现实生活中的使用和普及,自行车在线租赁行业成为近年内出现的一个新行业,并且能够成为大众广为认可和接受的行为和选择。设计自行车在线租赁管理系统的目的就是借助计算机…

(四)汇编语言——简单程序

目录 编写程序的工作过程 编写汇编源程序 伪指令 汇编指令 注释 编写步骤 编译连接 编译 连接 运行 总结 编写程序的工作过程 接下来,我们简单介绍一下一个汇编程序,从写出到最后执行,他到底经历了哪些步骤。 编写汇编源程序 首先…

vue3 antd项目实战——修改table表格的默认样式(一)调整table表格每行(row)行高过高问题

vue3 antd项目实战——修改ant design vue table组件的默认样式(调整每行行高)知识调用场景复现实际操作解决a-table表格padding过宽知识调用 文章中可能会用到的知识链接vue3ant design vuets实战【ant-design-vue组件库引入】css样式穿透(…

node.js+uni计算机毕设项目基于微信小程序的房屋交易平台(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

智能超表面(RIS)辅助双功能雷达和通信波束形成设计(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 智能超表面,也叫做“可重配智能表面”,或者“智能反射表面”,英文为RIS(Reconf…

springboot消息

发送短信的简单原理 activemq 5.17 版本的 需要java11 环境 mq 网页版本控制台 账号密码为admin 指定发送的名 即上图的默认名为itheima 监听器 自动监听消息 接受 如果接受到消息 还想再其他地方使用 可以使用sendto 使用管理员权限 登录 然后列出插件 安装插件 r…