diff options
| author | jussi | 2022-05-16 13:44:10 +0300 |
|---|---|---|
| committer | jussi | 2022-05-16 13:44:10 +0300 |
| commit | 59ea29d8ff9dad751659a0a42d76a5534f7b4b97 (patch) | |
| tree | 96a901dd2f9884e901b78bdd93c62fe2fe5d9e44 /examples | |
| parent | b034aa01dc0ca443eba7c7b12ead7732c3e32240 (diff) | |
| download | reilua-enhanced-59ea29d8ff9dad751659a0a42d76a5534f7b4b97.tar.gz reilua-enhanced-59ea29d8ff9dad751659a0a42d76a5534f7b4b97.tar.bz2 reilua-enhanced-59ea29d8ff9dad751659a0a42d76a5534f7b4b97.zip | |
New GenMeshCustom, UpdateMesh and lightmap example.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/heightmap/main.lua | 3 | ||||
| -rw-r--r-- | examples/lightmap/main.lua | 92 | ||||
| -rw-r--r-- | examples/resources/images/lightmap.png | bin | 0 -> 717 bytes | |||
| -rw-r--r-- | examples/resources/images/tile.png | bin | 0 -> 3043 bytes | |||
| -rw-r--r-- | examples/resources/shaders/glsl330/lightmap.fs | 22 | ||||
| -rw-r--r-- | examples/resources/shaders/glsl330/lightmap.vs | 31 |
6 files changed, 148 insertions, 0 deletions
diff --git a/examples/heightmap/main.lua b/examples/heightmap/main.lua index ecc6993..899ab72 100644 --- a/examples/heightmap/main.lua +++ b/examples/heightmap/main.lua @@ -7,6 +7,7 @@ local tilesetTex = -1 local heigthImage = -1 local mesh = -1 local material = -1 +local lightmap = -1 local grassRec = { 6 * TILE_SIZE, 0 * TILE_SIZE, TILE_SIZE, TILE_SIZE } local dirtRec = { 4 * TILE_SIZE, 0 * TILE_SIZE, TILE_SIZE, TILE_SIZE } @@ -64,6 +65,8 @@ function init() material = RL_LoadMaterialDefault() RL_SetTextureSource( TEXTURE_SOURCE_RENDER_TEXTURE ) + -- RL_GenTextureMipmaps( groundTexture ) + -- RL_SetTextureFilter( groundTexture, TEXTURE_FILTER_TRILINEAR ) RL_SetMaterialTexture( material, MATERIAL_MAP_ALBEDO, groundTexture ) RL_SetTextureSource( TEXTURE_SOURCE_TEXTURE ) diff --git a/examples/lightmap/main.lua b/examples/lightmap/main.lua new file mode 100644 index 0000000..eb81d96 --- /dev/null +++ b/examples/lightmap/main.lua @@ -0,0 +1,92 @@ +local PLANE_SIZE = 8 + +local monitor = 0 +local camera = -1 +local tileTexture = -1 +local mesh = -1 +local material = -1 +local lightmap = -1 +local shader = -1 + +local matrix = {} + +function init() + local mPos = RL_GetMonitorPosition( monitor ) + local mSize = RL_GetMonitorSize( monitor ) + local winSize = RL_GetWindowSize() + + RL_SetWindowState( FLAG_WINDOW_RESIZABLE ) + RL_SetWindowPosition( { mPos[1] + mSize[1] / 2 - winSize[1] / 2, mPos[2] + mSize[2] / 2 - winSize[2] / 2 } ) + + camera = RL_CreateCamera3D() + RL_SetCamera3DPosition( camera, { 0, 8, 16 } ) + RL_SetCamera3DTarget( camera, { 0, 0, 0 } ) + RL_SetCamera3DUp( camera, { 0, 2, 0 } ) + RL_SetCamera3DMode( camera, CAMERA_FREE ) + + local ts = PLANE_SIZE + local meshData = { + vertices = { { 0, 0, 0 }, { 0, 0, PLANE_SIZE }, { PLANE_SIZE, 0, PLANE_SIZE }, + { 0, 0, 0 }, { PLANE_SIZE, 0, PLANE_SIZE }, { PLANE_SIZE, 0, 0 } }, + texcoords = { { 0, 0 }, { 0, ts }, { ts, ts }, + { 0, 0 }, { ts, ts }, { ts, 0 } }, + texcoords2 = { { 0, 0 }, { 0, 1 }, { 1, 1 }, + { 0, 0 }, { 1, 1 }, { 1, 0 } }, + colors = { WHITE, WHITE, WHITE, + WHITE, WHITE, WHITE }, + normals = { { 0, 1, 0 }, { 0, 1, 0 }, { 0, 1, 0 }, + { 0, 1, 0 }, { 0, 1, 0 }, { 0, 1, 0 } }, + } + mesh = RL_GenMeshCustom( meshData, true ) + + -- local meshEdit = { + -- vertices = { { 0, 1, 0 }, { 0, 0, PLANE_SIZE }, { PLANE_SIZE, 0, PLANE_SIZE }, + -- { 0, 1, 0 }, { PLANE_SIZE, 0, PLANE_SIZE }, { PLANE_SIZE, 0, 0 } }, + -- } + -- RL_UpdateMesh( mesh, meshEdit ) + + tileTexture = RL_LoadTexture( RL_GetBasePath().."../resources/images/tile.png" ) + RL_GenTextureMipmaps( tileTexture ) + RL_SetTextureFilter( tileTexture, TEXTURE_FILTER_TRILINEAR ) + lightmap = RL_LoadTexture( RL_GetBasePath().."../resources/images/lightmap.png" ) + RL_GenTextureMipmaps( lightmap ) + RL_SetTextureFilter( lightmap, TEXTURE_FILTER_TRILINEAR ) + RL_SetTextureWrap( lightmap, TEXTURE_WRAP_CLAMP ) + + shader = RL_LoadShader( RL_GetBasePath().."../resources/shaders/glsl330/lightmap.vs", + RL_GetBasePath().."../resources/shaders/glsl330/lightmap.fs" ) + + local materialData = { + shader = shader, + maps = { + { + MATERIAL_MAP_ALBEDO, + { + texture = tileTexture, + color = WHITE, + value = 1.0, + }, + }, + { + MATERIAL_MAP_METALNESS, + { + texture = lightmap, + color = WHITE, + value = 1.0, + }, + }, + }, + } + material = RL_CreateMaterial( materialData ) + + matrix = RL_MatrixMultiply( RL_MatrixIdentity(), RL_MatrixTranslate( { -4, 0, -4 } ) ) +end + +function draw() + RL_ClearBackground( { 25, 50, 50 } ) + RL_UpdateCamera3D( camera ) + + RL_BeginMode3D( camera ) + RL_DrawMesh( mesh, material, matrix ) + RL_EndMode3D() +end diff --git a/examples/resources/images/lightmap.png b/examples/resources/images/lightmap.png Binary files differnew file mode 100644 index 0000000..35754e6 --- /dev/null +++ b/examples/resources/images/lightmap.png diff --git a/examples/resources/images/tile.png b/examples/resources/images/tile.png Binary files differnew file mode 100644 index 0000000..25aec8a --- /dev/null +++ b/examples/resources/images/tile.png diff --git a/examples/resources/shaders/glsl330/lightmap.fs b/examples/resources/shaders/glsl330/lightmap.fs new file mode 100644 index 0000000..aa821f3 --- /dev/null +++ b/examples/resources/shaders/glsl330/lightmap.fs @@ -0,0 +1,22 @@ +#version 330 +// Input vertex attributes (from vertex shader) +in vec2 fragTexCoord; +in vec2 fragTexCoord2; +in vec3 fragPosition; +in vec4 fragColor; +in vec3 fragNormal; + +// Input uniform values +uniform sampler2D texture0; +uniform sampler2D texture1; + +// Output fragment color +out vec4 finalColor; + +void main() { + // Texel color fetching from texture sampler + vec4 texelColor = texture( texture0, fragTexCoord ); + vec4 texelColor2 = texture( texture1, fragTexCoord2 ); + vec3 normal = normalize( fragNormal ); + finalColor = texelColor * texelColor2; +} diff --git a/examples/resources/shaders/glsl330/lightmap.vs b/examples/resources/shaders/glsl330/lightmap.vs new file mode 100644 index 0000000..dec46fe --- /dev/null +++ b/examples/resources/shaders/glsl330/lightmap.vs @@ -0,0 +1,31 @@ +#version 330 +// Input vertex attributes +in vec3 vertexPosition; +in vec2 vertexTexCoord; +in vec2 vertexTexCoord2; +in vec3 vertexNormal; +// in vec4 vertexColor; + +// Input uniform values +uniform mat4 mvp; +uniform mat4 matModel; +uniform mat4 matNormal; + +// Output vertex attributes (to fragment shader) +out vec3 fragPosition; +out vec2 fragTexCoord; +out vec2 fragTexCoord2; +// out vec4 fragColor; +out vec3 fragNormal; + +void main() { + // Send vertex attributes to fragment shader + fragPosition = vec3( matModel * vec4( vertexPosition, 1.0 ) ); + fragTexCoord = vertexTexCoord; + fragTexCoord2 = vertexTexCoord2; + // fragColor = vertexColor; + fragNormal = normalize( vec3( matNormal * vec4( vertexNormal, 1.0 ) ) ); + + // Calculate final vertex position + gl_Position = mvp * vec4( vertexPosition, 1.0 ); +} |
