当前位置: 首页 > news >正文

Fixed Function Shader

Properties 属性

Shader语法不区分大小写

基础的数据类型

如何定义一个属性

  • 属性要在"Properties{}"代码块中定义

 Properties{_Color("Main Color",Color) = (1,1,1,1)_Shininess("Shininess",range(0,8)) = 4_MainTex("MainTex",2D) = ""{}
}
  • 一个属性的组成

   _Color("Main Color",Color) = (1,1,1,1)
  1.  _Color:属性名字(在之后的代码块中,调用到这个属性时,使用的名字)
  2. "Main Color":在Unity中,我们在面板中看到的名字
  3. Color:数据类型
  4.  (1,1,1,1):数据的默认值

SubShader  shader代码块    

一个Shader中可以存在一个或多个"SubShader{}",但是显卡每次渲染处理的时候只能选择一个SubShaders执行

执行顺序是最先处理最上方的"SubShader{}",如果显卡版本不支持第一个"SubShader{}",就会依次执行下面的"SubShader{}"

在编写多个"SubShader{}"时,一般第一个是最复杂的,对显卡要求最高,依次写更支持低版本显卡的"SubShader{}",越往下,算法和指令越简单

Pass 通道

"Pass{}"写在SubShader{}代码块中

"Pass{}"包含了一系列的渲染状态设置命令

Name

通过Name命令,给Pass通道设置名字,这个名字可以通过C#脚本访问到

  Pass{    Name "ExampleNamedPass"
}

Tag 

标签是可以分配给通道的键值对数据。Unity 使用预定义的标签和值来确定如何以及何时渲染给定的通道。您还可以使用自定义值创建自己的自定义通道标签,并从 C# 代码访问它们。

Shader "Examples/SinglePass"
{SubShader{Pass{                Name "ExamplePassName"Tags { "ExampleTagKey" = "ExampleTagValue" }// ShaderLab commands go here.// HLSL code goes here.}}
}

例如

  • 设置材质球属性
  • 设置光照
  • 设置贴图属性
  • 设置透明度

Material 材质

Diffuse[_Color] _color是在Properties中定义的属性

  Material{Diffuse[_Color]         //材质球颜色Ambient[_Ambient]       //材质球环境光Specular[_Specular]     //高光    搭配 Separatespecular 使用Shininess[_Shininess]   //高光强度Emission[_Emission]     //自发光
}Separatespecular On         //独立的镜面的高光效果 打开

Lighting 光照

 Lighting On                 //光照效果 打开  (off关闭)

Settexture 贴图

   Settexture[_MainTex]        //设置贴图 Settexture只能设置一张贴图{combine texture * primary double    //combine-混合    texture-贴图    primary-之前计算好的顶点光照    (double-数值翻倍,quad-数值×4)}Settexture[_SecondTex] {constantColor[_Constant]                                //生成 constant 的颜色信息 combine texture * previous double , texture * constant  //previous-之前所有顶点光照贴图计算的数据     ,texture-在","添加texture,意思是使用贴图的透明通道信息    constant贴图再混合一个color属性调整透明度}

 完整代码

Shader "Custom/TestShader"
{Properties{_Color("Main Color",Color) = (1,1,1,1)_Ambient("Ambient",Color) = (0.3,0.3,0.3,0.3)_Specular("Specular",Color)= (1,1,1,1)_Shininess("Shininess",range(0,8)) = 4_Emission("Emission",Color) = (1,1,1,1)_MainTex("MainTex",2D) = "white"{}_SecondTex("SecondTex",2D) = ""{}_Constant("ConstantColor",Color) = (1,1,1,0.3)}SubShader{Tags { "Queue"="Transparent" }          //设置渲染顺序Pass{Blend SrcAlpha OneMinusSrcAlpha     //混合透明通道//Color(1,0,0,1)//Color[_Color]Material{Diffuse[_Color]         //材质球颜色Ambient[_Ambient]       //材质球环境光Specular[_Specular]     //高光    搭配 Separatespecular 使用Shininess[_Shininess]   //高光强度Emission[_Emission]     //自发光}Lighting On                 //光照效果 打开  (off关闭)Separatespecular On         //独立的镜面的高光效果 打开Settexture[_MainTex]        //设置贴图 Settexture只能设置一张贴图{combine texture * primary double    //combine-混合    texture-贴图    primary-之前计算好的顶点光照    (double-数值翻倍,quad-数值×4)}Settexture[_SecondTex] {constantColor[_Constant]                                //生成 constant 的颜色信息 combine texture * previous double , texture * constant  //previous-之前所有顶点光照贴图计算的数据     ,texture-在","添加texture,意思是使用贴图的透明通道信息    constant贴图再混合一个color属性调整透明度}}}
}

http://www.lryc.cn/news/69354.html

相关文章:

  • HTML- 标签学习之- 列表、表格
  • Canal搭建 idea设置及采集数据到kafka
  • CentOS7搭建伪分布式Hadoop(全过程2023)
  • Linux中文件描述符fd和文件指针filp的理解
  • CSS color中常用英文色值
  • Springboot idea 中 maven配置问题,找不到依赖:Could not find artifact xxxx
  • 编译原理笔记(一)引论
  • C++ 类和对象下 [补充]
  • [CTF/网络安全] 攻防世界 PHP2 解题详析
  • 图神经网络:(节点分类)在Cora数据集上动手实现图神经网络
  • RabbitMQ应用问题——消息补偿机制以及代码示例
  • 量化特征贡献度函数:feature_importances_函数/LGBMClassifier/XGBClassifier
  • 总结JVM重要知识点
  • 奇技淫巧第8期
  • 这个 归并排序详解过程 我能吹一辈子!!!
  • docker版jxTMS使用指南:自动生成代码
  • 聚观早报 | 小冰启动GPT克隆人计划;ofo创始人在美创业改做咖啡
  • 面试造航母,入职拧螺丝,工资离了个大谱...
  • Python+selenium自动化元素定位防踩坑
  • 【计算机组成原理】实验一
  • 前端022_广告模块_修改功能
  • makefile 学习(3):C++的编译及库文件的生成与链接
  • Ceph crush运行图
  • 【分布族谱】泊松分布和二项分布、正态分布的关系
  • 关于QTreeWidget的setData函数
  • Microsoft Office 2003的安装
  • 使用Spring Boot和Spring Cloud实现多租户架构:支持应用多租户部署和管理
  • 智聚北京!相约全球人力资源数智化峰会
  • 工业缺陷检测数据及代码(附代码)
  • CentOS 安装MongoDB 6.0