2013-06-18 23:14:30 +00:00
|
|
|
/** \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:14:30 +00:00
|
|
|
|
2013-06-18 23:19:45 +00:00
|
|
|
#include <nel/3d/driver.h>
|
2013-06-18 23:14:30 +00:00
|
|
|
|
|
|
|
namespace NL3D
|
|
|
|
{
|
|
|
|
|
|
|
|
// ***************************************************************************
|
|
|
|
|
2013-09-07 18:41:07 +00:00
|
|
|
CPixelProgram::CPixelProgram(CGPUProgramSourceCont *programSource) : _Info(NULL), IGPUProgram(programSource)
|
2013-06-18 23:14:30 +00:00
|
|
|
{
|
2013-09-07 18:41:07 +00:00
|
|
|
|
2013-06-18 23:14:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// ***************************************************************************
|
2013-06-18 23:19:45 +00:00
|
|
|
|
2013-09-07 18:41:07 +00:00
|
|
|
CPixelProgram::~CPixelProgram ()
|
|
|
|
{
|
|
|
|
delete _Info;
|
|
|
|
_Info = NULL;
|
2013-06-18 23:14:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// ***************************************************************************
|
2013-06-18 23:19:45 +00:00
|
|
|
|
2013-09-07 18:41:07 +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;
|
|
|
|
}
|
|
|
|
}
|
2013-06-18 23:14:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
} // NL3D
|