diff options
Diffstat (limited to 'source/blender/src/buttons_scene.c')
-rw-r--r-- | source/blender/src/buttons_scene.c | 2082 |
1 files changed, 0 insertions, 2082 deletions
diff --git a/source/blender/src/buttons_scene.c b/source/blender/src/buttons_scene.c deleted file mode 100644 index 8fd74ddc08e..00000000000 --- a/source/blender/src/buttons_scene.c +++ /dev/null @@ -1,2082 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ - -#include <time.h> -#include <math.h> -#include <stdlib.h> -#include <string.h> - -#include "MEM_guardedalloc.h" -#include "DNA_node_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_sound_types.h" -#include "DNA_userdef_types.h" -#include "DNA_packedFile_types.h" - -#include "BKE_global.h" -#include "BKE_main.h" -#include "BKE_node.h" -#include "BKE_library.h" -#include "BKE_scene.h" -#include "BKE_sound.h" -#include "BKE_packedFile.h" -#include "BKE_utildefines.h" - -#include "BLI_blenlib.h" - -#include "BSE_filesel.h" - -#include "BIF_gl.h" -#include "BIF_graphics.h" -#include "BIF_glutil.h" -#include "BIF_interface.h" -#include "BIF_imasel.h" -#include "BIF_keyval.h" -#include "BIF_mainqueue.h" -#include "BIF_mywindow.h" -#include "BIF_meshtools.h" -#include "BIF_resources.h" -#include "BIF_renderwin.h" -#include "BIF_screen.h" -#include "BIF_space.h" -#include "BIF_toolbox.h" - -#include "BIF_butspace.h" - -#include "mydevice.h" -#include "blendef.h" - -/* -----includes for this file specific----- */ - -#include "DNA_image_types.h" - -#include "BKE_writeavi.h" -#include "BKE_writeffmpeg.h" -#include "BKE_image.h" - -#include "BLI_threads.h" - -#include "BIF_editsound.h" -#include "BIF_writeimage.h" -#include "BIF_writeavicodec.h" - -#include "BSE_seqaudio.h" -#include "BSE_headerbuttons.h" - -#include "RE_pipeline.h" - -#include "butspace.h" // own module - -#ifdef WITH_QUICKTIME -#include "quicktime_export.h" -#endif - -#ifdef WITH_FFMPEG - -#include <ffmpeg/avcodec.h> /* for PIX_FMT_* and CODEC_ID_* */ -#include <ffmpeg/avformat.h> - -static int ffmpeg_preset_sel = 0; - -extern int is_container(int); - -extern void makeffmpegstring(char* string); - -#endif - -/* here the calls for scene buttons - - render - - world - - anim settings, audio -*/ - -/* prototypes */ -void playback_anim(void); - -/* ************************ SOUND *************************** */ -static void load_new_sample(char *str) /* called from fileselect */ -{ - char name[FILE_MAX]; - bSound *sound; - bSample *sample, *newsample; - - sound = G.buts->lockpoin; - - if (sound) { - // save values - sample = sound->sample; - strcpy(name, sound->sample->name); - - strcpy(sound->name, str); - sound_set_sample(sound, NULL); - sound_initialize_sample(sound); - - if (sound->sample->type == SAMPLE_INVALID) { - error("Not a valid sample: %s", str); - - newsample = sound->sample; - - // restore values - strcpy(sound->name, name); - sound_set_sample(sound, sample); - - // remove invalid sample - - sound_free_sample(newsample); - BLI_remlink(samples, newsample); - MEM_freeN(newsample); - } - } - - BIF_undo_push("Load new audio file"); - allqueue(REDRAWBUTSSCENE, 0); - -} - - -void do_soundbuts(unsigned short event) -{ - char name[FILE_MAX]; - bSound *sound; - bSample *sample; - bSound* tempsound; - ID *id; - - sound = G.buts->lockpoin; - - switch(event) { - case B_SOUND_REDRAW: - allqueue(REDRAWBUTSSCENE, 0); - break; - - case B_SOUND_LOAD_SAMPLE: - if (sound) strcpy(name, sound->name); - else strcpy(name, U.sounddir); - - activate_fileselect(FILE_SPECIAL, "SELECT WAV FILE", name, load_new_sample); - break; - - case B_SOUND_PLAY_SAMPLE: - if (sound) { - if (sound->sample->type != SAMPLE_INVALID) { - sound_play_sound(sound); - allqueue(REDRAWBUTSSCENE, 0); - } - } - break; - - case B_SOUND_MENU_SAMPLE: - if (G.buts->menunr > 0) { - sample = BLI_findlink(samples, G.buts->menunr - 1); - if (sample && sound) { - BLI_strncpy(sound->name, sample->name, sizeof(sound->name)); - sound_set_sample(sound, sample); - do_soundbuts(B_SOUND_REDRAW); - } - } - - break; - case B_SOUND_NAME_SAMPLE: - load_new_sample(sound->name); - break; - - case B_SOUND_UNPACK_SAMPLE: - if(sound && sound->sample) { - sample = sound->sample; - - if (sample->packedfile) { - if (G.fileflags & G_AUTOPACK) { - if (okee("Disable AutoPack ?")) { - G.fileflags &= ~G_AUTOPACK; - } - } - - if ((G.fileflags & G_AUTOPACK) == 0) { - unpackSample(sample, PF_ASK); - } - } else { - sound_set_packedfile(sample, newPackedFile(sample->name)); - } - allqueue(REDRAWHEADERS, 0); - do_soundbuts(B_SOUND_REDRAW); - } - break; - - case B_SOUND_COPY_SOUND: - if (sound) { - tempsound = sound_make_copy(sound); - sound = tempsound; - id = &sound->id; - G.buts->lockpoin = (bSound*)id; - BIF_undo_push("Copy sound"); - do_soundbuts(B_SOUND_REDRAW); - } - break; - - case B_SOUND_RECALC: - waitcursor(1); - sound = G.main->sound.first; - while (sound) { - free(sound->stream); - sound->stream = 0; - audio_makestream(sound); - sound = (bSound *) sound->id.next; - } - waitcursor(0); - allqueue(REDRAWSEQ, 0); - break; - - case B_SOUND_RATECHANGED: - - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWSEQ, 0); - break; - - case B_SOUND_MIXDOWN: - audio_mixdown(); - break; - - default: - if (G.f & G_DEBUG) { - printf("do_soundbuts: unhandled event %d\n", event); - } - } -} - - -static void sound_panel_listener(void) -{ - uiBlock *block; - int xco= 100, yco=100, mixrate; - char mixrateinfo[256]; - - block= uiNewBlock(&curarea->uiblocks, "sound_panel_listener", UI_EMBOSS, UI_HELV, curarea->win); - if(uiNewPanel(curarea, block, "Listener", "Sound", 320, 0, 318, 204)==0) return; - - mixrate = sound_get_mixrate(); - sprintf(mixrateinfo, "Game Mixrate: %d Hz", mixrate); - uiDefBut(block, LABEL, 0, mixrateinfo, xco,yco,295,20, 0, 0, 0, 0, 0, ""); - - yco -= 30; - uiDefBut(block, LABEL, 0, "Game listener settings:",xco,yco,195,20, 0, 0, 0, 0, 0, ""); - - yco -= 30; - uiDefButF(block, NUMSLI, B_SOUND_CHANGED, "Volume: ", - xco,yco,195,24,&G.listener->gain, 0.0, 1.0, 1.0, 0, "Sets the maximum volume for the overall sound"); - - yco -= 30; - uiDefBut(block, LABEL, 0, "Game Doppler effect settings:",xco,yco,195,20, 0, 0, 0, 0, 0, ""); - - yco -= 30; - uiDefButF(block, NUMSLI, B_SOUND_CHANGED, "Doppler: ", - xco,yco,195,24,&G.listener->dopplerfactor, 0.0, 10.0, 1.0, 0, "Use this for scaling the doppler effect"); - - yco -=30; - uiDefButF(block, NUMSLI, B_SOUND_CHANGED, "Velocity: ", - xco,yco,195,24,&G.listener->dopplervelocity,0.0,10000.0, 1.0,0, "Sets the propagation speed of sound"); - - -} - -static void sound_panel_sequencer(void) -{ - uiBlock *block; - short xco, yco; - char mixrateinfo[256]; - - block= uiNewBlock(&curarea->uiblocks, "sound_panel_sequencer", UI_EMBOSS, UI_HELV, curarea->win); - if(uiNewPanel(curarea, block, "Sequencer", "Sound", 640, 0, 318, 204)==0) return; - - /* audio sequence engine settings ------------------------------------------------------------------ */ - - xco = 1010; - yco = 195; - - uiDefBut(block, LABEL, 0, "Audio sequencer settings", xco,yco,295,20, 0, 0, 0, 0, 0, ""); - - yco -= 25; - sprintf(mixrateinfo, "Mixing/Sync (latency: %d ms)", (int)( (((float)U.mixbufsize)/(float)G.scene->audio.mixrate)*1000.0 ) ); - uiDefBut(block, LABEL, 0, mixrateinfo, xco,yco,295,20, 0, 0, 0, 0, 0, ""); - - yco -= 25; - uiDefButI(block, ROW, B_SOUND_RATECHANGED, "44.1 kHz", xco,yco,75,20, &G.scene->audio.mixrate, 2.0, 44100.0, 0, 0, "Mix at 44.1 kHz"); - uiDefButI(block, ROW, B_SOUND_RATECHANGED, "48.0 kHz", xco+80,yco,75,20, &G.scene->audio.mixrate, 2.0, 48000.0, 0, 0, "Mix at 48 kHz"); - uiDefBut(block, BUT, B_SOUND_RECALC, "Recalc", xco+160,yco,75,20, 0, 0, 0, 0, 0, "Recalculate samples"); - - yco -= 25; - uiDefButBitS(block, TOG, AUDIO_SYNC, B_SOUND_CHANGED, "Sync", xco,yco,115,20, &G.scene->audio.flag, 0, 0, 0, 0, "Use sample clock for syncing animation to audio"); - uiDefButBitS(block, TOG, AUDIO_SCRUB, B_SOUND_CHANGED, "Scrub", xco+120,yco,115,20, &G.scene->audio.flag, 0, 0, 0, 0, "Scrub when changing frames"); - - yco -= 25; - uiDefBut(block, LABEL, 0, "Main mix", xco,yco,295,20, 0, 0, 0, 0, 0, ""); - - yco -= 25; - uiDefButF(block, NUMSLI, B_SOUND_CHANGED, "Main (dB): ", - xco,yco,235,24,&G.scene->audio.main, -24.0, 6.0, 0, 0, "Set the audio master gain/attenuation in dB"); - - yco -= 25; - uiDefButBitS(block, TOG, AUDIO_MUTE, 0, "Mute", xco,yco,235,24, &G.scene->audio.flag, 0, 0, 0, 0, "Mute audio from sequencer"); - - yco -= 35; - uiDefBut(block, BUT, B_SOUND_MIXDOWN, "MIXDOWN", xco,yco,235,24, 0, 0, 0, 0, 0, "Create WAV file from sequenced audio (output goes to render output dir)"); - -} - -static char *make_sample_menu(void) -{ - int len= BLI_countlist(samples); /* BKE_sound.h */ - - if(len) { - bSample *sample; - char *str; - int nr, a=0; - - str= MEM_callocN(32*len, "menu"); - - for(nr=1, sample= samples->first; sample; sample= sample->id.next, nr++) { - a+= sprintf(str+a, "|%s %%x%d", sample->id.name+2, nr); - } - return str; - } - return NULL; -} - -static void sound_panel_sound(bSound *sound) -{ - static int packdummy=0; - ID *id, *idfrom; - uiBlock *block; - bSample *sample; - char *strp, ch[256]; - - block= uiNewBlock(&curarea->uiblocks, "sound_panel_sound", UI_EMBOSS, UI_HELV, curarea->win); - if(uiNewPanel(curarea, block, "Sound", "Sound", 0, 0, 318, 204)==0) return; - - uiDefBut(block, LABEL, 0, "Blender Sound block",10,180,195,20, 0, 0, 0, 0, 0, ""); - - // warning: abuse of texnr here! (ton didnt code!) - buttons_active_id(&id, &idfrom); - std_libbuttons(block, 10, 160, 0, NULL, B_SOUNDBROWSE2, ID_SO, 0, id, idfrom, &(G.buts->texnr), 1, 0, 0, 0, 0); - - if (sound) { - - uiDefBut(block, BUT, B_SOUND_COPY_SOUND, "Copy sound", 220,160,90,20, 0, 0, 0, 0, 0, "Make another copy (duplicate) of the current sound"); - - uiSetButLock(sound->id.lib!=0, ERROR_LIBDATA_MESSAGE); - sound_initialize_sample(sound); - sample = sound->sample; - - /* info string */ - if (sound->sample && sound->sample->len) { - char *tmp; - if (sound->sample->channels == 1) tmp= "Mono"; - else if (sound->sample->channels == 2) tmp= "Stereo"; - else tmp= "Unknown"; - - sprintf(ch, "Sample: %s, %d bit, %d Hz, %d samples", tmp, sound->sample->bits, sound->sample->rate, (sound->sample->len/(sound->sample->bits/8)/sound->sample->channels)); - uiDefBut(block, LABEL, 0, ch, 35,140,225,20, 0, 0, 0, 0, 0, ""); - } - else { - uiDefBut(block, LABEL, 0, "Sample: No sample info available.",35,140,225,20, 0, 0, 0, 0, 0, ""); - } - - /* sample browse buttons */ - uiBlockBeginAlign(block); - strp= make_sample_menu(); - if (strp) { - uiDefButS(block, MENU, B_SOUND_MENU_SAMPLE, strp, 10,120,23,20, &(G.buts->menunr), 0, 0, 0, 0, "Select another loaded sample"); - MEM_freeN(strp); - } - uiDefBut(block, TEX, B_SOUND_NAME_SAMPLE, "", 35,120,250,20, sound->name, 0.0, 79.0, 0, 0, "The sample file used by this Sound"); - - if (sound->sample->packedfile) packdummy = 1; - else packdummy = 0; - - uiDefIconButBitI(block, TOG, 1, B_SOUND_UNPACK_SAMPLE, ICON_PACKAGE, - 285, 120,25,20, &packdummy, 0, 0, 0, 0,"Pack/Unpack this sample"); - - uiBlockBeginAlign(block); - uiDefBut(block, BUT, B_SOUND_LOAD_SAMPLE, "Load sample", 10, 95,150,24, 0, 0, 0, 0, 0, "Load a different sample file"); - - uiDefBut(block, BUT, B_SOUND_PLAY_SAMPLE, "Play", 160, 95, 150, 24, 0, 0.0, 0, 0, 0, "Playback sample using settings below"); - - uiBlockBeginAlign(block); - uiDefButF(block, NUMSLI, B_SOUND_CHANGED, "Volume: ", - 10,70,150,20, &sound->volume, 0.0, 1.0, 0, 0, "Game engine only: Set the volume of this sound"); - - uiDefButF(block, NUMSLI, B_SOUND_CHANGED, "Pitch: ", - 160,70,150,20, &sound->pitch, -12.0, 12.0, 0, 0, "Game engine only: Set the pitch of this sound"); - - /* looping */ - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, SOUND_FLAGS_LOOP, B_SOUND_REDRAW, "Loop", - 10, 50, 95, 20, &sound->flags, 0.0, 0.0, 0, 0, "Game engine only: Toggle between looping on/off"); - - if (sound->flags & SOUND_FLAGS_LOOP) { - uiDefButBitI(block, TOG, SOUND_FLAGS_BIDIRECTIONAL_LOOP, B_SOUND_REDRAW, "Ping Pong", - 105, 50, 95, 20, &sound->flags, 0.0, 0.0, 0, 0, "Game engine only: Toggle between A->B and A->B->A looping"); - - } - - - /* 3D settings ------------------------------------------------------------------ */ - uiBlockBeginAlign(block); - - if (sound->sample->channels == 1) { - uiDefButBitI(block, TOG, SOUND_FLAGS_3D, B_SOUND_REDRAW, "3D Sound", - 10, 10, 90, 20, &sound->flags, 0, 0, 0, 0, "Game engine only: Turns 3D sound on"); - - if (sound->flags & SOUND_FLAGS_3D) { - uiDefButF(block, NUMSLI, B_SOUND_CHANGED, "Scale: ", - 100,10,210,20, &sound->attenuation, 0.0, 5.0, 1.0, 0, "Game engine only: Sets the surround scaling factor for this sound"); - - } - } - } -} - - -/* ************************* SCENE *********************** */ - - -static void output_pic(char *name) -{ - strcpy(G.scene->r.pic, name); - allqueue(REDRAWBUTSSCENE, 0); - BIF_undo_push("Change output picture directory"); -} - -static void backbuf_pic(char *name) -{ - Image *ima; - - strcpy(G.scene->r.backbuf, name); - allqueue(REDRAWBUTSSCENE, 0); - - ima= BKE_add_image_file(name); - if(ima) - BKE_image_signal(ima, NULL, IMA_SIGNAL_RELOAD); - - BIF_undo_push("Change background picture"); -} - -static void ftype_pic(char *name) -{ - strcpy(G.scene->r.ftype, name); - allqueue(REDRAWBUTSSCENE, 0); -} - -static void run_playanim(char *file) -{ - extern char bprogname[]; /* usiblender.c */ - char str[FILE_MAX]; - int pos[2], size[2]; - - /* use current settings for defining position of window. it actually should test image size */ - calc_renderwin_rectangle((G.scene->r.xsch*G.scene->r.size)/100, - (G.scene->r.ysch*G.scene->r.size)/100, G.winpos, pos, size); -#ifdef WIN32 - sprintf(str, "%s -a -p %d %d -f %d %g \"%s\"", bprogname, pos[0], pos[1], G.scene->r.frs_sec, G.scene->r.frs_sec_base, file); -#else - sprintf(str, "\"%s\" -a -p %d %d -f %d %g \"%s\"", bprogname, pos[0], pos[1], G.scene->r.frs_sec, G.scene->r.frs_sec_base, file); -#endif - system(str); -} - -void playback_anim(void) -{ - char file[FILE_MAX]; - - if(BKE_imtype_is_movie(G.scene->r.imtype)) { - switch (G.scene->r.imtype) { -#ifdef WITH_QUICKTIME - case R_QUICKTIME: - makeqtstring(file); - break; -#endif -#ifdef WITH_FFMPEG - case R_FFMPEG: - makeffmpegstring(file); - break; -#endif - default: - makeavistring(&G.scene->r, file); - break; - } - if(BLI_exist(file)) { - run_playanim(file); - } - else error("Can't find movie: %s", file); - } - else { - BKE_makepicstring(file, G.scene->r.pic, G.scene->r.sfra, G.scene->r.imtype); - if(BLI_exist(file)) { - run_playanim(file); - } - else error("Can't find image: %s", file); - } -} - -#ifdef WITH_FFMPEG -static void set_ffmpeg_preset(int preset); -#endif - -void do_render_panels(unsigned short event) -{ - ScrArea *sa; - ID *id; - - switch(event) { - - case B_DORENDER: - BIF_do_render(0); - break; - case B_RTCHANGED: - allqueue(REDRAWALL, 0); - break; - case B_SWITCHRENDER: - /* new panels added, so... */ - G.buts->re_align= 1; - allqueue(REDRAWBUTSSCENE, 0); - break; - case B_PLAYANIM: - playback_anim(); - break; - - case B_DOANIM: - BIF_do_render(1); - break; - - case B_FS_PIC: - sa= closest_bigger_area(); - areawinset(sa->win); - if(G.qual == LR_CTRLKEY) - activate_imageselect(FILE_SPECIAL, "SELECT OUTPUT PICTURES", G.scene->r.pic, output_pic); - else - activate_fileselect(FILE_SPECIAL, "SELECT OUTPUT PICTURES", G.scene->r.pic, output_pic); - break; - - case B_FS_BACKBUF: - sa= closest_bigger_area(); - areawinset(sa->win); - if(G.qual == LR_CTRLKEY) - activate_imageselect(FILE_SPECIAL, "SELECT BACKBUF PICTURE", G.scene->r.backbuf, backbuf_pic); - else - activate_fileselect(FILE_SPECIAL, "SELECT BACKBUF PICTURE", G.scene->r.backbuf, backbuf_pic); - break; - - case B_FS_FTYPE: - sa= closest_bigger_area(); - areawinset(sa->win); - if(G.qual == LR_CTRLKEY) - activate_imageselect(FILE_SPECIAL, "SELECT FTYPE", G.scene->r.ftype, ftype_pic); - else - activate_fileselect(FILE_SPECIAL, "SELECT FTYPE", G.scene->r.ftype, ftype_pic); - break; - - case B_PR_PAL: - G.scene->r.xsch= 720; - G.scene->r.ysch= 576; - G.scene->r.xasp= 54; - G.scene->r.yasp= 51; - G.scene->r.size= 100; - G.scene->r.frs_sec= 25; - G.scene->r.frs_sec_base= 1; - G.scene->r.mode &= ~R_PANORAMA; - G.scene->r.xparts= G.scene->r.yparts= 4; -#ifdef WITH_FFMPEG - G.scene->r.ffcodecdata.gop_size = 15; -#endif - BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9); - BIF_undo_push("Set PAL"); - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWVIEWCAM, 0); - break; - - case B_FILETYPEMENU: - allqueue(REDRAWBUTSSCENE, 0); -#ifdef WITH_FFMPEG - if (G.scene->r.imtype == R_FFMPEG) { - if (G.scene->r.ffcodecdata.type <= 0 || - G.scene->r.ffcodecdata.codec <= 0 || - G.scene->r.ffcodecdata.audio_codec <= 0 || - G.scene->r.ffcodecdata.video_bitrate <= 1) { - G.scene->r.ffcodecdata.codec - = CODEC_ID_MPEG2VIDEO; - set_ffmpeg_preset(FFMPEG_PRESET_DVD); - } - - if (G.scene->r.ffcodecdata.audio_codec <= 0) { - G.scene->r.ffcodecdata.audio_codec - = CODEC_ID_MP2; - G.scene->r.ffcodecdata.audio_bitrate = 128; - } - break; - } -#endif -#if defined (_WIN32) || defined (__APPLE__) - // fall through to codec settings if this is the first - // time R_AVICODEC is selected for this scene. - if (((G.scene->r.imtype == R_AVICODEC) - && (G.scene->r.avicodecdata == NULL)) || - ((G.scene->r.imtype == R_QUICKTIME) - && (G.scene->r.qtcodecdata == NULL))) { - } else { - break; - } -#endif /*_WIN32 || __APPLE__ */ - - case B_SELECTCODEC: -#if defined (_WIN32) || defined (__APPLE__) - if ((G.scene->r.imtype == R_QUICKTIME)) { /* || (G.scene->r.qtcodecdata)) */ -#ifdef WITH_QUICKTIME - get_qtcodec_settings(); -#endif /* WITH_QUICKTIME */ - } -#if defined (_WIN32) && !defined(FREE_WINDOWS) - else - get_avicodec_settings(); -#endif /* _WIN32 && !FREE_WINDOWS */ -#endif /* _WIN32 || __APPLE__ */ - break; - - case B_PR_HD: - G.scene->r.xsch= 1920; - G.scene->r.ysch= 1080; - G.scene->r.xasp= 1; - G.scene->r.yasp= 1; - G.scene->r.size= 100; - G.scene->r.mode &= ~R_PANORAMA; - G.scene->r.xparts= G.scene->r.yparts= 4; - - BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9); - BIF_undo_push("Set FULL"); - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWVIEWCAM, 0); - break; - case B_PR_FULL: - G.scene->r.xsch= 1280; - G.scene->r.ysch= 1024; - G.scene->r.xasp= 1; - G.scene->r.yasp= 1; - G.scene->r.size= 100; - G.scene->r.mode &= ~R_PANORAMA; - G.scene->r.xparts= G.scene->r.yparts= 4; - - BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9); - BIF_undo_push("Set FULL"); - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWVIEWCAM, 0); - break; - case B_PR_PRV: - G.scene->r.xsch= 640; - G.scene->r.ysch= 512; - G.scene->r.xasp= 1; - G.scene->r.yasp= 1; - G.scene->r.size= 50; - G.scene->r.mode &= ~R_PANORAMA; - G.scene->r.xparts= G.scene->r.yparts= 2; - - BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9); - allqueue(REDRAWVIEWCAM, 0); - allqueue(REDRAWBUTSSCENE, 0); - break; - case B_PR_PAL169: - G.scene->r.xsch= 720; - G.scene->r.ysch= 576; - G.scene->r.xasp= 64; - G.scene->r.yasp= 45; - G.scene->r.size= 100; - G.scene->r.frs_sec= 25; - G.scene->r.frs_sec_base= 1; - G.scene->r.mode &= ~R_PANORAMA; - G.scene->r.xparts= G.scene->r.yparts= 4; -#ifdef WITH_FFMPEG - G.scene->r.ffcodecdata.gop_size = 15; -#endif - - BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9); - BIF_undo_push("Set PAL 16/9"); - allqueue(REDRAWVIEWCAM, 0); - allqueue(REDRAWBUTSSCENE, 0); - break; - case B_PR_PC: - G.scene->r.xsch= 640; - G.scene->r.ysch= 480; - G.scene->r.xasp= 100; - G.scene->r.yasp= 100; - G.scene->r.size= 100; - G.scene->r.mode &= ~R_PANORAMA; - G.scene->r.xparts= G.scene->r.yparts= 4; - - BLI_init_rctf(&G.scene->r.safety, 0.0, 1.0, 0.0, 1.0); - BIF_undo_push("Set PC"); - allqueue(REDRAWVIEWCAM, 0); - allqueue(REDRAWBUTSSCENE, 0); - break; - case B_PR_PRESET: - G.scene->r.xsch= 720; - G.scene->r.ysch= 576; - G.scene->r.xasp= 54; - G.scene->r.yasp= 51; - G.scene->r.size= 100; - G.scene->r.mode= R_OSA+R_SHADOW+R_FIELDS; - G.scene->r.imtype= R_TARGA; - G.scene->r.xparts= G.scene->r.yparts= 4; - - BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9); - BIF_undo_push("Set Default"); - allqueue(REDRAWVIEWCAM, 0); - allqueue(REDRAWBUTSSCENE, 0); - break; - case B_PR_PANO: - G.scene->r.xsch= 576; - G.scene->r.ysch= 176; - G.scene->r.xasp= 115; - G.scene->r.yasp= 100; - G.scene->r.size= 100; - G.scene->r.mode |= R_PANORAMA; - G.scene->r.xparts= 16; - G.scene->r.yparts= 1; - - BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9); - BIF_undo_push("Set Panorama"); - allqueue(REDRAWVIEWCAM, 0); - allqueue(REDRAWBUTSSCENE, 0); - break; - case B_PR_NTSC: - G.scene->r.xsch= 720; - G.scene->r.ysch= 480; - G.scene->r.xasp= 10; - G.scene->r.yasp= 11; - G.scene->r.size= 100; - G.scene->r.frs_sec= 30; - G.scene->r.frs_sec_base = 1.001; - G.scene->r.mode &= ~R_PANORAMA; - G.scene->r.xparts= G.scene->r.yparts= 2; -#ifdef WITH_FFMPEG - G.scene->r.ffcodecdata.gop_size = 18; -#endif - - BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9); - BIF_undo_push("Set NTSC"); - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWVIEWCAM, 0); - break; - - case B_SETBROWSE: - id= (ID*) G.scene->set; - - if (G.buts->menunr==-2) { - activate_databrowse(id, ID_SCE, 0, B_SETBROWSE, &G.buts->menunr, do_render_panels); - } - else if (G.buts->menunr>0) { - Scene *newset= (Scene*) BLI_findlink(&G.main->scene, G.buts->menunr-1); - - if (newset==G.scene) - error("Can't use the same scene as its own set"); - else if (newset) { - G.scene->set= newset; - if (scene_check_setscene(G.scene)==0) - error("This would create a cycle"); - - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWVIEW3D, 0); - BIF_undo_push("Change Set Scene"); - } - } - break; - case B_CLEARSET: - G.scene->set= NULL; - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWVIEW3D, 0); - BIF_undo_push("Clear Set Scene"); - - break; - case B_SET_EDGE: - allqueue(REDRAWBUTSSCENE, 0); - break; - case B_SET_ZBLUR: - G.scene->r.mode &= ~R_EDGE; - allqueue(REDRAWBUTSSCENE, 0); - break; - case B_ADD_RENDERLAYER: - if(G.scene->r.actlay==32767) { - scene_add_render_layer(G.scene); - G.scene->r.actlay= BLI_countlist(&G.scene->r.layers) - 1; - } - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWNODE, 0); - break; - case B_SET_PASS: - if(G.scene->nodetree) { - ntreeCompositForceHidden(G.scene->nodetree); - allqueue(REDRAWNODE, 0); - } - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWOOPS, 0); - } -} - -/* NOTE: this is a block-menu, needs 0 events, otherwise the menu closes */ -static uiBlock *edge_render_menu(void *arg_unused) -{ - uiBlock *block; - - block= uiNewBlock(&curarea->uiblocks, "edge render", UI_EMBOSS, UI_HELV, curarea->win); - - /* use this for a fake extra empy space around the buttons */ - uiDefBut(block, LABEL, 0, "", 0, 0, 220, 115, NULL, 0, 0, 0, 0, ""); - - uiDefButS(block, NUM, 0,"Eint:", 45,75,175,19, &G.scene->r.edgeint, 0.0, 255.0, 0, 0, - "Sets edge intensity for Toon shading"); - - /* color settings for the toon shading */ - uiDefButF(block, COL, 0, "", 10, 10,30,60, &(G.scene->r.edgeR), 0, 0, 0, B_EDGECOLSLI, ""); - - uiBlockBeginAlign(block); - uiDefButF(block, NUMSLI, 0, "R ", 45, 50, 175,19, &G.scene->r.edgeR, 0.0, 1.0, B_EDGECOLSLI, 0, - "Color for edges in toon shading mode."); - uiDefButF(block, NUMSLI, 0, "G ", 45, 30, 175,19, &G.scene->r.edgeG, 0.0, 1.0, B_EDGECOLSLI, 0, - "Color for edges in toon shading mode."); - uiDefButF(block, NUMSLI, 0, "B ", 45, 10, 175,19, &G.scene->r.edgeB, 0.0, 1.0, B_EDGECOLSLI, 0, - "Color for edges in toon shading mode."); - - - uiBlockSetDirection(block, UI_TOP); - - return block; -} - - -/* NOTE: this is a block-menu, needs 0 events, otherwise the menu closes */ -static uiBlock *framing_render_menu(void *arg_unused) -{ - uiBlock *block; - short yco = 190, xco = 0; - int randomcolorindex = 1234; - - block= uiNewBlock(&curarea->uiblocks, "framing_options", UI_EMBOSS, UI_HELV, curarea->win); - - /* use this for a fake extra empy space around the buttons */ - uiDefBut(block, LABEL, 0, "", -5, -10, 295, 224, NULL, 0, 0, 0, 0, ""); - - uiDefBut(block, LABEL, 0, "Framing:", xco, yco, 68,19, 0, 0, 0, 0, 0, ""); - uiBlockBeginAlign(block); - uiDefButC(block, ROW, 0, "Stretch", xco += 70, yco, 68, 19, &G.scene->framing.type, 1.0, SCE_GAMEFRAMING_SCALE , 0, 0, "Stretch or squeeze the viewport to fill the display window"); - uiDefButC(block, ROW, 0, "Expose", xco += 70, yco, 68, 19, &G.scene->framing.type, 1.0, SCE_GAMEFRAMING_EXTEND, 0, 0, "Show the entire viewport in the display window, viewing more horizontally or vertically"); - uiDefButC(block, ROW, 0, "Letterbox", xco += 70, yco, 68, 19, &G.scene->framing.type, 1.0, SCE_GAMEFRAMING_BARS , 0, 0, "Show the entire viewport in the display window, using bar horizontally or vertically"); - uiBlockEndAlign(block); - - yco -= 25; - xco = 40; - - uiDefButF(block, COL, 0, "", 0, yco - 58 + 18, 33, 58, &G.scene->framing.col[0], 0, 0, 0, randomcolorindex, ""); - - uiBlockBeginAlign(block); - uiDefButF(block, NUMSLI, 0, "R ", xco,yco,243,18, &G.scene->framing.col[0], 0.0, 1.0, randomcolorindex, 0, "Set the red component of the bars"); - yco -= 20; - uiDefButF(block, NUMSLI, 0, "G ", xco,yco,243,18, &G.scene->framing.col[1], 0.0, 1.0, randomcolorindex, 0, "Set the green component of the bars"); - yco -= 20; - uiDefButF(block, NUMSLI, 0, "B ", xco,yco,243,18, &G.scene->framing.col[2], 0.0, 1.0, randomcolorindex, 0, "Set the blue component of the bars"); - uiBlockEndAlign(block); - - xco = 0; - uiDefBut(block, LABEL, 0, "Fullscreen:", xco, yco-=30, 100, 19, 0, 0.0, 0.0, 0, 0, ""); - uiDefButS(block, TOG, 0, "Fullscreen", xco+70, yco, 68, 19, &G.scene->r.fullscreen, 0.0, 0.0, 0, 0, "Starts player in a new fullscreen display"); - uiBlockBeginAlign(block); - uiDefButS(block, NUM, 0, "X:", xco+40, yco-=27, 100, 19, &G.scene->r.xplay, 10.0, 2000.0, 0, 0, "Displays current X screen/window resolution. Click to change."); - uiDefButS(block, NUM, 0, "Y:", xco+140, yco, 100, 19, &G.scene->r.yplay, 10.0, 2000.0, 0, 0, "Displays current Y screen/window resolution. Click to change."); - uiDefButS(block, NUM, 0, "Freq:", xco+40, yco-=21, 100, 19, &G.scene->r.freqplay, 10.0, 2000.0, 0, 0, "Displays clock frequency of fullscreen display. Click to change."); - uiDefButS(block, NUM, 0, "Bits:", xco+140, yco, 100, 19, &G.scene->r.depth, 8.0, 32.0, 800.0, 0, "Displays bit depth of full screen display. Click to change."); - uiBlockEndAlign(block); - - /* stereo settings */ - /* can't use any definition from the game engine here so hardcode it. Change it here when it changes there! - * RAS_IRasterizer has definitions: - * RAS_STEREO_NOSTEREO 1 - * RAS_STEREO_QUADBUFFERED 2 - * RAS_STEREO_ABOVEBELOW 3 - * RAS_STEREO_INTERLACED 4 future - * RAS_STEREO_ANAGLYPH 5 - * RAS_STEREO_SIDEBYSIDE 6 - * RAS_STEREO_VINTERLACE 7 - */ - uiBlockBeginAlign(block); - uiDefButS(block, ROW, 0, "No Stereo", xco, yco-=30, 88, 19, &(G.scene->r.stereomode), 7.0, 1.0, 0, 0, "Disables stereo"); - uiDefButS(block, ROW, 0, "Pageflip", xco+=90, yco, 88, 19, &(G.scene->r.stereomode), 7.0, 2.0, 0, 0, "Enables hardware pageflip stereo method"); - uiDefButS(block, ROW, 0, "Syncdouble", xco+=90, yco, 88, 19, &(G.scene->r.stereomode), 7.0, 3.0, 0, 0, "Enables syncdoubling stereo method"); - uiDefButS(block, ROW, 0, "Anaglyph", xco-=180, yco-=21, 88, 19, &(G.scene->r.stereomode), 7.0, 5.0, 0, 0, "Enables anaglyph (Red-Blue) stereo method"); - uiDefButS(block, ROW, 0, "Side by Side", xco+=90, yco, 88, 19, &(G.scene->r.stereomode), 7.0, 6.0, 0, 0, "Enables side by side left and right images"); - uiDefButS(block, ROW, 0, "V Interlace", xco+=90, yco, 88, 19, &(G.scene->r.stereomode), 7.0, 7.0, 0, 0, "Enables interlaced vertical strips for autostereo display"); - - uiBlockEndAlign(block); - - uiBlockSetDirection(block, UI_TOP); - - return block; -} - -#ifdef WITH_FFMPEG - -static char* ffmpeg_format_pup(void) -{ - static char string[2048]; - char formatstring[2048]; -#if 0 - int i = 0; - int stroffs = 0; - AVOutputFormat* next = first_oformat; - formatstring = "FFMpeg format: %%t"; - sprintf(string, formatstring); - formatstring = "|%s %%x%d"; - /* FIXME: This should only be generated once */ - while (next != NULL) { - if (next->video_codec != CODEC_ID_NONE && !(next->flags & AVFMT_NOFILE)) { - sprintf(string+stroffs, formatstring, next->name, i++); - stroffs += strlen(string+stroffs); - } - next = next->next; - } - return string; -#endif - strcpy(formatstring, "FFMpeg format: %%t|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d"); - sprintf(string, formatstring, - "MPEG-1", FFMPEG_MPEG1, - "MPEG-2", FFMPEG_MPEG2, - "MPEG-4", FFMPEG_MPEG4, - "AVI", FFMPEG_AVI, - "Quicktime", FFMPEG_MOV, - "DV", FFMPEG_DV, - "H264", FFMPEG_H264, - "XVid", FFMPEG_XVID); - return string; -} - -static char* ffmpeg_preset_pup(void) -{ - static char string[2048]; - char formatstring[2048]; - - strcpy(formatstring, "FFMpeg preset: %%t|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d"); - sprintf(string, formatstring, - "", FFMPEG_PRESET_NONE, - "DVD", FFMPEG_PRESET_DVD, - "SVCD", FFMPEG_PRESET_SVCD, - "VCD", FFMPEG_PRESET_VCD, - "DV", FFMPEG_PRESET_DV); - return string; -} - - -static char* ffmpeg_codec_pup(void) { - static char string[2048]; - char formatstring[2048]; - strcpy(formatstring, "FFMpeg format: %%t|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d"); - sprintf(string, formatstring, - "MPEG1", CODEC_ID_MPEG1VIDEO, - "MPEG2", CODEC_ID_MPEG2VIDEO, - "MPEG4(divx)", CODEC_ID_MPEG4, - "HuffYUV", CODEC_ID_HUFFYUV, - "DV", CODEC_ID_DVVIDEO, - "H264", CODEC_ID_H264, - "XVid", CODEC_ID_XVID); - return string; - -} - -static char* ffmpeg_audio_codec_pup(void) { - static char string[2048]; - char formatstring[2048]; - strcpy(formatstring, "FFMpeg format: %%t|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d"); - sprintf(string, formatstring, - "MP2", CODEC_ID_MP2, - "MP3", CODEC_ID_MP3, - "AC3", CODEC_ID_AC3, - "AAC", CODEC_ID_AAC, - "PCM", CODEC_ID_PCM_S16LE); - return string; - -} - -#endif - -static char *imagetype_pup(void) -{ - static char string[1024]; - char formatstring[1024]; - char appendstring[1024]; - - strcpy(formatstring, "Save image as: %%t|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d"); - -#ifdef __sgi - strcat(formatstring, "|%s %%x%d"); // add space for Movie -#endif - - strcat(formatstring, "|%s %%x%d"); // add space for PNG -/* Commented out until implemented -#ifdef WITH_DDS - strcat(formatstring, "|%s %%x%d"); // add space for DDS -#endif -*/ - strcat(formatstring, "|%s %%x%d"); // add space for BMP - strcat(formatstring, "|%s %%x%d"); // add space for Radiance HDR - strcat(formatstring, "|%s %%x%d"); // add space for Cineon - strcat(formatstring, "|%s %%x%d"); // add space for DPX - -#ifdef _WIN32 - strcat(formatstring, "|%s %%x%d"); // add space for AVI Codec -#endif - -#ifdef WITH_FFMPEG - strcat(formatstring, "|%s %%x%d"); // Add space for ffmpeg -#endif - strcat(formatstring, "|%s %%x%d"); // Add space for frameserver - -#ifdef WITH_QUICKTIME - if(G.have_quicktime) - strcat(formatstring, "|%s %%x%d"); // add space for Quicktime -#endif - - if(G.have_quicktime) { - sprintf(string, formatstring, - "Frameserver", R_FRAMESERVER, -#ifdef WITH_FFMPEG - "FFMpeg", R_FFMPEG, -#endif - "AVI Raw", R_AVIRAW, - "AVI Jpeg", R_AVIJPEG, -#ifdef _WIN32 - "AVI Codec", R_AVICODEC, -#endif -#ifdef WITH_QUICKTIME - "QuickTime", R_QUICKTIME, -#endif - "Targa", R_TARGA, - "Targa Raw", R_RAWTGA, - "PNG", R_PNG, -/* commented out until implemented -#ifdef WITH_DDS - "DDS", R_DDS, -#endif -*/ - "BMP", R_BMP, - "Jpeg", R_JPEG90, - "HamX", R_HAMX, - "Iris", R_IRIS, - "Radiance HDR", R_RADHDR, - "Cineon", R_CINEON, - "DPX", R_DPX -#ifdef __sgi - ,"Movie", R_MOVIE -#endif - ); - } else { - sprintf(string, formatstring, - "Frameserver", R_FRAMESERVER, -#ifdef WITH_FFMPEG - "FFMpeg", R_FFMPEG, -#endif - "AVI Raw", R_AVIRAW, - "AVI Jpeg", R_AVIJPEG, -#ifdef _WIN32 - "AVI Codec", R_AVICODEC, -#endif - "Targa", R_TARGA, - "Targa Raw", R_RAWTGA, - "PNG", R_PNG, -#ifdef WITH_DDS - "DDS", R_DDS, -#endif - "BMP", R_BMP, - "Jpeg", R_JPEG90, - "HamX", R_HAMX, - "Iris", R_IRIS, - "Radiance HDR", R_RADHDR, - "Cineon", R_CINEON, - "DPX", R_DPX -#ifdef __sgi - ,"Movie", R_MOVIE -#endif - ); - } - -#ifdef WITH_OPENEXR - strcpy(formatstring, "|%s %%x%d"); - sprintf(appendstring, formatstring, "OpenEXR", R_OPENEXR); - strcat(string, appendstring); - sprintf(appendstring, formatstring, "MultiLayer", R_MULTILAYER); - strcat(string, appendstring); -#endif - - if (G.have_libtiff) { - strcpy(formatstring, "|%s %%x%d"); - sprintf(appendstring, formatstring, "TIFF", R_TIFF); - strcat(string, appendstring); - } - - return (string); -} - -#ifdef _WIN32 -static char *avicodec_str(void) -{ - static char string[1024]; - - sprintf(string, "Codec: %s", G.scene->r.avicodecdata->avicodecname); - - return string; -} -#endif - -static void render_panel_output(void) -{ - ID *id; - int a,b; - uiBlock *block; - char *strp; - - - block= uiNewBlock(&curarea->uiblocks, "render_panel_output", UI_EMBOSS, UI_HELV, curarea->win); - if(uiNewPanel(curarea, block, "Output", "Render", 0, 0, 318, 204)==0) return; - - uiBlockBeginAlign(block); - uiDefIconBut(block, BUT, B_FS_PIC, ICON_FILESEL, 10, 190, 20, 20, 0, 0, 0, 0, 0, "Open Fileselect to get Pics dir/name"); - uiDefBut(block, TEX,0,"", 31, 190, 279, 20,G.scene->r.pic, 0.0,79.0, 0, 0, "Directory/name to save rendered Pics to"); - uiDefIconBut(block, BUT,B_FS_BACKBUF, ICON_FILESEL, 10, 168, 20, 20, 0, 0, 0, 0, 0, "Open Fileselect to get Backbuf image"); - uiDefBut(block, TEX,0,"", 31, 168, 279, 20,G.scene->r.backbuf, 0.0,79.0, 0, 0, "Image to use as background for rendering"); - uiDefIconBut(block, BUT,B_FS_FTYPE, ICON_FILESEL, 10, 146, 20, 20, 0, 0, 0, 0, 0, "Open Fileselect to get Ftype image"); - uiDefBut(block, TEX,0,"", 31, 146, 279, 20,G.scene->r.ftype,0.0,79.0, 0, 0, "Image to use with FTYPE Image type"); - uiBlockEndAlign(block); - - - /* SET BUTTON */ - uiBlockBeginAlign(block); - id= (ID *)G.scene->set; - IDnames_to_pupstring(&strp, NULL, NULL, &(G.main->scene), id, &(G.buts->menunr)); - if(strp[0]) - uiDefButS(block, MENU, B_SETBROWSE, strp, 10, 120, 20, 20, &(G.buts->menunr), 0, 0, 0, 0, "Scene to link as a Set"); - MEM_freeN(strp); - - if(G.scene->set) { - uiSetButLock(1, NULL); - uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, B_NOP, "", 31, 120, 100, 20, &(G.scene->set), "Name of the Set"); - uiClearButLock(); - uiDefIconBut(block, BUT, B_CLEARSET, ICON_X, 132, 120, 20, 20, 0, 0, 0, 0, 0, "Remove Set link"); - } - uiBlockEndAlign(block); - - uiBlockSetCol(block, TH_BUT_SETTING1); - uiDefButBitS(block, TOG, R_BACKBUF, B_NOP,"Backbuf", 10, 94, 80, 20, &G.scene->r.bufflag, 0, 0, 0, 0, "Enable/Disable use of Backbuf image"); - uiDefButS(block, NUM, B_NOP, "Threads:", 10, 68, 100, 20, &G.scene->r.threads, 1, BLENDER_MAX_THREADS, 0, 0, "Amount of threads for render"); - uiBlockSetCol(block, TH_AUTO); - - uiBlockBeginAlign(block); - for(b=2; b>=0; b--) - for(a=0; a<3; a++) - uiDefButBitS(block, TOG, 1<<(3*b+a), 800,"", (short)(10+18*a),(short)(10+14*b),16,12, &G.winpos, 0, 0, 0, 0, "Render window placement on screen"); - uiBlockEndAlign(block); - - uiDefButBitS(block, TOG, R_EXR_TILE_FILE, B_NOP, "Save Buffers", 72, 31, 120, 19, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Save the tiles for all RenderLayers and used SceneNodes to files, to save memory"); - - uiDefButS(block, MENU, B_REDR, "Render Display %t|Render Window %x1|Image Editor %x0|Full Screen %x2", - 72, 10, 120, 19, &G.displaymode, 0.0, (float)R_DISPLAYWIN, 0, 0, "Sets render output display"); - - uiDefButBitS(block, TOG, R_EXTENSION, B_NOP, "Extensions", 205, 10, 105, 19, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Adds extensions to the output when rendering animations"); - - /* Dither control */ - uiDefButF(block, NUM,B_DIFF, "Dither:", 205,31,105,19, &G.scene->r.dither_intensity, 0.0, 2.0, 0, 0, "The amount of dithering noise present in the output image (0.0 = no dithering)"); - - /* Toon shading buttons */ - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_EDGE, B_NOP,"Edge", 100, 94, 70, 20, &G.scene->r.mode, 0, 0, 0, 0, "Enable Toon Edge-enhance"); - uiDefBlockBut(block, edge_render_menu, NULL, "Edge Settings", 170, 94, 140, 20, "Display Edge settings"); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefButBitS(block, TOG, R_NO_TEX, B_NOP, "Disable Tex", 115, 68, 70, 20, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Disables Textures for render"); - uiDefButBitS(block, TOG, R_FREE_IMAGE, B_NOP, "Free Tex Images", 205, 68, 100, 20, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Frees all Images used by Textures after each render"); - uiBlockEndAlign(block); -} - -static void do_bake_func(void *unused_v, void *unused_p) -{ - objects_bake_render(0); -} - -static void render_panel_bake(void) -{ - uiBlock *block; - uiBut *but; - - block= uiNewBlock(&curarea->uiblocks, "render_panel_bake", UI_EMBOSS, UI_HELV, curarea->win); - uiNewPanelTabbed("Anim", "Render"); - if(uiNewPanel(curarea, block, "Bake", "Render", 320, 0, 318, 204)==0) return; - - but= uiDefBut(block, BUT, B_NOP, "BAKE", 10, 150, 190,40, 0, 0, 0, 0, 0, "Start the bake render for selected Objects"); - uiButSetFunc(but, do_bake_func, NULL, NULL); - - uiBlockBeginAlign(block); - uiDefButBitS(block, TOG, R_BAKE_TO_ACTIVE, B_DIFF, "Selected to Active", 10,120,190,20,&G.scene->r.bake_flag, 0.0, 0, 0, 0, "Bake shading on the surface of selected objects to the active object"); - uiDefButF(block, NUM, B_DIFF, "Dist:", 10,100,(G.scene->r.bake_mode == RE_BAKE_NORMALS)? 95: 190,20,&G.scene->r.bake_maxdist, 0.0, 10.0, 1, 0, "Maximum distance from active object to other object"); - - if(G.scene->r.bake_mode == RE_BAKE_NORMALS) - uiDefButS(block, MENU, B_DIFF, "Normal Space %t|Camera %x0|World %x1|Object %x2|Tangent %x3", - 105,100,95,20, &G.scene->r.bake_normal_space, 0, 0, 0, 0, "Choose normal space for baking"); - uiBlockEndAlign(block); - -#if 0 - uiBlockBeginAlign(block); - uiDefButBitS(block, TOG, R_BAKE_OSA, B_DIFF, "OSA", 10,120,190,20, &G.scene->r.bake_flag, 0, 0, 0, 0, "Enables Oversampling (Anti-aliasing)"); - uiDefButS(block, ROW,B_DIFF,"5", 10,100,50,20,&G.scene->r.bake_osa,2.0,5.0, 0, 0, "Sets oversample level to 5"); - uiDefButS(block, ROW,B_DIFF,"8", 60,100,45,20,&G.scene->r.bake_osa,2.0,8.0, 0, 0, "Sets oversample level to 8"); - uiDefButS(block, ROW,B_DIFF,"11", 105,100,45,20,&G.scene->r.bake_osa,2.0,11.0, 0, 0, "Sets oversample level to 11"); - uiDefButS(block, ROW,B_DIFF,"16", 150,100,50,20,&G.scene->r.bake_osa,2.0,16.0, 0, 0, "Sets oversample level to 16"); -#endif - uiBlockBeginAlign(block); - uiDefButS(block, ROW,B_REDR,"Full Render", 210,170,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_ALL, 0, 0, ""); - uiDefButS(block, ROW,B_REDR,"Ambient Occlusion",210,150,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_AO, 0, 0, ""); - uiDefButS(block, ROW,B_REDR,"Normals", 210,130,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_NORMALS, 0, 0, ""); - uiDefButS(block, ROW,B_REDR,"Textures", 210,110,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_TEXTURE, 0, 0, ""); - uiBlockEndAlign(block); - - uiDefButBitS(block, TOG, R_BAKE_CLEAR, B_DIFF, "Clear", 210,80,120,20,&G.scene->r.bake_flag, 0.0, 0, 0, 0, "Clear Images before baking"); - - uiDefButS(block, NUM, B_DIFF,"Margin:", 210,50,120,20,&G.scene->r.bake_filter, 0.0, 32.0, 0, 0, "Amount of pixels to extend the baked result with, as post process filter"); -} - -static void render_panel_render(void) -{ - uiBlock *block; - char str[256]; - - block= uiNewBlock(&curarea->uiblocks, "render_panel_render", UI_EMBOSS, UI_HELV, curarea->win); - if(uiNewPanel(curarea, block, "Render", "Render", 320, 0, 318, 204)==0) return; - - uiBlockBeginAlign(block); - uiDefBut(block, BUT,B_DORENDER,"RENDER", 369, 164, 191,37, 0, 0, 0, 0, 0, "Start the rendering"); -#ifndef DISABLE_YAFRAY - /* yafray: on request, render engine menu is back again, and moved to Render panel */ - uiDefButS(block, MENU, B_SWITCHRENDER, "Rendering Engine %t|Blender Internal %x0|YafRay %x1", - 369, 142, 191, 20, &G.scene->r.renderer, 0, 0, 0, 0, "Choose rendering engine"); -#else - uiDefButS(block, MENU, B_SWITCHRENDER, "Rendering Engine %t|Blender Internal %x0", - 369, 142, 191, 20, &G.scene->r.renderer, 0, 0, 0, 0, "Choose rendering engine"); -#endif /* disable yafray */ - - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_OSA, B_DIFF, "OSA", 369,109,122,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables Oversampling (Anti-aliasing)"); - uiDefButS(block, ROW,B_DIFF,"5", 369,88,29,20,&G.scene->r.osa,2.0,5.0, 0, 0, "Sets oversample level to 5"); - uiDefButS(block, ROW,B_DIFF,"8", 400,88,29,20,&G.scene->r.osa,2.0,8.0, 0, 0, "Sets oversample level to 8 (Recommended)"); - uiDefButS(block, ROW,B_DIFF,"11", 431,88,29,20,&G.scene->r.osa,2.0,11.0, 0, 0, "Sets oversample level to 11"); - uiDefButS(block, ROW,B_DIFF,"16", 462,88,29,20,&G.scene->r.osa,2.0,16.0, 0, 0, "Sets oversample level to 16"); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_MBLUR, B_REDR, "MBLUR", 496,109,64,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables Motion Blur calculation"); - uiDefButF(block, NUM,B_DIFF,"Bf:", 496,88,64,20,&G.scene->r.blurfac, 0.01, 5.0, 10, 2, "Sets motion blur factor"); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefButS(block, NUM,B_DIFF,"Xparts:", 369,46,95,29,&G.scene->r.xparts,1.0, 512.0, 0, 0, "Sets the number of horizontal parts to render image in (For panorama sets number of camera slices)"); - uiDefButS(block, NUM,B_DIFF,"Yparts:", 465,46,95,29,&G.scene->r.yparts,1.0, 64.0, 0, 0, "Sets the number of vertical parts to render image in"); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefButS(block, ROW,800,"Sky", 369,13,35,20,&G.scene->r.alphamode,3.0,0.0, 0, 0, "Fill background with sky"); - uiDefButS(block, ROW,800,"Premul", 405,13,50,20,&G.scene->r.alphamode,3.0,1.0, 0, 0, "Multiply alpha in advance"); - uiDefButS(block, ROW,800,"Key", 456,13,35,20,&G.scene->r.alphamode,3.0,2.0, 0, 0, "Alpha and color values remain unchanged"); - uiBlockEndAlign(block); - - if(G.scene->r.mode & R_RAYTRACE) - uiDefButS(block, MENU, B_DIFF,"Octree resolution %t|64 %x64|128 %x128|256 %x256|512 %x512", 496,13,64,20,&G.scene->r.ocres,0.0,0.0, 0, 0, "Octree resolution for ray tracing"); - - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_SHADOW, B_REDR,"Shadow", 565,172,60,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable shadow calculation"); - uiDefButBitI(block, TOG, R_ENVMAP, B_REDR,"EnvMap", 627,172,60,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable environment map rendering"); - uiDefButBitI(block, TOG, R_PANORAMA, B_REDR,"Pano", 565,142,40,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable panorama rendering (output width is multiplied by Xparts)"); - uiDefButBitI(block, TOG, R_RAYTRACE, B_REDR,"Ray",606,142,40,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable ray tracing"); - uiDefButBitI(block, TOG, R_RADIO, B_REDR,"Radio", 647,142,40,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable radiosity rendering"); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefButS(block, ROW,B_DIFF,"100%", 565,109,122,20,&G.scene->r.size,1.0,100.0, 0, 0, "Set render size to defined size"); - uiDefButS(block, ROW,B_DIFF,"75%", 565,88,40,20,&G.scene->r.size,1.0,75.0, 0, 0, "Set render size to 3/4 of defined size"); - uiDefButS(block, ROW,B_DIFF,"50%", 606,88,40,20,&G.scene->r.size,1.0,50.0, 0, 0, "Set render size to 1/2 of defined size"); - uiDefButS(block, ROW,B_DIFF,"25%", 647,88,40,20,&G.scene->r.size,1.0,25.0, 0, 0, "Set render size to 1/4 of defined size"); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_FIELDS, B_REDR,"Fields", 565,55,60,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables field rendering"); - uiDefButBitI(block, TOG, R_ODDFIELD, B_REDR,"Odd", 627,55,39,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables Odd field first rendering (Default: Even field)"); - uiDefButBitI(block, TOG, R_FIELDSTILL, B_REDR,"X", 668,55,19,20,&G.scene->r.mode, 0, 0, 0, 0, "Disables time difference in field calculations"); - - sprintf(str, "Filter%%t|Box %%x%d|Tent %%x%d|Quad %%x%d|Cubic %%x%d|Gauss %%x%d|CatRom %%x%d|Mitch %%x%d", R_FILTER_BOX, R_FILTER_TENT, R_FILTER_QUAD, R_FILTER_CUBIC, R_FILTER_GAUSS, R_FILTER_CATROM, R_FILTER_MITCH); - uiDefButS(block, MENU, B_DIFF,str, 565,34,60,20, &G.scene->r.filtertype, 0, 0, 0, 0, "Set sampling filter for antialiasing"); - uiDefButF(block, NUM,B_DIFF,"", 627,34,60,20,&G.scene->r.gauss,0.5, 1.5, 10, 2, "Sets the filter size"); - - uiDefButBitI(block, TOG, R_BORDER, REDRAWVIEWCAM, "Border", 565,13,122,20, &G.scene->r.mode, 0, 0, 0, 0, "Render a small cut-out of the image"); - uiBlockEndAlign(block); - -} - -static void render_panel_anim(void) -{ - uiBlock *block; - - - block= uiNewBlock(&curarea->uiblocks, "render_panel_anim", UI_EMBOSS, UI_HELV, curarea->win); - if(uiNewPanel(curarea, block, "Anim", "Render", 640, 0, 318, 204)==0) return; - - - uiDefBut(block, BUT,B_DOANIM,"ANIM", 692,142,192,47, 0, 0, 0, 0, 0, "Start rendering a sequence"); - - uiBlockSetCol(block, TH_BUT_SETTING1); - uiBlockBeginAlign(block); - uiDefButBitS(block, TOG, R_DOSEQ, B_NOP, "Do Sequence",692,114,192,20, &G.scene->r.scemode, 0, 0, 0, 0, "Enables sequence output rendering (Default: 3D rendering)"); - uiDefButBitS(block, TOG, R_DOCOMP, B_NOP, "Do Composite",692,90,192,20, &G.scene->r.scemode, 0, 0, 0, 0, "Uses compositing nodes for output rendering"); - uiBlockEndAlign(block); - - uiBlockSetCol(block, TH_AUTO); - uiDefBut(block, BUT,B_PLAYANIM, "PLAY",692,40,94,33, 0, 0, 0, 0, 0, "Play animation of rendered images/avi (searches Pics: field)"); - uiDefButS(block, NUM, B_RTCHANGED, "rt:",789,40,95,33, &G.rt, -1000.0, 1000.0, 0, 0, "General testing/debug button"); - - uiBlockBeginAlign(block); - uiDefButI(block, NUM,REDRAWSEQ,"Sta:",692,10,94,24, &G.scene->r.sfra,1.0,MAXFRAMEF, 0, 0, "The start frame of the animation"); - uiDefButI(block, NUM,REDRAWSEQ,"End:",789,10,95,24, &G.scene->r.efra,SFRA,MAXFRAMEF, 0, 0, "The end frame of the animation"); - uiBlockEndAlign(block); -} - -#ifdef WITH_FFMPEG -static void set_ffmpeg_preset(int preset) -{ - int isntsc = (G.scene->r.frs_sec != 25); - switch (preset) { - case FFMPEG_PRESET_VCD: - G.scene->r.ffcodecdata.type = FFMPEG_MPEG1; - G.scene->r.ffcodecdata.video_bitrate = 1150; - G.scene->r.xsch = 352; - G.scene->r.ysch = isntsc ? 240 : 288; - G.scene->r.ffcodecdata.gop_size = isntsc ? 18 : 15; - G.scene->r.ffcodecdata.rc_max_rate = 1150; - G.scene->r.ffcodecdata.rc_min_rate = 1150; - G.scene->r.ffcodecdata.rc_buffer_size = 40*8; - G.scene->r.ffcodecdata.mux_packet_size = 2324; - G.scene->r.ffcodecdata.mux_rate = 2352 * 75 * 8; - break; - case FFMPEG_PRESET_SVCD: - G.scene->r.ffcodecdata.type = FFMPEG_MPEG2; - G.scene->r.ffcodecdata.video_bitrate = 2040; - G.scene->r.xsch = 480; - G.scene->r.ysch = isntsc ? 480 : 576; - G.scene->r.ffcodecdata.gop_size = isntsc ? 18 : 15; - G.scene->r.ffcodecdata.rc_max_rate = 2516; - G.scene->r.ffcodecdata.rc_min_rate = 0; - G.scene->r.ffcodecdata.rc_buffer_size = 224*8; - G.scene->r.ffcodecdata.mux_packet_size = 2324; - G.scene->r.ffcodecdata.mux_rate = 0; - - break; - case FFMPEG_PRESET_DVD: - G.scene->r.ffcodecdata.type = FFMPEG_MPEG2; - G.scene->r.ffcodecdata.video_bitrate = 6000; - G.scene->r.xsch = 720; - G.scene->r.ysch = isntsc ? 480 : 576; - G.scene->r.ffcodecdata.gop_size = isntsc ? 18 : 15; - G.scene->r.ffcodecdata.rc_max_rate = 9000; - G.scene->r.ffcodecdata.rc_min_rate = 0; - G.scene->r.ffcodecdata.rc_buffer_size = 224*8; - G.scene->r.ffcodecdata.mux_packet_size = 2048; - G.scene->r.ffcodecdata.mux_rate = 10080000; - - break; - case FFMPEG_PRESET_DV: - G.scene->r.ffcodecdata.type = FFMPEG_DV; - G.scene->r.xsch = 720; - G.scene->r.ysch = isntsc ? 480 : 576; - break; - } -} - -static void render_panel_ffmpeg_video(void) -{ - uiBlock *block; - int yofs; - int xcol1; - int xcol2; - - block = uiNewBlock(&curarea->uiblocks, "render_panel_ffmpeg_video", - UI_EMBOSS, UI_HELV, curarea->win); - - uiNewPanelTabbed("Format", "Render"); - if (uiNewPanel(curarea, block, "Video", "Render", 960, 0, 318, 204)== 0) - return; - - if (ffmpeg_preset_sel != 0) { - set_ffmpeg_preset(ffmpeg_preset_sel); - ffmpeg_preset_sel = 0; - allqueue(REDRAWBUTSSCENE, 0); - } - - xcol1 = 872; - xcol2 = 1002; - - yofs = 54; - uiDefBut(block, LABEL, B_DIFF, "Format", xcol1, yofs+88, - 110, 20, 0, 0, 0, 0, 0, ""); - uiDefBut(block, LABEL, B_DIFF, "Preset", xcol2, yofs+88, - 110, 20, 0, 0, 0, 0, 0, ""); - uiDefButI(block, MENU, B_DIFF, ffmpeg_format_pup(), - xcol1, yofs+66, 110, 20, &G.scene->r.ffcodecdata.type, - 0,0,0,0, "output file format"); - uiDefButI(block, NUM, B_DIFF, "Bitrate", - xcol1, yofs+44, 110, 20, - &G.scene->r.ffcodecdata.video_bitrate, - 1, 14000, 0, 0, "Video bitrate(kb/s)"); - uiDefButI(block, NUM, B_DIFF, "Min Rate", - xcol1, yofs+22, 110, 20, &G.scene->r.ffcodecdata.rc_min_rate, - 0, 14000, 0, 0, "Rate control: min rate(kb/s)"); - uiDefButI(block, NUM, B_DIFF, "Max Rate", - xcol1, yofs, 110, 20, &G.scene->r.ffcodecdata.rc_max_rate, - 1, 14000, 0, 0, "Rate control: max rate(kb/s)"); - - uiDefButI(block, NUM, B_DIFF, "Mux Rate", - xcol1, yofs-22, 110, 20, - &G.scene->r.ffcodecdata.mux_rate, - 0, 100000000, 0, 0, "Mux rate (bits/s(!))"); - - - uiDefButI(block, MENU, B_REDR, ffmpeg_preset_pup(), - xcol2, yofs+66, 110, 20, &ffmpeg_preset_sel, - 0,0,0,0, "Output file format preset selection"); - uiDefButI(block, NUM, B_DIFF, "GOP Size", - xcol2, yofs+44, 110, 20, &G.scene->r.ffcodecdata.gop_size, - 0, 100, 0, 0, "Distance between key frames"); - uiDefButI(block, NUM, B_DIFF, "Buffersize", - xcol2, yofs+22, 110, 20, - &G.scene->r.ffcodecdata.rc_buffer_size, - 0, 2000, 0, 0, "Rate control: buffer size (kb)"); - uiDefButI(block, NUM, B_DIFF, "Mux PSize", - xcol2, yofs, 110, 20, - &G.scene->r.ffcodecdata.mux_packet_size, - 0, 16384, 0, 0, "Mux packet size (byte)"); - - uiDefButBitI(block, TOG, FFMPEG_AUTOSPLIT_OUTPUT, B_NOP, - "Autosplit Output", - xcol2, yofs-22, 110, 20, - &G.scene->r.ffcodecdata.flags, - 0, 1, 0,0, "Autosplit output at 2GB boundary."); - - - if (ELEM(G.scene->r.ffcodecdata.type, FFMPEG_AVI, FFMPEG_MOV)) { - uiDefBut(block, LABEL, 0, "Codec", - xcol1, yofs-44, 110, 20, 0, 0, 0, 0, 0, ""); - uiDefButI(block, MENU,B_REDR, ffmpeg_codec_pup(), - xcol1, yofs-66, 110, 20, - &G.scene->r.ffcodecdata.codec, - 0,0,0,0, "FFMpeg codec to use"); - } -} - -static void render_panel_ffmpeg_audio(void) -{ - uiBlock *block; - int yofs; - int xcol; - - block = uiNewBlock(&curarea->uiblocks, "render_panel_ffmpeg_audio", UI_EMBOSS, UI_HELV, curarea->win); - uiNewPanelTabbed("Format", "Render"); - if (uiNewPanel(curarea, block, "Audio", "Render", 960, 0, 318, 204) == 0) return; - - yofs = 54; - xcol = 892; - - uiDefButBitI(block, TOG, FFMPEG_MULTIPLEX_AUDIO, B_NOP, - "Multiplex audio", xcol, yofs, 225, 20, - &G.scene->r.ffcodecdata.flags, - 0, 1, 0,0, "Interleave audio with the output video"); - uiDefBut(block, LABEL, 0, "Codec", - xcol, yofs-22, 225, 20, 0, 0, 0, 0, 0, ""); - uiDefButI(block, MENU,B_NOP, ffmpeg_audio_codec_pup(), - xcol, yofs-44, 225, 20, - &G.scene->r.ffcodecdata.audio_codec, - 0,0,0,0, "FFMpeg codec to use"); - uiDefButI(block, NUM, B_DIFF, "Bitrate", - xcol, yofs-66, 110, 20, - &G.scene->r.ffcodecdata.audio_bitrate, - 32, 384, 0, 0, "Audio bitrate(kb/s)"); -} -#endif - -static void render_panel_stamp(void) -{ - uiBlock *block; - int yofs=0, xofs=550; - - block= uiNewBlock (&curarea->uiblocks, "render_panel_stamp", UI_EMBOSS, UI_HELV, curarea->win); - uiNewPanelTabbed ("Format", "Render"); - if(uiNewPanel (curarea, block, "Stamp", "Render", 960, 0, 318, 204)==0) return; - - if (G.scene->r.scemode & R_STAMP_INFO) { - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_STAMP_NOTE, B_REDR, "Note", xofs, yofs, 120, 19, &G.scene->r.stamp, 0, 0, 0, 0, "Stamp user data"); - uiDefBut(block, TEX, B_NOP, "", xofs+120, yofs, 180, 19, &G.scene->r.stamp_udata, 0.0, 128.0, 100, 0, "User Note"); - uiBlockEndAlign(block); - yofs += 30; /* gap */ - - - yofs += 80; - /* Order is important for alligning ... grr */ - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_STAMP_FILENAME, B_REDR, "Filename", xofs, yofs, 120, 19, &G.scene->r.stamp, 0, 0, 0, 0, "Stamp blend filename"); - yofs -= 20; - uiDefButBitI(block, TOG, R_STAMP_SCENE, B_REDR, "Scene", xofs, yofs, 60, 19, &G.scene->r.stamp, 0, 0, 0, 0, "Stamp scene name"); - uiDefButBitI(block, TOG, R_STAMP_CAMERA, B_REDR, "Camera", xofs+60, yofs, 60, 19, &G.scene->r.stamp, 0, 0, 0, 0, "Stamp camera name"); - yofs -= 20; - uiDefButBitI(block, TOG, R_STAMP_TIME, B_REDR, "Time", xofs, yofs, 60, 19, &G.scene->r.stamp, 0, 0, 0, 0, "Stamp time (HH:MM:SS)"); - uiDefButBitI(block, TOG, R_STAMP_DATE, B_REDR, "Date", xofs+60, yofs, 60, 19, &G.scene->r.stamp, 0, 0, 0, 0, "Stamp date"); - yofs -= 20; - uiDefButBitI(block, TOG, R_STAMP_FRAME, B_REDR, "Frame", xofs, yofs, 60, 19, &G.scene->r.stamp, 0, 0, 0, 0, "Stamp frame number"); - uiDefButBitI(block, TOG, R_STAMP_MARKER, B_REDR, "Marker", xofs+60, yofs, 60, 19, &G.scene->r.stamp, 0, 0, 0, 0, "Stamp the last marker"); - yofs -= 20; - uiDefButBitI(block, TOG, R_STAMP_SEQSTRIP, B_REDR, "Sequence Strip", xofs, yofs, 120, 19, &G.scene->r.stamp, 0, 0, 0, 0, "Stamp the forground sequence strip name"); - uiBlockEndAlign(block); - yofs += 80; - - /* draw font selector */ - if (G.scene->r.stamp & R_STAMP_DRAW) { - uiDefButS(block, MENU, B_REDR, "Stamp Font Size%t|Tiny Text%x1|Small Text%x2|Medium Text%x3|Large Text%x0|Extra Large Text%x4|", - xofs+130, yofs, 170, 19, &G.scene->r.stamp_font_id, 0, 0, 0, 0, "Choose stamp text size"); - - /* draw fg/bg next to the scene */ - yofs -= 25; - uiDefBut(block, LABEL, B_NOP, "Text Color", xofs+130, yofs, 70, 19, 0, 0, 0, 0, 0, ""); - uiDefBut(block, LABEL, B_NOP, "Background", xofs+215, yofs, 70, 19, 0, 0, 0, 0, 0, ""); - yofs -= 20; - uiDefButF(block, COL, B_NOP, "", xofs+130, yofs, 80, 19, G.scene->r.fg_stamp, 0, 0, 0, 0, "Foreground text color"); - uiDefButF(block, COL, B_NOP, "", xofs+220, yofs, 80, 19, G.scene->r.bg_stamp, 0, 0, 0, 0, "Background color"); - yofs -= 30; - uiDefButF(block, NUMSLI, B_NOP, "A ", xofs+130, yofs, 170, 19, &G.scene->r.bg_stamp[3], 0, 1.0, 0, 0, "Alpha for text background"); - yofs += 105; - } else { - yofs += 30; - } - - uiDefButBitS(block, TOG, R_STAMP_INFO, B_REDR, "Enable Stamp", xofs, yofs, 120, 20, &G.scene->r.scemode, 0, 0, 0, 0, "Disable stamp info in images metadata"); - uiDefButBitI(block, TOG, R_STAMP_DRAW, B_REDR, "Draw Stamp", xofs+130, yofs, 170, 20, &G.scene->r.stamp, 0, 0, 0, 0, "Draw the stamp info into each frame"); - yofs += 20; - } - else { - uiDefButBitS(block, TOG, R_STAMP_INFO, B_REDR, "Enable Stamp", xofs, 142, 120, 20, &G.scene->r.scemode, 0, 0, 0, 0, "Enable stamp info to image metadata"); - yofs += 20; - uiDefBut(block, LABEL, 0, "", xofs, yofs, 300, 19, 0, 0, 0, 0, 0, ""); - } -} - -static void render_panel_format(void) -{ - uiBlock *block; - int yofs; - - - block= uiNewBlock(&curarea->uiblocks, "render_panel_format", UI_EMBOSS, UI_HELV, curarea->win); - if(uiNewPanel(curarea, block, "Format", "Render", 960, 0, 318, 204)==0) return; - uiDefBlockBut(block, framing_render_menu, NULL, - "Game framing settings", - 892, 169, 227, 20, "Display game framing settings"); - /* uiDefIconTextBlockBut(block, framing_render_menu, NULL, - ICON_BLOCKBUT_CORNER, - "Game framing settings", - 892, 169, 227, 20, - "Display game framing settings"); */ - - uiBlockBeginAlign(block); - uiDefButS(block, NUM,REDRAWVIEWCAM,"SizeX:", 892 ,136,112,27, &G.scene->r.xsch, 4.0, 10000.0, 0, 0, "The image width in pixels"); - uiDefButS(block, NUM,REDRAWVIEWCAM,"SizeY:", 1007,136,112,27, &G.scene->r.ysch, 4.0,10000.0, 0, 0, "The image height in scanlines"); - uiDefButS(block, NUM,REDRAWVIEWCAM,"AspX:", 892 ,114,112,20, &G.scene->r.xasp, 1.0,200.0, 0, 0, "The horizontal aspect ratio"); - uiDefButS(block, NUM,REDRAWVIEWCAM,"AspY:", 1007,114,112,20, &G.scene->r.yasp, 1.0,200.0, 0, 0, "The vertical aspect ratio"); - uiBlockEndAlign(block); - - yofs = 54; - -#ifdef __sgi - yofs = 76; - uiDefButS(block, NUM,B_DIFF,"MaxSize:", 892,32,165,20, &G.scene->r.maximsize, 0.0, 500.0, 0, 0, "Maximum size per frame to save in an SGI movie"); - uiDefButBitI(block, TOG, R_COSMO, 0,"Cosmo", 1059,32,60,20, &G.scene->r.mode, 0, 0, 0, 0, "Attempt to save SGI movies using Cosmo hardware"); -#endif - - uiDefButS(block, MENU,B_FILETYPEMENU,imagetype_pup(), 892,yofs,174,20, &G.scene->r.imtype, 0, 0, 0, 0, "Images are saved in this file format"); - uiDefButBitI(block, TOG, R_CROP, B_DIFF, "Crop", 1068,yofs,51,20, &G.scene->r.mode, 0, 0, 0, 0, "When Border render, the resulting image gets cropped"); - - yofs -= 22; - - if(G.scene->r.quality==0) G.scene->r.quality= 90; - -#ifdef WITH_QUICKTIME - if (G.scene->r.imtype == R_AVICODEC || G.scene->r.imtype == R_QUICKTIME) { -#else /* WITH_QUICKTIME */ - if (0) { -#endif - if(G.scene->r.imtype == R_QUICKTIME) { -#ifdef WITH_QUICKTIME -#if defined (_WIN32) || defined (__APPLE__) - //glColor3f(0.65, 0.65, 0.7); - //glRecti(892,yofs+46,892+225,yofs+45+20); - if(G.scene->r.qtcodecdata == NULL) - uiDefBut(block, LABEL, 0, "Codec: not set", 892,yofs+44,225,20, 0, 0, 0, 0, 0, ""); - else - uiDefBut(block, LABEL, 0, G.scene->r.qtcodecdata->qtcodecname, 892,yofs+44,225,20, 0, 0, 0, 0, 0, ""); - uiDefBut(block, BUT,B_SELECTCODEC, "Set codec", 892,yofs,74,20, 0, 0, 0, 0, 0, "Set codec settings for Quicktime"); -#endif -#endif /* WITH_QUICKTIME */ - } else { -#ifdef _WIN32 - //glColor3f(0.65, 0.65, 0.7); - //glRecti(892,yofs+46,892+225,yofs+45+20); - if(G.scene->r.avicodecdata == NULL) - uiDefBut(block, LABEL, 0, "Codec: not set.", 892,yofs+43,225,20, 0, 0, 0, 0, 0, ""); - else - uiDefBut(block, LABEL, 0, avicodec_str(), 892,yofs+43,225,20, 0, 0, 0, 0, 0, ""); -#endif - uiDefBut(block, BUT,B_SELECTCODEC, "Set codec", 892,yofs,74,20, 0, 0, 0, 0, 0, "Set codec settings for AVI"); - } -#ifdef WITH_OPENEXR - } - else if (ELEM(G.scene->r.imtype, R_OPENEXR, R_MULTILAYER)) { - if (G.scene->r.quality > 5) G.scene->r.quality = 2; - - if(G.scene->r.imtype==R_OPENEXR) { - uiBlockBeginAlign(block); - uiDefButBitS(block, TOG, R_OPENEXR_HALF, B_NOP,"Half", 892,yofs+44,60,20, &G.scene->r.subimtype, 0, 0, 0, 0, "Use 16 bit floats instead of 32 bit floats per channel"); - uiDefButBitS(block, TOG, R_OPENEXR_ZBUF, B_NOP,"Zbuf", 952,yofs+44,60,20, &G.scene->r.subimtype, 0, 0, 0, 0, "Save the z-depth per pixel (32 bit unsigned int zbuffer)"); - uiBlockEndAlign(block); - uiDefButBitS(block, TOG, R_PREVIEW_JPG, B_NOP,"Preview",1027,yofs+44,90,20, &G.scene->r.subimtype, 0, 0, 0, 0, "When animation render, save JPG preview images in same directory"); - } - uiDefButS(block, MENU,B_NOP, "Codec %t|None %x0|Pxr24 (lossy) %x1|ZIP (lossless) %x2|PIZ (lossless) %x3|RLE (lossless) %x4", - 892,yofs,74,20, &G.scene->r.quality, 0, 0, 0, 0, "Set codec settings for OpenEXR"); - -#endif - } else { - if(G.scene->r.quality < 5) G.scene->r.quality = 90; /* restore from openexr */ - - uiDefButS(block, NUM,B_DIFF, "Q:", 892,yofs,74,20, &G.scene->r.quality, 10.0, 100.0, 0, 0, "Quality setting for JPEG images, AVI Jpeg and SGI movies"); - } - uiDefButS(block, NUM,B_FRAMEMAP,"FPS:", 968,yofs,75,20, &G.scene->r.frs_sec, 1.0, 120.0, 100.0, 0, "Frames per second"); - uiDefButF(block, NUM,B_FRAMEMAP,"/", 1043,yofs,75,20, &G.scene->r.frs_sec_base, 1.0, 120.0, 0.1, 3, "Frames per second base"); - - - uiBlockBeginAlign(block); - uiDefButS(block, ROW,B_DIFF,"BW", 892, 10,74,19, &G.scene->r.planes, 5.0,(float)R_PLANESBW, 0, 0, "Images are saved with BW (grayscale) data"); - uiDefButS(block, ROW,B_DIFF,"RGB", 968, 10,74,19, &G.scene->r.planes, 5.0,(float)R_PLANES24, 0, 0, "Images are saved with RGB (color) data"); - uiDefButS(block, ROW,B_DIFF,"RGBA", 1044, 10,75,19, &G.scene->r.planes, 5.0,(float)R_PLANES32, 0, 0, "Images are saved with RGB and Alpha data (if supported)"); - - uiBlockBeginAlign(block); - uiDefBut(block, BUT,B_PR_PAL, "PAL", 1146,170,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 720x576, Aspect ratio - 54x51, 25 fps"); - uiDefBut(block, BUT,B_PR_NTSC, "NTSC", 1146,150,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 720x480, Aspect ratio - 10x11, 30 fps"); - uiDefBut(block, BUT,B_PR_PRESET, "Default", 1146,130,100,18, 0, 0, 0, 0, 0, "Same as PAL, with render settings (OSA, Shadows, Fields)"); - uiDefBut(block, BUT,B_PR_PRV, "Preview", 1146,110,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 640x512, Render size 50%"); - uiDefBut(block, BUT,B_PR_PC, "PC", 1146,90,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 640x480, Aspect ratio - 100x100"); - uiDefBut(block, BUT,B_PR_PAL169, "PAL 16:9",1146,70,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 720x576, Aspect ratio - 64x45"); - uiDefBut(block, BUT,B_PR_PANO, "PANO", 1146,50,100,18, 0, 0, 0, 0, 0, "Standard panorama settings"); - uiDefBut(block, BUT,B_PR_FULL, "FULL", 1146,30,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 1280x1024, Aspect ratio - 1x1"); - uiDefBut(block, BUT,B_PR_HD, "HD", 1146,10,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 1920x1080, Aspect ratio - 1x1"); - uiBlockEndAlign(block); -} - -#ifndef DISABLE_YAFRAY /* disable yafray stuff */ -/* yafray: global illumination options panel */ -static void render_panel_yafrayGI() -{ - uiBlock *block; - - block= uiNewBlock(&curarea->uiblocks, "render_panel_yafrayGI", UI_EMBOSS, UI_HELV, curarea->win); - uiNewPanelTabbed("Render", "Render"); - if(uiNewPanel(curarea, block, "YafRay GI", "Render", 320, 0, 318, 204)==0) return; - - // label to force a boundbox for buttons not to be centered - uiDefBut(block, LABEL, 0, " ", 305,180,10,10, 0, 0, 0, 0, 0, ""); - - uiDefBut(block, LABEL, 0, "Method", 5,175,70,20, 0, 1.0, 0, 0, 0, ""); - uiDefButS(block, MENU, B_REDR, "GiMethod %t|None %x0|SkyDome %x1|Full %x2", 70,175,89,20, &G.scene->r.GImethod, 0, 0, 0, 0, "Global Illumination Method"); - - uiDefBut(block, LABEL, 0, "Quality", 5,150,70,20, 0, 1.0, 0, 0, 0, ""); - uiDefButS(block, MENU, B_REDR, "GiQuality %t|None %x0|Low %x1|Medium %x2 |High %x3|Higher %x4|Best %x5|Use Blender AO settings %x6", 70,150,89,20, &G.scene->r.GIquality, 0, 0, 0, 0, "Global Illumination Quality"); - - if (G.scene->r.GImethod>0) { - uiDefButF(block, NUM, B_DIFF, "EmitPwr:", 5,35,154,20, &G.scene->r.GIpower, 0.01, 100.0, 10, 0, "arealight, material emit and background intensity scaling, 1 is normal"); - if (G.scene->r.GImethod==2) uiDefButF(block, NUM, B_DIFF, "GI Pwr:", 5,10,154,20, &G.scene->r.GIindirpower, 0.01, 100.0, 10, 0, "GI indirect lighting intensity scaling, 1 is normal"); - } - - if (G.scene->r.GImethod>0) - { - if (G.scene->r.GIdepth==0) G.scene->r.GIdepth=2; - - if (G.scene->r.GImethod==2) { - uiDefButI(block, NUM, B_DIFF, "Depth:", 180,175,110,20, &G.scene->r.GIdepth, 1.0, 100.0, 10, 10, "Number of bounces of the indirect light"); - uiDefButI(block, NUM, B_DIFF, "CDepth:", 180,150,110,20, &G.scene->r.GIcausdepth, 1.0, 100.0, 10, 10, "Number of bounces inside objects (for caustics)"); - uiDefButBitS(block, TOG, 1, B_REDR, "Photons",210,125,100,20, &G.scene->r.GIphotons, 0, 0, 0, 0, "Use global photons to help in GI"); - } - - uiDefButBitS(block, TOG, 1, B_REDR, "Cache",6,125,95,20, &G.scene->r.GIcache, 0, 0, 0, 0, "Cache occlusion/irradiance samples (faster)"); - if (G.scene->r.GIcache) - { - uiDefButBitS(block,TOG, 1, B_REDR, "NoBump",108,125,95,20, &G.scene->r.YF_nobump, 0, 0, 0, 0, "Don't use bumpnormals for cache (faster, but no bumpmapping in total indirectly lit areas)"); - uiDefBut(block, LABEL, 0, "Cache parameters:", 5,105,130,20, 0, 1.0, 0, 0, 0, ""); - if (G.scene->r.GIshadowquality==0.0) G.scene->r.GIshadowquality=0.9; - uiDefButF(block, NUM, B_DIFF,"ShadQu:", 5,85,154,20, &(G.scene->r.GIshadowquality), 0.01, 1.0 ,1,0, "Sets the shadow quality, keep it under 0.95 :-) "); - if (G.scene->r.GIpixelspersample==0) G.scene->r.GIpixelspersample=10; - uiDefButI(block, NUM, B_DIFF, "Prec:", 5,60,75,20, &G.scene->r.GIpixelspersample, 1, 50, 10, 10, "Maximum number of pixels without samples, the lower the better and slower"); - if (G.scene->r.GIrefinement==0) G.scene->r.GIrefinement=1.0; - uiDefButF(block, NUM, B_DIFF, "Ref:", 84,60,75,20, &G.scene->r.GIrefinement, 0.001, 1.0, 1, 0, "Threshold to refine shadows EXPERIMENTAL. 1 = no refinement"); - } - - if (G.scene->r.GImethod==2) { - if (G.scene->r.GIphotons) - { - uiDefBut(block, LABEL, 0, "Photon parameters:", 170,105,130,20, 0, 1.0, 0, 0, 0, ""); - if(G.scene->r.GIphotoncount==0) G.scene->r.GIphotoncount=100000; - uiDefButI(block, NUM, B_DIFF, "Count:", 170,85,140,20, &G.scene->r.GIphotoncount, - 0, 10000000, 10, 10, "Number of photons to shoot"); - if(G.scene->r.GIphotonradius==0.0) G.scene->r.GIphotonradius=1.0; - uiDefButF(block, NUMSLI, B_DIFF,"Radius:", 170,60,140,20, &(G.scene->r.GIphotonradius), - 0.00001, 100.0 ,0,0, "Radius to search for photons to mix (blur)"); - if(G.scene->r.GImixphotons==0) G.scene->r.GImixphotons=100; - uiDefButI(block, NUM, B_DIFF, "MixCount:", 170,35,140,20, &G.scene->r.GImixphotons, - 0, 1000, 10, 10, "Number of photons to mix"); - uiDefButBitS(block, TOG, 1, B_REDR, "Tune Photons",170,10,140,20, &G.scene->r.GIdirect, - 0, 0, 0, 0, "Show the photonmap directly in the render for tuning"); - } - } - - } -} - -/* yafray: global options panel */ -static void render_panel_yafrayGlobal() -{ - uiBlock *block; - - block= uiNewBlock(&curarea->uiblocks, "render_panel_yafrayGlobal", UI_EMBOSS, UI_HELV, curarea->win); - uiNewPanelTabbed("Render", "Render"); - if(uiNewPanel(curarea, block, "YafRay", "Render", 320, 0, 318, 204)==0) return; - - // label to force a boundbox for buttons not to be centered - uiDefBut(block, LABEL, 0, " ", 305,180,10,10, 0, 0, 0, 0, 0, ""); - - uiDefButBitS(block, TOGN, 1, B_REDR, "xml", 5,180,75,20, &G.scene->r.YFexportxml, - 0, 0, 0, 0, "Export to an xml file and call yafray instead of plugin"); - - uiDefButF(block, NUMSLI, B_DIFF,"Bi ", 5,35,150,20, &(G.scene->r.YF_raybias), - 0.0, 10.0 ,0,0, "Shadow ray bias to avoid self shadowing"); - uiDefButI(block, NUM, B_DIFF, "Raydepth ", 5,60,150,20, - &G.scene->r.YF_raydepth, 1.0, 80.0, 10, 10, "Maximum render ray depth from the camera"); - uiDefButF(block, NUMSLI, B_DIFF, "Gam ", 5,10,150,20, &G.scene->r.YF_gamma, 0.001, 5.0, 0, 0, "Gamma correction, 1 is off"); - uiDefButF(block, NUMSLI, B_DIFF, "Exp ", 160,10,150,20,&G.scene->r.YF_exposure, 0.0, 10.0, 0, 0, "Exposure adjustment, 0 is off"); - - uiDefButI(block, NUM, B_DIFF, "Processors:", 160,60,150,20, &G.scene->r.YF_numprocs, 1.0, 8.0, 10, 10, "Number of processors to use"); - - /*AA Settings*/ - uiDefButBitS(block, TOGN, 1, B_REDR, "Auto AA", 5,140,150,20, &G.scene->r.YF_AA, - 0, 0, 0, 0, "Set AA using OSA and GI quality, disable for manual control"); - uiDefButBitS(block, TOGN, 1, B_DIFF, "Clamp RGB", 160,140,150,20, &G.scene->r.YF_clamprgb, 1.0, 8.0, 10, 10, "For AA on fast high contrast changes. Not advisable for Bokeh! Dulls lens shape detail."); - if(G.scene->r.YF_AA){ - uiDefButI(block, NUM, B_DIFF, "AA Passes ", 5,115,150,20, &G.scene->r.YF_AApasses, 0, 64, 10, 10, "Number of AA passes (0 is no AA)"); - uiDefButI(block, NUM, B_DIFF, "AA Samples ", 160,115,150,20, &G.scene->r.YF_AAsamples, 0, 2048, 10, 10, "Number of samples per pass"); - uiDefButF(block, NUMSLI, B_DIFF, "Psz ", 5,90,150,20, &G.scene->r.YF_AApixelsize, 1.0, 2.0, 0, 0, "AA pixel filter size"); - uiDefButF(block, NUMSLI, B_DIFF, "Thr ", 160,90,150,20, &G.scene->r.YF_AAthreshold, 0.000001, 1.0, 0, 0, "AA threshold"); - } -} -#endif /* disable yafray stuff */ - -static void layer_copy_func(void *lay_v, void *lay_p) -{ - unsigned int *lay= lay_p; - int laybit= (int)lay_v; - - if(G.qual & LR_SHIFTKEY) { - if(*lay==0) *lay= 1<<laybit; - } - else - *lay= 1<<laybit; - - copy_view3d_lock(REDRAW); - allqueue(REDRAWBUTSSCENE, 0); -} - -static void delete_scene_layer_func(void *srl_v, void *act_i) -{ - if(BLI_countlist(&G.scene->r.layers)>1) { - long act= (long)act_i; - - BLI_remlink(&G.scene->r.layers, srl_v); - MEM_freeN(srl_v); - G.scene->r.actlay= 0; - - if(G.scene->nodetree) { - bNode *node; - for(node= G.scene->nodetree->nodes.first; node; node= node->next) { - if(node->type==CMP_NODE_R_LAYERS && node->id==NULL) { - if(node->custom1==act) - node->custom1= 0; - else if(node->custom1>act) - node->custom1--; - } - } - } - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWNODE, 0); - } -} - -static void rename_scene_layer_func(void *srl_v, void *unused_v) -{ - if(G.scene->nodetree) { - SceneRenderLayer *srl= srl_v; - bNode *node; - for(node= G.scene->nodetree->nodes.first; node; node= node->next) { - if(node->type==CMP_NODE_R_LAYERS && node->id==NULL) { - if(node->custom1==G.scene->r.actlay) - BLI_strncpy(node->name, srl->name, NODE_MAXSTR); - } - } - } - allqueue(REDRAWBUTSSCENE, 0); - allqueue(REDRAWOOPS, 0); - allqueue(REDRAWNODE, 0); -} - -static char *scene_layer_menu(void) -{ - SceneRenderLayer *srl; - int len= 32 + 32*BLI_countlist(&G.scene->r.layers); - short a, nr; - char *str= MEM_callocN(len, "menu layers"); - - strcpy(str, "ADD NEW %x32767"); - a= strlen(str); - for(nr=0, srl= G.scene->r.layers.first; srl; srl= srl->next, nr++) { - if(srl->layflag & SCE_LAY_DISABLE) - a+= sprintf(str+a, "|%s %%i%d %%x%d", srl->name, ICON_BLANK1, nr); - else - a+= sprintf(str+a, "|%s %%i%d %%x%d", srl->name, ICON_CHECKBOX_HLT, nr); - } - - return str; -} - -static void draw_3d_layer_buttons(uiBlock *block, unsigned int *poin, short xco, short yco, short dx, short dy) -{ - uiBut *bt; - long a; - - uiBlockBeginAlign(block); - for(a=0; a<5; a++) { - bt= uiDefButBitI(block, TOG, 1<<a, B_NOP, "", (short)(xco+a*(dx/2)), yco+dy/2, (short)(dx/2), (short)(dy/2), (int *)poin, 0, 0, 0, 0, ""); - uiButSetFunc(bt, layer_copy_func, (void *)a, poin); - } - for(a=0; a<5; a++) { - bt=uiDefButBitI(block, TOG, 1<<(a+10), B_NOP, "", (short)(xco+a*(dx/2)), yco, (short)(dx/2), (short)(dy/2), (int *)poin, 0, 0, 0, 0, ""); - uiButSetFunc(bt, layer_copy_func, (void *)(a+10), poin); - } - - xco+= 7; - uiBlockBeginAlign(block); - for(a=5; a<10; a++) { - bt=uiDefButBitI(block, TOG, 1<<a, B_NOP, "", (short)(xco+a*(dx/2)), yco+dy/2, (short)(dx/2), (short)(dy/2), (int *)poin, 0, 0, 0, 0, ""); - uiButSetFunc(bt, layer_copy_func, (void *)a, poin); - } - for(a=5; a<10; a++) { - bt=uiDefButBitI(block, TOG, 1<<(a+10), B_NOP, "", (short)(xco+a*(dx/2)), yco, (short)(dx/2), (short)(dy/2), (int *)poin, 0, 0, 0, 0, ""); - uiButSetFunc(bt, layer_copy_func, (void *)(a+10), poin); - } - - uiBlockEndAlign(block); -} - -static void render_panel_layers(void) -{ - uiBlock *block; - uiBut *bt; - SceneRenderLayer *srl= BLI_findlink(&G.scene->r.layers, G.scene->r.actlay); - char *strp; - - if(srl==NULL) { - G.scene->r.actlay= 0; - srl= G.scene->r.layers.first; - } - - block= uiNewBlock(&curarea->uiblocks, "render_panel_layers", UI_EMBOSS, UI_HELV, curarea->win); - uiNewPanelTabbed("Output", "Render"); - if(uiNewPanel(curarea, block, "Render Layers", "Render", 320, 0, 318, 204)==0) return; - - /* first, as reminder, the scene layers */ - uiDefBut(block, LABEL, 0, "Scene:", 10,170,100,20, NULL, 0, 0, 0, 0, ""); - draw_3d_layer_buttons(block, &G.scene->lay, 130, 170, 35, 30); - - /* layer disable, menu, name, delete button */ - uiBlockBeginAlign(block); - uiDefIconButBitI(block, ICONTOGN, SCE_LAY_DISABLE, B_REDR, ICON_CHECKBOX_HLT-1, 10, 145, 20, 20, &srl->layflag, 0.0, 0.0, 0, 0, "Disable or enable this RenderLayer"); - strp= scene_layer_menu(); - uiDefButS(block, MENU, B_ADD_RENDERLAYER, strp, 30,145,23,20, &(G.scene->r.actlay), 0, 0, 0, 0, "Choose Active Render Layer"); - MEM_freeN(strp); - - /* name max 20, exr format limit... */ - bt= uiDefBut(block, TEX, REDRAWNODE, "", 53,145,172,20, srl->name, 0.0, 20.0, 0, 0, ""); - uiButSetFunc(bt, rename_scene_layer_func, srl, NULL); - - uiDefButBitS(block, TOG, R_SINGLE_LAYER, B_NOP, "Single", 230,145,60,20, &G.scene->r.scemode, 0, 0, 0, 0, "Only render this layer"); - bt=uiDefIconBut(block, BUT, B_NOP, ICON_X, 285, 145, 25, 20, 0, 0, 0, 0, 0, "Deletes current Render Layer"); - uiButSetFunc(bt, delete_scene_layer_func, srl, (void *)(long)G.scene->r.actlay); - uiBlockEndAlign(block); - - /* RenderLayer visible-layers */ - uiDefBut(block, LABEL, 0, "Layer:", 10,110,100,20, NULL, 0, 0, 0, 0, ""); - draw_3d_layer_buttons(block, &srl->lay, 130,110, 35, 30); - - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, SCE_LAY_ALL_Z, B_NOP,"AllZ", 10, 85, 40, 20, &srl->layflag, 0, 0, 0, 0, "Fill in Z values for all not-rendered faces, for masking"); - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, SCE_LAY_SOLID, B_NOP,"Solid", 50, 85, 45, 20, &srl->layflag, 0, 0, 0, 0, "Render Solid faces in this Layer"); - uiDefButBitI(block, TOG, SCE_LAY_HALO, B_NOP,"Halo", 95, 85, 40, 20, &srl->layflag, 0, 0, 0, 0, "Render Halos in this Layer (on top of Solid)"); - uiDefButBitI(block, TOG, SCE_LAY_ZTRA, B_NOP,"Ztra", 135, 85, 40, 20, &srl->layflag, 0, 0, 0, 0, "Render Z-Transparent faces in this Layer (On top of Solid and Halos)"); - uiDefButBitI(block, TOG, SCE_LAY_SKY, B_NOP,"Sky", 175, 85, 40, 20, &srl->layflag, 0, 0, 0, 0, "Render Sky or backbuffer in this Layer"); - uiDefButBitI(block, TOG, SCE_LAY_EDGE, B_NOP,"Edge", 215, 85, 45, 20, &srl->layflag, 0, 0, 0, 0, "Render Edge-enhance in this Layer (only works for Solid faces)"); - uiDefButBitI(block, TOG, SCE_LAY_STRAND, B_NOP,"Strand",260, 85, 50, 20, &srl->layflag, 0, 0, 0, 0, "Render Strands in this Layer"); - - uiDefIDPoinBut(block, test_grouppoin_but, ID_GR, B_SET_PASS, "Light:", 10, 65, 150, 20, &(srl->light_override), "Name of Group to use as Lamps instead"); - uiDefIDPoinBut(block, test_matpoin_but, ID_MA, B_SET_PASS, "Mat:", 160, 65, 150, 20, &(srl->mat_override), "Name of Material to use as Materials instead"); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, SCE_PASS_COMBINED, B_SET_PASS,"Combined", 10, 30, 80, 20, &srl->passflag, 0, 0, 0, 0, "Deliver full combined RGBA buffer"); - uiDefButBitI(block, TOG, SCE_PASS_Z, B_SET_PASS,"Z", 90, 30, 30, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Z values pass"); - uiDefButBitI(block, TOG, SCE_PASS_VECTOR, B_SET_PASS,"Vec", 120, 30, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Speed Vector pass"); - uiDefButBitI(block, TOG, SCE_PASS_NORMAL, B_SET_PASS,"Nor", 160, 30, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Normal pass"); - uiDefButBitI(block, TOG, SCE_PASS_UV, B_SET_PASS,"UV", 200, 30, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Texture UV pass"); - uiDefButBitI(block, TOG, SCE_PASS_INDEXOB, B_SET_PASS,"IndexOb",240, 30, 70, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Object Index pass"); - - uiDefButBitI(block, TOG, SCE_PASS_RGBA, B_SET_PASS,"Col", 10, 10, 35, 20, &srl->passflag, 0, 0, 0, 0, "Deliver shade-less Color pass"); - uiDefButBitI(block, TOG, SCE_PASS_DIFFUSE, B_SET_PASS,"Diff", 45, 10, 35, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Diffuse pass"); - uiDefButBitI(block, BUT_TOGDUAL, SCE_PASS_SPEC, B_SET_PASS,"Spec", 80, 10, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Specular pass"); - uiDefButBitI(block, BUT_TOGDUAL, SCE_PASS_SHADOW, B_SET_PASS,"Shad", 120, 10, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Shadow pass"); - uiDefButBitI(block, BUT_TOGDUAL, SCE_PASS_AO, B_SET_PASS,"AO", 160, 10, 30, 20, &srl->passflag, 0, 0, 0, 0, "Deliver AO pass"); - uiDefButBitI(block, BUT_TOGDUAL, SCE_PASS_REFLECT, B_SET_PASS,"Refl", 190, 10, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Raytraced Reflection pass"); - uiDefButBitI(block, BUT_TOGDUAL, SCE_PASS_REFRACT, B_SET_PASS,"Refr", 230, 10, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Raytraced Refraction pass"); - uiDefButBitI(block, BUT_TOGDUAL, SCE_PASS_RADIO, B_SET_PASS,"Rad", 270, 10, 40, 20, &srl->passflag, 0, 0, 0, 0, "Deliver Radiosity pass"); -} - -void render_panels() -{ - - render_panel_output(); - render_panel_layers(); - render_panel_render(); - render_panel_anim(); - render_panel_bake(); - - render_panel_format(); - render_panel_stamp(); -#ifdef WITH_FFMPEG - if (G.scene->r.imtype == R_FFMPEG) { - render_panel_ffmpeg_video(); - render_panel_ffmpeg_audio(); - } -#endif - -#ifndef DISABLE_YAFRAY - /* yafray: GI & Global panel, only available when yafray enabled for rendering */ - if (G.scene->r.renderer==R_YAFRAY) { - if (G.scene->r.YF_gamma==0.0) G.scene->r.YF_gamma=1.0; - if (G.scene->r.YF_raybias==0.0) G.scene->r.YF_raybias=0.001; - if (G.scene->r.YF_raydepth==0) G.scene->r.YF_raydepth=5; - if (G.scene->r.YF_AApixelsize==0.0) G.scene->r.YF_AApixelsize=1.5; - if (G.scene->r.YF_AAthreshold==0.0) G.scene->r.YF_AAthreshold=0.05; - if (G.scene->r.GIpower==0.0) G.scene->r.GIpower=1.0; - if (G.scene->r.GIindirpower==0.0) G.scene->r.GIindirpower=1.0; - render_panel_yafrayGlobal(); - render_panel_yafrayGI(); - } -#endif - -} - -/* --------------------------------------------- */ - -void anim_panels() -{ - uiBlock *block; - - block= uiNewBlock(&curarea->uiblocks, "anim_panel", UI_EMBOSS, UI_HELV, curarea->win); - if(uiNewPanel(curarea, block, "Anim", "Anim", 0, 0, 318, 204)==0) return; - - uiBlockBeginAlign(block); - uiDefButI(block, NUM,B_FRAMEMAP,"Map Old:", 10,160,150,20,&G.scene->r.framapto,1.0,900.0, 0, 0, "Specify old mapping value in frames"); - uiDefButI(block, NUM,B_FRAMEMAP,"Map New:", 160,160,150,20,&G.scene->r.images,1.0,900.0, 0, 0, "Specify how many frames the Map Old will last"); - - uiBlockBeginAlign(block); - uiDefButS(block, NUM,B_FRAMEMAP,"FPS:", 10,130,75,20, &G.scene->r.frs_sec, 1.0, 120.0, 100.0, 0, "Frames per second"); - uiDefButF(block, NUM,B_FRAMEMAP,"/", 85,130,75,20, &G.scene->r.frs_sec_base, 1.0, 120.0, 0.1, 3, "Frames per second base"); - - uiDefButBitS(block, TOG, AUDIO_SYNC, B_SOUND_CHANGED, "Sync",160,130,150,20, &G.scene->audio.flag, 0, 0, 0, 0, "Use sample clock for syncing animation to audio"); - - uiBlockBeginAlign(block); - uiDefButI(block, NUM,REDRAWALL,"Sta:", 10,100,150,20,&G.scene->r.sfra,1.0,MAXFRAMEF, 0, 0, "Specify the start frame of the animation"); - uiDefButI(block, NUM,REDRAWALL,"End:", 160,100,150,20,&G.scene->r.efra,1.0,MAXFRAMEF, 0, 0, "Specify the end frame of the animation"); - - uiBlockBeginAlign(block); - uiDefButS(block, NUM, REDRAWTIME, "Steps:",10, 70, 150, 20,&(G.scene->jumpframe), 1, 100, 1, 100, "Set spacing between frames changes with up and down arrow keys"); - - -} - -/* --------------------------------------------- */ - -void sound_panels() -{ - bSound *sound; - - /* paranoia check */ - sound = G.buts->lockpoin; - if(sound && GS(sound->id.name)!=ID_SO) { - sound= NULL; - G.buts->lockpoin= NULL; - } - - sound_panel_sound(sound); - sound_panel_listener(); - sound_panel_sequencer(); -} - - - |