图形
潘李亮
一个苦比的程序员
展开
-
Unity矩阵变换
Unity矩阵变换原创 2023-02-15 14:45:48 · 529 阅读 · 0 评论 -
Gbuffer的法向量的压缩
BTW: 自己看到了记录一下,大家随意。原文链接:https://aras-p.info/texts/CompactNormalStorage.html1.直接存在RGB通道上。half4 encode(half3 n){return half4(n.xyz*0.5+0.5,0);}half3 decode(half4 c){return c.rgb*2-1;}2.存储法线的XY在颜色通道上,计算Zhalf4 encode(half3 n){return half4(n.xy*0翻译 2021-07-06 11:38:55 · 950 阅读 · 1 评论 -
Android 下开发3D程序--我的坎坷路(一)
为啥括弧(一)呢,是因为知道肯定会有二。有木有二,有木有!!!!话说。第一个坑:我是用我的HTC Desire Z开发的,我最爱的Sense界面啊。。。刷都是官方的ROM。每次调试,NDK模块死掉后都是木有堆栈函数名显示的。那天心血来潮,换我老婆的V880(CM7系统)。 竟然有原创 2011-09-03 06:07:41 · 2325 阅读 · 3 评论 -
废弃了两年多的骨骼动画终于又动起来了。
算了算,上次整里骨骼动画的代码要是2006年了。那会整理一坨临时的骨骼动画代码后再也没折腾过。这次D10的架子搭好后终于花了一个周末让那一大陀骨骼动画的代码重新动起来了。用D10做GPU的skin还真是简单,晚上顺手把cbuffer/tbuffer/Buffer三种模式的Bone数据传递模式都支持上了。再也不用为骨骼个数限制而烦恼了。下一步,做光照和渲染系统以下是SkinAni.h原创 2008-10-28 02:01:00 · 5383 阅读 · 14 评论 -
Node Based ShaderGenerator Features list
Node Based的代码生成器经过几天的修正,基本已经做到可用了。目前支持以下Feature.1. 符合规范和调用协议的Node组合。2. 支持字符串方式来命名由多个shader node组合在一起的node如 HGpuProgram hProgram = pMGR->load(L"simple.pixel" , NULL, NULL);3. xShaderNa原创 2008-10-09 11:37:00 · 1809 阅读 · 3 评论 -
Node Based Shader
这段时间实在太懒了。往年,十个这玩意都写好了。现在基本的数据结构已经确定了。shader的代码(骨架类)既可以单独用,也可以由Node串起来。预计Shader的用法为//加载一个由SimpleTrans.hlsl 为基础骨架,加上Skin, Morph两个Node动态生成的Shader.HXShader hShader = m_ShaderMgr.load(L"SimpleTran原创 2008-09-20 01:07:00 · 2060 阅读 · 0 评论 -
说说Intel的驱动
这两年做3D Demo少了,基本被产品在折磨,虽然做的产品都没啥技术含量。不过问题倒见了一大堆。 这两天很想喷一喷的就是Intel的3D Driver问题,或者由Driver引起的问题。首先说说OpenGL的。 问题一. 最早帮朋友做的一个用OpenGL实现的实时处理视频的库,发现把一个窗口SetPosition成全屏后,在切回到原始大小后,窗口就不停的闪,在Windows XP Profes原创 2008-04-20 19:30:00 · 8810 阅读 · 26 评论 -
艰难的shader系统(三)--前期计划
首先申明,我在折腾的Shader系统主要是给程序用的。用来动态生成Shader。以防止手写Shader的组合爆炸。但是可能会给美术一个辅助工具,能用程序支持的功能来进行Shader组合。 现在 基本上已经确定了Shader的实施方案。分三个阶段实施: 阶段一:简单的shader加载,跟普通的shader没两样。不支持任何动态特性。实施简单,能让程序先run起来。原创 2008-01-04 23:02:00 · 2627 阅读 · 0 评论 -
高效率视频播放: GPU支持的YUV RGB 转化例子(2)
最近一直在做视频的播放。尤其是HD的视频,即使是1024 x 576的视频播放在CPU消耗上是一个巨大的压力。更大的还有1920 x 1080的。在CPU的消耗上简直就是一个恶梦。 最近用DSHOW做了一个Demo。一般Dshow的例子里都是直接用VMR把视频播放出去。对于游戏开发人员跟视频处理的应用来说,一个额外的要求就是你自己需要写一个Video Renderer截获视频的Fra原创 2007-10-12 15:54:00 · 8903 阅读 · 10 评论 -
高效率视频播放: 如何使用3D API 进行视频的高质量回放(1)
文章最初发表于it168 http://tech.it168.com/n/d/2007-04-18/200704181517531.shtml 这个月准备写一些关于如何使用3D API搭建一个高质量的视频回放后端,其实想想也是时候了,在这个公司快一年了,Backend从开始的支持RGB24,到YUV的支持,到后来质量的不断提高, 尤其是播放质量被SONY这样苛刻的公司接受以后,原创 2007-10-16 09:52:00 · 13278 阅读 · 14 评论 -
渲染器脚本应用实例之全屏扭曲。
先贴效果图。使用集成了脚本功能的渲染器插件后,要做一些全屏效果显得非常的简单。下面就是一段简单的script code。用来实现全屏幕扭曲效果。如果贴图和参数调整的好。可以用来模拟热气对画面的扭曲效果。int queueNormal;int hotGasShader;int rt;void StartRenderer(){ queueNormal = cre原创 2007-06-08 11:43:00 · 4023 阅读 · 0 评论 -
光照系统可以工作了。
光照系统可以工作了,新增加一个Const Buffer专用于传递光照相关的参数:ILightingEnvState.做光照相对D9来说简单了许多。不需要任何的setShaderParamter之类的调用了。Simple.Lighting的shade Node 和用于光照的shader lib如下:libLighting.hlsl:struct xLightDesc{ floa原创 2008-11-25 16:46:00 · 2289 阅读 · 0 评论 -
Mesh View:简化的Clipmap地形渲染
Mesh View Terrain Rendering潘李亮2010/6/19本文借鉴目前的地形渲染和地形数据管理调度的解决方案,提出一种简单易实现的无限大地形的数据调度和加载方案。现有方案John Camark 的id-tech5 的技术demo中给我们展示了一个无比细致的室外场景,该演示使用了id-software的最新技术,Mega-Texture, Mega Textue严格的来说是一种纹理的调度和管理方案,但是Mega-Texture最早的起源于SGI的Clipmap[参考文献1]技术,而Clip原创 2010-06-20 03:05:00 · 4113 阅读 · 9 评论 -
OpenGL ES 模拟器的支持与比较。
OpenGL ES模拟器的动态加载 。以及多个OpenGL ES模拟器的比较原创 2011-04-21 00:46:00 · 8325 阅读 · 0 评论 -
dds的cube加载到opengl里后的处理方式。
其实完全没明白咋回事。整个稀里糊涂的。也不想自己去弄个CubeMap啥的。将就着用dds吧。如果加载的dds 的 CubeMap ,目前这么处理的:1. 加载的时候把 postive - y 和 negative -y 两个图像对调一下。2. 在textureCube的时候,把 纹理坐标的 y 取个负数 。如果是你自己渲染出来的cube,千万不要问我,我真不知道。。。但是我想碰到了我应该弄的出来吧原创 2015-07-28 00:55:01 · 10478 阅读 · 0 评论 -
Evolution3D引擎成果截图
秀一下。场景是朋友公司的。放到编辑器里渲染了一下。效果还可以。拿出来秀一下。4 Cascaded CSM做的太阳阴影。大殿里放了一个带ShadowMap的Spot Light和一个没带阴影的Point Light.HDR/Bloom全开。原创 2013-01-04 04:19:52 · 13741 阅读 · 1 评论 -
Evolution3D引擎技术演示
Evolution3D引擎技术演示。最近实在太忙。没时间准备DEMO。先随便折腾一下老版本的资源。凑合着看先吧。目前Evolution3D的Feature:1. 全动态光照。支持点光源,聚光灯,太阳平行光。2. 支持高光贴图。3. 支持Max 烘焙的DX FX材质, Shell材质。4. 支持法线贴图。5. 支持Soft Shadow.5. HDR + Bloom6. AO。7.原创 2012-05-12 22:02:55 · 5445 阅读 · 0 评论 -
3D API中,字体绘制的Batch优化
在3D引擎中绘制字符是很恶心的事情。一个个绘制吧又太慢。组成一个大mesh吧。又太耗引擎的人品。而且还是得lock/unlock vb。才绘制了一百多个字。 fps从600掉到80多。经过跟别人的讨论。pos之类的数据用shader constant来传递会效率高一些。于是做了这样个处理。1. 做72个1x1大小的Quad。 (其实可以用一个,DrawInstance就好了)。2. 将纹理相同的c原创 2012-07-26 12:37:02 · 11528 阅读 · 0 评论 -
DX11的陷阱?
这两天重新把延迟渲染的shader重新移回到DX11下。碰到以下恶心的事情(当然,DX9恶心的事情更多,但凡是恶心的东西,都要吐槽以下)。---------------------------------------------1. DX11对Shader之间的linkage更加严格,当然这个有助于你的shader正确,只是Debug的改那一堆东西十分讨厌。2. for循环的小心用。第一次碰到原创 2012-07-26 01:54:39 · 11294 阅读 · 0 评论 -
Deferred ANTI-Shading/Lighting 的设想
延迟渲染比较适合做那种全场景的光照,影子渲染也比普通的Inferred Shading来的有效的多。 但是其实很多游戏,尤其是休闲类的小游戏,其实不需要那么高级的光照。也不需要计算那么多的灯光,啥specular的,应该都是不需要的。而且场景平时看上去也比较亮堂。但是这样的游戏,如果不给一定的阴影,不给一定的AO之类的效果的话,画面又不够立体。 我在想,如果在DS的shading阶段,我们原创 2011-12-16 13:46:56 · 2269 阅读 · 0 评论 -
三角形网格的TBN矩阵中的Tangent计算。
面的tangent计算见http://blog.csdn.net/soilwork/article/details/1468860下面简单的说一下整个网格的tangent计算。 for each face in list t = face.tangent; for earch point in face point.tangent += t ; endendfor e原创 2011-12-14 14:39:08 · 3020 阅读 · 0 评论 -
Android下可用的wide char 函数库
原文发布:http://www.hellocpp.net/Articles/Article/779.aspx 附件也请到这里去下载, csdn不知道怎么上传附件。如果上面的网页打不开,说明我还没找到后台管理的密码,稍后想起来了,文章审核到前台就看到了。 附件地址 ht原创 2011-08-30 01:44:35 · 2227 阅读 · 2 评论 -
脚本与渲染器 .
一直以来都想做一个脚本驱动的渲染器.就是说可以用脚本定制渲染器的行为,比如创建多少个渲染队列,如何渲染.多少RenderTarget, 每个物体的材质也是一样. 要生成多少个Pass,每个Pass是立即渲染呢还是放到那个队列里 . 其实我是个很懒的人 ,这个想法早在去年就有了.一直拖到现在,昨天晚上实在受不了自己的懒惰了.也受点老宋一些刺激,顺手就抓了个AngelScrip原创 2007-06-04 10:01:00 · 2755 阅读 · 2 评论 -
关于OpenGL 3.0/4.0
关于OpenGL 3.0/4.0SIGGRAPH 2007过去了。BOF放出来一些ppt也有段时间了。只是最近一直在玩游戏.没来的及琢磨些什么.难得晚上不知从 哪里来的雅兴.又想罗嗦几句了。 以下据说是会支持的东西:1.API风格向DX10靠拢了。意味着需要切换的习惯和风格小了。需要区分的也少了。2:各种渲染状态据说也跟D10一样分成多个State Object了。还区分Mutable和非mat原创 2007-08-17 10:11:00 · 4070 阅读 · 2 评论 -
Khronos 官方新闻 Windows Vista 和 OpenGL 的事实 ZT
http://www.khronos.cn/news/press/2007/04/23.shtml/Windows Vista 和 OpenGL 的事实Khronos OpenGL ARB 工作组2007年4月20日 Khronos OpenGL ARB 工作组近日收到了关于澄清OpenGL 在Windows Vista上运行性能的请求。基于Microsoft 已经通过 Win转载 2007-04-24 11:12:00 · 2748 阅读 · 0 评论 -
我的材质系统---RenderScript的设计日记 (2005-8-11)
RenderScript的设计笔记:2005-8-11: 1: RenderScript为一系列的渲染指令.用来指示渲染器如何来渲染物体, 也可以理解为RenderScript如何调用渲染器的渲染接口 2: 物体本身包含了以下的信息,就是渲染器和RenderScript使用的数据. (1): surface material ,其中包含了 Textur原创 2005-08-12 01:22:00 · 2800 阅读 · 0 评论 -
我的材质系统---RenderScript的设计日记 (2005-8-08)
我的材质系统RenderScript的设计日记:最近在思考怎么做一个灵活的渲染的控制系统,也就是说的材质系统,或者说Effect系统. 最近思考的可能也就这个了.准备把一些心得以日记的形式写出来.方便终结归纳. 其间各个时间出来的思路可能很不相同, 希望大家评价参考.但是不要起不同的日期的日记思路的完全不搭杠来攻击我.2005-8-08功能设计: 1: 提供渲染状态的管理,Shader的使原创 2005-08-12 01:21:00 · 2455 阅读 · 0 评论 -
Real-Time Glow
Real-Time Glow原出处: http://xreal.51.net/Game/realtimeglow.htm 所谓的glow,就是在一个对象旁边出现一些光晕.通常一个自身能发光或者相对场景中其它比较暗的物体来说,都会产生这种现象的。而且,这些对象看起来都会比自身更加亮一些. 其实要产生glow很简单.我在这里简单的描述一下: 1:按通常的模式渲染场景. 2:只渲染带有glow原创 2005-03-07 22:34:00 · 2861 阅读 · 0 评论 -
快速8-bit通道的伪HDR的实现
快速8-bit通道的伪HDR http://bbs.gameres.com/showthread.asp?threadid=23298看了Hugo老师的文章,试验了一下.写了一个Fragment shader,用ShaderDesigner写的.fakehdr.frag//http://freespace.virgin.net/hugo.elias/graphics/x_posure.原创 2005-02-19 19:28:00 · 3073 阅读 · 0 评论 -
MAX SDK的INode的变换矩阵,以及Object的一些常识
MAX SDK中,INode是很重要的一个部分。 几乎所有的东西都需要通过INode来访问:Mesh Camera等.下面我来简单的介绍一下和INode相关的各种不同的TM.(Transformation Matrix).仅仅代表我近日阅读MAX SDK的一些理解.希望高手指教.新手讨论. 首先是介绍一下Node和Object(Mesh TriObject等).MAX里的Scene是由INode构原创 2005-01-06 00:21:00 · 6719 阅读 · 5 评论 -
主页搬迁,新地址http://xreal.51.net/
由于原来的主页服务过期,现在我的主页已经由http://gamehunter.3322.net/xpertsoft/ 搬迁到http://xreal.51.net/应大家的要求,已经增加了留言板和计数器.欢迎来做客.原地址已经不能访问xheartblue原创 2004-09-27 21:14:00 · 3169 阅读 · 0 评论 -
如何求三角形和线的交点.InterSection函数
这个算法来自微软DirectX SDK.兰幽草推荐的.基本算法都想明白了。就是那个t 为什么没有负号.我还没有想明白.不知道为什么不过结果基本已经正确了。应该比较好用的。 bool InterSection(XRay& ray,XTriangle& tri,XPoint& point,float& t, float& u, float& v ) { // Find vectors for t原创 2004-06-27 00:27:00 · 3034 阅读 · 1 评论 -
OpenGL D3D 学习资料
Section OpenGL : 权威的官方网站: www.opengl.org 从这里你能连接到基本上所有OpenGL学习比较好的地方.也能下到最新的头文件. http://Nehe.gamedev.net 为什么把它拿出来。 因为它太出色了。 书本:国内能买到的就是两本书:OpenGL RedBook 和 超级宝典.介绍的不多.看完了你的OpenGL也差不多了。当然你的图形学基础要扎实.原创 2004-06-26 16:06:00 · 3476 阅读 · 1 评论 -
发布一下偶的简历
姓名: 潘李亮英文名:Stanly Lee性别: 男出生年月: 1981-2-28毕业学校: 西北工业大学 软件学院/民航工程学院学历: 本科专业: 计算机软件/飞行器动力工程籍贯: 浙江省缙云县通讯地址: 无 MSN : xheartblu原创 2004-07-31 22:39:00 · 4208 阅读 · 7 评论 -
半透明物体边缘透射的简单模拟
半透明物体边缘透射/散射这样的效果应该用SSS(Sub-Surface Scatter)的技术来模拟,通俗点说就是玉的效果.但是本人数学不过关,看不懂SSS :-( ,. 今天早上在想,如果考虑到物体的在沿着视线方向的厚度,以及正对光源的程度,是不是也可以出来点半透明的效果呢? 来不及写一个程序来计算物体表面的厚度信息, 所以假设,越是边缘的地方,越原创 2005-08-27 09:57:00 · 4111 阅读 · 1 评论 -
图形引擎体系设计的一些构思
首先声明一点,这是本人的构思,没成事实,请探讨。 首先我认为一个图形引擎最重要的是体系结构,结构决定了易用性,灵活性,以及效率和稳定性。易用性: 这是最重要的,如果一个引擎不好用。就没什么价值了。灵活性: 硬件,技术都是无时无刻不在变化的。如果一个软件的体系结构不灵活,就不能适应这些改变。同时一个引擎的灵活性不够,也表示它的可移植性也不好。也没什么意义。效率: 如果你做出一个蜗牛,我想用户原创 2005-06-09 22:18:00 · 3177 阅读 · 2 评论 -
Subsurface Scatting 的简单模拟
SSS是次表面散射的简称,具体物理含义因为本人水平太低,不好意思说。这里借鉴GPU Gems上的一种方法,用两个DepthTexture提取出物体对着眼睛的厚度。 越厚的地方,透射的越少。让物体呈现出一种半透明的效果。在MRT的卡上,可以用3个pass来实现,第一个pass渲染出最远距离(最大深度),第二个pass渲染出最小的距离,和画出物体的本身光照(正常渲染),,这里动用了两个rend原创 2005-11-23 00:32:00 · 2731 阅读 · 0 评论 -
模型动画系统设计的一些心得
模型动画系统设计的一些心得:模型系统是一个渲染引擎里的重要组成部分。它的质量直接关系到引擎的渲染效率,和开发效率。我觉得评价一个模型系统主要包含两个方面:一: 算法。 算法这东西其实是挺透明的。网上到处可以找到这些东西的资料。其中比较有用的技术有:骨骼动画,表情动画,材质动画,布料(柔体)系统等。这些东西没什么好讲的。讲也讲不过各位大大。二:系统设计。 系统设计一般是做工程人的原创 2006-12-12 16:48:00 · 3967 阅读 · 3 评论 -
引擎完成对视频纹理的无缝支持
视频纹理的功能其实早就做了。只是怎么都不能很好的融合到引擎中。今天走在路上灵机一动: 做成插件,用现在引擎的可扩展的纹理管理器和插件对象创建机制。重新派生一种纹理。不改变现有的引擎结构,仅仅加了一个插件。同时还可以支持其他跨平台的解码器(无非是再写一个插件)经过一晚上的工作,现在终于搞定了.使用视频纹理的时候 和使用其它的纹理是完全一样.加载的方法也是一样的.只要给出文件名,自动能判断是不是视频纹原创 2006-11-30 00:08:00 · 2791 阅读 · 0 评论 -
关于NVIDIA 的 OpenGL回退到软件模式的问题。
其实很久前就想说说这个问题了。我一直用的NV的驱动。没用过 ATI的。这里只说说NVIDIA的。NVIDIA的驱动很有意思,下个模拟器,可以模拟很多高级的GPU。比如最近的G80。同时也会在某些硬件不支持的情况下回到软件模式来实现。但是这个软件回退模式是默认的。就是说你一旦用了硬件不支持的功能。就直接回退了。不会提示你的。这个问题很让人头疼。很多时候,我们显然是不想让它回退到软件模式的,因为慢的要原创 2006-11-23 12:53:00 · 3037 阅读 · 0 评论