个人学习笔记——庄懂的技术美术入门课(美术向)03

  • 1 回顾渲染流程
  • 2 尝试shader代码
  • 3 Lambert试试
  • 4 节点组
  • 5 作业

1 回顾渲染流程

老师以美术绘画的角度理解渲染管线,比较形象
不过在第一课的学习中,我已经补充了些理论,所以这一块就略过

2 尝试shader代码

首先是关联Unity里关联到VS,这部分也较简单,略去
以shader forge新建基础的shader来识别代码
可以看这里来稍微看看Unity的基础语义


仔细看看操作段,和我们之前在OpenGL里写shader很像
逐层来分析

  • 操作段1和2的路径和材质参数暂且略过
  • 第三段定义了一个输入结构,这个结构体有一个float4的变量 vertex,使用的是POSITION
  • 第四段定义了一个输出结构,这个结构体有一个float4的变量 pos,使用的是SV_POSITION
  • 第五段,我们声明了一个方法vert,这个方法以VertexInput的变量v为输入,输出的是VertexOutput
    第一段把0强转成VertexOutput,赋值给变量o
    o里的pos变量,采用v变换到到裁剪空间的坐标结果
    然后返回o
  • 第六段,frag方法,对应输出的是COLOR这个参数
    接受VertexOutput的结果,其内部设置了一个emissive的参数为颜色,然后输出


步骤知识改了下输出的颜色,比较简易

3 Lambert试试

  • 这段实现Lambert的代码首先在输入阶段新增了一个NORMAL(float3就可以)
  • 输出阶段声明一个变量在TEXCOORD0这个槽位,这个变量用来存储变化后的法线信息
  • 顶点着色器里新增了把法线从切线空间转到世界空间
  • 片段着色器里得到平行光的方向,发现信息,点乘以后取大于零的部分,返回颜色值
  • nDirWS意为normal方向在worldspace

  • 这里讲到unity存光照位置的时候是个齐次坐标,0代表向量,1代表点
  • _WorldSpaceLightPos0.w为0,表示该光源为平行光。
    _WorldSpaceLightPos0.w为1。则表示光源为点光源或聚光灯。

4 节点组


所谓fakelight,也就是自定义一个三维向量和颜色

5 作业


关于Lambert和HelloWorld代码都有了,半兰伯特也很简单,按照原本的连连看做法*0.5+0.5

关于作业,首先观察,发现是有颜色的,说明进行了UV的采样

但是亮部没有变化,暗部发生了颜色变化

目前我们在代码和光照模型上不会做大改动,所以不考虑该光照模型这一点

我又想到是不是单独判断暗部,给暗部成一个比例?

但是这样会有明显的分区感,不会连续变化,所以放弃这个数据是单独的一个乘数因子

  • 回忆一下步骤:半Lambert→采样UV→输出

外围不可能的话,只有可能在UV或者采样上东西上做手脚

因为其他数据不可能变,所以slider改的是uv坐标,其中一个坐标给了Lambert,所以其改的是另一个坐标

根据作业改这个坐标有个效果,就是暗部变化,其他不变,由此推断这张材质图的样子



