rj-action-library/Runtime/Rendering/Objects/RDShader.cs

45 lines
1.0 KiB
C#
Raw Normal View History

2025-04-23 12:00:43 +00:00
using Godot;
namespace Rokojori
{
public class RDShader: RenderingObject
{
2025-04-26 20:04:11 +00:00
public RDShader( RDContext context, Rid rid ):base( context, rid )
2025-04-23 12:00:43 +00:00
{}
2025-04-29 19:46:45 +00:00
public static RDShader CreateFromSpirV( RDContext context, RDShaderSpirV rDShaderSpirV, string pathInfo = null )
2025-04-23 12:00:43 +00:00
{
2025-04-26 20:04:11 +00:00
var shaderID = context.renderingDevice.ShaderCreateFromSpirV( rDShaderSpirV );
2025-04-29 19:46:45 +00:00
if ( ! shaderID.IsValid )
{
context.Error( "Couldn't create shader from spirV. PathInfo:", pathInfo );
return null;
}
2025-04-26 20:04:11 +00:00
return new RDShader( context, shaderID );
2025-04-23 12:00:43 +00:00
}
2025-04-29 19:46:45 +00:00
public static RDShader FromPath( RDContext context, string path )
{
var glslFile = GD.Load<RDShaderFile>( path );
if ( glslFile == null )
{
context.Error( "File not found:", path );
return null;
}
var spirV = glslFile.GetSpirV();
if ( spirV == null )
{
context.Error( "SpirV is null", path );
return null;
}
return CreateFromSpirV( context, spirV, path );
}
2025-04-23 12:00:43 +00:00
}
}