Unity 面试篇|(七)Unity渲染与Shader篇 【全面总结 | 持续更新】

目录

    • 1.问一个Terrain,分别贴3张,4张,5张地表贴图,渲染速度有什么区别?为什么?
    • 2.什么是LightMap?
    • 3.MipMap是什么,作用?
    • 4.请问alpha test在何时使用?能达到什么效果?
    • 5.简述水面倒影的渲染原理?
    • 6.什么是渲染管道?
    • 7.写出光照计算中的diffuse的计算公式
    • 8.两种阴影判断的方法、工作原理。
    • 9.有A和B两组物体,有什么办法能够保证A组物体永远比B组物体先渲染?
    • 10.Unity的Shader中,Blend SrcAlpha OneMinusSrcAlpha这句话是什么意思?
    • 11.Vertex Shader是什么,怎么计算?
    • 12. Unity3D Shader分哪⼏种,有什么区别?
    • 13.分别解释顶点着色器和像素着色器是什么
    • 14.alpha blend工作原理
    • 15.矩阵相乘的意义及注意点
    • 16.Unity中三角面正面,背面是如何渲染的?
    • 17.法线贴图、CG 动画
    • 18.什么是投影矩阵
    • 19.什么是UV
    • 20.Cullback,cullfront,culloff区别
    • 21.什么是顶点程序和片段程序

1.问一个Terrain,分别贴3张,4张,5张地表贴图,渲染速度有什么区别?为什么?

  • 没有区别,因为不管几张贴图只渲染一次。

2.什么是LightMap?

  • LightMap:就是指在三维软件⾥实现打好光,然后渲染把场景各表⾯的光照输出到贴图上,最后⼜通过引擎贴到场景上,这样就使物体有了光照的感觉。

3.MipMap是什么,作用?

  • MipMapping:在三维计算机图形的贴图渲染中有常⽤的技术,为加快渲染进度和减少图像锯⻮,贴图被处理成由⼀系列被预先计算和优化过的图⽚组成的⽂件,这样的贴图被称为MipMap。
    • 优点:优化显存带宽,用来减少渲染。因为可以根据距离摄像机远近,选择适合的贴图来渲染。所以UI不适用MipMap。
    • 缺点:运行时占用更多内存,且增加包的容量。
      【使用 Mip maps 需要使用 33%以上的内存,但不使用它会导致巨大的性能损失】

4.请问alpha test在何时使用?能达到什么效果?

  • Alpha Test,中文就是透明度测试。
    简而言之就是V&F shader中最后fragment函数输出的该点颜色值(即上一讲frag的输出half4)的alpha值与固定值进行比较。Alpha Test语句通常于Pass{}中的起始位置。Alpha Test产生的效果也很极端,要么完全透明,即看不到,要么完全不透明。

5.简述水面倒影的渲染原理?

  • 原理就是对水面的贴图纹理进行扰动,以产生波光玲玲的效果。用shader可以通过GPU在像素级别作扰动,效果细腻,需要的顶点少,速度快

6.什么是渲染管道?

  • 是指在显示器上为了显示出图像⽽经过的⼀系列必要 操作。 渲染管道中的很多步骤,都要将⼏何物体从⼀个坐标系中变换到另⼀个坐标系中去。
  • 主要步骤有: 本地坐标->视图坐标->背⾯裁剪->光照->裁剪->投影-> 视图变换->光栅化。
  • GPU工作流程:顶点处理、光栅化、纹理贴图、像素处理
    • 顶点处理:这阶段GPU读取描述3D图形外观的顶点数 据并根据顶点数据确定3D图形的形状及位置关系,建 ⽴起3D图形的⻣架。
    • 光栅化:把⼀个⽮ᰁ图形转换为 ⼀系列像素点的过程就称为光栅化
    • 纹理贴图:就是将多边形的表⾯贴 上相应的图⽚,从⽽⽣成“真实”的图形。
    • 像素处理:这阶段(在对每个像素进⾏光栅化处理期 间)GPU完成对像素的计算和处理,从⽽确定每个像 素的最终属性。
    • 最终输出:由ROP(光栅化引擎)最终完成像素的输 出,1帧渲染完毕后,被送到显存帧缓冲区。
  • 总结:GPU的⼯作通俗的来说就是完成3D图形的⽣成,将图形映射到相应的像素点上,对每个像素进⾏ 计算确定最终颜⾊并完成输出。

