diff --git a/src/CortexEngine.App/Program.cs b/src/CortexEngine.App/Program.cs index 98f6547..0a4a254 100644 --- a/src/CortexEngine.App/Program.cs +++ b/src/CortexEngine.App/Program.cs @@ -45,7 +45,7 @@ class Program RaylibBackendRegistrar.EnsureRegistered(); VulkanBackendRegistrar.EnsureRegistered(); OpenGLBackendRegistrar.EnsureRegistered(); - using var renderContext = RenderBackendFactory.Create("opengl", 1280, 720, enableValidation: false); + using var renderContext = RenderBackendFactory.Create("raylib", 1280, 720, enableValidation: false); var window = renderContext.Window; var input = window.Input; using var renderer = renderContext.CreateRenderer(); diff --git a/src/Engine.Graphics.OpenGL/OpenGLRenderer.cs b/src/Engine.Graphics.OpenGL/OpenGLRenderer.cs index 0c6d31b..f6a9201 100644 --- a/src/Engine.Graphics.OpenGL/OpenGLRenderer.cs +++ b/src/Engine.Graphics.OpenGL/OpenGLRenderer.cs @@ -444,7 +444,43 @@ float CalculateShadow(vec3 worldPos){ return s/9.0; } void main(){ - finalColor=vec4(0.5,0.3,0.1,1.0); + vec3 normal=normalize(vNormal); + vec3 albedo=pow(vColor.rgb*materialColor.rgb,vec3(2.2)); + vec3 viewDir=normalize(viewPos-vWorldPos); + float rough=clamp(roughness,0.05,1.0); + float metal=clamp(metallic,0.0,1.0); + vec3 skyColor=ambientColor; + vec3 groundColor=ambientColor*0.2; + float hemisphere=0.5+0.5*normal.y; + vec3 result=albedo*mix(groundColor,skyColor,hemisphere)*0.4; + float shadow=1.0; + if(lightCount>0&&lightTypes[0]==0) shadow=CalculateShadow(vWorldPos); + vec3 F0=mix(vec3(0.04),albedo,metal); + float shininess=mix(8.0,256.0,1.0-rough); + for(int i=0;i