上海阔达网站建设公司提供哪些特色服务来吸引用户访问他们的笑话网站html模板?

摘要:笑话网站html模板,上海阔达网站建设公司,wordpress固定菜单栏,房地产平面设计主要做什么一、简介 本文紧接在[图形学]smallpt代码详解(1)之后&#
笑话网站html模板,上海阔达网站建设公司,wordpress固定菜单栏,房地产平面设计主要做什么一、简介 本文紧接在[图形学]smallpt代码详解#xff08;1#xff09;之后#xff0c;继续详细讲解smallpt中的代码#xff0c;包括自定义函数#xff08;第41到47行#xff09;和递归路径跟踪函数#xff08;第48到74行#xff09;部分。 二、smallpt代码详解 1.自…一、简介 本文紧接在[图形学]smallpt代码详解1之后继续详细讲解smallpt中的代码包括自定义函数第41到47行和递归路径跟踪函数第48到74行部分。 二、smallpt代码详解 1.自定义函数第41到47行 smallpt源代码在第41到47行声明定义了clamp()、toInt()和intersect()三个函数 double clamp(double x)inline double clamp(double x){ return x0 ? 0 : x1 ? 1 : x; }clamp()函数将输入参数x限制在[0,1]范围内避免浮点数计算出错出现小于0.0或者大于1.0的计算结果。int toInt(double x)inline int toInt(double x){ return int(pow(clamp(x),1/2.2)*255.5); } toInt()函数将输入的在[0,1]范围内的输入参数x先进行伽马矫正Gamma Correction伽马校正线性颜色空间转换为 sRGB 颜色空间。伽马校正有助于提高图像在显示器上的视觉效果。然后映射到范围[0,255]。bool intersect(const Ray r, double t, int id)inline bool intersect(const Ray r, double t, int id){ // n 为场景中的球面物体个数 // d 用来记录场景中与光线相交的第一个物体id // t 用来记录场景中与光线相交的第一个交点到光线原点的距离 double nsizeof(spheres)/sizeof(Sphere), d, inft1e20; // 遍历场景中的所有球面对象然后使用 sphere[i] 对象中的函数interscet() 函数计算 // 光线是否与 球面对象 sphere[i] 相交并找到距离光线原点最近的交点距离 t 和球面对象 i for(int iint(n);i--;) if((dspheres[i].intersect(r))dt){td;idi;} return tinf; } intersect()函数用于计算光线r与整个渲染场景中所有球面对象的相交计算如果光线r与场景存在交点则返回true并且将交点到光线原点的距离t写入输入的变量double t中并且返回相交球面物体的id写入输入的变量int id中。 代码首先确定场景中的球面物体个数ndouble nsizeof(spheres)/sizeof(Sphere), d, inft1e20;然后遍历场景中的所有球面对象然后使用 sphere[i] 对象中的interscet() 函数计算光线是否与球面对象 sphere[i] 相交对于sphere[i]对象中的intersect()函数的讲解请查看[图形学]smallpt代码详解1中的三、smallpt代码详解-1.自定义数据结构部分第4到第22行部分并找到距离光线原点最近的交点距离 t 和球面对象 i。for(int iint(n);i--;) if((dspheres[i].intersect(r))dt){td;idi;} 2.递归路径跟踪函数第48到74行 radiance()函数是光线跟踪路径跟踪中最主要的代码该函数使用递归的方式实现路径跟踪对场景进行渲染。 函数Vec radiance(const Ray r, int depth, unsigned short *Xi)的返回值和参数介绍如下: 返回值 Vecradiance() 函数计算的光线在此次传播中的辐射值参数 r要处理的光线参数 depth此光线的传播深度参数 Xi随机数作为随机采样种子值 radiance()函数整体可以分为四个部分是否结束递归与场景无交点或者俄罗斯轮盘赌失败红色、处理漫反射绿色、处理镜面反射蓝色和处理折射橙色部分。
阅读全文