This commit is contained in:
Branimir Karadžić 2017-07-23 21:22:21 -07:00
parent e4147a49be
commit f09c886476
1 changed files with 82 additions and 86 deletions

View File

@ -294,7 +294,6 @@ void getPoint(float* _result, Axis::Enum _axis, float _x, float _y)
}
}
#include "vs_debugdraw_lines.bin.h"
#include "fs_debugdraw_lines.bin.h"
#include "vs_debugdraw_lines_stipple.bin.h"
@ -391,40 +390,35 @@ struct DebugDraw
bgfx::RendererType::Enum type = bgfx::getRendererType();
m_program[Program::Lines] =
bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_lines")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_lines")
, true
);
m_program[Program::Lines] = bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_lines")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_lines")
, true
);
m_program[Program::LinesStipple] =
bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_lines_stipple")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_lines_stipple")
, true
);
m_program[Program::LinesStipple] = bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_lines_stipple")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_lines_stipple")
, true
);
m_program[Program::Fill] =
bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_fill")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_fill")
, true
);
m_program[Program::Fill] = bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_fill")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_fill")
, true
);
m_program[Program::FillLit] =
bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_fill_lit")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_fill_lit")
, true
);
m_program[Program::FillLit] = bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_fill_lit")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_fill_lit")
, true
);
m_program[Program::FillTexture] =
bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_fill_texture")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_fill_texture")
, true
);
m_program[Program::FillTexture] = bgfx::createProgram(
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_debugdraw_fill_texture")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_debugdraw_fill_texture")
, true
);
u_params = bgfx::createUniform("u_params", bgfx::UniformType::Vec4, 4);
s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1);
@ -455,24 +449,26 @@ struct DebugDraw
trilist[ii] = uint16_t(ii);
}
uint32_t numLineListIndices = bgfx::topologyConvert(bgfx::TopologyConvert::TriListToLineList
, NULL
, 0
, trilist
, numIndices
, false
);
uint32_t numLineListIndices = bgfx::topologyConvert(
bgfx::TopologyConvert::TriListToLineList
, NULL
, 0
, trilist
, numIndices
, false
);
indices[id] = (uint16_t*)BX_ALLOC(m_allocator, (numIndices + numLineListIndices)*sizeof(uint16_t) );
uint16_t* indicesOut = indices[id];
bx::memCopy(indicesOut, trilist, numIndices*sizeof(uint16_t) );
bgfx::topologyConvert(bgfx::TopologyConvert::TriListToLineList
, &indicesOut[numIndices]
, numLineListIndices*sizeof(uint16_t)
, trilist
, numIndices
, false
);
bgfx::topologyConvert(
bgfx::TopologyConvert::TriListToLineList
, &indicesOut[numIndices]
, numLineListIndices*sizeof(uint16_t)
, trilist
, numIndices
, false
);
m_mesh[id].m_startVertex = startVertex;
m_mesh[id].m_numVertices = numVertices;
@ -810,7 +806,7 @@ struct DebugDraw
flushQuad();
flush();
m_state = State::Count;
m_state = State::Count;
}
void push()
@ -1133,16 +1129,16 @@ struct DebugDraw
const Attrib& attrib = m_attrib[m_stack];
float mtx[16];
bx::mtxSRT(mtx
, _sphere.m_radius
, _sphere.m_radius
, _sphere.m_radius
, 0.0f
, 0.0f
, 0.0f
, _sphere.m_center[0]
, _sphere.m_center[1]
, _sphere.m_center[2]
);
, _sphere.m_radius
, _sphere.m_radius
, _sphere.m_radius
, 0.0f
, 0.0f
, 0.0f
, _sphere.m_center[0]
, _sphere.m_center[1]
, _sphere.m_center[2]
);
uint8_t lod = attrib.m_lod > Mesh::SphereMaxLod
? uint8_t(Mesh::SphereMaxLod)
: attrib.m_lod
@ -1216,23 +1212,23 @@ struct DebugDraw
for (uint32_t ii = 1; ii < n+1; ++ii)
{
getPoint(pos, _axis
, bx::fsin(step * ii)*_radius
, bx::fcos(step * ii)*_radius
);
, bx::fsin(step * ii)*_radius
, bx::fcos(step * ii)*_radius
);
lineTo(pos[0] + _x, pos[1] + _y, pos[2] + _z);
}
moveTo(_x, _y, _z);
getPoint(pos, _axis
, bx::fsin(step * 0)*_radius
, bx::fcos(step * 0)*_radius
);
, bx::fsin(step * 0)*_radius
, bx::fcos(step * 0)*_radius
);
lineTo(pos[0] + _x, pos[1] + _y, pos[2] + _z);
getPoint(pos, _axis
, bx::fsin(step * n)*_radius
, bx::fcos(step * n)*_radius
);
, bx::fsin(step * n)*_radius
, bx::fcos(step * n)*_radius
);
moveTo(pos[0] + _x, pos[1] + _y, pos[2] + _z);
lineTo(_x, _y, _z);
}
@ -1543,9 +1539,9 @@ struct DebugDraw
mid[0] = _x + _len - _thickness;
mid[1] = _y;
mid[2] = _z;
to[0] = _x + _len;
to[1] = _y;
to[2] = _z;
to[0] = _x + _len;
to[1] = _y;
to[2] = _z;
drawCylinder(from, mid, _thickness, false);
drawCone(mid, to, _thickness);
@ -1553,9 +1549,9 @@ struct DebugDraw
mid[0] = _x;
mid[1] = _y + _len - _thickness;
mid[2] = _z;
to[0] = _x;
to[1] = _y + _len;
to[2] = _z;
to[0] = _x;
to[1] = _y + _len;
to[2] = _z;
drawCylinder(from, mid, _thickness, false);
drawCone(mid, to, _thickness);
@ -1563,9 +1559,9 @@ struct DebugDraw
mid[0] = _x;
mid[1] = _y;
mid[2] = _z + _len - _thickness;
to[0] = _x;
to[1] = _y;
to[2] = _z + _len;
to[0] = _x;
to[1] = _y;
to[2] = _z + _len;
drawCylinder(from, mid, _thickness, false);
drawCone(mid, to, _thickness);
}
@ -1817,10 +1813,10 @@ private:
bgfx::setTransform(_mtx, _num);
bgfx::setVertexBuffer(0, m_vbh, mesh.m_startVertex, mesh.m_numVertices);
bgfx::setState(0
| attrib.m_state
| (_wireframe ? BGFX_STATE_PT_LINES|BGFX_STATE_LINEAA|BGFX_STATE_BLEND_ALPHA
: (alpha < 0xff) ? BGFX_STATE_BLEND_ALPHA : 0)
);
| attrib.m_state
| (_wireframe ? BGFX_STATE_PT_LINES|BGFX_STATE_LINEAA|BGFX_STATE_BLEND_ALPHA
: (alpha < 0xff) ? BGFX_STATE_BLEND_ALPHA : 0)
);
bgfx::submit(m_viewId, m_program[_wireframe ? Program::Fill : Program::FillLit]);
}
@ -1851,12 +1847,12 @@ private:
bgfx::setVertexBuffer(0, &tvb);
bgfx::setIndexBuffer(&tib);
bgfx::setState(0
| BGFX_STATE_RGB_WRITE
| BGFX_STATE_PT_LINES
| attrib.m_state
| BGFX_STATE_LINEAA
| BGFX_STATE_BLEND_ALPHA
);
| BGFX_STATE_RGB_WRITE
| BGFX_STATE_PT_LINES
| attrib.m_state
| BGFX_STATE_LINEAA
| BGFX_STATE_BLEND_ALPHA
);
bgfx::setTransform(m_mtx);
bgfx::ProgramHandle program = m_program[attrib.m_stipple ? 1 : 0];
bgfx::submit(m_viewId, program);
@ -1900,8 +1896,8 @@ private:
bgfx::setVertexBuffer(0, &tvb);
bgfx::setIndexBuffer(&tib);
bgfx::setState(0
| (attrib.m_state & ~BGFX_STATE_CULL_MASK)
);
| (attrib.m_state & ~BGFX_STATE_CULL_MASK)
);
bgfx::setTransform(m_mtx);
bgfx::setTexture(0, s_texColor, m_texture);
bgfx::submit(m_viewId, m_program[Program::FillTexture]);