当前位置: 首页 > news >正文

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 上运行的小程序。它们负责输出每个呈现的三角形像素的最终像素颜色。基本而言,它的工作原理如下:片段着色器以输入的形式收到顶点着色器通过管道传递的所有这些片段。

相关文章:

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

目录 1.问一个Terrain,分别贴3张,4张,5张地表贴图,渲染速度有什么区别?为什么?2.什么是LightMap?3.MipMap是什么,作用?4.请问alpha test在何时使用?能达到什么…...

记录一些多维数组的方法

文章目录 前言一、获取多维数组的数据二、多维数组自带的方法总结 前言 验证过程中,我们经常会用到多维数组存储数据,本文主要记录一下,如何去获取我们需要的数据,以及多维数组自带的一些方法。 一、获取多维数组的数据 获取多维…...

Linux:gcc的相关知识

目录 gcc的翻译(编译)过程: 预处理: 条件编译: 编译: 汇编&链接: 什么是链接? 安装静态库: 静态库的使用: 动态静态的对比: 优缺对比…...

Linux的奇妙冒险———vim的用法和本地配置

vim的用法和本地配置 一.vim的组成和功能。1.什么是vim2.vim的多种模式 二.文本编辑(普通模式)的快捷使用1.快速复制,粘贴,剪切。2.撤销,返回上一步操作3.光标的控制4.文本快捷变换5.批量化操作和注释 三.底行模式四.v…...

微信小程序底部按钮适配iPhoneX以上,显示遮挡问题

只需要在给底部按钮加个样式 /* 底部导航栏容器 */ .button-box {/* 使用 safe-area-inset-bottom 属性适配 iPhone X 及以上型号设备 */padding-bottom: constant(safe-area-inset-bottom);padding-bottom: env(safe-area-inset-bottom);/* 其他样式属性 */ }iPhone6/7/8效果 …...

Qt容器QMap(映射)

插入数据 QMap<QString,QString> infoMap; //第一个是key 第二个是valueinfoMap.insert("王祖蓝","163cm");infoMap.insert("Anglebaby","168cm");infoMap["易烊千玺"] "173cm(成长中)";infoMap["姚…...

AI时代的创新工具:如何利用AI生成独具个性的XMind思维导图?

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff0c;物联网搬砖工一名&#xff0c;致力于为大家淘出更多好用的AI工具&#xff01; 背景 随着互联网的发展&#xff0c;越来越多的人开始使用Markdown来编写文档。Markdown是一种轻量级的标记语言&#xff0c;它允许人们使…...

【每日一题】最长交替子数组

文章目录 Tag题目来源解题思路方法一&#xff1a;双层循环方法二&#xff1a;单层循环 写在最后 Tag 【双层循环】【单层循环】【数组】【2024-01-23】 题目来源 2765. 最长交替子数组 解题思路 两个方法&#xff0c;一个是双层循环&#xff0c;一个是单层循环。 方法一&am…...

gin数据解析和绑定

1. Json 数据解析和绑定 客户端传参&#xff0c;后端接收并解析到结构体 package mainimport ("github.com/gin-gonic/gin""net/http" )// 定义接收数据的结构体 type Login struct {// binding:"required"修饰的字段&#xff0c;若接收为空值…...

TCP服务器最多支持多少客户端连接

目录 一、理论数值 二、实际部署 参考 一、理论数值 首先知道一个基础概念&#xff0c;对于一个 TCP 连接可以使用四元组&#xff08;src_ip, src_port, dst_ip, dst_port&#xff09;进行唯一标识。因为服务端 IP 和 Port 是固定的&#xff08;如下图中的bind阶段&#xff0…...

UML类图学习

UML类图学习 UML类图是描述类之间的关系概念1.类(Class)&#xff1a;使用三层矩形框表示2.接口(interface)&#xff1a;使用两层矩形框表示&#xff0c;与类图主要区别在于顶端有<<interface>>显示3、继承类&#xff08;extends&#xff09;&#xff1a;用空心三角…...

