- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 PBR理论基础2:光照、材质与微面元理论
接上文:PBR理论基础1:辐射度与BRDF五、漫反射项与镜面反射项漫反射项兰伯特(Lambert) BRDF:,为一定值,之所以要除以,是为了保证反射半球积分值为 1,这正好是球表面积的由此可得:给定光源入射方向,表面漫反射出射辐射率就为除此之外,还有一个十分著名的漫反射 BRDF 为 Disney BRDF:,其中 ,为表面颜色,为表面粗糙度高光反射项基于微面元理论,BRDF 高光反射项Cook-Torrance 的形式为:,其中,即光照与视线...
2021-03-27 22:41:31 826
原创 PBR理论基础1:辐射度与BRDF
前置:UnityShader9:光照基础回顾一、反射等式(reflection equation)定义::观察视角 :入射方向 :表面法向量有基于物理的反射等式:,其为渲染方程的一个实例其中和分别代表出射辐射率和入射辐射率, 为圆域积分...
2021-03-27 18:01:35 2666
原创 Photoshop1:入门实用技巧
一、去白底目的:为了避免图像的空白区域遮住背景,将图片的白色底改为透明底:1):解锁图层2):选择魔棒工具魔棒和快速选择的区别:快速选择更接近画笔,可以拖动以动态选择你想要的区域,而魔棒是算法向的,会自动选择当前颜色一致的色块,因此这里使用魔棒就会超级方便3):点击要去除的白色区域紧接着按下 Del 键删除这块白色区域,按 Ctrl+D 取消魔棒选择就完成了...
2021-03-21 00:48:38 800
原创 UnityShader30:预编译指令 multi_complie 和 shader_feature
multi_complie 和 shader_feature 编译指令往往用于正式游戏项目的优化一、关键字与Shader变体multi_complie 的用法:#pragmamulti_compile NAMEA, NAMEB, NAMEC, …,参考代码:Shader "Jaihk662/ShaderVariantTest"{ Properties { _MainTex("Texture", 2D) = "white" {} ....
2021-03-15 21:02:17 811
原创 常见图片格式与调色算法
一、常见图片格式1):JPEG 格式同等于JPG 和JPE 格式有损压缩 储存空间小 除RGB三色外,无法保留透明度、动画等任何信息颜色品质不错,但是在压缩过程中图像品质会有着肉眼可见的下降。一张图片多次上传下载后,图片逐渐会失真。一般用于网络上图片传播,不会作为游戏、影视资源使用。你网上下载的极大部分图片都会是 .jpg 格式的2):PNG 格式无损压缩 支持 Alpha 通道的半透明特性、图像亮度的 gamma 校正信息等 允许在一个文件内存储多幅图像(多...
2021-03-14 01:34:06 850
原创 RayMarching3:组合与变幻
接上文:RayMarching2:给球加上光照六、联合、交叉与取反1):联合(union)联合的目的很简单:当场景中有多个物体时,这些物体都要显示假定物体 A 和物体 B,它们的 SDF 函数为 和,那么 A ∪ B 就对应//联合float unionSDF(float distA, float distB){ return min(distA, distB);}//物体的SDFfloat sceneSDF(float3 rayPoint){...
2021-03-07 19:17:18 177
原创 RayMarching2:给球加上光照
接上文:RayMarching1:用射线的方式画一个圆四、法线与光照如果对偏导或者梯度场有了解,那么对于一个规则的平面想要得到某一点的法线就不是难题考虑到第一节 SDF 函数,我们知道:对于刚好在当前表面上的点 x 满足,对于在表面内部的点满足,对于表面外部的点满足,而法线有一个很重要的性质正是:当且仅当点 x 沿着法线的方向移动,能以最快的速度从负数递增到正数,这个增量可以用来表示,考虑到每个方向上的偏导,也就是说正是我们想要的法线肯定不需要去求导数,就按照周围的采...
2021-03-06 20:49:04 296
原创 RayMarching1:用射线的方式画一个球
一、ShaderToy作品如果你对 Shader 有一定的了解,那么你或多或少听说过shaderToy这个网站,这个网站上有很多令人振奋的 shader 效果,而这些效果有可能只用了几行代码来实现。就如同画家绘画,在这里片段着色器就是画笔,屏幕就是画纸:网站中对于任意一个作品,都提供了完整的 GLSL 片段着手器代码,它们是通过在你的浏览器中运行 WebGl 来展现这些效果的。你也可以通过修改代码,修改变量和输入来直接在网页上查看效果的变幻只通过片段着色器来输出你的画面,那么这就基...
2021-03-06 12:41:32 529
原创 将ShaderToy中的Shader搬运到Unity
一、ShaderToy作品如果你对 Shader 有一定的了解,那么你或多或少听说过 shaderToy 这个网站,这个网站上有很多令人振奋的 shader 效果,而这些效果有可能只用了几行代码来实现,就如同画家绘画,片段着色器就是我们的画笔,屏幕就是我们的图纸:对于任意一个例子,都提供了完整的 GLSL 片段着手器代码,它们是通过在你的浏览器中运行 WebGl 来展现这些效果的。你也可以通过修改代码,修改变量和输入来直接在网页上查看效果的变换把它搬运到 Unity 上并不难,由于它们...
2021-03-06 00:49:02 2218 1
原创 UnityShader29:模板测试
一、什么是模板测试:OpenGL基础30:模板测试Unity官方文档:https://docs.unity3d.com/Manual/SL-Stencil.html在 Unity 中,最经典的模板测试例子就是 UI Mask:二、Unity 中的模板测试SubShader{ Tags { …… } Pass { Stencil { //可选 Ref referenc...
2021-03-05 18:08:06 598 1
原创 UnityShader28:噪声纹理
一、噪声纹理听名字挺蒙的,其实它的作用就是展现出一个事物“混沌”或“杂乱无章”的效果,就像雾气和雪地,它们绝对不会是均匀单一的,不然给人的感觉就像是屏幕变灰了,以及往地上涂了一层白色油漆一样Shadertoy上关于Perlin噪声的实现噪声纹理本质上是一种“固定”的随机,本章后面使用的噪声纹理如左下:何为“固定”的随机呢?在 C++ 中我们会使用 Random() 函数来解决一类问题,图形领域也一样,只不过有的时只使用简单的随机生成器反而会带来更不自然的效果,右上图就是一张完全随机的噪...
2021-03-02 20:50:59 1250
原创 UnityShader例子:边缘检测
一、边缘检测没有什么新的东西,只需了解《UnityShader26:运动模糊》这一章里面的内容就好1):Roberts算子:本质就是计算左上角和右下角的差值,乘上右上角和左下角的插值,作为评估边缘的依据2):边缘检测步骤:了解 Roberts 算子的逻辑后,实现边沿检测就简单了:拿到当前 uv 坐标相邻的4个采样点,分别作为 Roberts 的四个候选点 得到每个点的深度和法线信息 计算两个对角线上候选点的法线和深度差 判断这个差值是否超过设定的阈值,如果超过则判定当...
2021-03-02 11:52:31 524
原创 UnityShader27:屏幕雾效
前置:UnityShader26:运动模糊一、Linear01Depth & LinearEyeDepth在前一章中,提到过这两个方法:LinearEyeDepth(d):将获得视角空间下的线性深度值,范围为[Near, Far] Linear01Depth(d):由 LinearEyeDepth(d) / Far 得到,范围为[Near/Far, 1]如果尝试用公式递推的话:根据《OpenGL基础29:深度测试》的内容可以得到:,其中 为远平面,为近平面因此可以反...
2021-03-01 00:39:52 490
OpenGL基础学习完整代码(完整场景带优化).zip
2020-09-28
OpenGL基础学习完整代码.zip
2020-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人