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)咨询.

  • 相关阅读:
    Nginx-->基础-->理论-->001:Nginx基本介绍
    Nginx-->基础-->理论-->nginx进程模型
    Nginx-->基础-->排错-->nginx错误总结
    Nginx-->基础-->安装-->001:安装总结
    网络-->监控-->单位换算
    网络-->监控-->OID-->BGP
    在腾讯云centOs系统上安装nginx
    react-native入门学习( 一 )
    对javascript变量提升跟函数提升的理解
    chrome浏览器好用的一些插件
  • 原文地址:https://www.cnblogs.com/grass-and-moon/p/15271935.html
Copyright © 2011-2022 走看看