Ok, die ShadeC habe ich mir jetzt geladen. Ein weiteres Problem habe ich. Das Einbinden der Shader bereitet mir große Probleme. Ich ahbe jetzt den DoF Shader.

Das ist die Dof.h

Code:
void sc_dof_init(SC_SCREEN* screen);
void sc_dof_destroy(SC_SCREEN* screen);
void sc_dof_frm(SC_SCREEN* screen);

STRING* sc_dof_sMaterial = "sc_dof.fx";
STRING* sc_dof_sMaterialDownsample = "sc_dof_downsample.fx";
STRING* sc_dof_sMaterialBlurX = "sc_dof_blurX.fx";
STRING* sc_dof_sMaterialBlurY = "sc_dof_blurY.fx";



Das ist die Dof.c:

Code:
void sc_dof_MaterialEvent()
{
	SC_SCREEN* screen = (SC_SCREEN*)(mtl.SC_SKILL);
	/*
	if(screen)
	{
		if(screen.views.gBuffer == NULL)
		{
			//free(screen);
			return(1);
		}
	}
	else
	{
		//free(screen);
		return(1);
	}
	*/
	switch(render_view)
	{
		case screen.views.dof:
			screen.views.preDOF.bmap = screen.renderTargets.full0;
			break;
			
		case screen.views.dofDownsample:
			screen.views.preDOF.bmap = screen.renderTargets.full0;
			screen.views.dofDownsample.bmap = screen.renderTargets.quarter0;
			break;
			
		case screen.views.dofBlurX:
			screen.views.dofBlurX.bmap = screen.renderTargets.quarter1;
			screen.views.dofBlurX.target1 = screen.renderTargets.quarter2;
			break;
		
		case screen.views.dofBlurY:
			screen.views.dofBlurY.bmap = screen.renderTargets.quarter0;
			break;
		
		default:
			break;
	}
	//if(render_view == screen.views.dofDownsample) screen.views.deferred.bmap = screen.renderTargets.full0;
	//else screen.views.deferred.bmap = NULL;
}

