| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #include <viewsrg.srgi>
- #include <scenesrg.srgi>
- ShaderResourceGroupSemantic SRG_PerGroup
- {
- FrequencyId = 0;
- };
- struct BaseMaterialInfo
- {
- float4 m_color;
- };
- ShaderResourceGroup MaterialGroupSrg : SRG_PerGroup
- {
- BaseMaterialInfo m_materials[10];
- }
- rootconstant float4x4 s_objectMatrix;
- rootconstant uint s_materialIndex;
- struct VSInput
- {
- float3 m_position : POSITION;
- float3 m_normal: NORMAL;
- };
- struct VSOutput
- {
- float4 m_position : SV_Position;
- float4 m_color: COLOR;
- };
- VSOutput MainVS(VSInput vsInput)
- {
- VSOutput OUT;
- OUT.m_position = mul(mul(ViewSrg::m_viewProjectionMatrix, s_objectMatrix), float4(vsInput.m_position, 1.0));
- float3 normal = mul(s_objectMatrix, float4(vsInput.m_normal, 0.0)).xyz;
- float intensity = saturate(dot(normalize(normal), normalize(float3(-1.0, -1.0, -1.0))));
- OUT.m_color = saturate(MaterialGroupSrg::m_materials[s_materialIndex].m_color * intensity);
- return OUT;
- }
- struct PSOutput
- {
- float4 m_diffuse : SV_Target0;
- float4 m_specular : SV_Target1;
- };
- PSOutput MainPS(VSOutput vsOutput)
- {
- PSOutput OUT;
- OUT.m_diffuse = vsOutput.m_color;
- OUT.m_specular = vsOutput.m_color;
- return OUT;
- }
|