unity通用渲染管线(urp)实现逐像素光照

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

在参阅《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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值