void sc_dof_init(SC_SCREEN* screen)
{
	//create materials
	
		//dof
		screen.materials.dof = mtl_create();
		effect_load(screen.materials.dof, sc_dof_sMaterial);
		screen.materials.dof.skin1 = screen.renderTargets.full0;// this contains the current scene without dof
		screen.materials.dof.skin2 = screen.renderTargets.quarter0;// this contains the blurred scene
		screen.materials.dof.skin3 = screen.renderTargets.gBuffer[SC_GBUFFER_NORMALS_AND_DEPTH];
		screen.materials.dof.skill1 = floatv(0.25); // inverted downsample factor
		screen.materials.dof.event = sc_dof_MaterialEvent;
		screen.materials.dof.SC_SKILL = screen;
		set(screen.materials.dof, ENABLE_VIEW);
	
		//blur y
		screen.materials.dofBlurY = mtl_create();
		effect_load(screen.materials.dofBlurY, sc_dof_sMaterialBlurY);
		screen.materials.dofBlurY.skin1 = screen.renderTargets.quarter1;// this contains the x blurred scene, with unblurred focus
		screen.materials.dofBlurY.skin2 = screen.renderTargets.gBuffer[SC_GBUFFER_NORMALS_AND_DEPTH];
		screen.materials.dofBlurY.skin3 = screen.renderTargets.quarter2;// this contains the downsampled scene, with blurred focus
		screen.materials.dofBlurY.skill1 = floatv(screen.settings.dof.blurY); //blur strength
		screen.materials.dofBlurY.event = sc_dof_MaterialEvent;
		screen.materials.dofBlurY.SC_SKILL = screen;
		set(screen.materials.dofBlurY, ENABLE_VIEW);
			
		//blur x
		screen.materials.dofBlurX = mtl_create();
		effect_load(screen.materials.dofBlurX, sc_dof_sMaterialBlurX);
		screen.materials.dofBlurX.skin1 = screen.renderTargets.quarter0;// this contains the downsampled scene
		screen.materials.dofBlurX.skin2 = screen.renderTargets.gBuffer[SC_GBUFFER_NORMALS_AND_DEPTH];
		screen.materials.dofBlurX.skill1 = floatv(screen.settings.dof.blurX); //blur strength
		screen.materials.dofBlurX.event = sc_dof_MaterialEvent;
		screen.materials.dofBlurX.SC_SKILL = screen;
		set(screen.materials.dofBlurX, ENABLE_VIEW);
		
		//downsample
		screen.materials.dofDownsample = mtl_create();
		effect_load(screen.materials.dofDownsample, sc_dof_sMaterialDownsample);
		screen.materials.dofDownsample.skin1 = screen.renderTargets.full0;// this contains the current scene without dof
		screen.materials.dofDownsample.skin2 = screen.renderTargets.gBuffer[SC_GBUFFER_NORMALS_AND_DEPTH];
		screen.materials.dofDownsample.skill1 = floatv(4); //downsample factor
		screen.materials.dofDownsample.event = sc_dof_MaterialEvent;
		screen.materials.dofDownsample.SC_SKILL = screen;
		set(screen.materials.dofDownsample, ENABLE_VIEW);
	
	
	//setup views
	
		//dof
		screen.views.dof = view_create(2);
		set(screen.views.dof, PROCESS_TARGET);
		set(screen.views.dof, UNTOUCHABLE);
		set(screen.views.dof, NOSHADOW);
		reset(screen.views.dof, AUDIBLE);
		set(screen.views.dof, CHILD);
		screen.views.dof.size_x = screen.views.main.size_x;
		screen.views.dof.size_y = screen.views.main.size_y;
		screen.views.dof.material = screen.materials.dof;
		//screen.views.dof.bmap = screen.renderTargets.quarter0; //assign temp render target so Acknex does not automatically create a new one
	
		//blur y
		screen.views.dofBlurY = view_create(2);
		set(screen.views.dofBlurY, PROCESS_TARGET);
		set(screen.views.dofBlurY, UNTOUCHABLE);
		set(screen.views.dofBlurY, NOSHADOW);
		reset(screen.views.dofBlurY, AUDIBLE);
		set(screen.views.dofBlurY, CHILD);
		screen.views.dofBlurY.size_x = screen.views.main.size_x/4;
		screen.views.dofBlurY.size_y = screen.views.main.size_y/4;
		screen.views.dofBlurY.material = screen.materials.dofBlurY;
		screen.views.dofBlurY.stage = screen.views.dof;
		screen.views.dofBlurY.bmap = screen.renderTargets.quarter0; //assign temp render target so Acknex does not automatically create a new one
		
		//blur x
		screen.views.dofBlurX = view_create(2);
		set(screen.views.dofBlurX, PROCESS_TARGET);
		set(screen.views.dofBlurX, UNTOUCHABLE);
		set(screen.views.dofBlurX, NOSHADOW);
		reset(screen.views.dofBlurX, AUDIBLE);
		set(screen.views.dofBlurX, CHILD);
		screen.views.dofBlurX.size_x = screen.views.main.size_x/4;
		screen.views.dofBlurX.size_y = screen.views.main.size_y/4;
		screen.views.dofBlurX.material = screen.materials.dofBlurX;
		screen.views.dofBlurX.stage = screen.views.dofBlurY;
		screen.views.dofBlurX.bmap = screen.renderTargets.quarter0; //assign temp render target so Acknex does not automatically create a new one
		screen.views.dofBlurX.target1 = screen.renderTargets.quarter2; //assign temp render target so Acknex does not automatically create a new one
		
		//downsample
		screen.views.dofDownsample = view_create(2);
		set(screen.views.dofDownsample, PROCESS_TARGET);
		set(screen.views.dofDownsample, UNTOUCHABLE);
		set(screen.views.dofDownsample, NOSHADOW);
		reset(screen.views.dofDownsample, AUDIBLE);
		set(screen.views.dofDownsample, CHILD);
		screen.views.dofDownsample.size_x = screen.views.main.size_x/4;
		screen.views.dofDownsample.size_y = screen.views.main.size_y/4;
		screen.views.dofDownsample.material = screen.materials.dofDownsample;
		screen.views.dofDownsample.stage = screen.views.dofBlurX;
		screen.views.dofDownsample.bmap = screen.renderTargets.quarter0; //assign temp render target so Acknex does not automatically create a new one
		
		
		
	//apply to camera
	VIEW* view_last;
	view_last = screen.views.main;
	while(view_last.stage != NULL)
	{
		view_last = view_last.stage;
	}
	view_last.stage = screen.views.dofDownsample;
	screen.views.preDOF = view_last;
}

void sc_dof_destroy(SC_SCREEN* screen)
{
	if(!screen) return 0;
	if(screen.views.dof != NULL)
	{
		if(is(screen.views.dof,NOSHADOW))
		{
			
			reset(screen.views.dof,NOSHADOW);
			//purge render targets
			//bmap_purge(screen.views.deferred.bmap);
			//screen.views.deferred.bmap = NULL;
						
			//remove from view chain
			VIEW* view_last;
			view_last = screen.views.main;
			while(view_last.stage != screen.views.dofDownsample && view_last.stage != NULL)
			{
				view_last = view_last.stage;
			}
				
			if(screen.views.dof.stage) view_last.stage = screen.views.dof.stage;
			else view_last.stage = NULL;
			
			//if(screen.sc_dof_view.bmap) view_last.bmap = screen.sc_dof_mapOrgScene;
			//else view_last.bmap = NULL;
		}
	}
	return 1;
}

void sc_dof_frm(SC_SCREEN* screen)
{
	if(screen.views.dof != NULL)
	{
		screen.materials.dofDownsample.skill2 = floatv(screen.views.main.clip_far);
		screen.materials.dofDownsample.skill3 = floatv(screen.settings.dof.focalPos); //focal plane pos
		screen.materials.dofDownsample.skill4 = floatv(screen.settings.dof.focalWidth); //focal plane width
		
		screen.materials.dof.skill2 = floatv(screen.views.main.clip_far);
		screen.materials.dof.skill3 = floatv(screen.settings.dof.focalPos); //focal plane pos
		screen.materials.dof.skill4 = floatv(screen.settings.dof.focalWidth); //focal plane width
		
		screen.materials.dofBlurX.skill1 = floatv(screen.settings.dof.blurX); //blur strength
		screen.materials.dofBlurY.skill1 = floatv(screen.settings.dof.blurY); //blur strength
	}
}



Wie rufe ich das jetzt von meinem Projekt aus auf?