Shader学习25:织物 之 天鹅绒
一、关于布料表现布料表面不是光滑的是无数根细小纤维竖立着传统的微表面brdf更适用于致密表面但对于松散结构的布料 缺少了一些真实布料的特征因为表面的纤维会吸收、散射入射光。边缘光照效果》Sheen 环织物在掠射角时出现的那一圈柔和的光泽环。1正面的光大量被吸收和漫散射掉汇聚到你眼睛里的能量反而很少2侧面的由于当光线与观察者的视线方向一致时镜面反射光会主要集中在物体的边缘。织物表面有细小的纤维这些纤维会试图保持垂直状态所以这时纤维的整根侧面都朝向你接收光的面积一下子变大了很多倍。同时纤维之间不再互相遮挡侧面大量纤维侧面同时把光散射进你眼睛。当光线方向与表面的法线方向成90度时光线会发生反(后)向散射从而形成漂亮的边缘照明效果。如果光线来自物体的后方纤维则会使光线向前散射进而产生类似的边缘照明效果。Sheen环 D项算法简介图1反高斯Inverted Gaussian将标准高斯分布(正态)函数进行反转图2绿线标准PBR的Microfacet GGX分布在0角度下法线、灯光和视线同向获得最大的高光强度然后随着角度的增大做正态分布红线用来做天鹅绒的分布函数正相反最高峰在90°图3左GGX高光右天鹅绒高光代码实战常见的Fabric算法有两个Ashikhmin Charlie 的算法GGXAshikhmin基于倒置高斯标题“Charlie” sheen基于正弦布料渲染的两种BRDF我使用了BSDF文件里现成的Ashikhmin_V和Charlie_D方法。F * V * D sheen * Ashikhmin_V * Charlie_Dhalf3 FabricSheenDirect(half NdotL, half NdotV, half NdotH, half3 sheenColor, half sheenRoughness) { half r max(sheenRoughness, HALF_MIN_SQRT); half safeNdotL max(NdotL, HALF_MIN); half safeNdotV max(NdotV, HALF_MIN); half safeNdotH max(NdotH, HALF_MIN); half D D_Charlie(safeNdotH, r); // NDFsin^invR模拟微纤维散射 half Vis V_Ashikhmin(safeNdotL, safeNdotV); // 轻量 Visibility term return D * Vis * sheenColor; }法一在原有光照模型基础上去叠加一个Sheencolor UniversalFragmentPBR(inputData, surfaceData); #if defined(_FABRIC) { half3 sheenColor _SheenColor.rgb * _SheenIntensity; color.rgb ComputeFabricSheenContribution(inputData, sheenColor, _SheenRoughness); } #endif金属度粗糙度的pbr效果还在但是只是在原有基础上去叠加了 还会有高光和明显的明暗交界线会破坏原有的能量守恒法二替换原BRDF项#if defined(_FABRIC_REPLACE_BRDF) { half3 sheenColor _SheenColor.rgb * _SheenIntensity; half3 fabricRGB ComputeFabricBRDFLighting(surfaceData, inputData, sheenColor, _SheenRoughness); color half4(fabricRGB, surfaceData.alpha); }边缘可能差不多但是灰部有了更多的布料细节能量守恒二、天鹅绒纹理表现单纯调布料效果还不能调出天鹅绒的效果需要靠纹理来加强表现纤维感随机感虽然布料纤维大多倾向于垂直于表面排列用手指拨布料可以让纤维朝某个方向排列。几个尝试用Substance Designer绘制了一张总的趋势是模拟了毛流的随机方向感放大后也有单根纤维的纹理前面的示例图用的就是这个法线出于天鹅绒纤维表面的随机性还试了一个看起来天鹅绒感很重的图找素材时突然发现以闪亮之名里面有丝绒裙子红丝绒我认为这个纹理是雾面、绒面感最强的

相关新闻

Prompt Engineer实战指南:从原理到应用,掌握与大模型高效沟通的核心方法

Prompt Engineer实战指南:从原理到应用,掌握与大模型高效沟通的核心方法

1. 从“咒语师”到“翻译官”:Prompt Engineer到底是什么?最近“Prompt Engineer”这个词火得不行,各种“年薪百万”、“未来最热门职业”的标签满天飞。作为一个在AI应用一线折腾了快两年的从业者,我听到这些说法,第一…

2026/8/5 9:16:59 阅读更多 →
类型安全都一样,单调用却慢 41 倍:Agent 工具调用 JSON 校验的实测复盘

类型安全都一样,单调用却慢 41 倍:Agent 工具调用 JSON 校验的实测复盘

背景:为什么工具调用的 JSON 校验会卡住生产 Agent Agent 的核心循环是「LLM → 结构化输出 → 校验 → 执行/重试」。当 LLM 返回一个工具调用时,框架拿到的是一段文本形式的 JSON(或 tool_use block),需要&#xff…

2026/8/5 9:16:59 阅读更多 →
钉钉待办API迁移实战:从旧版接口升级到新版待办任务接口

钉钉待办API迁移实战:从旧版接口升级到新版待办任务接口

1. 项目缘起:从“旧”到“新”的待办接口迁移之痛最近在重构一个内部任务协同系统,核心功能之一就是自动将系统内的任务同步到钉钉待办,方便团队成员在钉钉里统一查看和处理。这个功能原本跑得好好的,用的是钉钉开放平台提供的“创…

2026/8/5 9:16:59 阅读更多 →

最新新闻

Java阻塞队列核心解析与面试高频考点

Java阻塞队列核心解析与面试高频考点

面试考点分析:BlockingQueue 的核心特点与常用实现类(ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、DelayQueue、SynchronousQueue 等)。阻塞队列的工作模式:生产者-消费者模型下的入队/出队阻塞与唤醒机制。…

2026/8/5 10:30:43 阅读更多 →
UE5 C++本地化实战:从字符串表到运行时切换的完整指南

UE5 C++本地化实战:从字符串表到运行时切换的完整指南

1. 项目概述:为什么UE5本地化不只是“翻译”?做UE5项目,尤其是面向全球市场的游戏或应用,本地化(Localization)是绕不开的一环。很多开发者,特别是刚接触UE5 C的朋友,可能会觉得本地…

2026/8/5 10:30:43 阅读更多 →
铸造工艺全解析:从液态成型到缺陷防控的工程实践

铸造工艺全解析:从液态成型到缺陷防控的工程实践

1. 项目概述:从“武理慕课”看铸造的入门与精髓 最近在整理一些工程材料成型的资料,恰好又翻到了武汉理工大学那门经典的《材料成型原理》慕课里关于铸造的章节。每次看都觉得,铸造这东西,真是制造业里最古老又最基础,…

2026/8/5 10:30:43 阅读更多 →
Unity游戏开发中的观察者模式:从C#事件到消息总线的实战指南

Unity游戏开发中的观察者模式:从C#事件到消息总线的实战指南

1. 项目概述:从“轮询”到“事件驱动”的思维跃迁在Unity游戏开发中,我们常常会遇到这样的场景:玩家角色血量变化时,UI血条需要更新,音效需要播放,敌人AI可能需要调整攻击策略,成就系统需要检查…

2026/8/5 10:30:43 阅读更多 →
DSP+FPGA异构主板设计:从电源、时钟到核心互联的实战指南

DSP+FPGA异构主板设计:从电源、时钟到核心互联的实战指南

大家好,我是长期深耕嵌入式硬件设计的博主。在参与一个高性能边缘计算项目时,我们遇到了一个核心挑战:如何在一块主板上高效协同处理实时控制与复杂逻辑运算?传统的单一架构方案往往在性能、功耗和灵活性上难以兼顾。经过多轮选型…

2026/8/5 10:30:43 阅读更多 →
从零搭建数据机房监控可视化系统:Telegraf+InfluxDB+Grafana实战

从零搭建数据机房监控可视化系统:Telegraf+InfluxDB+Grafana实战

在数据机房运维工作中,你是否曾面临这样的困境:服务器状态、网络流量、温湿度等海量监控数据分散在各个孤立的系统中,故障告警滞后,排查问题如同大海捞针,难以形成全局态势感知。一个集中、直观、实时的可视化监控系统…

2026/8/5 10:29:42 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →