Shader 学习笔记 20151103

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

Segment 0 回顾

  • BRDF 回想。
    昨天弄到半夜,硬是想象不通这个斜着交叉的线是怎么个搞法,特别是当别人提出某种渲染需求的时候,我根本无法给出可操作的步骤。(见下图)
    这里写图片描述
    于是只能按图索骥,看看cook book里面推荐的链接 http://wiki.polycount.com/wiki/BDRF_map

    Nice! 还是wiki说的清晰,先抄文字,再截个图。
    BRDF stands for Bidirectional Radiance Distribution Function, a way for describing how a surface reflects light. In game shaders BRDF is usually a rougher approximation, simplified for faster rendering. A BRDF map is a vertical gradient mixed with a horizontal gradient, each controlling how the surface reflects light relative to a different angle: one for the camera, and the other for the main light.

    核心处就是黑体的最后一段话,这段话说了两点,一个是BRDF是个二维的(分别和视点、光源方向相关);另外一个就是Vertical gradient mixed with a horizontal gradient,这个万分重要,我昨天百思不得其解之处就在这里,这玩意根本不是什么斜线,就是一个横轴一个竖轴。

    下图里面英文描述的很清晰了,其中非常详细的讲解了如何创建BRDF texture。可以这么描述,纵轴上面的点(图中点B)远离光源,下面的点(图中点A)靠近光源(此处用的是halfLambert方式,材质的坐标原点什么的不是重点,跟你的坐标系相关);横轴左面的点(图中点D)和视点成90度,图中右面的点(点C)和视角平行。
    所以你看,我们在攒弄texture的时候,还是有章可循的。请忘记那个什么斜线吧。。。
    这里写图片描述


