找回密码
 立即注册
查看: 150|回复: 0

[笔记] 《Unity Shader 入门精要》 笔记(二)Unity shader概述

[复制链接]
发表于 2024-7-15 18:59 | 显示全部楼层 |阅读模式
前言
代码太多之后就不在文章里给出来了,我会以链接的方式给出书上代码的复现代码,我会在代码里添加一些注释,让大师更好理解,有需要查看源码可以参考我给出的链接,如果可以的话,可以给我的github加个star,thank you!
Unity Shader -> 控制衬着的抽象层




Unity Shader

Shader Lab


  • 属性 (property) -> 声明这些属性是为了在材质面板中能够便利地调整各种材质属性
  • SubShader -> 概况着色器代码写在这里,一个SubShader对应一个显卡平台,当Unity需要加载这个Unity Shader时,Unity选择第一个能够在方针平台上运行的SubShader。如果都不撑持的话,Unity就会使用Fallback指定的Unity Shader。SubShader中定义了流程Pass以及衬着状态设置[RenderSetup]和标签[Tags]。每个Pass定义了一次完整的衬着流程。
注:概况着色器是Unity本身缔造的一种着色器代码类型,是Unity对顶点/片元着色器的更高一层的抽象。Unity 为我们措置了这些片元的光照细节。但在背后,Unity还是会把它转化成一个包含多Pass的顶点/片元着色器。
衬着状态设置 -> 全局生效




衬着状态设置

全局标签




全局标签

Pass -> 顶点/片元着色器代码写在这里


  • 名字:在shader中通过名字访谒其他shader的pass(UsePass)
  • 标签:与SubShader中定义的全局标签分歧
  • 状态:与SubShader一样,但是局部生效



写在pass中的标签类型

如安在Unity中使用shader -> 一个简单的shader脚本

1.为gameObject添加两个Component:Mesh Filter->用来绑定mesh;Mesh Renderer->用来为mesh绑定Material,设置暗影;
2.为一个Mesh Renderer添加Material->用来快速调整shader效果
3.为一个Material添加一个shader脚本->在shader里编写各种衬着设置、效果,以及定义表露在Material中供用户快速调整的属性
Unity内置变量和函数





CG/HLSL 语义


  • 语义可以让Shader知道从哪里读取数据, 并把数据输出到哪里
  • 系统数值语义(system-value      semantics),这类语义是以sv开头的
  • 常用语义
注:即便语义的名称一样,如果呈现的位置分歧,含义也分歧。





Debug -> 建议使用RenderDoc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-8 09:49 , Processed in 0.099642 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表