How to add a shader to 3D model? (Godot 4)


extends Node3D

@onready var headShader = preload("res://3d/Mesh/head.gdshader")
@onready var headMesh = $Head_Mesh_1

func _ready():

	pass 
  • Here's a simple solution.
    You need to create and save a material (name_material.tres)

    extends MeshInstance3D
    
    
    @onready var shaderA = preload("res://3d/Shader/material_shader_1.tres")
    
    func _ready():
    
    	self.material_override = shaderA
    	
    	pass

You mean in code or via GUI? Either way you have to create a material first then assign the shader to the material.

The shader is already created("res://3d/Mesh/head.gdshader"), me necessary to attach it through a script.
Perhaps the mesh will be replaced many times. I need to automate the attachment of material.

Godo load shader in 2018
https://godotengine.org/qa/35114/how-can-i-load-a-shader-file-through-script

onready var WaterShader = preload("res://Water.shader")

func _ready():
    self.material.shader = WaterShader

How do I upload material I've already created to Godo 4?
I looked at the documentation MeshInstance3D but could not find the desired function.

Script

extends MeshInstance3D

@onready var shaderA = preload("res://3d/Shader/Head_shader_1.tres")

func _ready():
#	self.  ??
	pass

Here's a simple solution.
You need to create and save a material (name_material.tres)

extends MeshInstance3D


@onready var shaderA = preload("res://3d/Shader/material_shader_1.tres")

func _ready():

	self.material_override = shaderA
	
	pass