Segment 1 阅读

  • cook book chapter 2 , using texture for effect, 第一小节,通过改材质UV值进行scrolling
  • cook book chapter 2 , using texture for effect, 第二小节,通过改材质UV值搞动画
  • cook book chapter 2 , using texture for effect, 第三小节,Packing and blending textures
    第三小节也参看了 (打包和混合textures http://blog.csdn.net/candycat1992/article/details/20792585

Segment 2 理解

  • 通过改UV值进行scrolling,其核心是使用_Time乘以速度来确定不同时间下面的UV颜色值。这样一来,就可以有卷轴效果了。书里面的例子是流水

  • 通过材质UV搞帧动画,这玩意没啥好说的,很平常。只是里面有一个蛮重要的概念是CPU和GPU的分工,一般我们会把过多的除法和算法交由CPU去做(见下图,cook book page 38 ),这样算术工作就不是GPU直接弄了。当然,这里面有两个问题,一个是哪种算法更适合GPU单元去做,乘法/除法/加减/开方(我觉得是乘法和加法)?另外一个就是怎么balance CPU和GPU之间的loading,既不能全在CPU搞,也不能全在GPU弄?
    这里写图片描述

  • 打包和混合,这个其实概念比较简单,就是有一张texture用来做控制材质,控制什么呢?控制其他几张材质的混合。怎么控制呢?就是用控制材质里面不同通道(RGBA通道)里面的灰度值配合lerp函数去调和。下图解释的颇为清晰了。
    这里写图片描述

    下面是一个实际例子的控制材质以及渲染材质。
    这里写图片描述

    这里写图片描述
    具体的玩法就是用控制材质的G通道做参数调和材质A、B,调和完成的结果在去和材质C调和(此时用控制材质的B通道调节),然后再和材质D调和(用Alpha通道),调和完成后再用R通道调和一个地形颜色(这个不属于材质算法了,仅仅是这个例子里面这么用了),最后再乘以一个环境光。 这样完全调和之后的材质就可以渲染一个表面了,此处的例子是地表。见下图
    这里写图片描述

    好了,写到这里,这玩意有啥好处呢?cook book page39 有一段Why is this helpful的话,按照书里的意思是说可以把能合并的图合并在一个材质里,恕我直言,这书里的例子完全感受不到这点。如果我要渲染一个地表,直接贴图就好了,为何还要搞4个素材材质以及一个控制材质?这完全是在内存开销上背道而驰啊!
    至于有人说这样能加快GPU的采样速度,因为GPU在采同一个图的时候会快。我也觉得不妥,假设我渲染了三个不同的地表,一种方法是三张texture直接贴;另外一种是素材4张,控制三张,无论如何也看不出用控制texture能加快速度。唉。。。 只能慢慢学慢慢体会了。。。

Shader 学习笔记 20151105 Segment 0 回顾 Object-space normal maptangent-space normal map区别。 Object-space normal map里面的法线向量值是参考object坐标系搞出来的,而tangent space normal map里面的法线向量值是先在高模Obj对应的低模Obj上面每一个点建立一个坐标系,这个坐标系叫做tangent space(一般Z 阅读详情

相关推荐

Vmware虚拟机启动时出现“已启用侧通道缓解”的解决方法

Vmware虚拟机启动时出现“已启用侧通道缓解”的解决方法

MaterialShader是什么,两者有什么关系

Shader是Material的一部分。程序上是叫着色器,是根据计算 即时演算 生成贴图的程序。常常用来处理那些无法用固定贴图表现的模型 ,比如玻璃,水面等等。实际上是一小段程序,它负责将输入的Mesh(网格)以指定的方式输入的贴图或者颜色等组合作用,然后输出。 Materail是模型的材质。是顶端的了,包含贴图,shader,凹凸等消息。

taotaoahui 9422

E-NET基准网络中新破裂定位的高效传感器布置》。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业毕业设计。

如何打造具有区域竞争力的智能制造公共服务平台?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

如何高效组织校地合作技术转移活动?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

rtl8822蓝牙驱动资料

代码下载地址: https://pan.quark.cn/s/48b01f0717eb 本文将详细研究有关rtl8822蓝牙驱动及其适配的相关信息。rtl8822是由Realtek公司设计的一种无线通信芯片,主要应用于提供Wi-Fi蓝牙功能。该芯片被广泛应用于多种现代电子设备中,例如笔记本电脑、路由器、智能手机以及平板电脑等。 我们首先需要理解“驱动”的定义。驱动程序充当计算机硬件与操作系统之间的中介,负责将硬件指令解释为操作系统能够识别的语言。对于rtl8822芯片而言,蓝牙驱动是控制该芯片执行蓝牙通信的核心软件模块,它确保设备能够准确识别并连接其他蓝牙设备。 rtl8822驱动资料通常包括以下几个部分: 1. **Bluetooth Baseband (BB) 驱动**:这一部分负责处理蓝牙的底层通信,包括射频信号的编码与解码,以及数据包的发送接收。 2. **Bluetooth Host Controller Interface (HCI)**:HCI层是蓝牙驱动的重要组成部分,它确立了蓝牙主机(例如CPU)与控制器(例如rtl8822芯片)之间的接口协议。借助HCI,应用程序能够与蓝牙设备进行互动,如配对、建立连接、传输数据等。 3. **移植文档**:移植文档是将rtl8822蓝牙驱动适配至不同操作系统或平台的关键指南,其中通常包含了详尽的步骤、注意事项以及可能遇到的问题的解决方案。这些文档有助于开发者理解驱动的工作原理,并根据目标系统进行必要的调整。 4. **芯片手册**:Realtek为rtl8822芯片提供的手册是开发调试驱动的重要参考资料,其中涵盖了芯片的硬件特性、寄存器布局、接口规范、功耗管理等内容。熟悉这些信息能够帮助开发者更深入地...

技术转移中心如何通过专业化服务提升区域创新活跃度?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

政府科技部门如何构建高效的产业融合创新中心?.docx

政府科技部门如何构建高效的产业融合创新中心?

OpenCV乒乓球运动检测跟踪(陈锴)

源码直接下载地址: https://pan.quark.cn/s/95b325c17039 本研究着重研究了运用OpenCV技术对乒乓球竞赛中运动中的乒乓球进行检测与跟踪的方法。乒乓球运动具有极高的速度,并且在比赛期间常被运动员的身体部分遮挡,这对图像处理模式识别技术提出了较高的标准。文中阐述了采用C++语言开发的算法程序,通过即时视频分析乒乓球的运动路径,并对相关技术的应用进行了深入的研究。 OpenCV是一个由Intel公司支持的开源计算机视觉库,在图像处理、模式识别、目标检测与跟踪等方面展现出卓越的性能。OpenCV能够兼容多种编程语言,具备跨平台运作轻量化的特点,因此被选作本研究的核心技术平台。本研究的宗旨在于协助教练员精确评估运动员的击球技术特征乒乓球的运行表现,并且通过实时追踪乒乓球的运动路径、落点及击球时刻,为乒乓球竞赛的视频转播、技术数据统计等提供自动化服务。 为了达成乒乓球比赛视频录像中乒乓球运行路径的检测与跟踪,本研究采用了改良的Surendra算法执行乒乓球体的识别,同时运用CamShift算法对高速运动的乒乓球进行追踪。另外,还引入了Kalman预测算法以提升对乒乓球路径的精确跟踪。 在技术方案中,研究者最初选择了现场拍摄随后进行后期处理的方法,在验证成功后改用实时拍摄实时处理的方法进行乒乓球的识别与跟踪。研究视频选取了符合竞赛规范的场地乒乓球,并且设置了特定的摄像机位置。由于乒乓球容易被运动员的身体遮挡,给识别跟踪带来了挑战,研究中采用了YUV图像格式的模式识别,并在必要时进行运动目标的判定识别。此外,由于乒乓球运动速度极快且带有弧线旋转,研究中加入了预测算法以保证路径的精确跟踪。 整体的研究计划涵盖了乒乓球运动球体的检测、跟踪以...

如何提升科研项目路演活动的转化效果?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

光通信soc-pmu状态机设计

光通信soc-pmu状态机设计

如何突破高校科研经费不足与产学研合作的瓶颈?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

国央企如何优化科技创新资源配置,提升技术成果转化效率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

园区企业智能制造转型面临资源分散、服务获取难如何破局?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

钉钉02.docx

钉钉02

科研院所如何拓展技术转移服务范围提升成果转化成功率.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

SC7313-ADD volume control

打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 依据所提供的文档资料,本文将针对SC7313_ADD音量控制的相关理论知识进行深入阐释。 ### SC7313_ADD 音量控制概述 SC7313 被设计为一种具备多种音频处理能力的集成电路,能够支持包括音量、低频、高频在内的多种音效参数的调节。在本代码实例中,主要关注的是运用SC7313完成音量控制的功能实现。 ### 代码解读 #### 宏常量定义 下面将介绍一些核心的宏常量定义: - `#include <reg52.h>` 与 `#include <intrins.h>`:引入了与51单片机相关的标准头文件。 - `#define uchar unsigned char` 以及 `#define uint unsigned int`:将`uchar``uint`这两个标识符设置为无符号整型数据类型。 - `#define ShortPress 30` `#define LongPress 200`:设定了短按与长按操作的时间界限,单位为毫秒。 - `#define MUTE_CTROL 0x3f`:指定了用于静音控制的寄存器地址。 - `#define AT24c02_ADD 0xa0` `#define SC7313_ADD 0x88`:分别指定了外部EEPROM(AT24C02)及SC7313的I2C通信地址。 - `#define VOL_SAVE_ADD 1`、`#define BASS_SAVE_ADD 8` `#define TREBLE_SAVE_ADD 16`:定义了音量、低音高音在EEPROM中的存储位置。 - `sbitsda=P2...

上一篇: Shader 学习笔记 20151102
下一篇: Shader 学习笔记 20151104
mconreally
博客等级 码龄17年 5粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值