Unity Shader学习:PBS和BRDF(基于物理着色和双向反射分布函数)

这篇博客介绍了Unity Shader的学习,主要探讨了基于物理着色(PBS)和双向反射分布函数(BRDF)的概念。虽然涉及复杂的数学光学和物理知识,作者通过查阅资料实现了一个类似Unity Standard Shader的效果,但尚未包含环境映射功能。
摘要由CSDN通过智能技术生成

Unity Shader学习:PBS和BRDF(基于物理着色和双向反射分布函数)

PBS和BRDF涉及到关于数学光学和物理方面的知识比较多,公式也有好几套,这里先初步的了解了一下,查阅网上的资料实现了个和Unity自带Standard差不多效果的,还没有添加环境映射。其中的公式和原理还是比较复杂的不太看得懂,先拿来用着吧。

shader部分:

Shader "Custom/PBSTest" {
   
	Properties{
   
		_MainTex("MainTex",2D)="white"{
   }
	    _Smoothness("Smoothness",Range(0.0,0.9999))=0.5
		_Metallic("Metallic", Range(0,1)) = 0.0
		_SpecularFactor("SpecularFactor",Range(0.0,5.0)) = 1.0
		_DiffuseFactor("DiffuseFactor",Range(0.0,5.0))=0.3
	}
		SubShader{
   
		Pass{
   
		CGPROGRAM
		#include "Lighting.cginc"
		#include "UnityCG.cginc"
		#pragma vertex vert
		#pragma fragment frag

		#define Pie 3.1415926535

		float _Smoothness;
		sampler2D _MainTex;
		samplerCUBE _Cubemap;
		float _Metallic;
		float _DiffuseFactor;
		float _SpecularFactor;

		struct v2f {
   
		float4 pos:SV_POSITION;
		float2 uv:TEXCOORD0;
		float3 normal:TEXCOORD1;
		float3 worldPos:TEXCOORD2;
        };

		struct OutPut {
   
			float3 Albedo;
			float3 normalDir;
			float3 halfDir;
			float Metallic;
			float Smoothness;
			float3 viewDir;
			float3 lightDir;
		};

		//平方
		float sqr(float value) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值