Sen's blog

UnityShade入门精要(6·cubmap,环境映射,MRT,程序化纹理)

立方体纹理 如果要绘制天空盒需要使用立方体纹理(包含6张纹理的统称),映射到一个立方体上,立方体包裹住摄像机 从天空盒环境映射到物体上,从而让物体投影天空盒纹理,如何对立方体贴图采样? 需要3维纹理坐标,方向矢量从立方体中心出发,和立方体求交点即求纹理坐标 天空盒实例: 首先在unity创建天空盒非常简单,只需要新建材质,选择 Unity 自带的Skybox/6 Sided着色器,...

UnityShade入门精要(5·渲染路径,多光源,阴影)

渲染路径 渲染路径,决定了光照信息是如何在渲染管线中传递和什么位置进行光照计算的 unity主要有3 种渲染路径:前向渲染路径(ForwardRendering Path)、延迟渲染路径 (Deferred Rendering Path),顶点照明渲染路径 大多数情况下, 一个项目只使用一种渲染路径,因此我们可以为整个项目设置渲染时的渲染路径。我们可以通过在Unity 的Edit– P...

UnityShade入门精要(4·透明测试与混合)

透明效果 对于不透明物体,有两种方法可以保证正确绘制遮挡关系: 不启用深度测试,确保渲染顺序:从后往前渲染,因为每次渲染都会更新颜色缓冲区 启用深度测试,深度值比深度缓冲更小的会通过测试 透明效果 但是想要实现透明效果,就不那么简单了,在 Unity 中,我们通常使用两种方法来实现透明效果: 透明度测试(AlphaTest):只要一个片元的透明度不满足条件(比如小于某个...

版本管理工具

版本管理工具 当我们多人协同开发,要面临同一个项目的维护,我们希望有 追溯历史版本(包括谁做了什么修改),分工协作(增删改,避免代码冲突和重复),版本管理(发布版本、测试版本等),分支开发 等功能,因此我们使用 版本管理工具,其中最常使用的为git 和 svn: Git vs. SVN Git: 分布式版本控制系统,每个开发者都可以在本地完整地复制整个代码仓库,并且可以独立地进...

UnityShade入门精要(3·2DTexture)

Texture 想要完成贴图的效果,是通过纹理映射,找到顶点对应的纹理坐标,查询纹理上对应的纹素,根据纹素的颜色设置顶点的颜色 OpenGL和DirectX在二维纹理空间中的坐标系有差异,在OpenGL里,纹理空间的原点位于左下角,而在DirectX中,原点位千左上角。Unity使用的纹理空间是符合OpenGL的传统的, 也就 是说,原点位于纹理左下 在shader中,新增纹理等属性,...

UnityShade入门精要(2·基础LightModel)

光照 如果它看起来是对的, 那么它就是对的 理论 颜色的本质? 看到的物体颜色,是光源发出的光线经过物体散射后到人眼 如何量化光?(辐射度量学) 一个物体表面的辐照度,是垂直于单位面积单位时间通过的光能量,对于不垂直的光能量,物体辐照度和costheta(光线和物体法线)成正比 光线与物体相交时? 会散射(反射(外部)和折射(内部))(不改变光线颜色)与吸收(改变光线颜色) 光照...

UnityShade入门精要(1·unityShader基础和Debug)

之前理论章节先略过,有时间再看,从第5章实战部分开始 渲染管线简化流程:data->CPU->GPU->演示,的过程,其中我们可以更改其中的shader可编程部分,完成不同的最终演示效果 在引擎中应用shader非常方便,其它的都是unity editor中的可视化的图形,仅需要将写好的shader应用到物体材质上,这个物体的渲染就会用这个着色器,那么根据shader的...

BreakOut_OpenGL下

BreakOut_OpenGL下 粒子 在游戏中创造一些有趣的效果比如火焰,青烟,烟雾,魔法效果,炮火残渣等 粒子特效由众多粒子组成,每个粒子其实就是总是面向摄像机方向,且大部分区域是透明的纹理的小四边形(sprite), 粒子结构体有生命值,位置,速度,颜色属性, 粒子有额外的shader,使用vec2 offest位置控制粒子运动,它还包含uniform color颜色,让我们可以...

BreakOut_OpenGL上

BreakOut_OpenGL上 用openGL.C++制作一个经典2D游戏——Breakout逃脱 游戏机制: 游戏要求玩家通过操控一个挡板在屏幕范围内左右移动 还有一个小球,在屏幕上运动,每次和(屏幕边框,砖块,挡板)碰撞都会使球根据碰撞位置改变运动方向 当球运动到屏幕底部边界的时候,游戏结束(失败) 当破坏所有的砖块,游戏结束(胜利) 游戏框架 对于项目涉及的所有模块,...

VulkanTutorial(18`Multisampling,Compute shaders)

Multisampling 我们不希望渲染效果有锯齿,它是由于像素分辨率导致的,解决问题的方式之一时多采样抗锯齿MSAA, 普通的光栅化渲染方式,每个像素有一个采样点,如果采样点在图元内,就绘制颜色,否则保留空白,由于分辨率,边缘处就会形成锯齿 MSAA是每个像素多个采样点,如果采样点在图元内,就让颜色*权重,否则采样点颜色为0,将一个像素内所有采样点颜色相加即像素颜色 Getting av...