实在是太便宜了嘛

好久没有关心最新的硬件价格动向了,今天有心情跑到太平洋论坛上一看,哇呀,我深深的感觉到电脑产品贬值有多快,一天不用损失巨大啊。

看看之前最强的单卡9800GTX,以前2000多的价格直接降到了1399了,我的天啊,这是最强单卡的价格么??AMD的4850也卖到了这个价格,天啊……9800GTX的性能是我的那个老8800GTS的性能的至少1.5倍,而去年9月的价格和今年这个时候的价格的比较,真令人震撼。

从去年9月到现在总共10个月了,总共300天左右。看看我的电脑贬值了多少。CPU Q6600,买成2150,现价1515,660的差价,每天2块钱。内存威刚红色威龙800 1G*3 当时960,现在450左右,400块钱左右的差价,每天1块钱。显卡8800GTS 320M(G80),买成2280,现价……700吧,二手,新的也就1000块钱左右,差价1200,每天4块钱。主板微型P35 NEO-FR2 999,现价899,这个还好,没跌多少,每天0.3块钱,可忽略。显示器明基FP222W,买成2100左右,现价1600左右,500块钱,每天1.5元。硬盘希捷企业硬盘320G当时680好像,现在更强的才420,每天1块钱。其他的掉价基本上可以忽略了。整体算来,每天的贬值有10块钱左右。所以,你说这个硬件不拿来超频,不用来使劲用,不用来折腾,不去几次保修,划得来么!

嘿嘿。这也好,硬件越来越强劲总是个好事情,特别是最近做图形方面的东西,需要用到很多的显卡的计算,目前只要我的显卡基本能够达到交互速度,等以后软件成品出来了,那时候1000多的显卡足以运行我的应用了,是个好事情。

当然,电脑的价格在飞速下滑,油价、电价又在飙升,能源的消耗和能源的供应又是一个问题了,以后选择低功耗的产品总是必要的。就像今天出去买了灯管,把所有的白炽灯都换成了节能灯管了。能源的飞涨和人们意识的提高,长期下来,也就慢慢养成了环保、节能的意识了。

下半年,是不是我也能用上Geforce GTX280了呢?

找回银厂沟!!熟悉的记忆!~

高兴!!!5.12地震后,照片竟然也“震”没了。我还以为那些照片最终只能在我的记忆中了呢,结果我爸在移动硬盘里面找到了这些旧照片,压缩以后传到了QQ空间。还是不错,当年照的照片的质量还是很好的,唯有我的S3 IS的紫光啊紫光,一直是一个遗憾……
赶快来看看吧!

还有回忆么?

地震过后也有一个多月了,虽然现在还有一些小小的余震,大家也都“兴奋”的盼望着余震的到来,但谁也不想再次经历灾难。地震震毁了我们的眼睛,我们所看的世界再也不一样了。

早上看景区前后对比图,银厂沟算是彻底的毁灭了。曾经的沟渠、小龙潭、大龙潭又是多少年前的地质活动造就的呢,如今被大地彻底的销毁,真是山无棱、天地合……看着新闻图片上的对比,我曾在那些拍摄角度留下永久的回忆,喜欢刚进沟的那些碧水,喜欢峡谷的长长的索道,而前些天老爸找这些图片的时候,怎么都没有了呢??!目前的个人主页上还留有一些我当时所拍的一些照片,很少很少了,当时一路上拍了很多照片,怎么现在一张都没有了呢?很奇怪,是当时误删了,还是没有录入到电脑里面?!很想哪天突然这些照片又找到了,能够找回以前的回忆么?([cref 193])

12号过后确实发生了很多事情,30号也让人很难过。自己平静的接受这些现实,不论是自然的造物还是自己的伤痛,事情发生了,就看怎么处理了。

很久没有写日志了,貌似现在有些语无伦次的样子,嘿嘿,继续忙去了……

CUDA Intelisence

CUDA是个好玩意儿,现在2.0BETA已经出来了,提供了很多特爱的特性,特别是对于3D纹理的支持。我也不清楚CUDA应用在目前我的一些项目中到底有多少潜力,但看来这个还是个趋势,可以了解一下。今天在配置CUDA编程环境的时候,因为其后缀名是.CU的,所以VS2005的智能感知无法使用。再查询了一些文章以后,发现有下面的解决方案:

We can use the tool Visual Assist X to implement it:
First, find the Visual Assist X install directory:
Program FilesVisual Assist XAutotext, then make a copy of Cpp.tpl, rename it to Cu.tpl, apply same operation to the “Latest” directory.
Second, open the regedit table, and search it with the key word “Visual Assist X” until you find in the VANet8 in HKEY_USERSS-1-5-21-1757981266-220523388-725345543-1003SoftwareWhole TomatoVisual Assist XVANet8
Here you can see many attribute setting about Visual Assist X,
click the item ExtHeader and add the .cu in the list, same to the item ExtSource.
save and quit.

原文

如何用Shader得到物体的世界坐标

最近群里面有个朋友问我关于如何得到OpenGL世界坐标的问题,当时我还弄错了,误以为gl_ModelViewMatrix*gl_Vertex就是世界坐标。因最近也突然遇到了世界坐标的问题,所以花了一些时间来研究这个问题,网上也有人问,但或许没有答案,或许是错的。
其实,OpenGL的转换管道直接将gl_Vertex,也就是物体坐标,用gl_ModelViewMatrix相乘,得到的是眼坐标。如果将gl_ModelViewMatirx拆分为gl_ModelMatrix和gl_ViewMatrix,那么问题就好解决了。但事实上没有提供。要清楚OpenGL其实没有世界坐标系,世界坐标系是应用程序的概念。其实可以将OpenGL的摄像机看作是固定的,其坐标系就是眼坐标系,移动摄像机和移动物体的位置是一个相反的转换,对于观察者来说根本不知道是摄像机在动,还是物体在动(想想大卫的大变自由女神像的魔术吧,呵呵)
说回来,最终的变换是这样的:

eyePos=viewMatrix * modelMatrix * modelVertex

在OpenGL里面viewMatrix和modelMatrix合并了,因为OpenGL里面并没有设置摄像机的参数,所以OpenGL并不知道viewMatrix到底是什么。viewMatrix是用户自己定义的,所以如果能够得到这个viewMatrix并能得到其逆矩阵,就可以得到worldPos:

worldPos=viewMatrixInv * viewMatrix * modelMatrix * modelVertex

传统的OpenGL程序里面,你得自己计算这个viewMatrixInv,还好OSG的Camera提供了一个getViewMatrixInverse()方法,通过这个方法我们就可以轻松的获得viewMatrixInv,然后传递给Vertex Shader(用一个Uniform就可以),然后进行这个计算就可以了。
记得每一帧都需要Update这个viewMatrixInv,只需要一个updateCallBack就可以了。
好了,看几个图,我用3DSMAX创建了两个盒子,为了便于观察,模型的顶点值限制在0-1之间,然后用osgExp导出,没有选中Flatten Static Transform这样就不会把模型定点转换成世界坐标系的顶点。
源代码中可以改变gl_FragColor=的值来修改为相应的坐标系的值显示。
世界坐标系的最终输出,可见颜色连续变换的。


眼坐标系的图,可见屏幕中间偏左的部分是黑的。因为其值是负的。平移拖动盒子可见相应像素着色不变。

物体坐标系的图,可见两个盒子的颜色一样,因为其值是相同的。

源代码也附后,可以运行着看看,虽然程序简单,但用到的时候再也不用苦苦思考了,呵呵。

[download id=”5”]