Skip to content

Commit

Permalink
win32: add frame_count_mod to cg shaders
Browse files Browse the repository at this point in the history
  • Loading branch information
OV2 committed Mar 26, 2013
1 parent 231f4ee commit 157e2f5
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 4 deletions.
4 changes: 4 additions & 0 deletions win32/CCGShader.cpp
Expand Up @@ -274,6 +274,10 @@ bool CCGShader::LoadShader(const char *path)

sprintf(keyName,"::shader%u",i);
strcpy(pass.cgShaderFile,conf.GetString(keyName,""));

sprintf(keyName,"::frame_count_mod%u",i);
pass.frameCounterMod = conf.GetInt(keyName,0);

shaderPasses.push_back(pass);
}

Expand Down
1 change: 1 addition & 0 deletions win32/CCGShader.h
Expand Up @@ -200,6 +200,7 @@ class CCGShader
cgScaleParams scaleParams;
bool linearFilter;
bool filterSet;
unsigned frameCounterMod;
char cgShaderFile[PATH_MAX];
} shaderPass;
typedef struct _lookupTexture {
Expand Down
7 changes: 6 additions & 1 deletion win32/CD3DCG.cpp
Expand Up @@ -332,6 +332,8 @@ bool CD3DCG::LoadShader(const TCHAR *shaderFile)
pass.linearFilter = it->linearFilter;
}

pass.frameCounterMod = it->frameCounterMod;

// paths in the meta file can be relative
_tfullpath(tempPath,_tFromChar(it->cgShaderFile),MAX_PATH);
char *fileContents = ReadShaderFileContents(tempPath);
Expand Down Expand Up @@ -682,7 +684,10 @@ void CD3DCG::setShaderVars(int pass)
setProgramUniform(pass,"IN.video_size",&inputSize);
setProgramUniform(pass,"IN.texture_size",&textureSize);
setProgramUniform(pass,"IN.output_size",&outputSize);
setProgramUniform(pass,"IN.frame_count",&frameCnt);
float shaderFrameCnt = frameCnt;
if(shaderPasses[pass].frameCounterMod)
shaderFrameCnt = (float)(frameCnt % shaderPasses[pass].frameCounterMod);
setProgramUniform(pass,"IN.frame_count",&shaderFrameCnt);
float frameDirection = GUI.rewinding?-1.0f:1.0f;
setProgramUniform(pass,"IN.frame_direction",&frameDirection);

Expand Down
3 changes: 2 additions & 1 deletion win32/CD3DCG.h
Expand Up @@ -197,6 +197,7 @@ class CD3DCG
typedef struct _shaderPass {
cgScaleParams scaleParams;
bool linearFilter;
unsigned int frameCounterMod;
CGprogram cgVertexProgram, cgFragmentProgram;
LPDIRECT3DTEXTURE9 tex;
LPDIRECT3DVERTEXBUFFER9 vertexBuffer;
Expand Down Expand Up @@ -247,7 +248,7 @@ class CD3DCG

LPDIRECT3DDEVICE9 pDevice;
CGcontext cgContext;
float frameCnt;
unsigned int frameCnt;
D3DXMATRIX mvp;

public:
Expand Down
7 changes: 6 additions & 1 deletion win32/CGLCG.cpp
Expand Up @@ -344,6 +344,8 @@ bool CGLCG::LoadShader(const TCHAR *shaderFile)
pass.linearFilter = it->linearFilter;
}

pass.frameCounterMod = it->frameCounterMod;

// paths in the meta file can be relative
_tfullpath(tempPath,_tFromChar(it->cgShaderFile),MAX_PATH);
char *fileContents = ReadShaderFileContents(tempPath);
Expand Down Expand Up @@ -666,7 +668,10 @@ void CGLCG::setShaderVars(int pass)
setProgram2fv(pass,"IN.video_size",inputSize);
setProgram2fv(pass,"IN.texture_size",textureSize);
setProgram2fv(pass,"IN.output_size",outputSize);
setProgram1f(pass,"IN.frame_count",(float)frameCnt);
unsigned int shaderFrameCnt = frameCnt;
if(shaderPasses[pass].frameCounterMod)
shaderFrameCnt %= shaderPasses[pass].frameCounterMod;
setProgram1f(pass,"IN.frame_count",(float)shaderFrameCnt);
setProgram1f(pass,"IN.frame_direction",GUI.rewinding?-1.0f:1.0f);

/* ORIG parameter
Expand Down
3 changes: 2 additions & 1 deletion win32/CGLCG.h
Expand Up @@ -212,6 +212,7 @@ class CGLCG
typedef struct _shaderPass {
cgScaleParams scaleParams;
bool linearFilter;
unsigned frameCounterMod;
CGprogram cgVertexProgram, cgFragmentProgram;
GLuint tex;
GLuint fbo;
Expand Down Expand Up @@ -256,7 +257,7 @@ class CGLCG
bool loadTGA(const TCHAR *filename, STGA& tgaFile);

CGcontext cgContext;
int frameCnt;
unsigned int frameCnt;
static const GLfloat lut_coords[8];


Expand Down

0 comments on commit 157e2f5

Please sign in to comment.