Files
GTASource/rage/base/tools/deprecated/rageHdrLib/mergetexturesshader_embed.cpp
T
expvintl 419f2e4752 init
2025-02-23 17:40:52 +08:00

61 lines
2.9 KiB
C++

#include "mergetexturesshader.h"
#include "grcore/texture.h"
#include "grmodel/shader.h"
#include "grmodel/shaderfx.h"
#include "grmodel/shadergroup.h"
#include "shader_merge_textures_win32_20.h"
#include "shader_merge_textures_win32_30.h"
#include "shader_merge_textures_fxl_final.h"
const char* MergeTexturesShader::sm_ShaderTexVars[MAX_EXPOSURES] = {
"DiffuseTex0", "DiffuseTex1", "DiffuseTex2", "DiffuseTex3",
"DiffuseTex4", "DiffuseTex5", "DiffuseTex6", "DiffuseTex7",
"DiffuseTex8", "DiffuseTex9", "DiffuseTex10", "DiffuseTex11",
"DiffuseTex12", "DiffuseTex13"
// , "DiffuseTex14", "DiffuseTex15"
};
void MergeTexturesShader::SetConvertToRGBE(bool on) { m_Effect.SetGlobalVar(m_ConvertToRGBEIdx, on); }
void MergeTexturesShader::SetConvertFromRGBE(bool on) { m_Effect.SetGlobalVar(m_ConvertFromRGBEIdx, on); }
void MergeTexturesShader::SetRenderExponents(bool on) { m_Effect.SetGlobalVar(m_ShowExponentIdx, on); }
void MergeTexturesShader::SetDisplayExposure(float exposure) { m_Effect.SetGlobalVar(m_DisplayExposureIdx, exposure); }
void MergeTexturesShader::SetInputMergeBit_RT(grcRenderTarget* inputRT) { m_Effect.SetVar(m_MergePickingTexIdx, inputRT); }
void MergeTexturesShader::SetInputRGBE_RT(grcRenderTarget* inputRT) { m_Effect.SetVar(m_RGBETextureIdx, inputRT); }
void MergeTexturesShader::SetInputTexture(grcTexture* inputTexture, int idx) { m_Effect.SetVar(m_TextureIdx[idx], inputTexture); }
void MergeTexturesShader::SetSingleExponent(float exponent) { m_Effect.SetGlobalVar(m_SingleExponentIdx, exponent ); }
void MergeTexturesShader::SetExposures(float *exposureArray, int numExposures)
{
m_Effect.SetGlobalVar(m_NumTexIdx, (float)(1 << (numExposures-1))/255.0f);
m_Effect.SetGlobalVar(m_ExposuresIdx, exposureArray ,numExposures);
}
void MergeTexturesShader::Init()
{
m_Effect.Init("embedded:/merge_textures");
m_MergePickingTexIdx = m_Effect.LookupVar("PickingTex");
m_RGBETextureIdx = m_Effect.LookupVar("RGBETex");
m_DisplayExposureIdx = m_Effect.LookupGlobalVar("DisplayExposure");
m_SingleExponentIdx = m_Effect.LookupGlobalVar("SingleExponent");
m_ConvertToRGBEIdx = m_Effect.LookupGlobalVar("convertToRGBE");
m_ConvertFromRGBEIdx = m_Effect.LookupGlobalVar("convertFromRGBE");
m_ShowExponentIdx = m_Effect.LookupGlobalVar("showExponent");
m_NumTexIdx = m_Effect.LookupGlobalVar("NumTex");
m_ExposuresIdx = m_Effect.LookupGlobalVar("Exposures");
for(int i=0; i<MAX_EXPOSURES; i++)
{
m_TextureIdx[i] = m_Effect.LookupVar(sm_ShaderTexVars[i]);
}
}
void MergeTexturesShader::Blit(int x1,int y1,int x2,int y2,float z,float u1,float v1,float u2,float v2,Color32 color,const char *tech) const
{
int numPasses = m_Effect.BeginDraw(m_Effect.LookupTechnique(tech),false);
for (int i = 0; i < numPasses; ++i) {
m_Effect.BeginPass(i);
GRCDEVICE.BlitRectf((float)x1,(float)y1,(float)x2,(float)y2,z,u1,v1,u2,v2,color);
m_Effect.EndPass();
}
m_Effect.EndDraw();
}