void PopAllTriangleListTransparency() {
	
	ARX_PROFILE_FUNC();
	
	GRenderer->SetFogColor(Color::none);
	GRenderer->SetRenderState(Renderer::AlphaBlending, true);
	GRenderer->SetRenderState(Renderer::DepthWrite, false);
	GRenderer->SetBlendFunc(BlendDstColor, BlendOne);
	GRenderer->SetAlphaFunc(Renderer::CmpGreater, .5f);

	GRenderer->SetCulling(CullNone);

	PopOneTriangleList(&TexSpecialColor, true);

	TextureContainer * pTex = GetTextureList();
	while(pTex) {
		PopOneTriangleListTransparency(pTex);
		pTex = pTex->m_pNext;
	}

	GRenderer->SetFogColor(ulBKGColor);
	GRenderer->SetRenderState(Renderer::AlphaBlending, false);
	GRenderer->SetRenderState(Renderer::DepthWrite, true);
	GRenderer->SetAlphaFunc(Renderer::CmpNotEqual, 0.f);
}
Example #2
0
void PopAllTriangleList(bool clear) {
	GRenderer->SetAlphaFunc(Renderer::CmpGreater, .5f);
	GRenderer->SetCulling(Renderer::CullNone);

	TextureContainer * pTex = GetTextureList();
	while(pTex) {
		PopOneTriangleList(pTex, clear);
		pTex = pTex->m_pNext;
	}
	GRenderer->SetAlphaFunc(Renderer::CmpNotEqual, 0.f);
}
static void
UpdateColour3d(GtkButton * UNUSED(button), UpdateDetails * pDetails)
{
    curDetails = pDetails;
    col3d = pDetails->mat;

    if (pwColourDialog3d == NULL) {
        pwColourDialog3d = GTKCreateDialog(_("3d Colour selection"), DT_QUESTION,
                                           pDetails->preview, DIALOG_FLAG_MODAL | DIALOG_FLAG_NORESPONSE, NULL, NULL);
        AddWidgets(DialogArea(pwColourDialog3d, DA_MAIN));
        g_signal_connect(pwColourDialog3d, "response", G_CALLBACK(DialogClose), NULL);
    } else
        gtk_widget_show(pwColourDialog3d);

    /* Avoid updating preview */
    bUpdate = FALSE;

    /* Setup widgets */
    gtk_color_button_set_from_farray(GTK_COLOR_BUTTON(pcpAmbient), col3d.ambientColour);
    gtk_color_button_set_from_farray(GTK_COLOR_BUTTON(pcpDiffuse), col3d.diffuseColour);
    gtk_color_button_set_from_farray(GTK_COLOR_BUTTON(pcpSpecular), col3d.specularColour);

    gtk_adjustment_set_value(padjShine, (double) col3d.shine);
    if (IsFlagSet(pDetails->opacity, DF_VARIABLE_OPACITY)) {
        useOpacity = 1;
        gtk_adjustment_set_value(padjOpacity, col3d.alphaBlend ? (col3d.ambientColour[3] + .001) * 100 : 100.0);
    } else {
        useOpacity = 0;
        if (IsFlagSet(pDetails->opacity, DF_FULL_ALPHA))
            opacityValue = 1;
        else
            opacityValue = 0;
    }

    if (IsFlagSet(pDetails->textureType, TT_NONE))
        useTexture = 0;
    else {
        GList *glist = GetTextureList(pDetails->textureType);
        gtk_list_store_clear(GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(textureComboBox))));
        g_list_foreach(glist, append_to_combo_box, textureComboBox);
        g_list_free(glist);

        texture_set_active();

        useTexture = 1;
        gtk_widget_set_sensitive(GTK_WIDGET(textureComboBox), !IsFlagSet(pDetails->textureType, TT_DISABLED));
    }

    /* Copy material - to reset if cancel pressed */
    memcpy(&cancelValue, &col3d, sizeof(Material));

    /* show dialog */
    gtk_widget_show_all(pwColourDialog3d);

    if (!useOpacity) {
        gtk_widget_hide(psOpacity);
        gtk_widget_hide(pOpacitylabel);
    }
    if (!useTexture) {
        gtk_widget_hide(textureComboBox);
        gtk_widget_hide(pTexturelabel);
    }

    /* Update preview */
    bUpdate = TRUE;
    UpdateColourPreview();

    gtk_main();
}