写博客缘于自己对学习的文字积累,也方便温故而知新。多年内也认识很多互相学习的同学。特开此篇置顶汇总相关的博客,并成立学术讨论群方便同学们互相学习。OpenGL.ES在Android上的简单实践系列:基础入门,和网上的纯理论教程不一样,我喜欢以实践项目的形式展现基础内容。学完本教程基本能把握OpenGL.ES的使用,可以开始进阶入门其他高级用法。OpenGL.ES在Android上的简单实践:1-曲棍球(基本环境和定义顶点)OpenGL.ES在Android上的简单实践:2-曲棍球(编译着色器及屏幕上绘图)OpenGL.ES在Android上的简单实践:3-曲棍球(顶点归一化、增加颜色)Open
下面是几种Shader的例子,从简单到复杂,一步一步了解Shader的编写机制。UnityShader的分类顶点/片元着色器Vertex/FragmentShader,下面我们介绍的示例就是这个。表面着色器SurfaceShader,而这个底层Unity也是转成了顶点/片元着色器固定函数着色器FixedFunctionShader(已弃用)在一些低端设备使用表面着色器是对顶点/片元着色器做的一层封装。示例目录Shader基本结构Shader中定义结构体,简化程序由顶点着色器,编写漫反射Shader程序由顶点着色器控制漫反射,同时增加Inspector面板控制片元着色器漫反射Shader半兰伯特
Unity和URP版本我使用的Unity版本为2020.3.33f1,对应的URP和SRPCore版本为10.8.1。阅读URP源码建议把package从Library/PackageCache中拷贝到Packages目录,也就是自定义package的方式,然后推荐使用VScode打开工程,这样可以很方便的跳转代码阅读。URPShader目录结构首先,我们看一下URP源码的目录结构,看一下Shader代码的位置:Shader代码位于Shader目录以及ShaderLibrary目录中,先总体看一下都有哪些内容。从hlsl文件的名称中我们就可以发现很多URP的渲染管线功能了,比如渲染阴影贴图使用
Unity官方Shader介绍:TRANSFORM_TEX文章目录Unity官方Shader介绍:TRANSFORM_TEX纹理(Texture)纹理坐标(UVW,STR)纹理映射(TextureMapping)和纹理采样(TextureSample)纹理环绕模式(TextureWrapMode)TextureWrapMode.RepeatTextureWrapMode.ClampTextureWrapMode.Mirror**TextureWrapMode.MirrorOnce**总结在Shader中,我们经常看到一个调用:o.uv=TRANSFORM_TEX(v.uv,_MainTex);
文章目录ShaderLabcginc固定Vector.forward方向的球形透视根据镜头任意视角方向的球形透视添加开始弯曲透视的z距离偏移CurveWorldControl.cs需要修改的代码ProjectReferences我发现莉莉丝的《神觉者》在战斗中也有使用到这个效果,视觉效果提升还是很大的比如,球形投影前的效果球形投影后的效果GIF:ShaderLabcginc固定Vector.forward方向的球形透视参考:ShaderinUnity&Curvedworldshader&Changematerialcolor实现的效果实现的只能是Vector.forward方向的球形投影#if
目录1引言2顶点沿法线外拓方式2.1法线外拓+ZTestAlways2.1.1代码2.1.2问题点2.2法线外拓+CullFront2.2.1代码2.2.2改进点2.3法线外拓+ZWriteOff2.3.1代码2.3.2问题点2.4法线外拓+模板测试2.5法线外拓实现描边的问题3屏幕后处理的方式3.1使用Camera的着色器替代技术3.1.1着色器替代技术3.1.2描边思路3.1.3问题点3.2RenderCommand3.2.1思路3.2.2CommandBuffer3.2.3完整代码4完整工程5参考文章1引言总结下描边效果的实现方式,主要有以下几种:①法线外拓+ZTestAlways②法线
我知道过去几年也有类似的问题,但在做了一些研究之后,我仍然无法决定从哪里学习以及应该学习什么。我还想看看您当前对现代OpenGL编程的实际看法,以及更多的C++OOP和着色器方法。并确保我对某些事情的实际理解是有效的。所以...目前我们有OpenGL4.2,正如我在某处读到的,它需要dx11硬件(这是什么意思?)和一组“side”库,例如创建窗口。有最常见的GLUT,我非常讨厌。主要原因之一是函数调用,它不允许我们在创建主循环的方式上自由。正如一些人所说,它不适合游戏。还有GLFW,它实际上对我来说非常好和直截了当。出于某种原因,人们将它与GLUT一起使用。(它不仅提供窗口初始化,还提
我知道过去几年也有类似的问题,但在做了一些研究之后,我仍然无法决定从哪里学习以及应该学习什么。我还想看看您当前对现代OpenGL编程的实际看法,以及更多的C++OOP和着色器方法。并确保我对某些事情的实际理解是有效的。所以...目前我们有OpenGL4.2,正如我在某处读到的,它需要dx11硬件(这是什么意思?)和一组“side”库,例如创建窗口。有最常见的GLUT,我非常讨厌。主要原因之一是函数调用,它不允许我们在创建主循环的方式上自由。正如一些人所说,它不适合游戏。还有GLFW,它实际上对我来说非常好和直截了当。出于某种原因,人们将它与GLUT一起使用。(它不仅提供窗口初始化,还提
上一篇记录了在Unity中阴影映射的标准流程实现,本篇博客一起来看看阴影映射存在的自遮挡/自阴影问题及其优化方案。因为在之前学习202的过程中也有记录这方面的内容,所以这里结合我的GAMES202作业1-实现过程详细步骤这篇博客以及百人计划实时阴影那节课再来巩固一下。1产生原因浮点计算精度采样问题(shadowmap上一个值对应太多物体表面边界点)由于阴影映射的分辨率有限,或者说采样的时候做判断时“比大小”的过程数值精度比较会有偏差,难免会造成不正确的自遮挡阴影,关键在于“自”!是指物体自己表面上出现了本不该有的阴影锯齿。而且这种不正确的自遮挡阴影往往会出现在物体和光线靠近的那种边缘处,出现这
上一篇记录了在Unity中阴影映射的标准流程实现,本篇博客一起来看看阴影映射存在的自遮挡/自阴影问题及其优化方案。因为在之前学习202的过程中也有记录这方面的内容,所以这里结合我的GAMES202作业1-实现过程详细步骤这篇博客以及百人计划实时阴影那节课再来巩固一下。1产生原因浮点计算精度采样问题(shadowmap上一个值对应太多物体表面边界点)由于阴影映射的分辨率有限,或者说采样的时候做判断时“比大小”的过程数值精度比较会有偏差,难免会造成不正确的自遮挡阴影,关键在于“自”!是指物体自己表面上出现了本不该有的阴影锯齿。而且这种不正确的自遮挡阴影往往会出现在物体和光线靠近的那种边缘处,出现这