1.一种基于三维引擎实现渲染纹理镜面反射效果的方法,其特征在于,包括以下步骤:步骤1、新建材质球:
在三维引擎中新建一个材质球;
步骤2、定义shader基本属性:
在三维引擎的Project面板中新建一个shader文件,定义所述shader文件所需要的基础纹理_MainTex、反射纹理_ReflectionTex和反射强度_Reflectivity;
步骤3、设置渲染类型:
将所述shader文件的渲染类型RenderType设置为不透明Opaque,将所述基础纹理_MainTex与反射纹理_ReflectionTex均设置为2D纹理类型,将所述反射强度_Reflectivity设置为浮点数;
步骤4、计算反射向量:
通过shader自带的reflect()函数计算反射向量:reflectionVector=‑IN.viewDir‑2*dot(o.Normal,‑IN.viewDir)*o. Normal;
式中,reflectionVector为反射向量,‑IN.viewDir代表光线入射方向,dot()代表向量点乘,o.Normal代表表面法线向量;
步骤5、计算反射纹理坐标:
基于所求出的反射向量,通过以下公式计算反射纹理坐标:reflectionTexCoord=reflectionVector*roughness+roughness;
式中,reflectionTexCoord 为反射纹理坐标,reflectionVector为反射向量,roughness为自定义的粗糙度参数;
步骤6、采样镜面反射纹理:
基于所求出的反射纹理坐标,通过tex2D()函数获取反射纹理的颜色,其计算公式如下:fixed4 reflectionColor = tex2D(_ReflectionTex, reflectionTexCoord);
式中,reflectionColor为采样的镜面反射纹理,_ReflectionTex为采样的纹理对象,即定义的反射纹理;reflectionTexCoord为反射纹理坐标;
步骤7、获取基础纹理:
基于基础纹理坐标,通过tex2D()函数获取基础纹理的颜色;
步骤8、获取最终纹理:
将反射纹理的颜色与基础纹理的颜色进行反射强度的线性插值运算,即得到最终纹理的颜色,所述线性插值运算公式如下:result = (1 ‑ t) * startValue + t * endValue;
式中,result代表最终纹理的颜色,startValue 是起始点的值,endValue 是结束点的值,t 是自定义的插值的比例因子;
步骤9、材质球运用:
选中新建的材质球,将该材质球运用到物体上,该物体在场景渲染时即具有了镜面反射效果。
2.一种用以实施权利要求1所述方法的基于三维引擎实现渲染纹理镜面反射效果的系统,其特征在于,包括:材质球创建模块,用以在三维引擎中创建材质球;
属性定义模块,用以在三维引擎的Project面板中新建shader文件并定义所述shader文件所需要的基础纹理_MainTex、反射纹理_ReflectionTex和反射强度_Reflectivity;
渲染类型设置模块,用以将所述shader文件的渲染类型RenderType设置为不透明Opaque,将所述基础纹理_MainTex与反射纹理_ReflectionTex均设置为2D纹理类型,将所述反射强度_Reflectivity设置为浮点数;
反射向量计算模块,用以通过shader自带的reflect()函数计算反射向量;
反射纹理坐标计算模块,用以通过反射向量计算反射纹理坐标;
反射纹理获取模块,用以获取反射纹理的颜色;
基础纹理获取模块,用以获取基础纹理的颜色;
最终纹理获取模块,用以将反射纹理的颜色与基础纹理的颜色进行反射强度的线性插值运算,以得到最终纹理的颜色;
材质球运用模块,用以将材质球运用到物体上,使物体在场景渲染时具有镜面反射效果。