Unity面试题 每日5题 06

26. 如何实现战争迷雾

后续Unity实现后分享


27. Unity优化手段,Draw call ( cpu gpu)

概念:Draw call就是一个命令,它的发起方是CPU,接收方是GPU。这个命令仅仅会指向一个需要被渲染的图元列表,而不会再包含任何材质信息。当给定一个Draw Call时,GPU会根据渲染状态和所有输入的顶点数据开始进行计算。CPU和GPU并行工作,它们之间通过命令缓冲区连接,CPU向其中发送渲染命令,GPU接收并执行对应的渲染命令。

如果Draw Call的数量太多,CPU就会把大量时间花费在提交Draw Call 上,造成CPU的过载,会影响帧率。

哪些手段可以减少Draw call次数:

1)Solid Color模式能满足需求的时候使用用Solid Color模式

2)尽量减少使用多个Canvas

3)尽量把同类型组件放在一起(因为如果一个Text,一个Image这样混着来,每个Text和Image都会产生Drawcall)

4)尽量使用图集,把多个小图片合在一起(如果每个Image都显示不同图片,那么每个Image都会产生1个Draw call)

5)减少实时光照的使用,可以烘焙成光照贴图去代替实时光

扫描二维码关注公众号,回复: 16854794 查看本文章


28. Pbr最重要的参数,几个方程

反射率方程

Lo(p,wo)=∫Ω(kdcπ+ksDGF4(wo⋅n)(wi⋅n))Li(p,wi)(wi⋅n)dwi

具体内容太过复杂,具体转载见每日5题 06补充


29. 如何搭建一个pbr工作流

PBR的工作流程主要分为两种,一种是基于金属的工作流 (Metal-Roughness),一种是基于镜面反射的工作流 (Specular-Glossiness)。Unity支持两种工作流,而UE4则只支持metallic工作流。

流程大概:基础模型->高模制作->拓扑->展UV->烘焙贴图->SP贴图制作->导入引擎

笔者曾经使用过PBR工作流程,对应软件MAYA,Z-brush,Substance Painter,Unity(UE)


30. Topk问题以及变种,各种解法

topK问题是经典的算法问题,其大意是从一个序列中找出最小(大)的k个数,面对这个问题最简单的方法当然是先排序后取前k个数,但这样有些浪费时间,比较经典的方法是借助快排和堆排的思想。

参考题目:

215. 数组中的第K个最大元素

具体解法可以有暴力,快排,冒泡排序,归并排序深度优先搜索,分治等等

这里分享JAVA冒泡排序:

class Solution {
    public int findKthLargest(int[] nums, int k) {
        for(int i = 0;i < k;i++){
            int max = i;
       
            for(int j = i+1;j < nums.length;j++)
                if(nums[j] > nums[max])
                    max = j;
 
            if(max!= i){
                int temp = nums[i];
                nums[i] = nums[max];
                nums[max] = temp;
            }
        }
        return nums[k-1];
    }
}

更多解法不妨去力扣题解看看

Unity面试题 每日5题 07

猜你喜欢

转载自blog.csdn.net/Anyo1n/article/details/126809903