[Bf-blender-cvs] [d7f0c33] decklink: Merge remote-tracking branch 'origin' into decklink

Benoit Bolsee noreply at git.blender.org
Fri Nov 13 18:33:28 CET 2015


Commit: d7f0c33b3d708a6c4ce4aa342c0831ca086fa872
Author: Benoit Bolsee
Date:   Fri Nov 13 18:32:08 2015 +0100
Branches: decklink
https://developer.blender.org/rBd7f0c33b3d708a6c4ce4aa342c0831ca086fa872

Merge remote-tracking branch 'origin' into decklink

Conflicts:
	source/gameengine/Ketsji/BL_Shader.cpp
	source/gameengine/Ketsji/BL_Shader.h

===================================================================



===================================================================

diff --cc source/gameengine/Ketsji/BL_Shader.cpp
index 8c69e6a,4b229f5..0b4a48a
--- a/source/gameengine/Ketsji/BL_Shader.cpp
+++ b/source/gameengine/Ketsji/BL_Shader.cpp
@@@ -81,22 -80,13 +82,22 @@@ bool BL_Uniform::Apply(class BL_Shader 
  	switch (mType) {
  		case UNI_FLOAT:
  		{
- 			float *f = (float*)mData;
- 			glUniform1fARB(mLoc,(GLfloat)*f);
+ 			float *f = (float *)mData;
+ 			glUniform1fARB(mLoc, (GLfloat)*f);
  			break;
  		}
 +		case UNI_FLOAT_EYE:
 +		{
 +			float *f = (float*)mData;
 +			ras = KX_GetActiveEngine()->GetRasterizer();
 +			*f = (ras->GetEye() == RAS_IRasterizer::RAS_STEREO_LEFTEYE) ? 0.0f : 0.5f;
 +			glUniform1fARB(mLoc, (GLfloat)*f);
 +			mDirty = (ras->Stereo()) ? true : false;
 +			break;
 +		}
  		case UNI_INT:
  		{
- 			int *f = (int*)mData;
+ 			int *f = (int *)mData;
  			glUniform1iARB(mLoc, (GLint)*f);
  			break;
  		}
@@@ -278,13 -271,15 +282,13 @@@ void BL_Shader::SetUniformiv(int locati
  void BL_Shader::ApplyShader()
  {
  #ifdef SORT_UNIFORMS
- 	if (!mDirty) 
+ 	if (!mDirty) {
  		return;
+ 	}
  
 -	for (unsigned int i = 0; i < mUniforms.size(); i++) {
 -		mUniforms[i]->Apply(this);
 -	}
 -
  	mDirty = false;
 +	for (unsigned int i=0; i<mUniforms.size(); i++)
 +		mDirty |= mUniforms[i]->Apply(this);
  #endif
  }
  
@@@ -317,79 -314,74 +323,81 @@@ bool BL_Shader::LinkProgram(
  		spit("Vertex shaders not supported");
  		return false;
  	}
+ 
 -	// -- vertex shader ------------------
 -	tmpVert = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
 -	glShaderSourceARB(tmpVert, 1, (const char **)&vertProg, 0);
 -	glCompileShaderARB(tmpVert);
 -	glGetObjectParameterivARB(tmpVert, GL_OBJECT_INFO_LOG_LENGTH_ARB, (GLint *)&vertlen);
 -
 -	// print info if any
 -	if (vertlen > 0 && vertlen < MAX_LOG_LEN) {
 -		logInf = (char *)MEM_mallocN(vertlen, "vert-log");
 -		glGetInfoLogARB(tmpVert, vertlen, (GLsizei *)&char_len, logInf);
 -
 -		if (char_len > 0) {
 -			spit("---- Vertex Shader Error ----");
 -			spit(logInf);
 +	if (vertProg[0] != 0)
 +	{
 +		// -- vertex shader ------------------
 +		tmpVert = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
 +		glShaderSourceARB(tmpVert, 1, (const char**)&vertProg, 0);
 +		glCompileShaderARB(tmpVert);
 +		glGetObjectParameterivARB(tmpVert, GL_OBJECT_INFO_LOG_LENGTH_ARB, (GLint*)&vertlen);
 +
 +		// print info if any
 +		if (vertlen > 0 && vertlen < MAX_LOG_LEN) {
 +			logInf = (char*)MEM_mallocN(vertlen, "vert-log");
 +			glGetInfoLogARB(tmpVert, vertlen, (GLsizei*)&char_len, logInf);
 +			if (char_len > 0) {
 +				spit("---- Vertex Shader Error ----");
 +				spit(logInf);
 +			}
 +			MEM_freeN(logInf);
 +			logInf = 0;
 +		}
 +		// check for compile errors
 +		glGetObjectParameterivARB(tmpVert, GL_OBJECT_COMPILE_STATUS_ARB, (GLint*)&vertstatus);
 +		if (!vertstatus) {
 +			spit("---- Vertex shader failed to compile ----");
 +			goto programError;
  		}
 -
 -		MEM_freeN(logInf);
 -		logInf = 0;
 -	}
 -
 -	// check for compile errors
 -	glGetObjectParameterivARB(tmpVert, GL_OBJECT_COMPILE_STATUS_ARB, (GLint *)&vertstatus);
 -	if (!vertstatus) {
 -		spit("---- Vertex shader failed to compile ----");
 -		goto programError;
  	}
  
 -	// -- fragment shader ----------------
 -	tmpFrag = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
 -	glShaderSourceARB(tmpFrag, 1, (const char **)&fragProg, 0);
 -	glCompileShaderARB(tmpFrag);
 -	glGetObjectParameterivARB(tmpFrag, GL_OBJECT_INFO_LOG_LENGTH_ARB, (GLint *)&fraglen);
 -
 -	if (fraglen > 0 && fraglen < MAX_LOG_LEN) {
 -		logInf = (char *)MEM_mallocN(fraglen, "frag-log");
 -		glGetInfoLogARB(tmpFrag, fraglen, (GLsizei *)&char_len, logInf);
 -
 -		if (char_len > 0) {
 -			spit("---- Fragment Shader Error ----");
 -			spit(logInf);
 +	if (fragProg[0] != 0)
 +	{
 +		// -- fragment shader ----------------
 +		tmpFrag = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
 +		glShaderSourceARB(tmpFrag, 1, (const char**)&fragProg, 0);
 +		glCompileShaderARB(tmpFrag);
 +		glGetObjectParameterivARB(tmpFrag, GL_OBJECT_INFO_LOG_LENGTH_ARB, (GLint*)&fraglen);
 +		if (fraglen > 0 && fraglen < MAX_LOG_LEN) {
 +			logInf = (char*)MEM_mallocN(fraglen, "frag-log");
 +			glGetInfoLogARB(tmpFrag, fraglen, (GLsizei*)&char_len, logInf);
 +			if (char_len > 0) {
 +				spit("---- Fragment Shader Error ----");
 +				spit(logInf);
 +			}
 +			MEM_freeN(logInf);
 +			logInf = 0;
  		}
  
 -		MEM_freeN(logInf);
 -		logInf = 0;
 +		glGetObjectParameterivARB(tmpFrag, GL_OBJECT_COMPILE_STATUS_ARB, (GLint*)&fragstatus);
 +		if (!fragstatus) {
 +			spit("---- Fragment shader failed to compile ----");
 +			goto programError;
 +		}
  	}
 -
 -	glGetObjectParameterivARB(tmpFrag, GL_OBJECT_COMPILE_STATUS_ARB, (GLint *)&fragstatus);
 -
 -	if (!fragstatus) {
 -		spit("---- Fragment shader failed to compile ----");
 +	
 +	if (!tmpFrag && !tmpVert)
 +	{
 +		spit("---- No shader given ----");
  		goto programError;
  	}
+ 
  	// -- program ------------------------
- 	//  set compiled vert/frag shader & link
+ 	// set compiled vert/frag shader & link
  	tmpProg = glCreateProgramObjectARB();
 -	glAttachObjectARB(tmpProg, tmpVert);
 -	glAttachObjectARB(tmpProg, tmpFrag);
 +	if (tmpVert)
 +		glAttachObjectARB(tmpProg, tmpVert);
 +	if (tmpFrag)
 +		glAttachObjectARB(tmpProg, tmpFrag);
  	glLinkProgramARB(tmpProg);
- 	glGetObjectParameterivARB(tmpProg, GL_OBJECT_INFO_LOG_LENGTH_ARB, (GLint*) &proglen);
- 	glGetObjectParameterivARB(tmpProg, GL_OBJECT_LINK_STATUS_ARB, (GLint*) &progstatus);
- 	
+ 	glGetObjectParameterivARB(tmpProg, GL_OBJECT_INFO_LOG_LENGTH_ARB, (GLint *)&proglen);
+ 	glGetObjectParameterivARB(tmpProg, GL_OBJECT_LINK_STATUS_ARB, (GLint *)&progstatus);
  
  	if (proglen > 0 && proglen < MAX_LOG_LEN) {
- 		logInf = (char*)MEM_mallocN(proglen, "prog-log");
- 		glGetInfoLogARB(tmpProg, proglen, (GLsizei*)&char_len, logInf);
- 		if (char_len >0) {
+ 		logInf = (char *)MEM_mallocN(proglen, "prog-log");
+ 		glGetInfoLogARB(tmpProg, proglen, (GLsizei *)&char_len, logInf);
+ 
+ 		if (char_len > 0) {
  			spit("---- GLSL Program ----");
  			spit(logInf);
  		}
@@@ -404,11 -397,9 +413,11 @@@
  
  	// set
  	mShader = tmpProg;
 -	glDeleteObjectARB(tmpVert);
 -	glDeleteObjectARB(tmpFrag);
 +	if (tmpVert)
 +		glDeleteObjectARB(tmpVert);
 +	if (tmpFrag)
 +		glDeleteObjectARB(tmpFrag);
- 	mOk		= 1;
+ 	mOk = 1;
  	mError = 0;
  	return true;
  
@@@ -793,38 -739,32 +757,33 @@@ void BL_Shader::SetUniform(int uniform
  }
  
  #ifdef WITH_PYTHON
- 
- PyMethodDef BL_Shader::Methods[] = 
- {
+ PyMethodDef BL_Shader::Methods[] = {
  	// creation
- 	KX_PYMETHODTABLE( BL_Shader, setSource ),
- 	KX_PYMETHODTABLE( BL_Shader, delSource ),
- 	KX_PYMETHODTABLE( BL_Shader, getVertexProg ),
- 	KX_PYMETHODTABLE( BL_Shader, getFragmentProg ),
- 	KX_PYMETHODTABLE( BL_Shader, setNumberOfPasses ),
- 	KX_PYMETHODTABLE( BL_Shader, validate),
- 	/// access functions
- 	KX_PYMETHODTABLE( BL_Shader, isValid),
- 	KX_PYMETHODTABLE( BL_Shader, setUniformEyef),
- 	KX_PYMETHODTABLE( BL_Shader, setUniform1f ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniform2f ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniform3f ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniform4f ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniform1i ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniform2i ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniform3i ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniform4i ),
- 	KX_PYMETHODTABLE( BL_Shader, setAttrib ),
- 
- 	KX_PYMETHODTABLE( BL_Shader, setUniformfv ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniformiv ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniformDef ),
- 
- 	KX_PYMETHODTABLE( BL_Shader, setSampler  ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniformMatrix4 ),
- 	KX_PYMETHODTABLE( BL_Shader, setUniformMatrix3 ),
- 
- 	{NULL,NULL} //Sentinel
+ 	KX_PYMETHODTABLE(BL_Shader, setSource),
+ 	KX_PYMETHODTABLE(BL_Shader, delSource),
+ 	KX_PYMETHODTABLE(BL_Shader, getVertexProg),
+ 	KX_PYMETHODTABLE(BL_Shader, getFragmentProg),
+ 	KX_PYMETHODTABLE(BL_Shader, setNumberOfPasses),
+ 	KX_PYMETHODTABLE(BL_Shader, validate),
+ 	// access functions
+ 	KX_PYMETHODTABLE(BL_Shader, isValid),
++	KX_PYMETHODTABLE(BL_Shader, setUniformEyef),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniform1f),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniform2f),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniform3f),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniform4f),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniform1i),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniform2i),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniform3i),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniform4i),
+ 	KX_PYMETHODTABLE(BL_Shader, setAttrib),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniformfv),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniformiv),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniformDef),
+ 	KX_PYMETHODTABLE(BL_Shader, setSampler),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniformMatrix4),
+ 	KX_PYMETHODTABLE(BL_Shader, setUniformMatrix3),
+ 	{NULL, NULL} //Sentinel
  };
  
  PyAttributeDef BL_Shader::Attributes[] = {
@@@ -1075,31 -1020,7 +1039,30 @@@ KX_PYMETHODDEF_DOC(BL_Shader, setUnifor
  	return NULL;
  }
  
- 
 +KX_PYMETHODDEF_DOC(BL_Shader, setUniformEyef, "setUniformEyef(name)")
 +{
 +	if (mError) {
 +		Py_RETURN_NONE;
 +	}
 +	const char *uniform;
 +	float value = 0.0f;
 +	if (PyArg_ParseTuple(args, "s:setUniformEyef", &uniform))
 +	{
 +		int loc = GetUniformLocation(uniform);
 +		if (loc != -1)
 +		{
 +#ifdef SORT_UNIFORMS
 +			SetUniformfv(loc, BL_Uniform::UNI_FLOAT_EYE, &value, sizeof(float));
 +#else
 +			SetUniform(loc, (int)value);
 +#endif
 +		}
 +		Py_RETURN_NONE;
 +	}
 +	return NULL;
 +}
 +
- KX_PYMETHODDEF_DOC( BL_Shader, setUniform1i, "setUniform1i(name, ix)" )
+ KX_PYMETHODDEF_DOC(BL_Shader, setUniform1i, "setUniform1i(name, ix)")
  {
  	if (mError) {
  		Py_RETURN_NONE;
diff --cc source/gameengine/Ketsji/BL_Shader.h
index 2473db6,aef4b42..5de715d
--- a/source/gameengine/Ketsji/BL_Shader.h
+++ b/source/gameengine/Ketsji/BL_Shader.h
@@@ -71,10 -67,11 +68,11 @@@ public
  		UNI_MAX
  	};
  
- 	int GetLocation()	{ return mLoc; }
- 	void* getData()		{ return mData; }
- 	
- 	
 -	void Apply(class BL_Shader *shader);
++	bool Apply(class BL_Shader *shader);
+ 	void SetData(int location, int type, bool transpose = false);
+ 	int GetLocation() { return mLoc; }
+ 	void *getData() { return mData; }
+ 
  #ifdef WITH_CXX_GUARDEDALLOC
  	MEM_CXX_CLASS_ALLOC_FUNCS("GE:BL_Un

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list