逻辑与思辨

破出对方逻辑的步骤 内在逻辑更重要,逻辑对了,语言表述不会太差。 用论断式概括出对方的逻辑 找到对方逻辑的盲点 通过盲点否定对方逻辑 思想误区 掌握运用类比论证 最常见的论证方式,标志词:就好比… 破力核心:因为p->q,所以a->b。中间存在的逻辑断档 破力方式: […]


OpenGL(二十) 投影 的shader实现

简单说来 投影 是将一个纹理贴到另一个模型或图片上的技术。在现实生活中,皮影戏就是根据这个原理产生的。 原理 参照皮影戏,我们需要一个投射器,一个采样图和一个成像模型。这样一想,跟OpenGL(二十)阴影 通过ShadowMap的shader实现中提到的投影模型是差不多的。不同之 […]


OpenGL(十九) 阴影 通过ShadowMap的shader实现

阴影 可以使角色与地面的关系更加明确。本文主要介绍如何通过 ShadowMap 在OpenGL中实现阴影 。 核心原理 Shadow Map的基本思想:通过LightView画一张DepthMap,然后Camera View渲场景的时候,把Pixel坐标变换到Light Spac […]


OpenGL(十八)Gamma校正 色域 与 HDR

通常来说,在不同设备上看到的颜色是不同的。其中最常提及的概念是高动态光照渲染(High-Dynamic Range,简称 HDR )。它可以使图像在亮度的表现上更丰富。这篇文章讨论设备颜色和校正的相关概念。 眼前的黑不是黑 人眼对亮度的敏感程度不是线性的,更容易被亮的东西所吸引。 […]


OpenGL(十七)Photoshop blend算法 与 图层混合模式

使用混合模式可以制作丰富多彩的效果。而OpenGL中可以轻松开启这种模式,但更关键的是图形算法。本文参照 Photoshop blend算法 ,介绍如何通过shader,在OpenGL中实现混合效果。 OpenGL中开启混合 在OpenGL中可以开启混合模式: [crayon-5 […]


OpenGL(十六)通过 卷积 实现: 边缘混合 、 Blur 和 高斯模糊

卷积 (Convolution)是两个变量在某范围内相乘后求和的结果。卷积计算通常用来处理边缘的颜色或整体的混色。作为采样之后的处理,可以供很多功能使用。因此在图像效果处理时,它还是应用比较广泛的。 区域缩暗 通过最简单的像素采样,可以将图片中整体的锐利度降低,通过在一个3&#2 […]


OpenGL(十五) 雾效 的 shader 实现

雾效 可以表现出一个线性的颜色变化,常用于烘托场景气氛。这种效果的实现原理并不复杂,本文着重讨论如何通过shader编写完成雾效的实现。 核心原理 雾效的核心在于:计算视点与物体之间的距离,然后根据一个衰减公式进行颜色混合。常规的算法有线性衰减,指数衰减,指数幂衰减。 线性雾效 […]


OpenGL(十四) 环境反射 环境折射 的shader实现 1

在上一节我们讲解了如何制作天空盒,本篇文章介绍它的一个衍生功能——在物体上叠加 环境反射 。 核心原理 核心很简单,在天空盒中,视线照射到天空盒上的区域即需要绘制的部分。在环境反射中,需要绘制的区域变成了视线在物体表面的反射光线,反射光线照射到天空盒的位置即要绘制的部分。 环境反 […]


OpenGL(十三) 天空盒 的 shader 实现

天空盒 的使用可以使用户感觉所处一个封闭的世界环境,使得游戏更加真实。本文主要介绍如何通过OpenGL和GLSL来实现天空盒。 核心原理 天空盒 的核心原理其实并不复杂,它相当于在视线外套上一个盒子。盒子有6个面,分别使用6张可以拼接在一起的图片。从原理上讲,通过比较视线的xyz […]


OpenGL(十二) 光源类型 平行光 、 点光源 、 聚光灯 的实现

常规的 光源类型 有三种。最简单的自然是平行光。稍复杂些的为点光源,最复杂的为聚光灯。总体说来,在可编程管线中原理是一样的。在OpenGL代码中传入必要的参数,在shader中进行相关的计算绘制出效果。本文分别介绍三种效果的shader实现。 平行光 平行光我们已经写的轻车熟路了 […]


OpenGL(十一) 可编程管线 基础光照 的实现

在OpenGL中创建 基础光照 ,主要的工作将模型中的法线信息和法线空间运算矩阵传入到shader中。另一方面,LightDir,ViewDir通常是在shader中从引擎参数获取的,为了简化光照模型的实现,这里我们可以在shader中写死。至于经典的 ambient+diffu […]


Unity3D调整 SortingOrder 解决UGUI中粒子层级问题

为了做出更酷炫的的UI效果,通常要在UI中加入粒子效果。但与纯2D的UI动画或Spine不同,粒子在场景中制作,会存在与UI的穿插问题。本文探讨如何更改特效或UI的 SortingOrder 避免穿插。 前提条件 首先,Canvas的类型是一切的基础,我使用的Canvas是Scr […]


OpenGL(十) 手机不可用特性 ComputeShader GeometryShader …

由于当前市场上还存在大量低端Android机器,它们只支持到OpenGL ES2.0,因此 手机不可用特性 有很多。对于一些3.0 甚至4.0的特性,只能看看热闹了。当然基本了解还是需要的,万一哪天都升级到3.0了呢。由于我现在也使用Unity3d开发,文中也有Unity3d的相 […]