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

UnityShader(十三)Unity内置的函数

在计算光照模型时我们需要得到许多数据,比如光源方向、视角方向这种基本信息。

在之前的例子中都是自行在代码里计算的,比如:

normalize(_WorldSpaceLight0Pos.xyz) 得到光源方向(这种方法实际只适用平行光)

normalize(_WorldSpaceCameraPos.xyz-i.worldPosition.xyz) 得到视角方向 

但是如果需要处理更复杂的光照类型(如点光源和聚光灯),之前的计算方式是错误的。

Unity提供了一些内置函数来帮助我们计算这些信息,在之前的章节我们也谈及过。

UnityCG.cginc中一些常用的结构体 
名称描述包含的变量
appdata_base可用于顶点着色器的输入顶点位置、顶点法线、第一组纹理坐标
appdata_tan可用于顶点着色器的输入顶点位置、顶点切线、顶点法线、第一组纹理坐标
appdata_full可用于顶点着色器的输入顶点位置、顶点切线、顶点法线、四组(或更多)纹理坐标
appdata_img可用于顶点着色器的输入顶点位置、第一组纹理坐标
v2f_img可用于顶点着色器的输出裁剪空间的位置、纹理坐标

 

UnityCG.cginc中一些常用的帮助函数
函数名描述
float3 WorldSpaceViewDir(float4 v)输入一个模型空间的顶点位置,返回世界空间中从该点到摄像机的观察方向。内部实现使用了UnityWorldSpaceViewDir函数
float3 UnityWorldSpaceViewDir(float4 v)输入一个世界空间中的顶点位置,返回世界空间中从该点到摄像机的观察方向。
float3 ObjSpaceViewDir(float4 v)输入一个模型空间的顶点位置,返回模型空间中从该点到摄像机的观察方向。
float3 WorldSpaceLightDir(float4 v)仅可用于前向渲染中。输入一个模型空间中的顶点位置,返回世界空间中从该点到光源的光照方向。内部实现使用了UnityWorldSpaceLightDir函数。没有被归一化。
float3 UnityWorldSpaceLightDir(float4 v)仅可用于前向渲染中。输入一个世界空间中的顶点位置,返回世界空间中从该点到光源的光照方向。没有被归一化。
float3 ObjSpaceLightDir(float4 v)仅可用于前向渲染中。输入一个模型空间中的顶点位置,返回模型空间中从该点到光源的光照方向。没有被归一化。
float3 UnityObjectToWorldNormal(float3 norm)把法线方向从模型空间转换到世界空间中
float3 UnityObjectToWorldDir(float3 dir)把方向矢量从模型空间变换到世界空间中
float3 UnityWorldToObjectDir(float3 dir)把方向矢量从世界空间转换到模型空间中

 

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

相关文章:

  • 【开源】基于Qt5的ROS1/ROS2人机交互软件(支持地图编辑/多点导航)
  • Spring和SpringBoot的区别是什么
  • 布局技巧及CSS初始化
  • excel怎么设置密码?轻松保护您的工作表
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TimePicker组件
  • Springboot集成Camunda并完成一条流程实例
  • 宠物用品/宠物自动饮水机方案
  • git小白进阶之路
  • 哈希表——C++
  • LabVIEW叶片厚度远程监控
  • el-table动态合并
  • 【DevOps】产品需求文档(PRD)与常见原型软件
  • 【QT+QGIS跨平台编译】之十八:【Expat+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 20240203
  • 【Spark实践6】特征转换FeatureTransformers实践Scala版--补充算子
  • 【知识点】设计模式
  • WPS WORD 宏导出高亮文本
  • python 基础知识点(蓝桥杯python科目个人复习计划32)
  • (算法二)滑动窗口
  • 【Go语言成长之路】Hello Go
  • 大数据应用开发3-Scala笔记1
  • android 网络拦截器统一处理请求参数和返回值加解密实现
  • Jmeter直连mysql数据库教程
  • 2024美赛数学建模B题思路分析 - 搜索潜水器
  • Tomcat在Java web的应用
  • Python爬虫某云免费音乐——多线程批量下载
  • Python实现TCP和UDP通信
  • 用HTML5 + JavaScript实现下雪效果
  • PDF操作——批量删除末页
  • Jasperreport 生成 PDF之省纸模式