Standard Shader面板原来的样子

之前第一第二章,分别分享了,最普通,进阶Phonn光的PBR(都不是PBR)模板,本来第三章想分享Unity官方的PBR;结果碰到Unity的作死模式,又得开一章详细说Shader的入门;如果只想获取PBr模板的,请跳去第四章;

Unity Standard Inspector面板真不好说的,丑就一个字,两个字就是,鸡肋;

我们先把Cust Editor去掉

        }}FallBack "VertexLit"//CustomEditor "StandardShaderGUI"
}

看到编辑器原来的样子

然后搞了一大轮,才发现 .smoothness 居然是通过Smoothness Factor 控制的

就问你服不服

 

胡乱分析一通

我这里假设你手上已经有Built-in Shader的源码

又假设你已经阅读前面两章,也又提到若想在Unity做一点点渲染,必须首先先学PBR

(Unity搞那么复杂,主要是为了跨平台,这个后面几章会再详细说,但明知道要跨平台,底层内核设计之差,真是前所未见,这么多年更是不思进取)

又又或者你大学学了vf Shader,有opengl的基础是指

那么,你才好往下看,因为都是写给自己或者学过的,踩过坑的人看的

fragment Shader渲染时用到的参数从哪里来呢?我们就知道关键在于在这个方法

FRAGMENT_SETUP(s)

直接看大神分析,在这里s == 0

//在unitystanderuitils.cginc中,计算alpha对漫反射颜色造成的影响,
o.diffColor = PreMultiplyAlpha (o.diffColor, alpha, o.oneMinusReflectivity, /*out*/ o.alpha);
inline FragmentCommonData MetallicSetup (float4 i_tex)
{
//获取x金属度和y光滑度,定义在UnityStandardInput.cginc中half2 metallicGloss = MetallicGloss(i_tex.xy);half metallic = metallicGloss.x;half smoothness = metallicGloss.y; // this is 1 minus the square root of real roughness m.//....
o.smoothness = smoothness;
return o;
}

如果今天再有人和我说Unity不是垃圾,这公司的市占率不是靠运气,我&……!%&¥&¥&@……!

前面2个文章说了,

你若想哪怕写一点点Shader,都必先学习一般的PBR(必须,否则会被Unity带晕),然后又得学习一整套Unity自定义的PBR(而不能踩到以前的坑,网上的很多学习参考资料,都是我们很多团队不得已只能自己干完了之后,发布到网上的)

Unity自定义PBR很有趣的一个地方就是把,很多其他程序员用的,gloss等价于smoothness,死活就是不用roughness,这下终于有解答了

他们是希望证明他们绝对没有抄袭其他公司,例如UnReal的资源吗?

这回真的是草履虫才看的明白,

请看Unity 对于自家,smoothness的封装:

half2 MetallicGloss(float2 uv)
{half2 mg;#ifdef _METALLICGLOSSMAP#ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_Amg.r = tex2D(_MetallicGlossMap, uv).r;mg.g = tex2D(_MainTex, uv).a;#elsemg = tex2D(_MetallicGlossMap, uv).ra;#endifmg.g *= _GlossMapScale;
#elsemg.r = _Metallic;#ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_Amg.g = tex2D(_MainTex, uv).a * _GlossMapScale;#elsemg.g = _Glossiness;#endif
#endifreturn mg;
}

你说,Unity这个Standard是不是鸡肋?,而且它这封装方法也证明是LS;杠杠的反人类。

从上代码可知,在最后一个分支,s.smoothness 才受_Glossiness本身控制(Inspector面板显示的是 Smoothness);

特喵的还有其他三个分支呢??

而,其实大部分情况,通过_GlossMapScale(Inspector面板显示的是Smoothness Factor) 控制贴图的透明度

mg.g = tex2D(_MainTex, uv).a * _GlossMapScale;

上面的mg. g 解释一下把,

- 就是一个float2变量的第二位,(mg.green),第一位就明显是mg.r(mg.red)

- 对应的就是s.gloss, s.metal,

- 也是我们的老朋友,金属度或粗糙度

-

这也是解释为什么官方Standard不是Smoothness,而只能通过Smoothness Factor 来控制渲染材质(依赖贴图)的效果

Unity再次像我们证明

“编程很简单,写了一大堆,其实有用的只有一行代码”

当然,编程的层次还是很多的,例如模块化,例如插件模式,又例如多线程,虽然说都必须是高级语言才有的特性,但是像Unity这种超低级封装,没想到2020年真还能见着。

渲染效果

搞了一大轮,三篇文章,终于。。。能渲染出一点点,积水的效果

 