7.写出光照计算中的diffuse的计算公式

  • diffuse = Kd x colorLight x max(N*L,0);
    Kd 漫反射系数、colorLight 光的颜⾊、N 单位法线向量、L 由点指向光源的单位向量、其中N与L点乘,如果结果⼩于等于0,则漫反射为0。

8.两种阴影判断的方法、工作原理。

  • 本影和半影:
    • 本影:景物表⾯上那些没有被光源直接照射的区域
      (全⿊的轮廓分明的区域)。
    • 半影:景物表⾯上那些被某些特定光源直接照射但并⾮被所有特定光源直接照射的区域(半明半暗区域)
  • ⼯作原理:从光源处向物体的所有可⻅⾯投射光线,将这些⾯投影到场景中得到投影⾯,再将这些投影⾯与场景中的其他平⾯求交得出阴影多边形,保存这些阴影多边形信息,然后再按视点位置对场景进⾏相应处理得到所要求的视图(利⽤空间换时间,每次只需依据视点位置进⾏⼀次阴影计算即可,省去了⼀次消隐过程)

9.有A和B两组物体,有什么办法能够保证A组物体永远比B组物体先渲染?

  • 把A组物体的渲染对列⼤于B物体的渲染队列。

10.Unity的Shader中,Blend SrcAlpha OneMinusSrcAlpha这句话是什么意思?

  • 作用就是Alpha混合。公式:最终颜色 = 源颜色源透明值 + 目标颜色(1 - 源透明值)

11.Vertex Shader是什么,怎么计算?

  • 顶点着⾊器是⼀段执⾏在GPU上的程序,⽤来取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作顶点。
  • Vertex Shader对输⼊顶点完成了从local space到homogeneous space(⻬次空间)的变换过程,homogeneous space即projection space的下⼀个space。
    在这其间共有world transformation, view transformation和projection transformation及lighting⼏个过程

12. Unity3D Shader分哪⼏种,有什么区别?

  • 表⾯着⾊器 的抽象层次⽐较⾼,它可以轻松地以简洁⽅式实现复杂着⾊。表⾯着⾊器可同时在前向渲染及延迟渲染模式下正常⼯作。
  • 顶点⽚段着⾊器可以⾮常灵活地实现需要的效果,但是需要编写更多的代码,并且很难与Unity的渲染管线完美集成。
  • 固定功能管线着⾊器可以作为前两种着⾊器的备⽤选择,当硬件⽆法运⾏那些酷炫Shader的时,还可以通过固定功能管线着⾊器来绘制出⼀些基本的内容。

13.分别解释顶点着色器和像素着色器是什么

  • 顶点着⾊器是⼀段执⾏在GPU上的程序,⽤来取代 fixed pipeline中的transformation和lighting,Vertex Shader主要操作顶点。‘’
  • 像素着色器实际上就是对每一个像素进行光栅化的处理期间,在GPU上运算的一段程序。
    不同与顶点着色器,像素着色器不会以软件的形式来模拟像素着色器。
  • 像素着色器实质上是取代了固定功能流水线中多重纹理的环节,而且赋予了我们访问单个像素以及访问每一个像素纹理坐标的能力

14.alpha blend工作原理

  • Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。

15.矩阵相乘的意义及注意点

  • 用于表示线性变换:旋转、缩放、投影、平移、仿射
  • 注意矩阵的蠕变:误差的积累

16.Unity中三角面正面,背面是如何渲染的?

  • 三角面正面是顶点顺时针,背面是顶点逆时针,如
    a
    b    c
  • a,b,c为逆时针,渲染背面。a,c,b为顺时针,渲染正面。

17.法线贴图、CG 动画

  • 法线贴图:是在原物体的凹凸表面的每个点上均作法线,通过RGB 颜色通道来标记法线的方向,你可以把它理解成与原凹凸表面平行的另一个不同的表面,但实际上它又只是一个光滑的平面。
  • CG 动画:原为Computer Graphics 的英文缩写。随着以计算机为主要工具进行视觉设计和生产一系列相关产业的形成,国际上习惯将利用计算机技术进行视觉设计和生产的领域通称为CG。它既包括技术也包括艺术,几乎囊括了当今电脑时代中所有的视觉艺术创作活动,如平面印刷品的设计、网页设计、三维动画、影视特效、多媒体技术、以计算机辅助设计为主的建筑设计及工业造型设计等。

