Shader performance_shader performance data maybe unavailable due to d-程序员宅基地

技术标签: Unity3D  

 

 Performance of a shader mostly depends on two things: shader itself and which Rendering Path is used by the project or specific camera

 shader的性能依靠shader自己 和 被工程或摄像机使用的渲染路径。

From the rendering paths Unity supports, Deferred Lighting and Vertex Lit paths have the most predictable performance. In Deferred lighting, each object is generally drawn twice, no matter what lights are affecting it. Similarly, in Vertex Lit each object is generally drawn once. So then, the performance differences in shaders mostly depend on how many textures they use and what calculations they do.

延迟光照和顶点光照有最可预测的性能。延迟光照:无论什么灯在照射,每个物体被普遍绘制两次。顶点光照:每个物体被绘制一次。

shader的性能差异大部分依靠texture的数量和做什么计算。

In Forward rendering path, performance of a shader depends on both the shader itself and the lights in the scene. The following section explains the details. There are two basic categories of shaders from a performance perspective, Vertex-Lit, and Pixel-Lit.

在Forward rendering path中,shader的性能依靠shader自身和场景中的light。从性能观点区分有两类shader: Vertex-Lit 和 Pixel-Lit

Vertex-Lit shaders in Forward rendering path are always cheaper than Pixel-Lit shaders. These shaders work by calculating lighting based on the mesh vertices, using all lights at once. Because of this, no matter how many lights are shining on the object, it will only have to be drawn once.

在forward rendering path中,顶点光照shader比像素光照shader的开销小。这些shader通过计算mesh 顶点的光照,一次计算所以使用的灯光。正是这个原因,无论多少灯光正在照射这个问题,它仅仅被绘制一次。

Pixel-Lit shaders calculate final lighting at each pixel that is drawn. Because of this, the object has to be drawn once to get the ambient & main directional light, and once for each additional light that is shining on it. Thus the formula is N rendering passes, where N is the final number of pixel lights shining on the object. This increases the load on the CPU to process and send off commands to the graphics card, and on the graphics card to process the vertices and draw the pixels. The size of the Pixel-lit object on the screen will also affect the speed at which it is drawn. The larger the object, the slower it will be drawn

像素shader计算在每个被绘制像素点的最终灯光,因此,一个物体必须被绘制一次来得到周伟环境,主方向光一次,一旦额外的灯光照射它又是一次。

这个公式是N渲染通道。 N是最终照射到物体本身的像素灯数量。这增加了CPU来处理 和 发送给显卡来处理顶点和绘制像素命令的负担。像素灯在屏幕上的尺寸将影响被绘制地方的速度,这个物体越大,绘制越慢。

因此像素光照比顶点光照开销高,但这个开销在一些特殊的效果中是值得的: shadows, normal-mapping, good looking specular highlights and light cookies, just to name a few.

 

Remember that lights can be forced into a pixel ("important") or vertex/SH ("not important") mode. Any vertex lights shining on a Pixel-Lit shader will be calculated based on the object's vertices or whole object, and will not add to the rendering cost or visual effects that are associated with pixel lights.(即取决于灯光类型而不是shader,性能只和灯光类型参考的变量个数有关,如顶点光的计算取决于物体的顶点和整个物体)

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/long2324066440/article/details/44915791

智能推荐

使用脚手架新建Vue项目和熟悉WebStorm编辑器的使用_webstorm 调用echarts-程序员宅基地

文章浏览阅读256次。使用脚手架新建Vue项目和熟悉WebStorm编辑器的使用使用脚手架新建Vue项目熟悉WebStorm编辑器的使用WebStorm一些常用快捷键和用法WebStorm ctrl+shift+F 快捷键,无法打开全局搜索使用脚手架新建Vue项目安装淘宝镜像:npm install -g cnpm --registry=https://registry.npm.taobao.org安装vue脚手架:cnpm install vue-cli -g 安装后输入 vue list 用于检测是_webstorm 调用echarts

DB_BLOCK_CHECKING-程序员宅基地

文章浏览阅读79次。Property DescriptionParameter type StringDefault value OFFModifiable ALTER SESSION..._db_block_checking=med

如何使用c语言解析httppost请求_fcgx_fprintf-程序员宅基地

文章浏览阅读7k次。头文件#ifndef _UPLOAD#define _UPLOAD#include "fastcgi/fcgiapp.h"//#include "sysinc.h"#ifdef _WIN32/*! \def GRCALL* the calling convention of functions exported by modules.*/# define GRCALL __fcgx_fprintf

vitis2021.1 代码折叠_vitis2021.1 百度云-程序员宅基地

文章浏览阅读343次。把函数或者if else或#if #endif代码块折叠起来,提高阅读源码的简洁性。设置如下:启动vitis,点击 Windows -->> Preferences -->> Additional -->> c/c++ -->> Editor -->> Folding,勾选下图选项即可。然后把打开的代码页面关闭,重新打开就可;也可以重启vitis。全篇完。本人是一个嵌入式未入门小白,博客仅仅代表我个人主观见解,记录成.._vitis2021.1 百度云