挑战UnityShader学习之三_工欲善其事必先利其器Standard面板详细解析和代码自定义相关推荐

  1. C/C++/Linux「学习必备」珍藏多年的学习网站分享 | 工欲善其事必先利其器

    这里分享的是C/C++学习阶段所需网站,经博主自用使用频率较高的几个网站.废话不多说,直接看正文. ps:初学者可以从菜鸟教程.w3school 在线教程等网站学习一遍基础知识,再结合本篇文章提供的网 ...

  2. 挑战UnityShader学习之八——用最简单的方法实现下雨天积水效果

    关于手撸PBR Shader效果 又一个星期过去了,毫无进展 之前也因为 目标还是那个目标 在官方的Standard PBR基础上做自己的渲染框架,既可以利用其现有跨平台和多版本验证特性,又可以保证后 ...

  3. 64位java安装包_工欲善其事必先利其器,java开发利器

    已经连续分享了三天了,今天继续分享,今天分享的主要内容是开发工具的使用和安装IntelliJ IDEA,以及方法的简介和使用(这篇文章篇幅有点长大家可以先把工具安装好熟悉一下,方法的内容放到下一篇文章 ...

  4. 黑马程序员_工欲善其事必先利其器

    曾经有一个段子说: mac上使用mac os的是文艺青年 mac上使用win的是二逼青年 pc上使用win的是普通青年 pc上使用mac os的牛逼青年 当我决定搞苹果开发的时候,首先遇到的就是开发环 ...

  5. 逻辑斯蒂回归_逻辑斯蒂回归详细解析 | 统计学习方法学习笔记 | 数据分析 | 机器学习...

    本文包括: 重要概念 逻辑斯蒂回归和线性回归 二项逻辑斯谛回归模型 逻辑斯蒂回顾与几率 模型参数估计 多项逻辑斯谛回归 其它有关数据分析,机器学习的文章及社群 1.重要概念: 在正式介绍逻辑斯蒂回归模 ...

  6. USB开设备开发学习之三:USB中的端点详细了解

    原文:https://blog.csdn.net/go_str/article/details/80985717 前言     端点在实际的USB通讯过程种的具体作用与含义十分重要,但是有些难以理解, ...

  7. native react 折线图_【详解】纯 React Native 代码自定义折线图组件(译)

    本文为 Marno 翻译,转载必须保留出处! 公众号[ Marno ],关注后回复 RN 加入交流群 React Native 优秀开源项目大全:http://www.marno.cn 一.前言 在移 ...

  8. tcp分包传图片 如何还原_技术控丨超详细解析TCP重传机制

    作者:Zhang_Jiawen : 来自:Dell技术社区 TCP 的主要任务是很简单:打包和发送数据.TCP 与其他协议的不同之处在于使用滑动窗口来管理基本数据收发过程,同时确保数据流的有效及可靠传 ...

  9. c# 设计原则需要学习吗_向最好的学习:产品设计原则

    c# 设计原则需要学习吗 重点 (Top highlight) In my job as Design Team Lead at SimpleSite, I've recently been part ...

最新文章

  1. Apache常用配置
  2. 国内的IDC数据中心运营维护前景如何?
  3. redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?
  4. 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
  5. 天地图卫星地图_AutoCAD使用卫星地图
  6. 设计模式系列:小小总结
  7. Vue 教程第十一篇—— vue-cli
  8. 转载:python能用来做什么?
  9. Kali2.0中peda与pwntools的安装
  10. 一步完成 MySQL 向 Redis 迁移
  11. 计算机组成原理知识体系
  12. 社区发现算法——Louvain 算法
  13. godot读写本地文件
  14. 数据库关闭的四种方式
  15. 解决Ubuntu Pycharm图标问号的方法
  16. 使用phpword替换模板内容 在模板追加内容
  17. EAN13条形码校验公式及代码实现
  18. 多目标优化算法:多目标非洲秃鹫优化算法(Multi-objective Africans Vultures Optimization Algorithm,MOAVOA)提供MATLAB代码及参考文献
  19. Nexus war 下载
  20. web前端面试题完美整理/涵盖html,CSS、JS、浏览器、Vue、React、移动web。

热门文章

  1. 【半导体先进工艺制程技术系列】HKMG工艺技术(下)
  2. 动力环境集中监控系统的数据传输方式
  3. MA5626 MA5620修改SN号替换家用光猫配置指导
  4. 软件测试面试题微信小程序-IT界的驾考宝典
  5. 调用电脑摄像头拍照及下载
  6. DaVinci Resolve 12: Advanced Color Grading DaVinci Resolve 12:高级颜色分级 Lynda课程中文字幕
  7. 模拟投票系统--c语言版
  8. 趋势科技笔试面试经历zz
  9. 2015职称计算机考试模拟,2015职称计算机考试photoshop练习题
  10. 这个年薪百万的新职业,火了!