我对optix和cuda很陌生。我试图修改optix示例,以提供一个带有射线跟踪的3D模型。我修改了"progressivePhotonMap“示例。由于缺乏optix/cuda知识,我不知道如何在3D模型上绘制纹理,任何熟悉SDK示例的人都可以帮助我吗?
我读了其他的画纹理的例子,如"swimmingShark“或”烹饪“,并试图找出使用的线索。然而,这些例子似乎有不同的方式来绘制纹理。
从现在开始,我知道我必须在cpp文件中加载纹理。
GeometryInstance instance = m_context->createGeometryInstance( mesh, &m_material, &m_material+1 );
instance["diffuse_map"]->setTextureSampler(loadTexture( m_context, ... );并在cuda文件中创建TextureSampler。
rtTextureSampler<float4, 2> diffuse_map; // Corresponds to OBJ mtl params然后给他们发短信来画,像这样,
float3 Kd = make_float3( tex2D( diffuse_map, texcoord.x*diffuse_map_scale, texcoord.y*diffuse_map_scale ) );但是,我无法找到texcoord在cuda文件中获取纹理坐标数据的位置。在.cpp文件中应该有这样的代码
GI["texcoord"]->setBuffer(texcoord)有人能教我纹理坐标数据是从哪里得到的吗?如何将坐标数据和纹理数据匹配起来,用光线追踪来表示三维模型?我在谷歌找不到教程,我真的需要帮助或指导才能达到我的目标。谢谢。
发布于 2016-01-03 09:39:01
你应该先读一读OptiX文档。特别是关于属性变量的段落。
texcoord变量是表单的一个属性。
rtDeclareVariable( float3, texcoord, attribute texcoord );这是在交汇程序中计算的,并传递到最近的命中程序(属性被设计为将数据从交点传递到阴影点)。
简单回答:它被设置为另一个CUDA函数,从概念上计算该行所需的一些数据。
https://stackoverflow.com/questions/34524603
复制相似问题