Unity3D

来源:互联网 发布:淮南大数据小镇规划 编辑:程序博客网 时间:2024/06/06 13:01

创建Shader

  1. Assest -> Create -> Shader,可以创建一个Shader。
  2. Unity提供了丰富的内建Shader,基本上满足普通的开发需求。
  3. 编写Shader需要对OpenGL或Direct3D的渲染状态有基本的了解,以及一些固定功能管线、可编程管线、Cg/HLSL/GLSL编程语言知识。
  4. 使用哪种Shader需要根据游戏的画面要求以及游戏的运行硬件平台来决定。这3中Shader也可以再游戏项目中一起使用。无论是那种Shader,实际的Shader代码(比如Cg、HLSL)都需要嵌在ShaderLab代码中,Unity需要通过ShaderLab代码来组织Shader的结构。
// Shader的名称Shader "MyShader" {     Properties {        // 在这里定义Shader中使用的属性,例如用颜色、向量、纹理        _MyTexture ("My Texture",2D) = "white" {}    }    SubShader {        // 在这里编写Shader的实现代码        // 包括表面着色器、顶点、片段着色器的Cg、HLSL代码        // 或者是固定功能管线着色器的ShaderLab代码    }    SubShader {        // 在这里实现简化版的备选Shader,用于在不支持高级Shader的老硬件设备上    }}

Shader类型

  1. 表面着色器(Surface Shaders):通常情况下用户都会使用这种Shader,它可以与灯光、阴影、投影器进行交互。表面着色器的层次比较高,它可以容易的以简洁的方式实现出复杂的着色器效果。表面着色器可以同时正常工作在向前渲染以及延迟渲染模式下。表面着色器以Cg、HLSL语言进行编写。
  2. 顶点和片段着色器(Vertex and fragment Shaders):如果需要一些表面着色器无法处理的酷炫效果,或者是写的Shader不需要与灯光进行交互,或者想要的只是全屏图像效果,那么可以使用定点和片段着色器。这种Shader可以非常灵活的实现需要的效果,但是需要编写更多的代码。顶点和片段着色器需要使用Cg、HLSL语言来编写。
  3. 固定功能管线着色器(Fixed Function Shaders):如果游戏需要运行在不支持可编程管线的老旧硬件上,那么就需要写这种Shader了。
原创粉丝点击