18.什么是投影矩阵

  • 投影矩阵是一个典型的缩放和透视矩阵。投影变换将视锥变换成一个直平行六面体的形状。因为视锥的
  • 近处比远处小,这样就会对靠近摄像机的对象起到放大的作用,也就将透视应用到了场景当中

19.什么是UV

  • UV坐标是指所有的图象文件都是二维的一个平面。水平方向是U,垂直方向是V,通过这个平面的,二维的UV坐标系。我们可以定位图象上的任意一个象素。

20.Cullback,cullfront,culloff区别

  • 剔除背面、剔除前面、不剔除

21.什么是顶点程序和片段程序

  • 顶点着色器是一组指令代码,这组指令代码在顶点被渲染时执行。
  • 片段着色器也是在GPU 上运行的小程序。它们负责输出每个呈现的三角形像素的最终像素颜色。基本而言,它的工作原理如下:片段着色器以输入的形式收到顶点着色器通过管道传递的所有这些片段。

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

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

相关文章

【数据结构初阶】——顺序表

本文由睡觉待开机原创,转载请注明出处。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言,共同进步! 这里写目录标题 1.数据结构2.顺序表线性表顺序表的结构 3.动态顺序表的实现 1.数据结构 数据结构的概念&…

UKP3d的管道编辑

