int32_t PS3Graphics::LoadFragmentShader(std::string shaderPath) { // store the current path _curFragmentShaderPath = shaderPath; _vertexProgram = LoadShaderFromSource(_cgContext, CG_PROFILE_SCE_VP_RSX, shaderPath.c_str(), "main_vertex"); _fragmentProgram = LoadShaderFromSource(_cgContext, CG_PROFILE_SCE_FP_RSX, shaderPath.c_str(), "main_fragment"); // bind and enable the vertex and fragment programs cgGLEnableProfile(CG_PROFILE_SCE_VP_RSX); cgGLEnableProfile(CG_PROFILE_SCE_FP_RSX); cgGLBindProgram(_vertexProgram); cgGLBindProgram(_fragmentProgram); // acquire mvp param from vertex shader _cgpModelViewProj = cgGetNamedParameter(_vertexProgram, "modelViewProj"); _cgpVideoSize = cgGetNamedParameter(_fragmentProgram, "IN.video_size"); _cgpTextureSize = cgGetNamedParameter(_fragmentProgram, "IN.texture_size"); _cgpOutputSize = cgGetNamedParameter(_fragmentProgram, "IN.output_size"); if (active_shader) lib_free(active_shader); active_shader = util_concat(shaderPath.c_str(), NULL); return CELL_OK; }
int32_t FceuGraphics::LoadFragmentShader(string shaderPath) { LOG_DBG("LoadFragmentShader(%s)\n", shaderPath.c_str()); // store the cur path _curFragmentShaderPath = shaderPath; _vertexProgram = LoadShaderFromSource(_cgContext, CG_PROFILE_SCE_VP_RSX, shaderPath.c_str(), "main_vertex"); if (_vertexProgram <= 0) { LOG_DBG("Error loading vertex shader..."); return 1; } _fragmentProgram = LoadShaderFromSource(_cgContext, CG_PROFILE_SCE_FP_RSX, shaderPath.c_str(), "main_fragment"); if (_fragmentProgram <= 0) { LOG_DBG("Error loading fragment shader..."); return 1; } // bind and enable the vertex and fragment programs cgGLEnableProfile(CG_PROFILE_SCE_VP_RSX); cgGLEnableProfile(CG_PROFILE_SCE_FP_RSX); cgGLBindProgram(_vertexProgram); cgGLBindProgram(_fragmentProgram); // acquire mvp param from v shader _cgpModelViewProj = cgGetNamedParameter(_vertexProgram, "modelViewProj"); if (CheckCgError (__LINE__) != CG_NO_ERROR) { // FIXME: WHY DOES THIS GIVE ERROR ON OTHER LOADS //return 1; } _cgpVideoSize = cgGetNamedParameter(_fragmentProgram, "IN.video_size"); _cgpTextureSize = cgGetNamedParameter(_fragmentProgram, "IN.texture_size"); _cgpOutputSize = cgGetNamedParameter(_fragmentProgram, "IN.output_size"); LOG_DBG("SUCCESS - LoadFragmentShader(%s)\n", shaderPath.c_str()); return CELL_OK; }