Решил сегодня в рейтрейсере ввести шейдеры,тоесть имеем такое:
class CTestRayShader : public IRayShader
{
public:
CTestRayShader(){
}
vec3 main( const RayHit& hit ){
float3 final = float3(0,0,0);
float3 diffuse = hit.material->getColor();
float3 base = tex2D(hit.material , float2(hit.u,hit.v) , 0);
final = diffuse * base;
return final;
}
};
Возможностей много(шейдеры пишутся на C++) название типов как в HLSL.
tex2D пердставлена в таком виде:
float4 tex2D( IMaterial* material , const float2& texcoord , int samplerIndex )
первый параметр - матереал
второй - текстурные координаты
третий - индекс семплера(текстуры) в матереале
будут и tex3D,texCUBE.
Щас после переведения трейсера на шейдеры буду доделывать мультисеймплинг(анти альясинг).