
shader
文章平均质量分 86
xiaogeformax
邮箱:xiaogeformax@gmail.com
展开
-
shader入门--PixelShader运用实例
PixelShader:PixelShader的功能是根据传入的变量,按照某种算法计算出每个像素的颜色.即是在传入变量里面,包含顶点法向量,纹理观察位置等变量,在执行的时候,根据PixelShader传入的各顶点上的的数据,再按两个顶点之间的数据进行插值,从而得到对应的像素的计算结果.PixelShader的输出:由于可以控制模型上的每个像素的颜色,可以将模型德尔颜色直接输出,原创 2016-03-18 07:19:51 · 1634 阅读 · 0 评论 -
Normal Mapping 法线贴图
法线贴图(Normal mapping)在三维计算机图形学中,是凸凹贴图(Bump mapping)技术的一种应用,法线贴图有时也称为“Dot3(仿立体)凸凹纹理贴图”。凸凹与纹理贴图通常是在现有的模型法线添加扰动不同,法线贴图要完全更新法线。与凸凹贴图类似的是,它也是用来在不增加多边形的情况下在浓淡效果中添加细节。但是凸凹贴图通常根据一个单独的灰度图像通道进行计算,而法线贴图的数据源原创 2016-03-20 22:38:17 · 1554 阅读 · 0 评论 -
unity 全息和xRay shader
unity 全息和xRay shader这个是网上的效果,科幻的感觉是不是很强烈。 下面是我们去实现的效果。 先看下效果图,左边的是Xray的效果,右边是全息的效果。都有着异曲同工的妙处。 全息的效果全息特效只显示物体的轮廓,必然会有用到类似于边缘光照的效果。void surf(Input IN, inout SurfaceOutput o) { float4 c =原创 2017-09-02 16:16:08 · 7748 阅读 · 1 评论 -
unity 中Deferred Lighting (延迟光照)
Deferred Lighting (延迟光照)Deferred Lighting简介这个是unity 圣典里面对于延迟光照的解释Deferred Lighting is rendering path with the most lighting and shadow fidelity:延迟光照是一种当前最高级的能实现光线和阴影保真的渲染路径There’s no limit how many lig原创 2017-08-17 20:47:10 · 3468 阅读 · 0 评论 -
shader水面起伏的波浪
利用shader来实现飘扬的旗帜,同样可以实现水面起伏的效果.demo下载一.原理旗帜飘扬的动作都比较平滑,这个是利用了正弦曲线来实现顶点位置的变换规则,简单看一下上图,水波利用先定义的一个函数来计算Y方向的移动,在VertexShader里面调用此函数来实现模型在Y轴方向的位置,并随着时间而起伏,实现类似波浪和旗帜飘扬的效果.看一下效果图代码实现:原创 2016-05-04 16:16:12 · 8184 阅读 · 1 评论 -
水波纹(water ripple)
demo下载水波纹,鼠标点击后水会四散,产生涟漪的感觉,十分真实.实现原理:扩散:当你投一块石头到水中,你会看到一个以石头入水点为圆心所形成的一圈圈的水波,这里,你可能会被这个现象所误导,以为水波上的每一点都是以石头入水点为中心向外扩散的,这是错误的。实际上,水波上的任何一点在任何时候都是以自己为圆心向四周扩散的,之所以会形成一个环状的水波,是因为水波的内部因为扩散的对称而原创 2016-05-08 19:15:21 · 5306 阅读 · 2 评论 -
VAO,VBO绘图方式及GLSL传值
顶点数组对象(VAO)顶点缓冲区对象(VBO)用VAO方式来绘制一个三角形,步骤一:VAO,VBO对象的创建,glGenVertexArrays()是分配定点数组对象,这里说明有一个VAO对象,并且已经使用未初始化的定点数组集合的默认状态进行了数值的初始化.glGen*类型负责分配不同类型的对象分配glBindVertexArray()负责创建并且绑定一个定点对象.gl原创 2016-05-27 23:44:08 · 1633 阅读 · 0 评论 -
视差贴图(Parallax Mapping)与陡峭视差贴图(Steep Palallax Mapping)
视差贴图(Parallax Mapping)视差贴图目前已经被广泛运用了,只需要增加一种模型表面的深度纹理信息之后,就能近似的模拟模型的凹凸,在不需要灯光,不需要环境反射的情况下,可以比较真实的模拟真实世界.原理:根据用户的观察角度来将纹理坐标偏移,就是把模型表面较高的位置来遮挡位置较低的位置.当用户观察角度改变的时候,让一些像素的纹理坐标偏移来遮挡一些像素,从而使观察者感觉到凹凸原创 2016-04-20 13:13:06 · 6279 阅读 · 2 评论 -
渲染到纹理(Render To Texture, RTT)详解
渲染到纹理(Render To Texture, RTT)详解RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要。但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿,不知道是因为太简单还是因为这项技术已经出现很长时间了。总之我是在摸索这个东西的时候绕了不少弯子。现在把具体的实现方法写下来。 什么是纹理 熟悉DX的兄转载 2016-04-19 23:33:51 · 2670 阅读 · 2 评论 -
Alpha Mapping
阿尔法通道:(α Channel或Alpha Channel)是指一张图片的透明和半透明度。例如:一个使用每个像素16比特存储的位图,对于图形中的每一个像素而言,可能以5个比特表示红色,5个比特表示绿色,5个比特表示蓝色,最后一个比特是阿尔法。在这种情况下,它要么表示透明要么不是,因为阿尔法比特只有0或1两种不同表示的可能性。又如一个使用32个比特存储的位图,每8个比特表示红绿蓝,和阿尔法通道原创 2016-03-21 23:12:15 · 1135 阅读 · 0 评论 -
广告版技术BillBoard 原理与实现
面向世界的广告板demo下载广告板技术:无论观察者处于什么位置观察任何图像,广告版都能提供一个朝向观众的面,这个面随着摄像机的改变而改变.BillBoard技术是计算机图形学领域中进行快速绘制的一种方法。在类似游戏这种对实时性要求较高的场景下采取BillBoard技术可以大大加快绘制的速度从而提高画面的流畅性。把3D的物体用2D来表示,然后让该物体始终朝向镜头。比如场景中的原创 2016-04-10 19:12:07 · 7159 阅读 · 0 评论 -
缓冲区Alpha Blend
(demo)源代码下载Alpha blendAlpha混合通常是为了实现透明效果,透明效果的程度通过alpha值来控制,对于一个8bit的alpha chanel,可以产生0-255级透明效果,0表示完全透明,255表示完全不透明,在D3D中alpha值的来源主要有三种.颜色混合方程 其中op在这里定义为混合操作共有五种形式ADD表示相加操作,原创 2016-04-04 08:02:42 · 2132 阅读 · 2 评论 -
shader镜面反射(Reflection)
镜面反射:要实现场景中类似镜面反射的场景,是一种很美妙的事,列如水中的倒影,玻璃上面的反射.下面我们来实现这种功能.我们来原创 2016-04-03 07:17:59 · 9117 阅读 · 0 评论 -
实现BlinnPhong 光照的原理
引言:在Shader中实现BlinnPhong光照时,会用到一些代码,这些代码令人费解,下面是BlinnPhong 在Unity里内置的函数: 在文件Lighting.cginc里面windows系统下位于:…Unity\Editor\Data\CGIncludes\这个是实现BlinnPhong 的函数inline fixed4 Lighting原创 2016-01-25 00:47:58 · 3584 阅读 · 0 评论 -
建立一个raymarching
建立一个raymarchingshadertoy 查看先解释一波 raymarching, Raymatching是一种计算机图形渲染方式,但它的潜力仍未被完全发掘。Raymatching一般用于渲染体积纹理、高度图以及解析曲面。如今,大多数游戏用OpenGL或Direct3D(DirectX)来使用显卡的硬件加速器绘制多边形,电脑可以以每秒60帧的速度渲染几百万个三角面。虽然Raymatc...原创 2018-10-28 17:08:18 · 1087 阅读 · 0 评论