Unity Shader 学习

shader:着色器
计算机中的三维模型本质上是一组数据,包括空间中顶点位置,法线方向,定点颜色等
GPU通过包括在模型的一系列数据进行计算,将结果提交给显示器
数据是美术做的事情,如何去计算数据是shader做的

应用阶段 (数据准备阶段,cpu)
:三维建模
场景搭建
灯光设置
贴图设置

几何阶段 (GPU)
:主要编辑顶点着色器及片元着色器

cpu与Gpu系统工作:

DrawCall:一个场景的drawCall多会在低端设备卡顿

cpu准备数据和渲染状态,调用drawCall,Gpu开始渲染。DrawCall很缓慢,cpu准备数据放到显存,Gpu从显存中取很慢,这就是一次drawCall

Gpu的渲染流程

顶点着色器:对每个顶点调用顶点着色器,计算顶点的颜色和坐标变换。

几何着色器:用点线面等图元数据通过Gpu的特性生成新的细节(新的图元,逐图元的着色)

裁剪:将无需渲染的部分裁剪掉,可以设置裁剪哪个面

屏幕映射:将坐标映射到屏幕坐标系,不可编程,将三维图像变为二维映射

三角形设置:根据顶点位置,颜色深度等得到三角形对屏幕像素的覆盖信息

三角形变换:检查像素是否被遮盖,如果是生成片元对片元内的像素进行插值

片元着色器:进行纹理采样,对每个像素计算光照结果。

逐片元操作:

OpenGL && DirectX :图像应用接口

显卡-》显卡驱动-》图像应用接口-》开发者

HLSL (DirectX兼容的高级shader编程语言)

GLSL(OpenGL兼容的高级shader编程语言)

CG (C for Graphic )for Nvidia

unity Shader Language (CG/HLSL)

Material 是shader的载体

创建shader:

1、Standard Surface Shader:unity提供的最基础,比较完备的shader,可以调节出一般的风格

2、Unlit Shader 可以做出特殊风格,例如素描等

3、Image Effect Shader 屏幕特效

4、Compute Shader 专门用来做特殊算法类的渲染,加快渲染速度

这里写图片描述

shaderPath:在material内的shader的路径

properties 在用户面板上调节的属性

_Name(“DIsplayName”,Type) = defaultValue

_Name 是在编程中的变量

DisplayName 在用户面板中显示的名字

Type 在用户面板调节的值类型

defaultValue 默认值

Subshader:

unity 会选择第一个可以在当前显卡可用的subshader执行

渲染状态设置。。

Cull Back/Front/off 剔除面

Ztest LessGreater/Lequal/GEqual/Equal/Always

检测像素在Z轴的深度

Zwrite on/off 设置靠近摄像机的值覆盖了远处的值

Blend 混合两个像素值的颜色

标签设置:

Tags{“Queue”=”Transparent”}
这里写图片描述

Subshader 中的pass

一个subshader中有很多pass,依次执行

定义的时候

Name “MyPass”

使用的时候

UsePass “MyShader/MYPass”要大写

FallBack 是本shader中内容不被支持时,选用低级shader替换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值