Arvis93

Godot 4 C# RenderingServer material

Mar 27th, 2025
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.45 KB | Gaming | 0 0
  1. using Godot;
  2.  
  3. public partial class RenderServerTest : Node3D
  4. {
  5.     private Rid meshInstanceRid;
  6.     private Rid meshRid;
  7.     private Rid materialRid;
  8.     private Rid shaderRid;
  9.  
  10.     public override void _Ready()
  11.     {
  12.         var mesh = new BoxMesh();
  13.         if (mesh == null){
  14.             GD.PrintErr("Failed to load mesh from: " + ObjFilePath);
  15.             return;
  16.         }
  17.  
  18.         materialRid = RenderingServer.MaterialCreate();
  19.  
  20.         Shader shader = GD.Load<Shader>("res://red.gdshader");
  21.         var shaderRid = RenderingServer.ShaderCreate();
  22.         RenderingServer.ShaderSetCode(shaderRid, shader.Code);
  23.         RenderingServer.MaterialSetShader(materialRid, shaderRid);
  24.  
  25.         meshRid = RenderingServer.MeshCreate();
  26.         for (int i = 0; i < mesh.GetSurfaceCount(); i++) {
  27.             RenderingServer.MeshAddSurfaceFromArrays(
  28.                 meshRid,
  29.                 RenderingServer.PrimitiveType.Triangles,
  30.                 mesh.SurfaceGetArrays(i)
  31.             );
  32.             RenderingServer.MeshSurfaceSetMaterial(meshRid, i, materialRid);
  33.  
  34.         }
  35.         meshInstanceRid = RenderingServer.InstanceCreate();
  36.         RenderingServer.InstanceSetBase(meshInstanceRid, meshRid);
  37.  
  38.         Transform3D transform = Transform3D.Identity;
  39.         transform.Origin = new Vector3(0, 10f, 0);
  40.         RenderingServer.InstanceSetTransform(meshInstanceRid, transform);
  41.  
  42.         RenderingServer.InstanceSetScenario(meshInstanceRid, GetWorld3D().Scenario);
  43.  
  44.     }
  45.  
  46.     public override void _ExitTree()
  47.     {
  48.         RenderingServer.FreeRid(meshInstanceRid);
  49.         RenderingServer.FreeRid(meshRid);
  50.         RenderingServer.FreeRid(materialRid);
  51.     }
  52. }
  53.  
Advertisement
Add Comment
Please, Sign In to add comment