碰到这样的问题,居然非常淡定
这个链接里说了问题:
一个哥们A问,为什么include urp common.hlsl 提示莫名其妙
另一个哥们B说,这个issue 说了,可能是这个原因(也没正面答)
从issue我们知道:
(问题出在12.0.0 2021年-01月更新的版本,添加了_PREV_MATRIX_M这两个宏)
为了? motion vector Rendering?我们甚至不知道这个是TMD Vector渲染是做啥的
还只是为了,GPUInstance
结果,就是新版本 12.0之后,2021年过年回来,就不能直接调用内部的 hlsl
链接
https://www.reddit.com/r/Unity3D/comments/12gqxbc/undeclared_shader_defines/
居然发现在搜索栏,这里,直接输入,相当于全局搜索,可以查到所有相关,可方便阅读代码
解决方法
//就是很粗暴的添加 define 引用
//公共方法库
#ifndef CUSTOM_COMMON_INCLUDED
#define CUSTOM_COMMON_INCLUDED
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonMaterial.hlsl"
#include "UnityInput.hlsl"
//定义一些宏取代常用的转换矩阵
#define UNITY_MATRIX_M unity_ObjectToWorld
#define UNITY_MATRIX_I_M unity_WorldToObject
#define UNITY_MATRIX_V unity_MatrixV //这些定义,估计也是被替换掉,很可能不生效
#define UNITY_MATRIX_VP unity_MatrixVP //这些定义,估计也是被替换掉,很可能不生效
#define UNITY_MATRIX_P glstate_matrix_projection //这些定义,估计也是被替换掉,很可能不生效
//这里不行:#define UNITY_PREV_MATRIX_M (float4x4)0
//获取值的平方
float Square (float v) {
return v * v;
}
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl"
#define UNITY_PREV_MATRIX_I_M (float4x4)0
#define UNITY_PREV_MATRIX_M (float4x4)0
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceTransforms.hlsl"
#endif
结果没提示出错了
后续有什么隐藏问题不确定,至少是不出错了