山西这家用户在使用UKP3d时,提出以下问题: 1、stp导入的模型怎么测量距离;另外需要把某一个点移动至原点坐标,这个怎么操作呢? 回复:dist(主要是捕捉点,推荐使用(开启精…

Java面试汇总——jvm篇

目录 JVM的组成: 1、JVM 概述(⭐⭐⭐⭐) 1.1 JVM是什么? 1.2 JVM由哪些部分组成,运行流程是什么? 2、什么是程序计数器?(⭐⭐⭐⭐) 3、介绍一下Java的堆(⭐⭐⭐⭐) 4、虚拟机栈(⭐⭐⭐⭐) 4.1 什么是虚拟机栈&…

Spark面试题

1. spark core 1.简述hadoop 和 spark的不同点(为什么spark更快)♥♥♥ shuffle都是需要落盘的,因为在宽依赖中需要将上一个阶段的所有分区数据都准备好,才能进入下一个阶段,那么如果一直将数据放在内存中&#xff0c…

【iOS】UICollectionView的基本使用

使用UITableView作为表格来展示数据完全没有问题,但仍有许多局限性,对于一些更加复杂的布局样式,就有些力不从心了 比如,UITableView只允许表格每一行只能显示一个cell,而不能在一行中显示多个cell,对于这…

数据结构_C++语言描述_高教出版社

contents 前言一、绪论1.1 数据分析结构存储算法计算1.1.1 逻辑结构1.1.2 存储结构1.1.3 算法实现 1.2 数据类型1.3 算法方法 二、线性表2.1 线性表的逻辑结构2.2 线性表的存储结构2.2.1 顺序存储结构2.2.2 链式存储结构 2.3 线性表的操作算法2.3.1 顺序表的操作算法2.3.2 链表…

华为系统底层是用Java写的吗?和安卓的区别?

HarmonyOS(鸿蒙操作系统)是华为自主开发的分布式操作系统。下面是对HarmonyOS底层的详细介绍: 微内核架构:HarmonyOS采用了微内核架构,将核心服务和功能放在微内核中,而将其他应用服务放在用户空间中。这种…

【c++函数重载】

文章目录 一. 命名空间二 .全缺省参数和半缺省参数三 . 函数重载 一. 命名空间 1.不指定域:先在局部找,再全局。 2. 指定域:到指定的命名空间去找。 3. 当把指定命名空间放开时,即using namespace std;例如放开标准c库…

5.2 基于深度学习和先验状态的实时指纹室内定位

文献来源 Nabati M, Ghorashi S A. A real-time fingerprint-based indoor positioning using deep learning and preceding states[J]. Expert Systems with Applications, 2023, 213: 118889.(5.2_基于指纹的实时室内定位,使用深度学习和前一状态&…

让uniapp小程序支持多色图标icon:iconfont-tools-cli

前景: uniapp开发小程序项目时,对于iconfont多色图标无法直接支持;若将多色icon下载引入项目则必须关注包体,若将图标放在oss或者哪里管理,加载又是一个问题,因此大多采用iconfont-tools工具,但…

Ubuntu安装maven并且配置阿里源

ubuntu环境搭建专栏🔗点击跳转 Ubuntu系统环境搭建(十二)——Ubuntu安装maven并且配置阿里源 文章目录 Ubuntu系统环境搭建(十二)——Ubuntu安装maven并且配置阿里源1.安装maven1.1更新源列表1.2安装1.3验证 2.配置阿…

【php】php去除excel导入时的空格

背景 PHPExcel_1.8.0导入excel,遇到trim无法处理的空格。 解决方案 $excelVal preg_replace(“/(\s| | |\xc2\xa0)/”, ‘’, $excelVal); 完整代码 thinkphp5代码 function readExcel($file) {require_once EXTEND_PATH . PHPExcel_1.8.0/Classes/PHPExcel.p…

靶场实战(18):OSCP备考之VulnHub MY CMSMS

打靶思路 资产发现 主机发现服务发现漏洞发现(获取权限) 80端口/HTTP服务 组件漏洞URL漏洞3306端口/MySQL服务 组件漏洞口令漏洞80端口/HTTP服务 URL漏洞URL漏洞提升权限 www-data用户 sudosuidcron内核提权信息收集armour用户 sudo 1、资产发现 1.1…

考研C语言刷编程题篇之分支循环结构基础篇(一)

目录 第一题 第二题 方法一:要循环两次,一次求阶乘,一次求和。 注意:在求和时,如果不将sum每次求和的初始值置为1,那么求和就会重复。 方法二: 第三题 方法一:用数组遍历的思想…

【大数据处理技术实践】期末考查题目:集群搭建、合并文件与数据统计可视化

集群搭建、合并文件与数据统计可视化 实验目的任务一:任务二: 实验平台实验内容及步骤任务一:搭建具有3个DataNode节点的HDFS集群集群环境配置克隆的方式创建 Slave 节点修改主机名编辑 hosts 文件生成密钥免认证登录修改 hadoop 的配置文件编…

Java并发编程: 并发编程中的ExecutionException异常

一、什么是ExecutionException 在并发编程中在执行java.util.concurrent.Future实现类的get方法时,需要捕获java.util.concurrent.ExecutionException这个异常。Future.get()方法通常是要获取任务的执行结果,当执行任务的过程中抛出了异常,就…

FastApi-参数验证的正确使用(3)

前言 本文是该专栏的第3篇,后面会持续分享FastApi以及项目实战的各种干货知识,值得关注。 继本专栏上一篇详细介绍FastApi的参数接收,本文再详细来介绍FastApi的参数验证。在python中推荐使用成熟的第三方库进行数据验证,这样不仅…

ThinkPad T14/T15/P14s/P15s gen2电脑原厂Win10系统镜像 恢复笔记本出厂时预装自带OEM系统

lenovo联想原装出厂Windows10系统,适用型号: ThinkPad T14 Gen 2,ThinPad T15 Gen 2,ThinkPad P14s Gen 2,ThinkPad P15s Gen 2 (20W1,20W5,20VY,20W7,20W0,20W4,20VX,20W6) 链接&#xff1…

Redis在Windows10中安装和配置

1.首先去下载Redis 这里不给出下载地址,自己可以用去搜索一下地址 下载 下载完成后解压到D盘redis下,本人用的是3.2.100 D:\Redis\Redis-x64-3.2.100 2.解压完成后需要设置环境变量,这里新建一个系统环境变量中path 中添加一个文件所…

WCP知识分享平台的容器化部署

1. 什么是WCP? WCP是一个知识管理、分享平台,支持针对文档(包括pdf,word,excel等)进行实时解析、索引、查询。 通过WCP知识分享平台进行知识信息的收集、维护、分享。 通过知识创建、知识更新、知识检索、知识分享、知识评价、知识统计等功能进行知识生命周期管理。 wcp官…