Tips of UnityShader

xiaoxiao2021-02-28  104

1. 

当你计算得到世界空间的法线的时候,第一句是错误的,光照显示到背面??? 第二、三句是相等的,可以使用顶点变换矩阵的逆转置矩阵对法线进行相同的变换 fixed3 worldNormal = normalize(mul(UNITY_MATRIX_M, v.normal)); fixed3 worldNormal = normalize(mul(v.normal, (float3x3)unity_WorldToObject)); fixed3 worldNormal = normalize(mul((float3x3)unity_ObjectToWorld, v.normal));

2.

UNITY_LIGHTMODEL_AMBIENT.xyz 环境光颜色

_WorldSpaceLightPos0.xyz 世界空间的光源位置,(默认一个光源前向渲染

_LightColor0.rgb 光源的颜色 这个变量属于内置变量,当前Pass处理的光源信息,需包含内置文件Lighting.cginc

_WorldSpaceCameraPos.xyz 世界空间的摄像机位置

o.worldNormal = mul(float(3*3)Unity_ObjectToWorld, v.vertex); 法线类型是float3类型,所以修改矩阵为3*3,不过貌似不修改也可以。类似的还有Unity_WorldToObject

TANGENT_SPACE_ROTATION

o.lightdir = mul(rotation, ObjSpaceLightDir(v.vertex)).xyz; 将顶点的光源入射方向转换到切向空间。

UnpackNormal此函数需要导入的图片类型为Normalmap

【Unity Shaders】初探Surface Shader背后的机制  http://blog.csdn.net/candycat1992/article/details/39994049

【Unity Shaders】法线纹理(Normal Mapping)的实现细节  http://blog.csdn.net/candycat1992/article/details/41605257

【D3D11游戏编程】学习笔记二十四:切线空间(Tangent Space) http://blog.csdn.net/bonchoix/article/details/8619624

为什么要有切线空间(Tangent Space),它的作用是什么? 

https://www.zhihu.com/question/23706933/answer/25591714

在Unity3D中使用Visual Studio调试shader http://blog.csdn.net/cbbbc/article/details/51131731

一个基于observer模式的游戏事件分发系统 http://blog.csdn.net/cbbbc/article/details/51567313

 

转载请注明原文地址: https://www.6miu.com/read-60269.html

最新回复(0)