mirror of
https://github.com/celisej567/cool-source-archive.git
synced 2026-09-21 20:10:15 +03:00
shaderapidx11
use -dxlevel 110 to use it
This commit is contained in:
119
materialsystem/stdshadersdx11/sky_dx11.cpp
Normal file
119
materialsystem/stdshadersdx11/sky_dx11.cpp
Normal file
@@ -0,0 +1,119 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $Header: $
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
#include "BaseVSShader.h"
|
||||
#include "sky_vs40.inc"
|
||||
#include "sky_ps40.inc"
|
||||
|
||||
#include "ConVar.h"
|
||||
|
||||
CREATE_CONSTANT_BUFFER( Sky )
|
||||
{
|
||||
// Vertex shader
|
||||
Vector4D vTextureSizeInfo;
|
||||
Vector4D mBaseTexCoordTransform[2];
|
||||
|
||||
// Pixel shadere
|
||||
Vector4D vInputScale;
|
||||
};
|
||||
|
||||
BEGIN_VS_SHADER( Sky_DX11, "Help for Sky_DX11 shader" )
|
||||
|
||||
BEGIN_SHADER_PARAMS
|
||||
SHADER_PARAM_OVERRIDE( COLOR, SHADER_PARAM_TYPE_VEC3, "[ 1 1 1]", "color multiplier", SHADER_PARAM_NOT_EDITABLE )
|
||||
SHADER_PARAM_OVERRIDE( ALPHA, SHADER_PARAM_TYPE_FLOAT, "1.0", "unused", SHADER_PARAM_NOT_EDITABLE )
|
||||
END_SHADER_PARAMS
|
||||
|
||||
DECLARE_CONSTANT_BUFFER( Sky )
|
||||
|
||||
SHADER_FALLBACK
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
SHADER_INIT_PARAMS()
|
||||
{
|
||||
SET_FLAGS( MATERIAL_VAR_NOFOG );
|
||||
SET_FLAGS( MATERIAL_VAR_IGNOREZ );
|
||||
}
|
||||
SHADER_INIT
|
||||
{
|
||||
if (params[BASETEXTURE]->IsDefined())
|
||||
{
|
||||
LoadTexture( BASETEXTURE );
|
||||
}
|
||||
}
|
||||
SHADER_INIT_GLOBAL
|
||||
{
|
||||
INIT_CONSTANT_BUFFER( Sky );
|
||||
}
|
||||
SHADER_DRAW
|
||||
{
|
||||
SHADOW_STATE
|
||||
{
|
||||
SetInitialShadowState();
|
||||
|
||||
pShaderShadow->VertexShaderVertexFormat( VERTEX_POSITION, 1, NULL, 0 );
|
||||
|
||||
SetVertexShaderConstantBuffer( 0, SHADER_CONSTANTBUFFER_PERMODEL );
|
||||
SetVertexShaderConstantBuffer( 1, SHADER_CONSTANTBUFFER_PERFRAME );
|
||||
SetVertexShaderConstantBuffer( 2, SHADER_CONSTANTBUFFER_PERSCENE );
|
||||
SetVertexShaderConstantBuffer( 3, CONSTANT_BUFFER( Sky ) );
|
||||
|
||||
SetPixelShaderConstantBuffer( 0, SHADER_CONSTANTBUFFER_PERFRAME );
|
||||
SetPixelShaderConstantBuffer( 1, CONSTANT_BUFFER( Sky ) );
|
||||
|
||||
DECLARE_STATIC_VERTEX_SHADER( sky_vs40 );
|
||||
SET_STATIC_VERTEX_SHADER( sky_vs40 );
|
||||
|
||||
DECLARE_STATIC_PIXEL_SHADER( sky_ps40 );
|
||||
SET_STATIC_PIXEL_SHADER( sky_ps40 );
|
||||
|
||||
pShaderShadow->EnableAlphaWrites( true );
|
||||
}
|
||||
|
||||
DYNAMIC_STATE
|
||||
{
|
||||
BindTexture( SHADER_SAMPLER0, BASETEXTURE, FRAME );
|
||||
|
||||
ALIGN16 Sky_CBuffer_t constants;
|
||||
memset( &constants, 0, sizeof( Sky_CBuffer_t ) );
|
||||
|
||||
// Texture coord transform
|
||||
StoreVertexShaderTextureTransform( constants.mBaseTexCoordTransform, BASETEXTURETRANSFORM );
|
||||
|
||||
if (params[COLOR]->IsDefined())
|
||||
{
|
||||
params[COLOR]->GetVecValue( constants.vInputScale.Base(), 3 );
|
||||
}
|
||||
ITexture *txtr = params[BASETEXTURE]->GetTextureValue();
|
||||
ImageFormat fmt = txtr->GetImageFormat();
|
||||
if (
|
||||
( fmt == IMAGE_FORMAT_RGBA16161616 ) ||
|
||||
( ( fmt == IMAGE_FORMAT_RGBA16161616F ) &&
|
||||
( g_pHardwareConfig->GetHDRType() == HDR_TYPE_INTEGER ) )
|
||||
)
|
||||
{
|
||||
constants.vInputScale[0]*=16.0;
|
||||
constants.vInputScale[1]*=16.0;
|
||||
constants.vInputScale[2]*=16.0;
|
||||
}
|
||||
|
||||
UPDATE_CONSTANT_BUFFER( Sky, constants );
|
||||
|
||||
DECLARE_DYNAMIC_VERTEX_SHADER( sky_vs40 );
|
||||
SET_DYNAMIC_VERTEX_SHADER( sky_vs40 );
|
||||
|
||||
DECLARE_DYNAMIC_PIXEL_SHADER( sky_ps40 );
|
||||
SET_DYNAMIC_PIXEL_SHADER_COMBO( WRITE_DEPTH_TO_DESTALPHA, pShaderAPI->ShouldWriteDepthToDestAlpha() );
|
||||
SET_DYNAMIC_PIXEL_SHADER( sky_ps40 );
|
||||
}
|
||||
Draw( );
|
||||
}
|
||||
|
||||
END_SHADER
|
||||
|
||||
Reference in New Issue
Block a user