用shader写伪3D
2015-04-06 11:23
99 查看
用shader写伪3D之一
用shader写伪3D,其实是件非常棒的事情,如果用用纯3D数学只在fragment shader中实现,那么要经过顶点 数据模拟、切线空间的计算、投影、遮挡处理、阴影等一系列有点繁琐的问题,但最关键的问题是这是在 fragment中啊,每个像素都要~~~~亲!你耗得起吗?~~~~~~
说说伪3D
当无法满足于性能时,于是伪3D特效就有了,它的用处在游戏中非常的广;当然伪3D包括伪3D光照、伪3D场景、伪逻辑、伪物理特性等等…………………..
它的优点是:
(1)代码量可以非常的简洁。
(2)性能可以无限的提升。
(3)视觉抽象强。
(4)用途广,尤其是在游戏和广告中等。
它的缺点:
(1)没真3D那么数学性强,可以逻辑上的补充。
(2)后期代码的难以维护。
(3)可能要大量的用到修改和经验值。
(4)当然要知道每行运行代码的效果,每个像素的运算的效果。
呵呵,可以哟
其实说白了,优缺点是人为的,自己写出思想来,写出个性来,写出自己的style来,神马都是浮云。写shader这个东西,如果不多变的换角度去写的话,想实现很炫很复杂的算法,都很难下手。
当然依国情考虑,当下都接受过应试教育的思想,也是很难有什么角度的,所以市面上一切抄袭就来了。
我们先看一下图
这是一张没任何模型灯光的图,
这也是哦,不过你会看到阴影。
看到看头,很不想看到结尾
注:这是带有伪动态光照的效果
那我们还是看看代码吧:
这是它的代码地址http://www.glslsandbox.com/e#24261.0
// by 834144373 这是qq和twitter //specular light 取得一个高光名字 #ifdef GL_ES precision mediump float; #endif uniform float time; uniform vec2 mouse; uniform vec2 resolution; void main( void ) { vec2 pos = ( gl_FragCoord.xy / resolution.xy );// + mouse / 4.0; pos = pos*2. -vec2(1.); //把远点移到屏幕中间 pos.y = fract(pos.y*5.); //y轴上下5个格子 pos.y +=(-0.4+0.4*sin(time)); //伪动态光照y pos.x +=(0.2+ 0.3*cos(time)); //伪动态光照x float d =1.1 - length(pos); //伪光照效果 vec3 color = vec3(0.12,0.55,0.4); //基础颜色 color *= d; //实行伪光照混合效果 gl_FragColor = vec4(color , 1.0 ); }
哈哈,有盖帘了吧
这很简单吧,这示列代码非常的少,它能显示的效果也可以哟,怎一个伪字了得。不过伪的原理可以通过一些常见的视觉来模拟。当然要必备各种函数的运用,函数的构造。
发挥得当。
相关文章推荐
- 【西川善司的3D图形技术连载】GPU和Shader技术的基础知识(1~8回)
- 3D引擎:Horde3D:读取Shader文件流程(二)
- untiy 3d ShaderLab读后感_1_第 1 章 Shader(着色器)的概念和在 3D 游戏中的作用
- 如何系统的学习 Unity 3D 中的 shader 编写(nvidia cg 编程)?
- Unity CG 写一个超酷的 ray-marching(shader纯代码写3D)
- 火云开发课堂 - 《Shader从入门到精通》系列 第十五节:在Shader中对3D模型进行颜色设置
- 3DShader之投影贴图(Projective Texturing)
- unity 3D 添加多个shader遮罩
- 如何系统的学习 Unity 3D 中的 shader 编写nvidia cg 编程
- 3D图形学一:模仿草的运动 – GPU(Pixel Shader & Vertex Shader)实现
- 火云开发课堂 - 《Shader从入门到精通》系列 第十六节:在Shader中对3D模型使用纹理
- 3D绘图程序设计之shader学习总结(二)
- 【猫猫的Unity Shader之旅】之简述3D图形学
- 3D打印机shader特效简单实现
- 3D残影Shader
- 火云开发课堂 - 《Shader从入门到精通》系列 第十七节:在Shader中对3D模型进行色彩与纹理色的混合
- untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_1_Unity通过ShaderLab 来组织Shader
- Shader特效——“Simple 3D Raymarch”的实现 【GLSL】
- 在Unity 3D中,shader是何时编译的,在何时加载入显存中的?
- untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_2_Unity中Shader的3种形态