在参阅《shader入门精要》的时候敲了一遍逐顶点光照的代码发现物体呈现紫色(渲染丢失),最后发现此代码在内置渲染管线中正常,但在hdrp/urp中出现问题,最后解决办法是将cg代码用hlsl重写(HDRP/URP自带的着色器也是用HLSL实现的)。
重写后的hlsl代码如下:
Shader "Custom/Blinnphong"{
Properties{
_Maintex ("Maintex", 2D) = "white"{
}
_Cubemap ("Cubemap ", CUBE) = "_Skybox"{
}
[Normal]_Normal ("Normal", 2D) = "bump"{
}
_Bumpscale ("Bumpscale", range(0,1)) = 1
[HDR]_DiffuseColor ("DiffuseColor", Color)= (1,1,1,1)
[HDR]_SpecularColor ("specularColor", Color)= (1,1,1,1)
_Gloss("Gloss", Range(1,255)) = 20
_EnvScale("EnvScale"

博客讲述了作者在学习Shader过程中遇到的问题,即使用CG代码实现的逐顶点光照在HDRP/URP中导致渲染异常,物体呈现紫色。通过将CG代码改写为HLSL解决了此问题。文章提供了重写后的HLSL着色器代码,实现了在Unity的High Definition Render Pipeline和Universal Render Pipeline中的正常渲染。
最低0.47元/天 解锁文章
1730

被折叠的 条评论
为什么被折叠?



