前言

先简单记录一下,在cesium中看见一个函数czm_unpackDepth,原码中对于其解释是 ,czm_unpackDepth:将 vec4 深度值解包为 [0, 1) 范围内的浮点数。并给出了一篇博客地址Encoding floats to RGBA - the final?

正文

1. 如何实现编码到RGBA中

inline float4 EncodeFloatRGBA( float v ) {float4 enc = float4(1.0, 255.0, 65025.0, 16581375.0) * v;enc = frac(enc);enc -= enc.yzww * float4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);return enc;
}
inline float DecodeFloatRGBA( float4 rgba ) {return dot( rgba, float4(1.0, 1/255.0, 1/65025.0, 1/16581375.0) );
}


参考文章

2. 为什么要编码到RGBA中

单通道的float为32-bit,
不总是支持浮点纹理格式,要在这些系统上存储深度,必须将它们转换为定点并打包到传统无符号归一化 (UNORM) 纹理的 4 个通道中。
Why encode floats in RGBA?
把float编码到RGBA8

着色器Encoding floats to RGBA相关推荐

  1. (二)unity自带的着色器源码剖析之——————UnityCG.cginc文件(上篇:数学常数、颜色空间常数和函数、顶点布局格式结构体、进行空间变换的函数、HDR级光照贴图编解码相关函数等)

    一.数学常数 unity3D内置着色器定义了一系列的数学常数,如下: 从第3行开始,第13行结束: #ifndef UNITY_CG_INCLUDED #define UNITY_CG_INCLUDE ...

  2. 几何着色器着色器_使用金属着色器制作第一个圆圈

    几何着色器着色器 Metal Shaders? Render Pipeline? Vertex Shaders? Fragment Shaders? If you were anything like ...

  3. OpenGL ES着色器语言之变量和数据类型

    所有变量和函数在使用前必须声明.变量和函数名是标识符. 没有默认类型,所有变量和函数声明必须包含一个声明类型以及可选的修饰符.变量在声明的时候首先要标明类型,后边可以跟多个变量,之间用逗号隔开.很多情 ...

  4. opengl着色器shader介绍

    1. Shader  Shader其实就是一段执行在GPU上的程序,此程序使用OpenGL ES SL语言来编写.它是一个描述顶点或像素特性的简单程序.在opengles中常用的shader有两种:v ...

  5. 顶点着色器详解 (Vertex Shaders)

    顶点着色器详解 (Vertex Shaders) 2014-2-9 20:56| 发布者: 隐龙| 查看: 1631| 评论: 0 摘要: 学习了顶点处理,你就知道固定功能流水线怎么将顶点从模型空间坐 ...

  6. Learn OpenGL (三):着色器

    GLSL 着色器是使用一种叫GLSL的类C语言写成的.GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性. 着色器的开头总是要声明版本,接着是输入和输出变量.uniform和mai ...

  7. webgl入门(2)-初识webgl和着色器

    前言 原书中第2章非常长,如果整理成一个文档的话,得看好多天.为了浏览方便,我将其拆分成若干小节,方便大家学习. webgl采用HTML5中引入的canvas元素来定义页面的绘图区域.如果没有WegG ...

  8. opengl 设置每个点的颜色_OpenGL学习笔记(四)着色器

    本文为学习LearnOpenGL的学习笔记,如有书写和理解错误还请大佬扶正: 教程链接: 着色器 - LearnOpenGL CN​learnopengl-cn.github.io 一,基础概念 1, ...

  9. OpenGL着色器基础

    前言: 本文翻译自LearnOpengl经典教程,OpenGL着色器基础介绍的比较通俗易懂,特总结分享一下! 为什么要使用着色器? 我们知道,OpenGL一般使用经典的固定渲染管线来渲染对象,但是随着 ...

最新文章

  1. 学习笔记Kafka(三)—— Kafka安装配置(2)—— Kafka单代理及常用操作
  2. linux 权限中加号,关于Linux中权限列中的加号及点的深度探索
  3. 时间串变成Date类型的数据
  4. C++ 在屏幕上用星号打印菱形
  5. 解决WCF接口无法传递object参数的问题
  6. 【离散数学】极小全功能集
  7. 百度关键词点击ios_百度推广关键词点击价格高,如何处理?
  8. excel小写转大写公式_喂!这边居然有演示的Excel快捷键!
  9. 0基础web开发 python_真零基础Python开发web
  10. linux面试题(填空部分)
  11. matlab gui怎样将结果保存在excel中_声发射简单使用matlab导入参数波形数据并绘图...
  12. codeblocks下载安装及问题解决
  13. IOS音视频(一)AVFoundation核心类
  14. 软件系统分析与设计 第七节 第八节 制表符
  15. linux mate主题目录,七大顶级Linux桌面:Cinnamon和MATE_服务器_服务器产业-中关村在线...
  16. 常用类库之Math类
  17. 【机器学习】GMM模型的直观推导(含中间步骤)
  18. 3800 万条敏感记录在“裸奔”!微软这个默认配置把自己都“坑”了
  19. note10 android10,「上手」都说它是年度Android机皇,Galaxy Note10到底怎么样?
  20. unity编辑器扩展界面使用 List

热门文章

  1. 爱心信封打开ui动画特效
  2. python视频网站项目_价值2400元的python全栈开发系列Flask Python Web 网站编程视频
  3. 什么是云HIS?为什么HIS系统要上云?云HIS系统有哪些特点?
  4. 【遇见Doris】Apache Doris 在京东广告平台的应用
  5. 2022-2027年中国私募股权投资行业发展前景及投资战略咨询报告
  6. 使用ICMP协议检测网络状态
  7. iOS开发-定制多样式二维码
  8. 数据增加的两种方法(二)
  9. 谷歌Chrome浏览器中如何打开或关闭网页的自动翻译功能?
  10. 打印机原理及安装,下载驱动