10 2011 档案
摘要:光线投射算法是从视点到“图像序列最表面的外层像素”引射线穿越体数据。在光照计算中,我们采用吸收和发射模型(Absorption plus emission)。体数据中的体素本身发射光线, 并且可以吸收光线, 但不对光线进行反射和透射。为了增强真实感,也可以加上阴影(包括自阴影)计算。1. 几点实现疑惑光线如何穿越体纹理首先要明确一点,我们需要一个空间体模型(这通常是一个规则的立方体或圆柱体,以下我用的是一个立方体),这个立方体与体纹理相互结合才能进行体渲染。换句话说,立方体是一个载体,体纹理通过纹理坐标(三维)与模型相互对应,然后由视点向模型上的点引射线,该射线穿越立方体等价于射线穿越了体纹理
阅读全文
摘要:1. 一些基本术语计算物体的颜色,一般有三种操作:由应用程序明确指定,根据特定的光照条件确定,通过把纹理贴到物体的表面而获得。或者是以上三种操作的混合产物光栅化:把物体的数学描述及与物体相关的颜色信息转换为屏幕上的像素,这个过程叫做光栅化。顶点->几何图元(点、直线、多边形)->模型(object)->渲染(计算机根据模型创建图像的过程)多边形的顶点以逆时针顺序出现在屏幕上,判定为"正面"控制一个多边形的正面和背面的绘图模式glPolygonMode(GL_FRONT_AND_BACK,GL_LINE) //GL_FRONAT,GL_BACK,GL_FRO
阅读全文
摘要:直接体绘制把三维标量场映射为光学物理量(类似光的强度),该物理量用来描述三维空间中的光的交互作用,这也就是体绘制中的classification所以我们要先了解光的传递1.光传递方程光传递经过媒体,有三种情况:emission(发光),增加辐射能量;abosorption(吸收光)减少辐射能量;Scattering(散射光)可增加或减少辐射能量
阅读全文
摘要:看了康玉之大牛的《GPU 编程与CG 语言之阳春白雪下里巴人》,和放风筝的程序员的博客,自己也来写写光照模型1. Lambert光照模型,也就是漫反射光照模型。它考虑的是ambient光和diffuse光对物体的综合影响着色器程序struct VertexIn { float4 position : POSITION; float4 normal : NORMAL; }; struct VertexScreen { float4 oPosition : POSITION; float4 color : COLOR; }; void main_v(V...
阅读全文
摘要:cg内置的变量glstate.matrix.modelview[n]: modelview matrix nglstate.matrix.invtrans.modelview[0]:ModelViewIT 模型视图矩阵转置的逆矩阵,用于把顶点法向量变换到世界空间glstate.matrix.mvp:modelview-projection matrixglstate.matrix.projection :projection matrixglstate.matrix.texture[n] :texture matrix nglstate.matrix.palette[n]:palette ma
阅读全文
摘要:第一个CG程序1. 首先,自然是包含头文件#include <cg/cg.h>#include <cg/cgGL.h>#pragma comment(lib,"cg.lib")#pragma comment(lib,"cgGL.lib")2. 创建着色器程序所需的变量着色上下文CGcontext,着色器程序CGprogram,CGprofile是用来告诉CG如何选择最适合你显卡的方式来处理顶点或片段着色,CGparameter,参数传递,从你所写的程序中向着色器程序中传递参数.static CGcontext Context =
阅读全文