khanat-opennel-code/code/nel/src/3d/pixel_program.cpp

80 lines
2.2 KiB
C++
Raw Normal View History

/** \file pixel_program.cpp
* Pixel program definition
*/
/* Copyright, 2000, 2001 Nevrax Ltd.
*
* This file is part of NEVRAX NEL.
* NEVRAX NEL is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
* NEVRAX NEL is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with NEVRAX NEL; see the file COPYING. If not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
* MA 02111-1307, USA.
*/
#include "std3d.h"
2013-06-18 23:19:45 +00:00
#include <nel/3d/pixel_program.h>
2013-06-18 23:19:45 +00:00
#include <nel/3d/driver.h>
namespace NL3D
{
// ***************************************************************************
CPixelProgram::CPixelProgram(CGPUProgramSourceCont *programSource) : _Info(NULL), IGPUProgram(programSource)
{
}
// ***************************************************************************
2013-06-18 23:19:45 +00:00
CPixelProgram::~CPixelProgram ()
{
delete _Info;
_Info = NULL;
}
// ***************************************************************************
2013-06-18 23:19:45 +00:00
void CPixelProgram::buildInfo(const char *displayName, uint features)
{
nlassert(_Info == NULL);
_Info = new CPixelProgramInfo();
CPixelProgramInfo *info = _Info;
info->DisplayName = displayName;
info->Features = features;
if (features & CPixelProgramInfo::Fog)
{
if (features & CPixelProgramInfo::DynamicFog)
{
info->FogEnabledIdx = getParamIdx("nlFogEnabled");
if (info->FogEnabledIdx == ~0)
{
nlwarning("Missing 'nlFogEnabled' in gpu program '%s', DynamicFog disabled", displayName);
info->Features &= ~CPixelProgramInfo::DynamicFog;
}
}
info->FogStartEndIdx = getParamIdx("nlFogStartEnd");
info->FogColorIdx = getParamIdx("nlFogColor");
if (info->FogStartEndIdx == ~0
|| info->FogStartEndIdx == ~0)
{
nlwarning("Missing 'nlFogStartEnd/nlFogColor' in gpu program '%s', Fog disabled", displayName);
info->Features &= ~CPixelProgramInfo::Fog;
}
}
}
} // NL3D