2021-03-02 02:13:17 +00:00
|
|
|
// Project64 - A Nintendo 64 emulator
|
|
|
|
// http://www.pj64-emu.com/
|
|
|
|
// Copyright(C) 2001-2021 Project64
|
|
|
|
// Copyright(C) 2003-2009 Sergey 'Gonetz' Lipski
|
|
|
|
// Copyright(C) 2002 Dave2001
|
|
|
|
// GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html
|
2017-04-26 10:23:36 +00:00
|
|
|
#pragma once
|
2013-04-10 07:08:48 +00:00
|
|
|
|
|
|
|
#ifndef _WIN32
|
|
|
|
//#define VPDEBUG
|
|
|
|
#endif
|
|
|
|
#ifdef VPDEBUG
|
|
|
|
void dump_tex(int id);
|
|
|
|
void dump_start();
|
|
|
|
void dump_stop();
|
|
|
|
extern int dumping;
|
|
|
|
#endif
|
|
|
|
|
2017-04-26 09:05:05 +00:00
|
|
|
#include <Project64-video/trace.h>
|
2017-08-07 07:25:38 +00:00
|
|
|
#include "types.h"
|
2016-02-14 08:59:33 +00:00
|
|
|
|
2013-04-10 07:08:48 +00:00
|
|
|
#define zscale 1.0f
|
|
|
|
|
|
|
|
// VP added this utility function
|
|
|
|
// returns the bytes per pixel of a given GR texture format
|
|
|
|
int grTexFormatSize(int fmt);
|
|
|
|
|
2015-03-07 22:26:02 +00:00
|
|
|
/* 2015.03.07 cxd4 -- regulated GL state machine debugging using glGetError */
|
|
|
|
extern int grDisplayGLError(const char* message);
|
|
|
|
|
2013-04-10 07:08:48 +00:00
|
|
|
extern int packed_pixels_support;
|
|
|
|
extern int ati_sucks;
|
|
|
|
extern float largest_supported_anisotropy;
|
|
|
|
|
|
|
|
extern int default_texture; // the infamous "32*1024*1024" is now configurable
|
|
|
|
extern int depth_texture;
|
|
|
|
void set_depth_shader();
|
|
|
|
void set_bw_shader();
|
|
|
|
extern float invtex[2];
|
|
|
|
extern int buffer_cleared; // mark that the buffer has been cleared, used to check if we need to reload the texture buffer content
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
#include <windows.h>
|
2016-03-26 01:56:01 +00:00
|
|
|
typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc);
|
|
|
|
#else
|
|
|
|
#include <stdio.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(__ANDROID__) || defined(ANDROID)
|
|
|
|
#include "OGLESwrappers.h"
|
|
|
|
#else
|
2016-03-10 11:21:26 +00:00
|
|
|
#include "opengl.h"
|
|
|
|
|
2013-04-10 07:08:48 +00:00
|
|
|
extern "C" {
|
2016-03-26 02:16:32 +00:00
|
|
|
#ifndef GL_VERSION_1_3
|
2015-10-08 23:40:46 +00:00
|
|
|
extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
|
2016-03-26 02:16:32 +00:00
|
|
|
extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB;
|
|
|
|
#endif
|
2015-10-08 23:40:46 +00:00
|
|
|
extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
|
|
|
|
extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT;
|
|
|
|
extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
|
|
|
|
extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
|
|
|
|
extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT;
|
|
|
|
extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
|
|
|
|
extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
|
|
|
|
extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
|
|
|
|
extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT;
|
|
|
|
extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;
|
|
|
|
extern PFNGLFOGCOORDFEXTPROC glFogCoordfEXT;
|
|
|
|
extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT;
|
|
|
|
extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
|
|
|
|
extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
|
|
|
|
extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT;
|
|
|
|
extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
|
|
|
|
extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
|
|
|
|
extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
|
|
|
|
extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
|
|
|
|
extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT;
|
|
|
|
extern PFNGLSECONDARYCOLOR3FPROC glSecondaryColor3f;
|
|
|
|
extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
|
|
|
|
extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
|
|
|
|
extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
|
|
|
|
extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
|
|
|
|
extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
|
2016-03-10 11:21:26 +00:00
|
|
|
extern PFNGLGETHANDLEARBPROC glGetHandleARB;
|
2013-04-10 07:08:48 +00:00
|
|
|
}
|
2016-03-26 01:56:01 +00:00
|
|
|
#endif
|
|
|
|
|
2013-04-10 07:08:48 +00:00
|
|
|
void init_geometry();
|
|
|
|
void init_textures();
|
|
|
|
void init_combiner();
|
|
|
|
void free_textures();
|
|
|
|
void updateCombiner(int i);
|
|
|
|
void updateCombinera(int i);
|
|
|
|
void remove_tex(unsigned int idmin, unsigned int idmax);
|
|
|
|
void add_tex(unsigned int id);
|
2013-04-27 09:17:15 +00:00
|
|
|
|
2013-04-10 07:08:48 +00:00
|
|
|
#ifdef _WIN32
|
|
|
|
extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
|
|
|
|
extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB;
|
|
|
|
extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
|
|
|
|
extern PFNGLFOGCOORDFPROC glFogCoordfEXT;
|
|
|
|
|
|
|
|
extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
|
|
|
|
extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
|
|
|
|
extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
|
|
|
|
extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
|
|
|
|
extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
|
|
|
|
extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
|
|
|
|
extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
|
2016-03-10 11:21:26 +00:00
|
|
|
extern PFNGLGETHANDLEARBPROC glGetHandleARB;
|
2013-04-10 07:08:48 +00:00
|
|
|
extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
|
|
|
|
extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
|
|
|
|
extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
|
|
|
|
extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
|
|
|
|
extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
|
|
|
|
extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
|
|
|
|
extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
|
|
|
|
extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
|
2013-04-27 09:17:15 +00:00
|
|
|
extern PFNGLSECONDARYCOLOR3FPROC glSecondaryColor3f;
|
2013-04-10 07:08:48 +00:00
|
|
|
#endif
|
2016-03-10 18:29:41 +00:00
|
|
|
void check_link(GLuint program);
|
|
|
|
void vbo_enable();
|
|
|
|
void vbo_disable();
|
|
|
|
|
|
|
|
//Vertex Attribute Locations
|
|
|
|
#define POSITION_ATTR 0
|
|
|
|
#define COLOUR_ATTR 1
|
|
|
|
#define TEXCOORD_0_ATTR 2
|
|
|
|
#define TEXCOORD_1_ATTR 3
|
|
|
|
#define FOG_ATTR 4
|
2013-04-10 07:08:48 +00:00
|
|
|
|
|
|
|
extern int w_buffer_mode;
|
2016-03-10 17:21:56 +00:00
|
|
|
extern int g_width, g_height, widtho, heighto;
|
2013-04-10 07:08:48 +00:00
|
|
|
extern int tex0_width, tex0_height, tex1_width, tex1_height;
|
|
|
|
extern float lambda;
|
|
|
|
extern int need_lambda[2];
|
|
|
|
extern float lambda_color[2][4];
|
|
|
|
extern int inverted_culling;
|
2017-08-02 21:48:55 +00:00
|
|
|
extern gfxCullMode_t culling_mode;
|
2013-04-10 07:08:48 +00:00
|
|
|
extern int render_to_texture;
|
|
|
|
extern int lfb_color_fmt;
|
|
|
|
extern int need_to_compile;
|
|
|
|
extern int blackandwhite0;
|
|
|
|
extern int blackandwhite1;
|
|
|
|
extern int TMU_SIZE;
|
|
|
|
|
|
|
|
extern int blend_func_separate_support;
|
|
|
|
extern int fog_coord_support;
|
|
|
|
extern int glsl_support;
|
|
|
|
extern unsigned int pBufferAddress;
|
2017-03-13 09:34:51 +00:00
|
|
|
extern int viewport_width, viewport_height, g_viewport_offset, nvidia_viewport_hack;
|
2013-04-10 07:08:48 +00:00
|
|
|
extern int UMAmode;
|
|
|
|
|
|
|
|
void updateTexture();
|
|
|
|
void reloadTexture();
|
|
|
|
void free_combiners();
|
|
|
|
void compile_shader();
|
|
|
|
void set_lambda();
|
|
|
|
void set_copy_shader();
|
2016-03-10 18:29:41 +00:00
|
|
|
void disable_textureSizes();
|
2017-01-28 11:29:03 +00:00
|
|
|
void ExitFullScreen();
|
2013-04-10 07:08:48 +00:00
|
|
|
|
2016-03-10 18:06:18 +00:00
|
|
|
void CHECK_FRAMEBUFFER_STATUS(void);
|