死锁面试题详解

什么是死锁&#xff1f; 死锁是指两个或多个进程在执行过程中&#xff0c;因争夺资源而造成的一种相互等待的现象&#xff0c;如果没有外力干涉&#xff0c;这些进程将永远无法继续执行 死锁通常发生在多个进程试图同时访问同一资源而无法获取的情况下&#xff0c;例如&#…...

【rust/bevy】使用points构造ConvexMesh

目录 说在前面问题提出Rapier具体实现参考 说在前面 操作系统&#xff1a;win11rust版本&#xff1a;rustc 1.77.0-nightlybevy版本&#xff1a;0.12github&#xff1a;这里 问题提出 在three.js中&#xff0c;可以通过使用ConvexGeometry从给定的三维点集合生成凸包(Convex Hu…...

【C语言】string.h——主要函数总结

string.h主要定义了字符串处理函数和内存操作函数。 字符串处理函数 strlen() 功能&#xff1a;strlen()函数返回字符串的字节长度&#xff0c;不包括末尾的空字符\0。 函数原型&#xff1a;size_t strlen(const char* s); 返回值&#xff1a;返回的是size_t类型的无符号整…...

如何在前端优化中减少页面加载时间?

在前端优化中&#xff0c;减少页面加载时间是至关重要的&#xff0c;因为快速加载的页面可以提高用户体验&#xff0c;减少跳出率&#xff0c;从而提升网站的整体性能。本文将介绍一些实用的前端优化技巧&#xff0c;以帮助您减少页面加载时间。 一、优化图片 图片是页面加载…...

Typecho后台无法登录显示503 service unavailable问题及处理

一、Typecho 我的博客地址&#xff1a;https://www.aomanhao.top 使用老薛主机动态Typecho博客框架handsome主题的搭配&#xff0c;文章内容可以异地网页更新&#xff0c;可以听后台背景音乐&#xff0c;很好的满足我的痛点需求&#xff0c;博客部署在云端服务器访问响应较快…...

Python入门(一)

anaconda安装 官网&#xff1a;https://www.anaconda.com下载 jupyter lab 简介&#xff1a; 包含了Jupyter Notebook所有功能。 JupyterLab作为一种基于web的集成开发环境&#xff0c;你可以使用它编写notebook&#xff0c;操作终端&#xff0c;编辑markdown文本&#xf…...

云表企业级无代码案例-自主开发ERP管理系统

痛点 我是一名企业经营者&#xff0c;同时也是信息化建设的坚定倡导者。凭借管理专业背景&#xff0c;我深知经营数据对于企业的至关重要性。如何高效搜集、精准分析经营数据&#xff0c;并将其转化为决策依据&#xff0c;直接关乎企业的生死存亡。太多因盲目决策而倒闭的企业…...

Qt —— 编译Qt5版本QFTP库,并实现连接服务、获取列表、上传、下载、删除文件等操作(附源码、附基于Qt5编译好的QFTP库)

示例效果1 示例效果2 介绍 QFTP是Qt4的库,Qt5改用了QNetworkAccessManager来代替。但是Qt5提供的QNetworkAccessManager仅支持FTP的上传和下载,所以只能将QFTP库编译为Qt5的库来进行调用。 QFTP在Github的下载地址:https://github.com/qt/qtftp 客户端源码生成的release结果…...

碰到es6的...拓展运算符

第一次碰到&#xff0c;哥们啥也不会 let searchForm ref({}) let formData ref({}) const initArgs async() > { args.value props.init_data formData .value { ...searchForm.value,//把值都带过来 workWhere : args.value.workWhere, statusArgs : args.value.sta…...

未发表】“VMD-BKA-CNN-BiLSTM四模型多变量时序预测一键对比Matlab代码

【未发表】VMD-BKA-CNN-BiLSTM四模型多变量时序预测一键对比 Matlab代码 可用于风电预测&#xff0c;光伏预测等 基于变分模态分解结合黑翅鸳算法优化卷积神经网络结合双向长短期记忆神经网络的数据多变量时序预测一键对比 各种对比图都有 包含VMD-BKA-CNN-BiLSTM,VMD-CNN…...

