示例#1
0
void BorderlessWindow::set_borderless(bool enabled) {
	Style new_style = (enabled) ? select_borderless_style() : Style::windowed;
	Style old_style = static_cast<Style>(GetWindowLongPtr(hwnd.get(), GWL_STYLE));

	if (new_style != old_style) {
		borderless = enabled;

		SetWindowLongPtr(hwnd.get(), GWL_STYLE, static_cast<LONG>(new_style));

		// when switching between borderless and windowed, restore appropriate shadow state
		set_shadow(borderless_shadow && (new_style != Style::windowed));

		// redraw frame
		SetWindowPos(hwnd.get(), nullptr, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE);
		show();
	}
}
示例#2
0
t_vec3		raytracing_color(t_env *e, t_ray *ray, t_cam *cam, t_obj *obj)
{
	t_lgt	*light;
	t_vec3	color;
	t_vec3	diffuse;
	t_vec3	specular;

	color = (t_vec3) {0, 0, 0};
	light = e->lgt;
	while (light != NULL)
	{
		set_light(ray->hit, obj, light);
		set_color(obj, ray);
		color = vec3_add(color, vec3_fmul(light->color, obj->mat.ambient));
		diffuse = set_diffuse(obj, light);
		specular = set_specular(obj, cam, light);
		color = vec3_add(color, vec3_add(diffuse, specular));
		color = vec3_mul(color, obj->mat.color);
		obj->mat.receive_shadow ? set_shadow(e, &color, *light, obj) : 0;
		light = light->next;
	}
	return (color);
}
示例#3
0
// meaning of *pass* is in [zz_material.h]
bool zz_material_terrain::set (int pass)
{
	zz_texture * firstmap, * secondmap, * lightmap;

	int shader_format = get_shader_format();

	if (shader_format == SHADER_FORMAT_DEFAULT) return false;

	firstmap = (shader_format & SHADER_FORMAT_FIRSTMAP) ? textures[0] : 0;
	secondmap = (shader_format & SHADER_FORMAT_SECONDMAP) ? textures[1] : 0;
	lightmap = (shader_format & SHADER_FORMAT_LIGHTMAP) ? textures[2] : 0;

	bool l_use_shadow = (shader_format & SHADER_FORMAT_SHADOWMAP) > 0;

	// texture binding
	int texture_stage = 0;

	if (firstmap) firstmap->set(texture_stage++);
	if (secondmap) secondmap->set(texture_stage++);
	if (lightmap) lightmap->set(texture_stage++);
	if (l_use_shadow) s_renderer->set_texture_shadowmap(texture_stage++);

#ifdef _DEBUG
	static bool debug_flags_multi [] = {true, true, true, true, true, true, true};
	static bool debug_flags_single [] = {true, true, true, true, true, true, true};
#endif

	// set texture stage
	if (s_renderstate->use_multipass) {
		if (firstmap) {
			if (secondmap) {
				TEST_FLAGS_MULTI(0);
				set_first_second();
			}
			else if (lightmap) {
				TEST_FLAGS_MULTI(1);
				set_first_light();
			}
			else if (l_use_shadow) {
				TEST_FLAGS_MULTI(2);
				set_first_shadow();
			}
			else {
				TEST_FLAGS_MULTI(3);
				set_first();
			}
		}
		else if (lightmap) {
			if (l_use_shadow) {
				TEST_FLAGS_MULTI(4);
				set_light_shadow();
			}
			else {
				TEST_FLAGS_MULTI(5);
				set_light();
			}
		}
		else if (l_use_shadow) {
			TEST_FLAGS_MULTI(6);
			set_shadow();
		}
		else {
			return false;
		}
	}
	else {
		if (firstmap) {
			if (secondmap) {
				if (lightmap) {
					if (l_use_shadow) {
						TEST_FLAGS_SINGLE(0);
						set_first_second_light_shadow();
					}
					else {
						TEST_FLAGS_SINGLE(1);
						set_first_second_light();
					}
				}
				else {
					if (l_use_shadow) {
						TEST_FLAGS_SINGLE(2);
						set_first_second_shadow();
					}
					else {
						TEST_FLAGS_SINGLE(3);
						set_first_second();
					}
				}
			}
			else {
				if (lightmap) {
					if (l_use_shadow) {
						TEST_FLAGS_SINGLE(4);
						set_first_light_shadow();
					}
					else {
						TEST_FLAGS_SINGLE(5);
						set_first_light();
					}
				}
				else {
					TEST_FLAGS_SINGLE(6);
					set_first();
				}
			}
		}
		else {
			return false;
		}
	}
	set_alpha_stage(pass, lightmap ? true : false, l_use_shadow);
	return true;
}
示例#4
0
	void TextStyle::set_shadow_none()
	{
		set_shadow(0.0f, 0.0f, 0.0f, Colorf::transparent);
	}
示例#5
0
void BorderlessWindow::set_borderless_shadow(bool enabled) {
    if (borderless) {
		borderless_shadow = enabled;
		set_shadow(enabled);
    }
}