Unity图形学之BRDF双向反射分布函数

news/2024/11/27 20:05:13/

1.描述了入射光线在非透明物体表面如何进行反射,也就是说多少光发生了漫反射,多少光发生了镜面反射

BRDF 函数计算的是“特定反射方向的光强与入射光强的比例”

2.各向异性 与 均向性 相反,是指在不同方向具有不同行为的性质,也就是其行为与方向有关,如在物理上,沿着材料做不同方向的量测,若会出现不同行为,通常称该材料具有某种“各向异性”,这样的材料表面称为各向异性表面

3.分布函数:光在表面是怎么分布的

灯光的遮挡:

Shader "Custom/BRDF"
{Properties{_SpeColor ("SpecColor", Color) = (1,1,1,1)_MainTex ("Albedo (RGB)", 2D) = "white" {}_SpecPower("SpecPower",float) = 1}SubShader{Tags { "RenderType"="Opaque" }LOD 200CGPROGRAM// Physically based Standard lighting model, and enable shadows on all  light types#pragma surface surf BRDFLighting// Use shader model 3.0 target, to get nicer looking lighting#pragma target 3.0sampler2D _MainTex;struct Input{float2 uv_MainTex;};fixed4 _SpeColor;float _SpecPower;#define PI 3.1415926half4 LightingBRDFLighting (SurfaceOutput s, half3 lightDir, half3 viewDir,  half   atten){float3 H = normalize(lightDir+viewDir);float3 N = normalize(s.Normal);float d = (_SpecPower+2)*pow(dot(N,H),_SpecPower)/8.0;float f = _SpeColor + (1-_SpeColor)*pow(1-dot(H,N),5);float k = 2.0 /(sqrt(PI * (_SpecPower + 2)));float v = 1/((dot(N,lightDir)*(1-k)+k)*(dot(N,viewDir)*(1-k)+k));float all = d*f*v;float diff = dot(lightDir,N);float tmpResult = all+(1-all)*diff;half4 finalColor = 0;finalColor.rgb = tmpResult * s.Albedo * _LightColor0.rgb;finalColor.a = s.Alpha;return finalColor;}void surf (Input IN, inout SurfaceOutput o){// Albedo comes from a texture tinted by colorfixed4 c = tex2D (_MainTex, IN.uv_MainTex);o.Albedo = c.rgb;o.Alpha = c.a;}ENDCG}FallBack "Diffuse"
}


http://www.ppmy.cn/news/1550430.html

相关文章

算法新篇章:AI如何在数学领域超越人类

人工智能咨询培训老师叶梓 转载标明出处 尽管大模型在很多领域表现出色,比如理解自然语言和生成文本,但它们在解决一些复杂的推理任务时,比如数学问题、编程挑战或者医疗诊断,还是显得有些力不从心。最近,一个来自中国…

C++网络编程:select IO多路复用及TCP服务器开发

C网络编程:使用select实现IO多路复用 一、什么是 IO 多路复用?二、IO多路复用器 select三、相关接口3.1、fd_set 结构体3.2、宏和函数 四、select 实现 TCP 服务器五、总结 一、什么是 IO 多路复用? 在网络编程中,最容易想到的并…

Vue.js - 组件化编程

1. 前言 Vue.js是一个基于组件的Javascript框架,组件化编程是核心思想之一。通过组件化,Vue允许开发者将用户页面拆分成独立,可重用的部分,从而提升代码的可维护性,可读性以及可服用性。 本文主要讲解在Vue2中组件化…

量化交易系统开发-实时行情自动化交易-4.4.1.做市策略实现

19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来继续说说做市策略实现。 做市策…

Redis突然变慢,有哪些原因?

目录 一、存在bigkey 二、如果Redis 实例设置了内存上限 maxmemory,有可能导致 Redis 变慢 三、开启了内存大页 四、使用了Swap 五、网络带宽过载 六、频繁短连接 一、存在bigkey 如果Redis实例中存储了 bigkey,那么在淘汰删除 bigkey 释放内存时&…

pip安装github上的开源软件包

1、若本机中安装的有git,可使用githttps方式安装 # 以安装pyfolio软件包为例,安装指令如下 pip install githttps://github.com/quantopian/pyfolio.git 2、若本机中没有安装git,可以直接使用软件包的zip地址进行安装 # 以安装pyfolio软件包为例,安装…

Vue前端开发2.3.6 列表渲染指令

在Vue.js中,v-for指令是渲染列表的关键工具,支持从数组、对象、数字和字符串中生成列表。它简化了商品列表等重复元素的创建。为了优化性能,key属性为每个列表项提供唯一标识,帮助Vue追踪节点身份,实现元素重用。实战中…

03系统设计之商业业务平台(D1_学习前言)

分享一些优秀的业务平台演化和设计。 【电商交易】京东-亿级商品详情页设计 商品详情页是展示商品详细信息的一个页面,承载在网站的大部分流量和订单的入口。京东商城目前有通用版、全球购、闪购、易车、惠买车、服装、拼购、今日抄底等许多套模板。各套模板的元数…