zoukankan      html  css  js  c++  java
  • 第5篇 Shader的组织和优化

    第5篇 Shader的组织和优化 - Unity 3D ShaderLab开发实践

    chapter 30 shader的组织和复用

    1 通过cginc文件实现复用,可以定制自己的cginc文件,然后通过#include包含进来,实现shader代码的复用。

    2 可以通过UsePass实现复用:

    Shader "Test" {
    SubShader {
    	UsePass "Test/My"
    }
    }
    

    3 定义自己的Shader关键字,运行时更改关键字改变shader行为

    shader代码如下:

    image

    脚本中的代码如下:

    image

    chapter 31 必须知道的渲染概念

    • 逐点计算:在vertex函数中进行的计算就叫做逐点计算;
    • 逐像素计算:在fragment函数中进行的计算叫做逐像素计算,和物体在屏幕上的大小相关;是shader的计算和渲染优化的重点
    • 上述两个方法选择:尽量把计算移动到vertex函数中;
    • draw call:CPU为GPU准备渲染数据,并指令GPU进行一次渲染的操作(是重量级的);一个Draw Call的消耗还要具体看Draw Call的内容;
    • Batching的概念和Unity为优化DrawCall所做的工作:通过把数个或数百个简单的、共用同一材质的物体合并为一个mesh。Unity Draw call batching小结_图形学和游戏开发小学生-CSDN博客
    • 利用渲染队列,后渲染的物体尽量有更多的范围被遮挡;

    chapter 32 基于渲染路径的优化

    一定不要在ForwardAdd中计算除了_WorldSpaceLightPos0之外的任何光源,这是非常耗时的事情。

    针对Deferred渲染路径,它必然是逐像素进行的。

    chapter 33 移动平台上的优化

    对于tex2D/texCUBE指令,在移动平台上,一个读取贴图的指令和一个普通的数学运算指令消耗大概相差至少一个数量级;在PC平台,这个差别更大,大概在两个数量级以上。

    对于mipmaps的选项,如果游戏是3D,一定要打开mipmaps选项。慎用后期效果,慎用透明效果。

    版权说明

    作者: grassofsky

    出处: http://www.cnblogs.com/grass-and-moon

    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(grass-of-sky@163.com)咨询.

  • 相关阅读:
    A题
    CTF--web BugKu-ctf-web(1-10)
    CTF--web 攻防世界web题 robots backup
    CTF--web 攻防世界web题 get_post
    BUUCTF-Crypyo-No.1
    攻防世界-新手篇(Mise)~~~
    BJDCTF-2020-WRITEUP---TiKi小组
    TKCTF-学校内部的校赛
    BUUCTF-BJD(更新V1.0)
    线程池(1)-参数
  • 原文地址:https://www.cnblogs.com/grass-and-moon/p/15271935.html
Copyright © 2011-2022 走看看