Skip to content

Commit

Permalink
fix gl, reorganise stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
Hugobros3 committed Jan 26, 2020
1 parent 01a86db commit 03e842b
Show file tree
Hide file tree
Showing 37 changed files with 195 additions and 197 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@ package xyz.chunkstories.graphics.common

import org.joml.Vector4d
import xyz.chunkstories.api.client.IngameClient
import xyz.chunkstories.api.entity.traits.serializable.TraitControllable
import xyz.chunkstories.api.graphics.TextureFormat
import xyz.chunkstories.api.graphics.TextureTilingMode
import xyz.chunkstories.api.graphics.rendergraph.*
import xyz.chunkstories.api.graphics.structs.Camera
import xyz.chunkstories.api.graphics.systems.dispatching.*
import xyz.chunkstories.api.graphics.systems.drawing.FarTerrainDrawer
import xyz.chunkstories.api.graphics.systems.drawing.FullscreenQuadDrawer
Expand All @@ -16,7 +14,7 @@ import xyz.chunkstories.graphics.GLFWBasedGraphicsBackend
import xyz.chunkstories.graphics.common.world.doShadowMapping
import xyz.chunkstories.graphics.vulkan.VulkanBackendOptions
import xyz.chunkstories.graphics.vulkan.VulkanGraphicsBackend
import xyz.chunkstories.graphics.vulkan.systems.Vulkan3DVoxelRaytracer
import xyz.chunkstories.graphics.vulkan.systems.drawing.rt.Vulkan3DVoxelRaytracer
import xyz.chunkstories.world.WorldClientCommon

abstract class WorldRenderer(val world: WorldClientCommon) : Cleanable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package xyz.chunkstories.graphics.common.shaders.compiler

import xyz.chunkstories.api.graphics.VertexFormat
import xyz.chunkstories.api.graphics.rendergraph.PassOutputsDeclaration
import xyz.chunkstories.graphics.vulkan.systems.models.VulkanModelsDispatcher

data class ShaderCompilationParameters(val outputs: PassOutputsDeclaration? = null, val inputs: List<AvailableVertexInput>? = null, val defines: Map<String, String> = emptyMap())

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package xyz.chunkstories.graphics.vulkan.systems.world
package xyz.chunkstories.graphics.common.structs

import org.joml.Vector2i
import xyz.chunkstories.api.graphics.structs.InterfaceBlock