ASP.NET Core 认证鉴权实战:JWT、Policy 与权限边界怎么落地

实现场&#xff1a;一个后台退款接口原本只允许财务角色调用&#xff0c;但线上排查发现&#xff0c;普通运营账号只要拿到有效 token&#xff0c;也能调用成功。根因并不复杂&#xff1a;接口加了 [Authorize]系统只校验“是否登录”没有继续校验角色、权限和资源归属结果就是…...

megaAVR_PWM硬件PWM库:工业级实时PWM控制详解

1. megaAVR_PWM 库深度技术解析&#xff1a;面向工业级实时控制的硬件PWM实现1.1 工程背景与核心价值定位在嵌入式系统开发中&#xff0c;PWM&#xff08;脉宽调制&#xff09;是电机驱动、LED调光、电源管理及伺服控制等场景的基础技术。然而&#xff0c;大量开发者仍依赖anal…...

Comsol 复现气液固相变:管中流水加热气化的奇妙模拟之旅

comsol相变模拟&#xff0c;论文复现&#xff0c;气液固相变&#xff0c;管道高温热湿耦合 comsol管中流水加热气化&#xff0c;水由左侧流入右侧流出在科研与工程领域&#xff0c;对气液固相变以及热湿耦合现象的研究至关重要。而 Comsol 作为一款强大的多物理场仿真软件&…...

这家“冠军机器狗”企业广募人才 | 智身科技:邀你一起玩转具身智能

不止于工作&#xff0c;这是一场定义未来的邀约&#xff0c;一起奔赴具身智能的广阔未来。 01 我们是谁 智身科技成立于2023年&#xff0c;是一家专注于具身智能领域的高新技术企业。我们以自主研发为核心&#xff0c;构建了从核心部件、整机制造到场景化落地的全链条能力。 技…...

昇腾NPU部署Qwen3-30B-A3B避坑指南:从驱动检查到vLLM参数调优全解析

昇腾NPU部署Qwen3-30B-A3B实战手册&#xff1a;深度调优与异常处理全景指南 当你在深夜的服务器机房&#xff0c;面对闪烁的NPU状态灯和一堆报错日志时&#xff0c;是否曾希望有一份真正懂行的技术手册&#xff1f;本文将带你深入昇腾NPU部署Qwen3-30B-A3B大模型的每一个技术细…...

SEO_详解SEO优化的基本原理与核心策略介绍

<h2>SEO优化的基本原理&#xff1a;为什么SEO对网站流量至关重要</h2> <p>SEO优化&#xff0c;即搜索引擎优化&#xff0c;是指通过优化网站结构、内容和外部链接等多个方面&#xff0c;提高网站在搜索引擎结果页面上的排名&#xff0c;从而吸引更多自然流量…...

手把手教你用GDFN模块改进图像处理(附Restormer实战代码)

手把手教你用GDFN模块改进图像处理&#xff08;附Restormer实战代码&#xff09; 在计算机视觉领域&#xff0c;图像处理技术正经历着从传统方法到深度学习范式的深刻变革。作为这一变革的前沿代表&#xff0c;Restormer框架凭借其创新的Transformer架构&#xff0c;在图像去噪…...

LabelImg图像标注工具:3分钟掌握高效目标检测数据标注技巧

LabelImg图像标注工具&#xff1a;3分钟掌握高效目标检测数据标注技巧 【免费下载链接】labelImg LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check ou…...

Ubuntu 20.04 下通过 PPA 快速部署 qBittorrent 及配置指南

1. 为什么选择qBittorrent&#xff1f; 如果你经常需要下载大型文件&#xff0c;比如开源系统镜像、影视素材或者游戏资源&#xff0c;那么一个靠谱的BT客户端绝对是刚需。我在Ubuntu上试过各种BT工具&#xff0c;最终发现qBittorrent是最稳定高效的选择。它完全开源免费&#…...