rovio环境配置与测试笔记_rovio配置-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏8次。rovio环境配置与测试笔记参考博客 https://blog.csdn.net/yoouzx/article/details/53414400?utm_source=itdadao&utm_medium=referral参考博客 https://blog.csdn.net/u012348774/article/details/81414264参考博客 https://blog.c..._rovio配置

HTML5入门学习总结_html5学完之后怎么才能记忆犹新-程序员宅基地

文章浏览阅读3.1k次。这两天了解学习了一下HTML5的一些特性,做一些简单的知识总结HTML5的设计吸取了XHTML2的教训,HTML5的设计有一个主要的原则就是“支持已有的内容”,对于HTML5来说,并不存在创立的起始时间。doctype的格式变得十分简洁,并不含有版本号,因为HTML5支持现有的内容,任何未来的版本也支持HTML5中现有的内容。包含DOCTYPE的唯一原因是为确保浏览器以标准模式显示。

随便推点

element-ui中el-table的跨行,合并行计算方式_element表格行合并 返回值什么意思-程序员宅基地

文章浏览阅读3.6k次,点赞4次,收藏15次。背景在最近的一个迭代上,有一个功能点是在表格中做一个合并单元格的效果。大致如下图只有第一列合并行,跨行。合并的规则是纵向相邻的连续N行,如果id一致,则合并。看到这个需求一开始我以为很简单,表格跨行.跨列,不就是设置rowspan 和colspan。于是我就把这个功能点放到最后来实现了。等到真正去做的时候,查了一下element的文档,发现并没那么简单。需要自己动手去写一个方法设置每个单元格的rowspan和 colspan。 眼看要提测了,想偷懒的想借他山之石。于是在前端群里问了一下,又没人写过_element表格行合并 返回值什么意思

Ajax异步上传文件-程序员宅基地

文章浏览阅读104次。[b][color=green][size=large]近来,项目有个小需求需要使用到Ajax异步上传文件,本来Ajax是不支持上传文件的,但是可以通过IFrame技术模拟实现,异步提交,原理实际上就是利用了一个隐藏的Iframe子窗体,把提交的表单的target指向这个隐藏的窗体,在提交时,浏览器的头部还会出现加载信息,但是页面却没有任何刷新,勉强实现了Ajax的异步上传。好了,下面开始..._java做的ajax异步上传 图片或文件的demo 下载直接可以在eclipse的tomact的里面运

CentOS rpm卸载_rpm centos release el 卸载-程序员宅基地

文章浏览阅读3.9k次。1、首先使用:rpm -qa | grep java,如下图所示:2、然后依次执行:rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch,其中python-javapackages-3.4.1-11.el7.noarch是包的名称,如下图所示:3、再次执行rpm -qa | grep java进行查看,如下图所示:4..._rpm centos release el 卸载

针对FIFOQueue '_8_batch_1/fifo_queue' is closed and has insufficient elements 问题,解决心得。_fifoqueue '_25_batch/fifo_queue' is closed and has-程序员宅基地

文章浏览阅读1.7k次。最近,在学习tensorflow的过程中,制作tfrecords数据集时,时常会抛出tensorflow : Input to reshape is a tensor with 16384 values, but the request 49152等问题花了挺长时间,看了很多的博客,最终发现是制作数据时,有些图片出现问题。我的解决思路就是找到出问题的图片删除,问题自然就解决了,特此提供我..._fifoqueue '_25_batch/fifo_queue' is closed and has insufficient elements

Servlet(实现前后端连接)_servlet的前端界面在web,路径-程序员宅基地

文章浏览阅读3.4k次,点赞8次,收藏46次。目录概述准备工作在IDEA里创建一个web工程整理web工程目录结构修改资源输出位置(.class文件等的存放位置)修改jar包存放位置配置Tomcat服务器入门案例思路创建Servlet程序访问Servlet注解方式开发Servlet程序–1,创建新的web工程,创建Servlet–2,测试Servlet配置方式开发Servlet程序–1,创建Servlet类–2,配置Servlet类–3,测试–4,总结前后端..._servlet的前端界面在web,路径

java枚举详解_Java枚举的使用详解-程序员宅基地

文章浏览阅读355次。这篇文章主要介绍了 Java枚举的使用方法详解的相关资料,希望通过本文大家能掌握枚举的使用方法,需要的朋友可以参考下Java枚举的使用方法详解前言 你代码中的flag和status,都应该用枚举来替代很多人都说,枚举在实际开发中很少用到,甚至就没用到。因为,他们的代码往往是这样子的:public class Constant {/** 以下几个变量表示英雄的状态*/public final st..._java枚举击飞加眩晕运行指定逻辑