//TODO move this stuff!
class ViewportSize : InterfaceBlock {
val size = Vector2i(0)
}
Original file line number Diff line number Diff line change
Expand Up @@ -159,21 +159,29 @@ class OpenglGraphicsBackend(graphicsEngine: GraphicsEngineImplementation, window
override fun createWorldRenderer(world: WorldClientCommon): WorldRenderer =
OpenglWorldRenderer(this, world)

fun <T : DrawingSystem> createDrawingSystem(pass: OpenglPass, registration: RegisteredGraphicSystem<T>): OpenglDrawingSystem {
fun <T : DrawingSystem> createDrawingSystem(pass: OpenglPass, registration: RegisteredGraphicSystem<T>): OpenglDrawingSystem? {
val dslCode = registration.dslCode as DrawingSystem.() -> Unit

return when(registration.clazz) {
GuiDrawer::class.java -> OpenglGuiDrawer(pass, dslCode)
FullscreenQuadDrawer::class.java -> OpenglFullscreenQuadDrawer(pass, dslCode)
else -> throw Exception("Unimplemented system on this backend: ${registration.clazz}")
else -> {
logger.error("Unimplemented system on this backend: ${registration.clazz}")
null
//throw Exception("Unimplemented system on this backend: ${registration.clazz}")
}
}
}

fun <T : DispatchingSystem> getOrCreateDispatchingSystem(list: MutableList<OpenglDispatchingSystem<*>>, dispatchingSystemRegistration: RegisteredGraphicSystem<T>) : OpenglDispatchingSystem<*> {
fun <T : DispatchingSystem> getOrCreateDispatchingSystem(list: MutableList<OpenglDispatchingSystem<*>>, dispatchingSystemRegistration: RegisteredGraphicSystem<T>) : OpenglDispatchingSystem<*>? {
val implemClass: Class<out OpenglDispatchingSystem<out Representation>> = when(dispatchingSystemRegistration.clazz) {
ModelsRenderer::class.java -> OpenglModelsDispatcher::class
ChunksRenderer::class.java -> OpenglChunkRepresentationsDispatcher::class
else -> throw Exception("Unimplemented system on this backend: ${dispatchingSystemRegistration.clazz}")
else -> {
logger.error("Unimplemented system on this backend: ${dispatchingSystemRegistration.clazz}")
return null
//throw Exception("Unimplemented system on this backend: ${dispatchingSystemRegistration.clazz}")
}
}.java

val existing = list.find { implemClass.isAssignableFrom(it::class.java) }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package xyz.chunkstories.graphics.opengl.graph

import org.lwjgl.opengl.ARBDirectStateAccess.*
import org.lwjgl.opengl.GL11
import org.lwjgl.opengl.GL33.*

import xyz.chunkstories.api.graphics.rendergraph.PassDeclaration
Expand All @@ -11,11 +10,11 @@ import xyz.chunkstories.api.graphics.systems.dispatching.DispatchingSystem
import xyz.chunkstories.api.graphics.systems.drawing.DrawingSystem
import xyz.chunkstories.api.util.kotlin.toVec4f
import xyz.chunkstories.graphics.common.Cleanable
import xyz.chunkstories.graphics.common.structs.ViewportSize
import xyz.chunkstories.graphics.opengl.OpenglFrame
import xyz.chunkstories.graphics.opengl.OpenglGraphicsBackend
import xyz.chunkstories.graphics.opengl.systems.OpenglDispatchingSystem
import xyz.chunkstories.graphics.opengl.systems.OpenglDrawingSystem
import xyz.chunkstories.graphics.vulkan.systems.world.ViewportSize

class OpenglPass(val backend: OpenglGraphicsBackend, val renderTask: OpenglRenderTask, val declaration: PassDeclaration) : Cleanable {
val drawingSystems: List<OpenglDrawingSystem>
Expand Down Expand Up @@ -57,10 +56,10 @@ class OpenglPass(val backend: OpenglGraphicsBackend, val renderTask: OpenglRende
declaration.draws?.registeredSystems?.let {
for (registeredSystem in it) {
if (DrawingSystem::class.java.isAssignableFrom(registeredSystem.clazz)) {
val drawingSystem = backend.createDrawingSystem(this, registeredSystem as RegisteredGraphicSystem<DrawingSystem>)
val drawingSystem = backend.createDrawingSystem(this, registeredSystem as RegisteredGraphicSystem<DrawingSystem>) ?: continue
drawingSystems.add(drawingSystem)
} else if (DispatchingSystem::class.java.isAssignableFrom(registeredSystem.clazz)) {
val dispatchingSystem = backend.getOrCreateDispatchingSystem(renderTask.renderGraph.dispatchingSystems, registeredSystem as RegisteredGraphicSystem<DispatchingSystem>)
val dispatchingSystem = backend.getOrCreateDispatchingSystem(renderTask.renderGraph.dispatchingSystems, registeredSystem as RegisteredGraphicSystem<DispatchingSystem>) ?: continue
val drawer = dispatchingSystem.createDrawerForPass(this, registeredSystem.dslCode as OpenglDispatchingSystem.Drawer<*>.() -> Unit)

dispatchingSystem.drawersInstances.add(drawer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ class OpenglRenderGraph(val backend: OpenglGraphicsBackend, val dslCode: RenderG
val ctxMask = 1 shl renderContextIndex
val jobsForPassInstance = jobs[index]

for (bucket in gathered.buckets.values) {
val responsibleSystem = dispatchingSystems.find { it.representationName == bucket.representationName } ?: continue
for (representationBuckets in gathered.buckets.values) {
val responsibleSystem = dispatchingSystems.find { it.representationName == representationBuckets.representationName } ?: continue

val drawers = openglPassInstance.pass.dispatchingDrawers.filter {
it.system == responsibleSystem
Expand All @@ -68,10 +68,18 @@ class OpenglRenderGraph(val backend: OpenglGraphicsBackend, val dslCode: RenderG
}
}

TODO()
/*for (i in 0 until bucket.representations.size) {
val item = bucket.representations[i]
val mask = bucket.masks[i]
for((mask, bucket) in representationBuckets.maskedBuckets) {
if (mask and ctxMask == 0)
continue

for(item in bucket.representations) {
(responsibleSystem as OpenglDispatchingSystem<Representation>).sort(item, drawersArray, allowedOutputs as List<MutableList<Any>>)
}
}

/*for (i in 0 until representationBuckets.representations.size) {
val item = representationBuckets.representations[i]
val mask = representationBuckets.masks[i]
if (mask and ctxMask == 0)
continue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import xyz.chunkstories.graphics.common.util.toByteBuffer
import xyz.chunkstories.graphics.common.voxel.VoxelTexturesArray
import xyz.chunkstories.graphics.opengl.OpenglGraphicsBackend
import xyz.chunkstories.graphics.opengl.textures.OpenglOnionTexture2D
import xyz.chunkstories.graphics.vulkan.systems.gui.guiBufferSize
import java.awt.image.BufferedImage

class OpenglVoxelTexturesArray(val backend: OpenglGraphicsBackend, voxels: Content.Voxels) : VoxelTexturesArray(voxels), Cleanable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package xyz.chunkstories.graphics.opengl.world.chunks

import xyz.chunkstories.graphics.common.world.ChunkRepresentationsProvider
import xyz.chunkstories.graphics.opengl.OpenglGraphicsBackend
import xyz.chunkstories.graphics.vulkan.systems.VulkanDispatchingSystem
import xyz.chunkstories.world.WorldClientCommon

class OpenglChunkRepresentationsProvider(backend: OpenglGraphicsBackend, world: WorldClientCommon) :
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import org.lwjgl.vulkan.VkCommandBuffer
import xyz.chunkstories.api.graphics.rendergraph.*
import xyz.chunkstories.api.graphics.shader.ShaderResources
import xyz.chunkstories.api.graphics.structs.Camera
import xyz.chunkstories.graphics.common.structs.ViewportSize
import xyz.chunkstories.graphics.vulkan.Pipeline
import xyz.chunkstories.graphics.vulkan.resources.VulkanShaderResourcesContext
import xyz.chunkstories.graphics.vulkan.shaders.extractInto
import xyz.chunkstories.graphics.vulkan.swapchain.VulkanFrame
import xyz.chunkstories.graphics.vulkan.systems.world.ViewportSize

class VulkanFrameGraph(val frame: VulkanFrame, val renderGraph: VulkanRenderGraph, startTask: VulkanRenderTask, mainCamera: Camera, parameters: Map<String, Any>) {
val rootNode: FrameGraphNode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ import xyz.chunkstories.graphics.common.Cleanable
import xyz.chunkstories.graphics.vulkan.RenderPass
import xyz.chunkstories.graphics.vulkan.VulkanGraphicsBackend
import xyz.chunkstories.graphics.vulkan.swapchain.VulkanFrame
import xyz.chunkstories.graphics.vulkan.systems.VulkanDispatchingSystem
import xyz.chunkstories.graphics.vulkan.systems.VulkanDrawingSystem
import xyz.chunkstories.graphics.vulkan.systems.createDrawingSystem
import xyz.chunkstories.graphics.vulkan.systems.getOrCreateDispatchingSystem
import xyz.chunkstories.graphics.vulkan.systems.dispatching.VulkanDispatchingSystem
import xyz.chunkstories.graphics.vulkan.systems.drawing.VulkanDrawingSystem
import xyz.chunkstories.graphics.vulkan.systems.dispatching.getOrCreateDispatchingSystem
import xyz.chunkstories.graphics.vulkan.systems.drawing.createDrawingSystem
import xyz.chunkstories.graphics.vulkan.util.VkFramebuffer
import xyz.chunkstories.graphics.vulkan.util.ensureIs

Expand All @@ -39,7 +39,7 @@ open class VulkanPass(val backend: VulkanGraphicsBackend, val renderTask: Vulkan
for (registeredSystem in it) {

if (DrawingSystem::class.java.isAssignableFrom(registeredSystem.clazz)) {
val drawingSystem = backend.createDrawingSystem(this, registeredSystem as RegisteredGraphicSystem<DrawingSystem>) as VulkanDrawingSystem
val drawingSystem = backend.createDrawingSystem(this, registeredSystem as RegisteredGraphicSystem<DrawingSystem>) ?: continue

//val d = declaredDrawingSystem.dslCode as GraphicSystem.() -> Unit
//drawingSystem.apply(d)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import xyz.chunkstories.graphics.vulkan.VulkanGraphicsBackend
import xyz.chunkstories.graphics.vulkan.debug.exportRenderGraphPng
import xyz.chunkstories.graphics.vulkan.swapchain.SwapchainBlitHelper
import xyz.chunkstories.graphics.vulkan.swapchain.VulkanFrame
import xyz.chunkstories.graphics.vulkan.systems.VulkanDispatchingSystem
import xyz.chunkstories.graphics.vulkan.systems.dispatching.VulkanDispatchingSystem
import xyz.chunkstories.graphics.vulkan.util.ensureIs

class VulkanRenderGraph(val backend: VulkanGraphicsBackend, val dslCode: RenderGraphDeclaration.() -> Unit) : Cleanable {
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit 03e842b

Please sign in to comment.