Merge topic 'vs-hlsl-settings'
2a224b4c
VS: Add source file properties to set the hlsl shader entry point and model
This commit is contained in:
commit
b9eac05fb6
|
@ -291,6 +291,8 @@ Properties on Source Files
|
||||||
/prop_sf/OBJECT_OUTPUTS
|
/prop_sf/OBJECT_OUTPUTS
|
||||||
/prop_sf/SYMBOLIC
|
/prop_sf/SYMBOLIC
|
||||||
/prop_sf/VS_DEPLOYMENT_CONTENT
|
/prop_sf/VS_DEPLOYMENT_CONTENT
|
||||||
|
/prop_sf/VS_SHADER_ENTRYPOINT
|
||||||
|
/prop_sf/VS_SHADER_MODEL
|
||||||
/prop_sf/VS_SHADER_TYPE
|
/prop_sf/VS_SHADER_TYPE
|
||||||
/prop_sf/WRAP_EXCLUDE
|
/prop_sf/WRAP_EXCLUDE
|
||||||
/prop_sf/XCODE_EXPLICIT_FILE_TYPE
|
/prop_sf/XCODE_EXPLICIT_FILE_TYPE
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
VS_SHADER_ENTRYPOINT
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Specifies the name of the entry point for the shader of a ``.hlsl`` source
|
||||||
|
file.
|
|
@ -0,0 +1,5 @@
|
||||||
|
VS_SHADER_MODEL
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Specifies the shader model of a ``.hlsl`` source file. Some shader types can
|
||||||
|
only be used with recent shader models
|
|
@ -313,8 +313,10 @@ Other
|
||||||
|
|
||||||
* The Visual Studio generators learned to treat ``.hlsl`` source
|
* The Visual Studio generators learned to treat ``.hlsl`` source
|
||||||
files as High Level Shading Language sources (using ``FXCompile``
|
files as High Level Shading Language sources (using ``FXCompile``
|
||||||
in ``.vcxproj`` files). A :prop_sf:`VS_SHADER_TYPE` source file
|
in ``.vcxproj`` files). Source file properties
|
||||||
property was added to specify the Shader Type.
|
:prop_sf:`VS_SHADER_TYPE`, :prop_sf:`VS_SHADER_MODEL`, and
|
||||||
|
:prop_sf:`VS_SHADER_ENTRYPOINT` were added added to specify the
|
||||||
|
shader type, model, and entry point name.
|
||||||
|
|
||||||
New Diagnostics
|
New Diagnostics
|
||||||
===============
|
===============
|
||||||
|
|
|
@ -1203,6 +1203,8 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
|
||||||
bool toolHasSettings = false;
|
bool toolHasSettings = false;
|
||||||
std::string tool = "None";
|
std::string tool = "None";
|
||||||
std::string shaderType;
|
std::string shaderType;
|
||||||
|
std::string shaderEntryPoint;
|
||||||
|
std::string shaderModel;
|
||||||
std::string ext = cmSystemTools::LowerCase(sf->GetExtension());
|
std::string ext = cmSystemTools::LowerCase(sf->GetExtension());
|
||||||
if(ext == "hlsl")
|
if(ext == "hlsl")
|
||||||
{
|
{
|
||||||
|
@ -1213,6 +1215,18 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
|
||||||
shaderType = st;
|
shaderType = st;
|
||||||
toolHasSettings = true;
|
toolHasSettings = true;
|
||||||
}
|
}
|
||||||
|
// Figure out which entry point to use if any
|
||||||
|
if (const char* se = sf->GetProperty("VS_SHADER_ENTRYPOINT"))
|
||||||
|
{
|
||||||
|
shaderEntryPoint = se;
|
||||||
|
toolHasSettings = true;
|
||||||
|
}
|
||||||
|
// Figure out which entry point to use if any
|
||||||
|
if (const char* sm = sf->GetProperty("VS_SHADER_MODEL"))
|
||||||
|
{
|
||||||
|
shaderModel = sm;
|
||||||
|
toolHasSettings = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(ext == "jpg" ||
|
else if(ext == "jpg" ||
|
||||||
ext == "png")
|
ext == "png")
|
||||||
|
@ -1295,7 +1309,18 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
|
||||||
(*this->BuildFileStream) << cmVS10EscapeXML(shaderType)
|
(*this->BuildFileStream) << cmVS10EscapeXML(shaderType)
|
||||||
<< "</ShaderType>\n";
|
<< "</ShaderType>\n";
|
||||||
}
|
}
|
||||||
|
if(!shaderEntryPoint.empty())
|
||||||
|
{
|
||||||
|
this->WriteString("<EntryPointName>", 3);
|
||||||
|
(*this->BuildFileStream) << cmVS10EscapeXML(shaderEntryPoint)
|
||||||
|
<< "</EntryPointName>\n";
|
||||||
|
}
|
||||||
|
if(!shaderModel.empty())
|
||||||
|
{
|
||||||
|
this->WriteString("<ShaderModel>", 3);
|
||||||
|
(*this->BuildFileStream) << cmVS10EscapeXML(shaderModel)
|
||||||
|
<< "</ShaderModel>\n";
|
||||||
|
}
|
||||||
this->WriteString("</", 2);
|
this->WriteString("</", 2);
|
||||||
(*this->BuildFileStream) << tool << ">\n";
|
(*this->BuildFileStream) << tool << ">\n";
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,13 @@ set_property(SOURCE ${RELEASE_CONTENT_FILES} PROPERTY
|
||||||
VS_DEPLOYMENT_CONTENT $<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>,$<CONFIG:MinSizeRel>>)
|
VS_DEPLOYMENT_CONTENT $<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>,$<CONFIG:MinSizeRel>>)
|
||||||
|
|
||||||
set_property(SOURCE ${PIXELSHADER_FILES} PROPERTY VS_SHADER_TYPE Pixel)
|
set_property(SOURCE ${PIXELSHADER_FILES} PROPERTY VS_SHADER_TYPE Pixel)
|
||||||
|
set_property(SOURCE ${PIXELSHADER_FILES} PROPERTY VS_SHADER_ENTRYPOINT mainPS)
|
||||||
|
set_property(SOURCE ${PIXELSHADER_FILES} PROPERTY VS_SHADER_MODEL 4.0_level_9_3)
|
||||||
|
|
||||||
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_TYPE Vertex)
|
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_TYPE Vertex)
|
||||||
|
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_ENTRYPOINT mainVS)
|
||||||
|
set_property(SOURCE ${VERTEXSHADER_FILES} PROPERTY VS_SHADER_MODEL 4.0_level_9_3)
|
||||||
|
|
||||||
|
|
||||||
source_group("Source Files" FILES ${SOURCE_FILES})
|
source_group("Source Files" FILES ${SOURCE_FILES})
|
||||||
source_group("Header Files" FILES ${HEADER_FILES})
|
source_group("Header Files" FILES ${HEADER_FILES})
|
||||||
|
|
|
@ -4,7 +4,7 @@ struct PixelShaderInput
|
||||||
float3 color : COLOR0;
|
float3 color : COLOR0;
|
||||||
};
|
};
|
||||||
|
|
||||||
float4 main(PixelShaderInput input) : SV_TARGET
|
float4 mainPS(PixelShaderInput input) : SV_TARGET
|
||||||
{
|
{
|
||||||
return float4(input.color,1.0f);
|
return float4(input.color,1.0f);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct VertexShaderOutput
|
||||||
float3 color : COLOR0;
|
float3 color : COLOR0;
|
||||||
};
|
};
|
||||||
|
|
||||||
VertexShaderOutput main(VertexShaderInput input)
|
VertexShaderOutput mainVS(VertexShaderInput input)
|
||||||
{
|
{
|
||||||
VertexShaderOutput output;
|
VertexShaderOutput output;
|
||||||
float4 pos = float4(input.pos, 1.0f);
|
float4 pos = float4(input.pos, 1.0f);
|
||||||
|
|
Loading…
Reference in New Issue