Unity Shader自定义光照模型

本文介绍了在Unity中自定义光照模型的过程,从修改SurfaceShader的默认光照模型到实现漫反射和镜面反射效果。通过理解lightDir和atten参数,结合dot方法计算入射光与法线的相似度,实现简单反射模型。进一步讨论了漫反射+镜面反射的光照模型,并探讨了光照模型在游戏开发中的应用,例如HalfLambert模型。
摘要由CSDN通过智能技术生成

前几天去一家公司面试,因为简历上写着“能写简单的Shader”,就被问了一个问题:怎么自定义一个光照模型?

直接懵逼了,隐隐约约能联想到的什么漫反射光+镜面反射光+环境光...难道是这个?光照模型就是#pragam surface surf Lambert里面的那个Lambert呗?这不都是写好的吗?还能自定义啊?!本着“程序是严谨的”的心态,宁可说不知道,也不能瞎说。。。

今天有空,抓紧学习一下自定义光照模型...


首先,新建一个SurfaceShader,打开后做如下修改

#pragma surface surf Standard fullforwardshadows >> #pragma surface surfMyLightingModel

之后,在SubShader块儿中实现这个光照模型:


inline float4 LightingMyLightingModel(SurfaceOutput s, fixed3 ligh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值