zoukankan      html  css  js  c++  java
  • XDRender_ObjPass_ShaderMode_Cloth(0) 面料渲染

    XDRender_ObjPass_ShaderMode_Cloth(0) 面料渲染

    前言


    首先说明:面料的物理渲染模型是比较多的, 但总体上还是归结于漫反射,散射,镜面反射. 以及半透明和镂空等等的处理

    而面料分类又特别多:丝绸,蕾丝,牛仔,反光,薄面料,针织,镂空,中厚面料,毛、绒等等(这也是为啥衣服那么贵!!!), 但大多数会混淆( 没法子, 直男眼睛,哈哈). 这也是小道分析的原因.

    正文


    非正式杂学

    比如 : 绸和缎 (嘿嘿)

    科普一下, 缎:比较厚的正面平滑有光泽的丝织品 . 绸:面平挺细腻,手感滑挺

    绸用于平纹或变化组织,经纬交错紧密的丝织物,而缎是应用缎纹组织,绸面平滑光亮的织

    下面是为难死人的非图程和非技美的参考

    https://mp.weixin.qq.com/s/TQC-QXM5UNKGdIanbIC58g

    https://mp.weixin.qq.com/s/EFwhte3Ar3nmym1Kd5r5GA

    看了这两个, 我们还是有兴趣去分析和实现一下的.

    特殊说明: 布料整个系统不仅包括了渲染着色, 还有布料的物理模拟(DynamicBone, 粒子模拟,这里还多出CPU模拟和GPUCS模拟)

    表面粗糙的织物有棉布、亚麻布等,

    表面光滑的织物有丝绸、天鹅绒等。

    一些特殊部分

    棉布类织物表面主要为较淡的织物颜色组成的漫反射,丝绸类织物表面有类金属的反射,而且会有多种的高光颜色。 观察还发现棉布类织物纤维周围有一圈很细的绒毛,丝绸类织物的纤维绒毛很少。

    理论


    总体来说布料的漫反射和高光,均有一些特性、此外还有两个Feature:一个是细微绒毛和多层, 最后高光对光滑的多丝还有一个各项异性处理.

    实现


    按照漫反射、高光、细微绒毛、多层、各项异性的步骤一个个处理.

    这里同时利用了CustomData1和2, 类型Half4来获取扩展的数据,.

    (额外一句, 对于各种Mode经常会需要多出一些类型, 这里有两种方式: 一种是多出来的合并或者替代原有不用的数据, 一种是结构体分化比如Fabr,Eye等等有自己的)

    这里分成了皮革, 普通棉布, 绒毛, 丝绸或纱, 雪纺来说明.具体在后续....

    1、设计Mode

    FDirectLightingResult ClothLitBxDF(
        FLightMaterial pBRDF,float3 lightColor
        ,float3 normal,float3 lightDir,float3 viewDir
        )
    

    2、构建处理函数

    待后续写完,统一归拢

    Diff

    ​ 模拟环绕散开

    lerp(diffcuseTerm,diffcuseTerm * SubSurfaceWrap(context.NoL,FabricScatterSale),clothValue);
    
    Spec

    ​ 这里根据需要选取不同的D和G项,同时F也会做轻度修改

    FabricSpecularGGX
    
    额外的Spec
    透明

    总结


    备注

    参考:

    https://zhuanlan.zhihu.com/p/37601940

    https://zhuanlan.zhihu.com/p/60977923

    https://blog.csdn.net/fyy2019/article/details/100971016?spm=1000.2123.3001.4430

    人生当苦,笑着看看
  • 相关阅读:
    LeetCode 15 3Sum
    R语言函数化学习笔记6
    R语言函数化学习笔记4
    R语言函数化学习笔记3
    R语言函数化编程笔记2
    R语言读写数据
    R语言函数化编程笔记1
    服务&软件&基础设施的区别
    网易云热评1很扎心
    滞后项
  • 原文地址:https://www.cnblogs.com/BaiPao-XD/p/13967208.html
Copyright © 2011-2022 走看看