dp-konzultace/scripts/my_portal.gdshader

26 lines
891 B
Plaintext

shader_type spatial;
render_mode unshaded;
uniform sampler2D albedo: hint_default_black, source_color;
varying float pixel_distance;
void vertex() {
// Calculate the world-space distance between the pixel and camera.
// Pass the distance to the fragment shader using a varying attribute.
vec3 world_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz;
vec3 camera_position = (INV_VIEW_MATRIX * vec4(0.0, 0.0, 0.0, 1.0)).xyz;
pixel_distance = distance(world_position, camera_position);
}
void fragment() {
// The portal color is simply the screen-space color of the exit camera render target.
// This is because the exit camera views the exit portal from the perspective of the player watching
// the entrance portal, meaning the exit portal will occupy the same screen-space as the entrance portal.
vec3 portal_color = texture(albedo, SCREEN_UV).rgb;
ALBEDO = portal_color;
}