本文整理汇总了C++中glm::reflect方法的典型用法代码示例。如果您正苦于以下问题:C++ glm::reflect方法的具体用法?C++ glm::reflect怎么用?C++ glm::reflect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类glm
的用法示例。
在下文中一共展示了glm::reflect方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fragment
frag_color phong_shader::fragment(
const vec3& bary,
const mat3& verts,
const mat3x2& tex_coords,
const mat3& vert_norms) const
{
auto uv = bary_lerp(tex_coords[0], tex_coords[1], tex_coords[2], bary);
auto normval = normalmap.get_from_ratio(uv[0], uv[1]);
auto norm = normalize(vec3(normval.r - 127.5, normval.g - 127.5, normval.b - 127.5));
// ambient color
TGAColor ambient(5, 5, 5, 255);
// specular color
auto spec_val = specular.get_from_ratio(uv[0], uv[1]).raw[0];
auto r = normalize(reflect(light_dir(), norm));
auto spec_intensity = pow(max(0.0f, dot(r, to_cam)), spec_val);
// diffuse color
float diff_intensity = max(0.0f, dot(to_light(), norm));
auto diff_color = diffuse.get_from_ratio(uv[0], uv[1]);
diff_color.scale(diff_intensity + spec_intensity * .6);
return frag_color {ambient + diff_color, true};
}