按照这个思路画了个图(虽然很丑(并且不知道怎么把渐变的意思很好表达出来Orz

个人学习笔记——庄懂的技术美术入门课(美术向)03相关推荐

  1. 个人学习笔记——庄懂的技术美术入门课(美术向)19

    个人学习笔记--庄懂的技术美术入门课(美术向)19 1 顶点平移 2 顶点缩放 3 顶点旋转 4 综合应用 1 顶点平移 2 顶点缩放 方法类似 避免产生负值 3 顶点旋转 方法类似 以下是涉及到的一 ...

  2. 个人学习笔记——庄懂的技术美术入门课(美术向)01

    个人学习笔记--庄懂的技术美术入门课(美术向)01 0 前言 1 工程搭建示范 2 理论 2.1 结构(struct) 2.2 渲染管线 3 操作 3.1-2 向量/标量/点积等若干线代基础 3.3 ...

  3. 个人学习笔记——庄懂的技术美术入门课(美术向)07

    个人学习笔记--庄懂的技术美术入门课(美术向)07 1 单色环境光 2 三色环境光 3 投影 4 光照模型组合 有关AO的知识之前涉及到就是 SSAO的实现了,可以回顾下 1 单色环境光 环境光加上环 ...

  4. 个人学习笔记——庄懂的技术美术入门课(美术向)02

    个人学习笔记--庄懂的技术美术入门课(美术向)02 1 作业点评 2 作业批改 2.1 作业1 2.1.1 模拟高光 2.1.2 菲涅尔 2.1.3 叠加模式 2.2 作业2 2.2.1 关于屏幕UV ...

  5. 个人学习笔记——庄懂的技术美术入门课(美术向)12

    个人学习笔记--庄懂的技术美术入门课(美术向)12 1 作业示范 2 答疑 3 作业示范思路 4 作业实现·准备 5 作业实现·光照模型 6 作业实现·细节 7 开源Shader 该课是在13课之后上 ...

  6. 个人学习笔记——庄懂的技术美术入门课(美术向)04

    个人学习笔记--庄懂的技术美术入门课(美术向)04 1 作业点评 2 作业答案 2.1 半Lambert 2.2 SSSLut 2.3 批改 2.3.1 批改1 2.3.1.1 分层 2.3.1.2 ...

  7. 个人学习笔记——庄懂的技术美术入门课(美术向)08

    个人学习笔记--庄懂的技术美术入门课(美术向)08 1 作业点评 2 作业批改 3 法线贴图 1 作业点评 没啥问题,注意调节AO强度需要从白色去调 看起来透明的猴子有风格化,会讲例子 右下角的蓝色小 ...

  8. 个人学习笔记——庄懂的技术美术入门课(美术向)09

    个人学习笔记--庄懂的技术美术入门课(美术向)09 1 菲涅尔 2 连连看-MatCap 3 连连看-CubeMap 4 代码 MatCap 5 代码 CubeMap 1 菲涅尔 更具体的PBR可以参 ...

  9. 个人学习笔记——庄懂的技术美术入门课(美术向)21

    个人学习笔记--庄懂的技术美术入门课(美术向)21 1 案例材料制作 2 shading 特效部分最后一讲 1 案例材料制作 渲染一张UV网格图和一张分块图 在上一节中说过的bake方法 回推,首先看 ...

最新文章

  1. Xamarin Android教程Android基本知识版本介绍与系统介绍
  2. 他们的背后,是我们!
  3. C# 网络编程之豆瓣OAuth2.0认证详解和遇到的各种问题及解决
  4. Android开发:程序目录结构详解:activity主要方法等
  5. 【规范】前端编码规范——css 规范
  6. java利用数组随机抽取幸运观众_java利用数组随机抽取幸运观众
  7. 如何遍历某数据库中的每一个表的总记录数
  8. 现代 C++ 救不了程序员!
  9. keyshot分辨率多少合适_分辨率单位及换算详解
  10. ATMV1函数版v1
  11. 极客大学架构师训练营 听课总结 - 架构视图,设计文档 -- 第二课
  12. 期末考试_细胞自动机
  13. resnet50能用cpu跑吗_用最简单的方式训练史上最强ResNet-50,性能超过魔改结构的ResNeSt...
  14. 如何做好手机APP测试?APP测试流程及解决方案
  15. Linux Puppet基础知识
  16. 获TÜV莱茵认可,美的冰箱在节能和静音方面已达全球领先水平
  17. 事态升级管理程序范本_项目管理事态升级流程
  18. grafana 获取禅道bug执行sql语句的问题
  19. NVMe技术基础知识
  20. 计算两个日期相隔的时间

热门文章

  1. linux解压 tar -zxvf 代码
  2. 如果制作一个人工智能ai
  3. NodeJS中的图片操作库
  4. Java多级菜单树转为面包屑
  5. 新建vue项目并引入element组件
  6. java 数组的长度_Java初学者:数组,得到数组长度
  7. Flowable工作流之加签(委派)、转签(转办)
  8. Dell笔记本电脑禁用Fn键
  9. [Codeforces 893E. Counting Arrays]排列组合
  10. JavaScript大数据图表(堆积折线图)