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

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 200
        CGPROGRAM
        // 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.0
        sampler2D _MainTex;
        struct Input
        {
            float2 uv_MainTex;
        };
       
        fixed4 _SpeColor;
        float _SpecPower;
        #define PI 3.1415926
        half4 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 color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
           
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小春熙子

你一毛我一毛,先富带后富

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值